1. Pick the right jar

The published plugin uses one jar, georestrict-2.0.2.jar. The same file works on:

Java versions belong to both the plugin and the platform. GeoRestrict targets Java 17 bytecode, but modern server releases may require a newer runtime. The final release smoke used Java 25 because Velocity 4.0.0 is compiled for Java 25. Always follow the Java requirement published by your server or proxy.

The v2.0.1 jar was started successfully on current Paper, Purpur, Folia, BungeeCord, Waterfall and Velocity builds. The exact test versions are recorded in the GitHub README.

Where you install it matters. On a proxied network, the proxy is usually the cleanest place because it sees the original address and can stop the connection before a backend is chosen. Standalone servers can install it directly. A backend behind a proxy only works when IP forwarding is configured correctly.

2. Install

Bukkit / Paper / Folia / Spigot

shell
cd /path/to/server
cp georestrict-2.0.2.jar plugins/
./start.sh   # or systemctl restart minecraft

BungeeCord / Waterfall

shell
cd /path/to/proxy
cp georestrict-2.0.2.jar plugins/
./start.sh

Velocity

shell
cd /path/to/velocity
cp georestrict-2.0.2.jar plugins/
./start.sh

Pumpkin native candidate

Pumpkin uses a separate Rust/WASI plugin with its rule engine inside the server. It supports native Java and Bedrock login events and does not need Java or a companion admission service.

rustup target add wasm32-wasip2
cargo build --locked --release --target wasm32-wasip2 --manifest-path adapters/pumpkin/Cargo.toml
# Copy adapters/pumpkin/target/wasm32-wasip2/release/georestrict_pumpkin.wasm into Pumpkin's plugins folder.

Approve its own-folder file access and outbound HTTP permissions in Pumpkin. Configure plugins/data/georestrict/config.yml; local blocking is disabled by default. Commands include /gr info, /gr reload, /gr check <ip> and /gr cache clear. Native Bedrock players use the same Bedrock bypass settings. Read the release evidence for the exact tested server version.

Fabric / Forge / NeoForge candidate mods

The unreleased v2.1.0 source includes dedicated-server mods targeting Minecraft 1.20 through 26.3. Build them from the repository with Maven and JDK 17 or newer:

shell
mvn -f mods/pom.xml package
# Select the jar matching your dedicated server's loader:
cp mods/fabric/target/georestrict-fabric-2.1.0.jar /path/to/server/mods/
# Forge: mods/forge/target/georestrict-forge-2.1.0.jar
# NeoForge: mods/neoforge/target/georestrict-neoforge-2.1.0.jar

Restart the server. Clients do not need GeoRestrict, and Fabric API is not required. The configuration is created at config/georestrict/config.yml. Commands use Minecraft's native administrator permissions. Minecraft 1.20–1.20.4 needs Java 17, 1.20.5–1.21.11 needs Java 21, and 26.x needs Java 25.

These candidate jars are not published on Modrinth yet. Keep local blocking disabled on a backend that sees only its proxy's address until trusted player-IP forwarding is configured.

3. Verify the install

On startup you should see this in the console:

console
[GeoRestrict] GeoRestrict v2.1.0 starting...
[GeoRestrict] GeoRestrict enabled.
[GeoRestrict] Demonz Development believes listening to its users comes before anything else.
[GeoRestrict] Found a bug, have a report, or want to share feedback? Join our Discord:
[GeoRestrict] https://discord.com/invite/GYsTt96ypf - we would genuinely love to hear from you.

And a config file at plugins/GeoRestrict/config.yml (Bukkit) or plugins/GeoRestrict/config.yml (Bungee/Velocity).

4. Advanced infrastructure

The generated Worker settings already work. Do not edit them unless you understand the full lookup path and intend to operate the replacement yourself.

Most server owners can stop here. If you need your own Worker, providers or independent fallback server, use the advanced infrastructure reference in the GitHub README. It is the single source for ports, secrets, deployment and security details.

Updating

Replace the jar and restart. Missing config keys are merged with documented defaults while your existing values are kept. configVersion tracks the file schema, not the plugin release.

Uninstalling

Remove the jar and restart. Plugin configuration and cache are under plugins/GeoRestrict/ (or plugins/georestrict/ on Velocity); mod configuration and cache are under config/georestrict/. Remove that component's directory if you also want to discard its settings.