Skip to content

Instantly share code, notes, and snippets.

@moxwel
Last active February 10, 2025 07:22
Show Gist options
  • Select an option

  • Save moxwel/4427b5324e0f6d8807adac28871bfecd to your computer and use it in GitHub Desktop.

Select an option

Save moxwel/4427b5324e0f6d8807adac28871bfecd to your computer and use it in GitHub Desktop.
Setup crossplay multi version compatible Minecraft Java and Bedrock server

#1 | Crossplay multi version compatible Minecraft Java and Bedrock server with GeyserMC

๐Ÿ“š Index
  1. โžก minecraft_server_crossplay.md GitHub Gist last commit

  2. minecraft_server_luckperms.md GitHub Gist last commit

  3. minecraft_server_authme.md GitHub Gist last commit

  4. minecraft_server_easycommandblocker.md GitHub Gist last commit


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.

Proxy (Velocity)

  • Plugins:

    • GeyserMC geyser-velocity.jar (crossplay support)
    • Floodgate floodgate-velocity.jar (java/bedrock linking)
  • ๐Ÿ”€ /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.

Server (PaperMC)

  • 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.

  • ๐Ÿ“ƒ /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.

GeyserMC / Floodgate

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..

Extras

Geyser command alias

  • ๐Ÿ“ƒ /paper/commands.yml:

    aliases:
      advancements:
      - geyser advancements
      offhand:
      - geyser offhand

Aikar's Flags

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

Exaroton plugin

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.

Local Floodgate linking database

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/.

Anti X-Ray configs

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

Hearts below name

Run the commands below.

/scoreboard objectives add health_score health "ยงcโค"

/scoreboard objectives setdisplay belowName health_score

โฌ† Go to top

@nohalg1
Copy link

nohalg1 commented Feb 10, 2025

If you're looking for a seamless crossplay experience between Minecraft Java and Bedrock, using GeyserMC is the way to go! It allows players from different versions to connect and play together effortlessly.

For an enhanced gameplay experience, check out Jennyโ€™s Modโ€”a fun addition that brings new elements to your Minecraft world! ๐Ÿš€๐ŸŽฎ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment