# yaml-language-server: $schema=../../schema/game.schema.json id: minecraft-crossplay name: Minecraft (Crossplay Java & Bedrock) defaultDockerImage: itzg/minecraft-server:latest requiredMemoryMb: 4096 requiredDiskMb: 8192 defaultPorts: - 25565/tcp - 19132/udp - 19132/tcp installMethod: NONE installConfig: configPatches: - enabledWhen: '{config:XBOX_BROADCAST_ENABLED}' format: YAML path: plugins/Geyser-Spigot/extensions/mcxboxbroadcast/config.yml set: session.remote-address: '{config:XBOX_BROADCAST_REMOTE_ADDRESS}' session.remote-port: '{config:XBOX_BROADCAST_REMOTE_PORT}' files: - enabledWhen: '{config:XBOX_BROADCAST_ENABLED}' path: plugins/Geyser-Spigot/extensions/MCXboxBroadcastExtension.jar url: '{config:XBOX_BROADCAST_DOWNLOAD_URL}' defaultConfig: ALLOW_FLIGHT: true DIFFICULTY: easy ENABLE_RCON: true ENABLE_WHITELIST: false ENFORCE_WHITELIST: false EULA: false HARDCORE: false JVM_OPTS: -DgeyserTransport=nethernet -DgeyserAdvertiseAddresses={PUBLIC_IP}:{PUBLIC_PORT_19132} MAX_PLAYERS: 20 MEMORY: 3G MODE: survival MOTD: GBRHosting - {SERVER_NAME} ONLINE_MODE: true PAPER_CHANNEL: default PLUGINS: https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot,https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot,https://api.spiget.org/v2/resources/19254/download PVP: true RCON_PASSWORD: "" RCON_PORT: 25575 TYPE: PAPER USE_AIKAR_FLAGS: true VERSION: LATEST XBOX_BROADCAST_DOWNLOAD_URL: https://github.com/MCXboxBroadcast/Broadcaster/releases/download/159/MCXboxBroadcastExtension.jar XBOX_BROADCAST_ENABLED: true XBOX_BROADCAST_REMOTE_ADDRESS: '{PUBLIC_HOST}' XBOX_BROADCAST_REMOTE_PORT: '{PUBLIC_PORT_19132}' configSchema: $schema: http://json-schema.org/draft-07/schema# properties: ALLOW_FLIGHT: category: Gameplay & Rules default: true description: Required for Bedrock and Geyser crossplay compatibility to prevent phantom kick events. title: Allow Flight type: boolean DIFFICULTY: category: Gameplay & Rules default: easy description: The world difficulty level. enum: - peaceful - easy - normal - hard title: Difficulty type: string ENABLE_RCON: category: Security & Access default: true description: Enables remote console (RCON) access for GBR action buttons and player moderation. title: Enable RCON type: boolean ENABLE_WHITELIST: category: Security & Access default: false description: When enabled, only players listed in the whitelist are permitted to join. title: Enable Whitelist type: boolean ENFORCE_WHITELIST: category: Security & Access default: false description: Enforces whitelist immediately upon server startup and reloading. title: Enforce Whitelist type: boolean EULA: category: System & General default: false description: Minecraft requires every server owner to accept Mojang's End User License Agreement. The server will not start without it. showOnDeploy: true title: Minecraft EULA type: boolean x-consent: label: I have read and agree to the Minecraft End User License Agreement (EULA) linkText: Read the Minecraft EULA url: https://aka.ms/MinecraftEULA HARDCORE: category: Gameplay & Rules default: false description: Players are permanently switched to spectator mode upon death. title: Hardcore Mode type: boolean JVM_OPTS: category: System & General default: -DgeyserTransport=nethernet -DgeyserAdvertiseAddresses={PUBLIC_IP}:{PUBLIC_PORT_19132} description: Extra JVM flags. Enables Geyser NetherNet (required for Bedrock 26.60+, Oct 27 2026). {PUBLIC_IP} and {PUBLIC_PORT_19132} are filled in by GBR with the address players reach (relay, dedicated IP or node). title: JVM Options type: string MAX_PLAYERS: category: System & General default: 20 description: The maximum number of concurrent players allowed on the server. title: Max Players type: integer MEMORY: category: System & General default: 3G description: Java heap for the server. Keep it about 1 GB below your server's memory (3G on 4 GB, 7G on 8 GB); Java needs the rest, and a heap as large as the memory limit makes the server crash on start. title: Memory Allocation type: string MODE: category: Gameplay & Rules default: survival description: Default game mode for players. enum: - survival - creative - adventure - spectator title: Game Mode type: string MOTD: category: System & General default: GBRHosting - {SERVER_NAME} description: Server name shown in the Java server list and to Bedrock/console friends. Defaults to "GBRHosting - "; type anything to change it. title: Message of the Day type: string ONLINE_MODE: category: Security & Access default: true description: Validates Java accounts with Mojang. Floodgate handles Bedrock account authentication automatically. title: Online Mode type: boolean PAPER_CHANNEL: category: System & General default: default description: Keep set to 'default' for rock-solid stability with Geyser crossplay. Use 'experimental' only for test builds. enum: - default - experimental title: Paper Release Channel type: string PLUGINS: category: System & General default: https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot,https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot,https://api.spiget.org/v2/resources/19254/download description: Download URLs for Geyser, Floodgate, and ViaVersion for permanent crossplay compatibility. title: Plugins List / URLs type: string PVP: category: Gameplay & Rules default: true description: Allows players to attack and deal damage to one another. title: Enable PvP type: boolean RCON_PASSWORD: category: Security & Access default: "" description: Password GBR uses for RCON actions. RCON is only reachable from the host node. Leave blank and GBR generates one for your server. title: RCON Password type: string x-generate: type: password replace: - minecraft RCON_PORT: category: Security & Access default: 25575 description: TCP port for remote console. Only reachable from the host node (not published publicly); GBR uses it for actions and player moderation. title: RCON Port type: integer TYPE: category: System & General default: PAPER description: The Minecraft server distribution to run. PAPER provides high performance and plugin support. title: Server Software Type type: string USE_AIKAR_FLAGS: category: System & General default: true description: Applies tuned JVM garbage collection flags designed to reduce lag spikes on Paper servers. title: Use Aikar's Flags type: boolean VERSION: category: System & General default: LATEST description: The version of Minecraft to run. With ViaVersion installed, newer clients can always connect even if the server is on the stable release. title: Minecraft Version type: string XBOX_BROADCAST_DOWNLOAD_URL: category: Crossplay & Friends Broadcast default: https://github.com/MCXboxBroadcast/Broadcaster/releases/download/159/MCXboxBroadcastExtension.jar description: Pinned extension build. Update this URL to upgrade (or point it at your own mirror). title: MCXboxBroadcast Extension URL type: string XBOX_BROADCAST_ENABLED: category: Crossplay & Friends Broadcast default: true description: Shows this server in Xbox/PlayStation/Switch friends lists via a spare Microsoft account. Unofficial and not affiliated with Microsoft or Mojang; use a spare account. On first start, sign in with the code shown on the server's Overview page. title: Friends Broadcast (MCXboxBroadcast) type: boolean XBOX_BROADCAST_REMOTE_ADDRESS: category: Crossplay & Friends Broadcast default: '{PUBLIC_HOST}' description: Address friends are sent to when they join. {PUBLIC_HOST} is filled in with this server's relay/public address. Never leave this as 'auto' behind the relay (it would expose the node's home IP). title: Broadcast Join Address type: string XBOX_BROADCAST_REMOTE_PORT: category: Crossplay & Friends Broadcast default: '{PUBLIC_PORT_19132}' description: Bedrock port friends are sent to. {PUBLIC_PORT_19132} is filled in with the public Bedrock port. title: Broadcast Join Port type: string required: - EULA type: object configFileFormat: INI configFormatOptions: assignment: = falseValue: "false" footer: "" header: "" quoteStrings: false separator: "\n" trueValue: "true" unquotedKeys: [] uppercaseKeys: false agnosticCommandConfig: actions: Ban: command: ban {target} passwordKey: RCON_PASSWORD portKey: RCON_PORT type: RCON Broadcast: command: say {message} passwordKey: RCON_PASSWORD portKey: RCON_PORT type: RCON Kick: command: kick {target} passwordKey: RCON_PASSWORD portKey: RCON_PORT type: RCON RefreshBroadcastSignIn: command: mcxboxbroadcast restart type: STDIN Save: command: save-all passwordKey: RCON_PASSWORD portKey: RCON_PORT type: RCON connectedAccountsConfig: authType: MINECRAFT_BEDROCK authUrl: https://www.microsoft.com/link buttonLabel: Connect Account clientId: "0000000048183522" defaultPort: 19132 description: Hook spare Microsoft/Xbox accounts to keep your server visible in friends' tabs on Xbox, PlayStation, and Nintendo Switch 24/7. deviceCodeUrl: https://login.live.com/oauth20_connect.srf dynamicVariables: - refreshMinutes: 360 select: releaseType: release type: HTTP_JSON url: https://raw.githubusercontent.com/PrismarineJS/minecraft-data/master/data/bedrock/common/protocolVersions.json vars: BEDROCK_PROTOCOL: version BEDROCK_VERSION: minecraftVersion enabled: false gameVersion: '{BEDROCK_VERSION}' maxAccounts: 5 mpsdProperties: BroadcastSetting: 3 CrossPlayDisabled: false Joinability: joinable_by_friends LanGame: false MaxMemberCount: '{config:MAX_PLAYERS}' MemberCount: 1 OnlineCrossPlatformGame: true SupportedConnections: - ConnectionType: 6 HostIpAddress: '{SERVER_HOST}' HostPort: '{SERVER_PORT}' RakNetGUID: "" TitleId: 0 TransportLayer: 2 hostName: '{SERVER_HOST}' isEditorWorld: false isHardcore: '{config:HARDCORE}' levelId: level ownerId: '{XUID}' protocol: '{BEDROCK_PROTOCOL}' rakNetGUID: '{RAKNET_GUID}' version: '{BEDROCK_VERSION}' worldName: '{config:MOTD}' worldType: Survival provider: MICROSOFT_XBOX providerLabel: Xbox / Microsoft Gamertag rtaConnection: true scope: service::user.auth.xboxlive.com::MBI_SSL serviceConfigId: 4fc10100-5f7a-4470-899b-280835760c07 sessionTemplateName: MinecraftLobby title: Crossplay Friends Broadcast titleId: "1739947436" tokenUrl: https://login.live.com/oauth20_token.srf connectionGuides: - actionText: Link Account actionUrl: https://www.microsoft.com/link badge: Crossplay id: console steps: - Add the broadcast account (shown on the server's Overview page after sign-in) as a friend on your console or in the Xbox app. - Open Minecraft and go to Play → Friends. - Under 'Joinable Friends', select the server to join. title: Console (Xbox, PS, Switch) - actionText: 1-Click Connect actionUrl: minecraft://?addExternalServer={SERVER_NAME}|{CONNECTION_HOST}:{BEDROCK_PORT} id: bedrock-direct steps: - Open Minecraft (Bedrock Edition) -> Play -> Servers -> Add Server. - 'Server Name: {SERVER_NAME}' - 'Server Address: {CONNECTION_HOST}' - 'Port: {BEDROCK_PORT}' title: Bedrock (Mobile, Win10) - id: java-direct steps: - Open Minecraft (Java Edition) -> Multiplayer -> Add Server. - 'Server Address: {CONNECTION_HOST}:{PORT}' title: Java Edition (PC, Mac) consoleSignIn: codePattern: open the page\s+(https://\S+)\s+and enter the code\s+([A-Z0-9-]+) codeTtlMinutes: 5 description: Shows this server in Xbox, PlayStation and Switch friends lists using a spare Microsoft account. Unofficial - not affiliated with Microsoft or Mojang. enabledConfigKey: XBOX_BROADCAST_ENABLED failurePattern: Failed to get/refresh auth token refreshAction: RefreshBroadcastSignIn signInHint: Sign in with a SPARE Microsoft account, never your main one. Enter the code within 5 minutes. signedInHint: Add this account as a friend on your console or in the Xbox app, then join from Play → Friends. successPattern: Successfully authenticated as (.+?) \((\d+)\) title: Crossplay Friends Broadcast deviceCodePattern: open the page\s+(https://\S+)\s+and enter the code\s+([A-Z0-9-]+) deviceCodeTitle: Friends Broadcast sign-in required joinButtonLabel: How to Join joinModalTitle: How to Join This Server pingPort: 25565 pingPortKey: null playerJoinRegex: :\s+([a-zA-Z0-9_.*]+) joined the game playerLeaveRegex: :\s+([a-zA-Z0-9_.*]+) left the game playersCommand: null playersFormat: null playersRegex: null queryPortKey: null queryType: MINECRAFT_PING rconPasswordKey: RCON_PASSWORD rconPortKey: RCON_PORT restEndpoint: null restPasswordKey: null restPortKey: null restUser: null readyPattern: 'Done \([0-9.]+s\)! For help' failPatterns: - You need to agree to the EULA backupPaths: - world - world_nether - world_the_end - plugins - config - server.properties maxBackupSizeMb: 8192 maxPlayersConfigKey: MAX_PLAYERS