#1 | Crossplay multi version compatible Minecraft Java and Bedrock server with GeyserMC
π Index
Using PaperMC as backend server (version 1.14.4) and Velocity as proxy with "modern" forwarding.
Tested on Exaroton and standalone.
Source: https://support.exaroton.com/hc/en-us/articles/4404724229137-Using-Minecraft-proxies-on-exaroton
Geyser only works with Java 16+. Paper 1.14.4 only works with Java 8. That's why is necessary to use a proxy in this case.
Check out Paper requirements. Geyser requirements and Floodgate requirements for more information.
TIP: If you want to set up a Paper 1.16.5+ server, you can do all of this without proxy! Is so much easier.
-
Plugins:
-
π
/velocity/velocity.toml
:show-max-players = 10 # Only visual. online-mode = false # Depends on you. player-info-forwarding-mode = "modern" # Use this if using PaperMC. [servers] # Servers to forward. main = "<address>:<port>" try = ["main"] # First server to forward when player joins. [advanced] show-ping-requests = true # Show when clients ping the server. announce-proxy-commands = true # Necessary for tab autocomplete.
-
Your
PROXY_TOKEN
is in/velocity/forwarding.secret
.
-
Plugins:
- ViaVersion
ViaVersion.jar
(multi-version support)
ViaVersion permits newer Minecraft versions to join old Minecraft Server versions. For example: Minecraft 1.19-1.18-1.17 can join Minecraft 1.17 Server, but Minecraft 1.16 can't.
If you want older Minecraft versions to join newer Minecraft Server versions, you need ViaBackwards.
- ViaVersion
-
π
/paper/spigot.yaml
:settings: bungeecord: false # Must disable if using Velocity proxy with "modern" forwarding. commands: send-namespaced: true # "<plugin>:<command>" style commands.
-
π
/paper/paper.yaml
:settings: velocity-support: # Modify this section only if using Velocity proxy. enabled: true # Enable this for "modern" forwarding. online-mode: false # Must match proxy's online-mode configuration. secret: <PROXY_TOKEN> # Paste your secret here.
In Paper 1.19+ those settings are located in
/paper/config/paper-global.yml/
. -
π
/paper/commands.yml
:aliases: icanhasbukkit: - [] # Disable command. ?: - minecraft:help # Vanilla-style help command. help: - minecraft:help # Vanilla-style help command.
-
π
/paper/server.properties
:online-mode = false # Must disable if using proxy.
These settings apply even if you aren't using proxy.
-
π
/velocity/plugins/geyser-velocity/config.yml
:remote: auth-type: floodgate # Tell Geyser to use Floodgate. passthrough-motd: true # Use motd set in servrer/proxy. passthrough-player-counts: true # Use player count set in server/proxy. show-cooldown: title # Show the MC 1.8 style cooldown to Bedrock players. show-coordinates: true # Show coordinates to Bedrock players. emote-offhand-workaround: "no-emotes" # Let Bedrock players swap offhand items with emotes.
-
π
/velocity/plugins/floodgate/config.yml
:username-prefix: "." # Prefix for non-linked Bedrock players.
If Bedrock player called
Steve
joins, they will be renamed as.Steve
.If your server is in
online-mode=false
, you may want to use a local database for linking data..
-
π
/paper/commands.yml
:aliases: advancements: - geyser advancements offhand: - geyser offhand
Add these Java arguments for Minecraft Server (PaperMC):
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
Source: https://docs.papermc.io/paper/aikars-flags
Use if your proxy and backend servers are hosted in Exaroton. It can be installed on proxy only. This is optional.
-
π
/velocity/plugins/exaroton/config.toml
:[auto-start] enabled = false # Enable/Disable. servers = ["example.exaroton.me:port"] # Servers will autostart when proxy is online. [auto-stop] enabled = false # Enable/Disable. servers = ["example.exaroton.me:port"] # Servers will stop when proxy is shut down.
Use this when using online-mode = false
on server/proxy.
Must install SQLite Floodgate plugin to work: download floodgate-sqlite-database.jar inside /velocity/plugins/floodgate/
folder. DO NOT PUT IT IN /velocity/plugins/
.
-
π
/velocity/plugins/floodgate/config.yml
:player-link: enable-own-linking: true # Enable local database. allowed: true link-code-timeout: 60 # Only 1 minute to link account for security. type: sqlite enable-global-linking: false # Disable online database from Floodgate servers.
Linking data will be on
linked_players.db
file inside/velocity/plugins/floodgate/
.
Apply this inside world configs on each dimension. Read this.
- Overworld:
anticheat:
anti-xray:
enabled: true
engine-mode: 2
hidden-blocks:
- copper_ore
- deepslate_copper_ore
- raw_copper_block
- diamond_ore
- deepslate_diamond_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- raw_iron_block
- lapis_ore
- deepslate_lapis_ore
- redstone_ore
- deepslate_redstone_ore
lava-obscures: false
max-block-height: 64
replacement-blocks:
- chest
- amethyst_block
- andesite
- budding_amethyst
- calcite
- coal_ore
- deepslate_coal_ore
- deepslate
- diorite
- dirt
- emerald_ore
- deepslate_emerald_ore
- granite
- gravel
- oak_planks
- smooth_basalt
- stone
- tuff
update-radius: 2
use-permission: false
- Nether:
anticheat:
anti-xray:
enabled: true
engine-mode: 2
hidden-blocks:
- ancient_debris
- bone_block
- glowstone
- magma_block
- nether_bricks
- nether_gold_ore
- nether_quartz_ore
- polished_blackstone_bricks
lava-obscures: false
max-block-height: 128
replacement-blocks:
- basalt
- blackstone
- gravel
- netherrack
- soul_sand
- soul_soil
update-radius: 2
use-permission: false
- End:
anticheat:
anti-xray:
enabled: false
Run the commands below.
/scoreboard objectives add health_score health "Β§cβ€"
/scoreboard objectives setdisplay belowName health_score