Pugmatt / BedrockConnect

Join any Minecraft Bedrock Edition server IP on Xbox One, Nintendo Switch, and PS4/PS5
GNU General Public License v3.0
1.47k stars 162 forks source link
bedrock bedrock-edition dns java minecraft

BedrockConnect

Logo

License: GPL v3 HitCount

On Minecraft Bedrock Edition, players on Xbox One, Nintendo Switch, and PS4/PS5 are limited to playing on 'Featured Servers' approved by Mojang/Microsoft. These players are not able to join servers via an IP/address. This is an issue for me and others, as the server community on Java edition was one of the major parts that made Minecraft what it was, and what also made what the servers that are now considered 'Mojang Server Partners' what they are today. I wanted to fix this, so I made a solution that anyone can setup easily.

BedrockConnect is an easy to use solution for Minecraft Bedrock Edition players on Xbox One, Nintendo Switch, PS4/PS5 to join any server IP, while also having access to a serverlist that allows you to manage a list of servers. It doesn't require any downloads, just a few changes to settings.

Here's the final result in action: https://www.youtube.com/watch?v=Uz-XYXAxd8Q

Tutorials

Here's tutorials to get it setup yourself, it takes only a few minutes to get setup.

There are two methods available to join BedrockConnect:

"Add Friend" Method

(This method utilizes MCXboxBroadcast to supply this join option)

In order to make room in the friendslist, you will be removed from the friendslist if inactive for 7 or more days. If this happens, simply add back the gamertag.

DNS Method

Switch: https://www.youtube.com/watch?v=zalT_oR1nPM

Xbox: https://www.youtube.com/watch?v=g8mHvasVHMs

PS4/PS5:

Joining Java Edition Servers: https://www.youtube.com/watch?v=B_oPHl5gz_c

If you're having trouble connecting to the serverlist, take a look at the troubleshooting page: https://github.com/Pugmatt/BedrockConnect/wiki/Troubleshooting

Table of contents

FAQ

How does it work? In Minecraft Bedrock Edition, players on any version can join the available 'Featured Servers'. By using a DNS server, we can make the domains that are used to join these servers, and make them direct to the BedrockConnect serverlist server, rather than their actual servers. Or through the "Add Friend" method, we direct the user to the BedrockConnect serverlist server via a workaround supplied by MCXboxBroadcast.

The BedrockConnect serverlist server, is a specially made Minecraft server that serves the purpose of joining Minecraft servers. Yes, you join Minecraft servers, from a Minecraft server. The server can transfer you to the server you want, and you can store servers as well, just like a regular serverlist.

What is a DNS server? A DNS server is what devices uses to know what domain names go with what IP address. Your device sends the DNS server a domain name and asks what IP is associated with it, and the DNS server sends an IP back for the device to connect to. Commonly used ones include Google or Cloudflare DNS. Anyone can technically create a DNS server, and have it associate whatever IP they want to a domain. In this case, we make the 'Featured Server' domains direct to our own server.

I don't trust your DNS server... The public BedrockConnect DNS server only redirects the domains of the "Featured Servers" in Minecraft to the BedrockConnect serverlist. (Full list of records under the "Using your own DNS server" section) It's understandable though why some might not want to use a random DNS server. If you fear a MITM attack, you can also verify any domains you fear the DNS server are overriding by pinging them in command line or another tool. If you still don't feel comfortable using the BedrockConnect DNS server, you can also make your own. Look under 'Using your own DNS server' further down this page for more on that. Or, try the "Add Friend" Method instead of the DNS method.

Some featured server aren't redirecting to the serverlist using the DNS If some featured servers are redirecting to the BedrockConnect serverlist, and some aren't, this can be an issue with the DNS cache on the device/game console not updating. Nothing can really be done except wait when on the game console for the cache to clear, as there isn't a manual way to do it on these devices.

Another possible issue is that some of the featured servers such the Hive, use DNSSEC, which is used to protect itself from being overidden by DNS servers such as BedrockConnect. This is still being tested, and seems to work on some people's consoles and not on others.

Publicly available BedrockConnect instances

There are multiple BedrockConnect serverlist servers available that can be used, giving you multiple options to connect to. Currently, they do NOT share the same player database, so if you have added a server to your list on any of the given servers and connect to a different one, you will need to save that data again.

IP Address Gamertag Location Maintainer Note
104.238.130.180 BCMain, BCMain1 Pugmatt Main instance. Multiple load balanced servers. If issues occur on PS4/PS5 with DNS, try the "Add Friend" Method, or replace the primary DNS address with 45.55.68.52.
213.171.211.142 N/A kmpoppe No DNS service, only BedrockConnect server
217.160.58.93 N/A kmpoppe No DNS service, only BedrockConnect server
134.255.231.119 N/A ZAP-Hosting
45.88.109.66 McBEFC LazyBirb Located in Frankfurt am Main, Germany. More Infos!
185.169.180.190 N/A hasankayra04 Dns service with NextDNS Status Page (Listed as "Dns Listener")
116.255.1.195 2401:d002:5c06:ca01:be24:11ff:fe78:41ad TRBMCXB xavierhorwood Dns service with PowerDNS. Java Servers Supported

Status Page for all public instances

If you are currently hosting a BedrockConnect instance and are interested in adding it to this list, create a pull request adding it to the table above.

Hosting your own serverlist server

If you want a full tutorial on how to host your own BedrockConnect server with a DNS server, watch the following video: https://www.youtube.com/watch?v=AW5X7-qnvLk

Or, if you're on Linux: https://github.com/Pugmatt/BedrockConnect/wiki/Setting-up-on-Linux

The instructions below will show how to run the barebone JAR.

Requirements:

Download the latest release of the BedrockConnect serverlist software here: https://github.com/Pugmatt/BedrockConnect/releases

Run the jar with the following command

java -jar BedrockConnect-1.0-SNAPSHOT.jar nodb=true

(nodb=true allows the software to run without a database. If you want to use a database, remove this argument)

Alternatively, BedrockConnect can also be ran on Docker through the public image pugmatt/bedrock-connect

docker run -p 19132:19132/udp pugmatt/bedrock-connect

Configuration

BedrockConnect can be configured through three ways:

The following is the full list of settings available:

Setting Description Default Value
db_type Database Type (accepts values mysql, postgres, mariadb, or none) mysql
db_host Database Host localhost
db_db Database Name bedrock-connect
db_user Database Username root
db_pass Database Password
server_limit How many servers a new player can have in their serverlist 100
port Port of the server (Should only be changed for debugging on PC. Port needs to be on 19132 for the bypass to work on game consoles) 19132
bindip IP that the BedrockConnect server will bind to 0.0.0.0
nodb If true, use JSON files true
auto_reconnect If true, Make Mysql and MairaDB auto reconnect to the database when disconnected false
generatedns If true, generate a DNS zone file using user input (Only needed if you're using the mod0Umleitung DNS software) false
kick_inactive If true, players will be kicked after 10 minutes of inactivity with the serverlist UI true
custom_servers Sets the path to a custom server file, for specifying your servers in the list for all players. See custom servers.
user_servers If true, players can add and remove servers on the serverlist. If false, the options are hidden. true
featured_servers If true, the featured servers will be displayed in the serverlist. If false, the servers are hidden. true
whitelist Specify file containing list of whitelisted players. (Should be a text file with the player names specified on seperate lines)
fetch_featured_ips If true, dynamically grab the featured server IPs from the domain names. If false, a file featured_server_ips.json will be generated, containing the hard-coded featured server IPs, and to allow changing them if needed. true
fetch_ips If true, dynamically grab the server IPs from domain names, of any server a user is attempting to join. false
language Specify a file containing language customizations. See guide for changing wording
store_display_names If true, player displays names will be included in the stored player data. true
packet_limit Number of datagram packets each address can send within one tick (10ms) 200
global_packet_limit Number of all datagrams that will be handled within one tick (10ms) before server starts dropping any incoming data. 100000

Defining your own custom servers

When hosting your own serverlist server, you add your own custom servers to the top of the serverlist for all players. To get started, create a JSON file and follow this format:

[
    {
        "name": "My Custom Server 1",
        "iconUrl": "https://i.imgur.com/nhumQVP.png",
        "address": "mc1.example.com",
        "port": 19132
    },
    {
        "name": "My Custom Server 2",
        "iconUrl": "https://i.imgur.com/nhumQVP.png",
        "address": "mc2.example.com",
        "port": 19132
    }
]

You can also specify groups, such as the following format:

[
        {
        "name": "My Server Group",
        "iconUrl": "https://i.imgur.com/3BmFZRE.png",
        "content": [
            {
                "name": "Server in Group 1",
                "iconUrl": "https://i.imgur.com/3BmFZRE.png",
                "address": "mc1.example.com",
                "port": 19132
            },
        ]
    },
    {
        "name": "My Custom Server 1",
        "iconUrl": "https://i.imgur.com/3BmFZRE.png",
        "address": "mc1.example.com",
        "port": 19132
    },
    {
        "name": "My Custom Server 2",
        "iconUrl": "https://i.imgur.com/3BmFZRE.png",
        "address": "mc2.example.com",
        "port": 19132
    }
]

Then, set custom_servers in your BedrockConnect configuration to the path of the json file. (e.g. Setting through an argument to your startup script: custom_servers=[path to json file])

The icon URL is not required, if omitted it will show the default icon.

Change wording of serverlist

For cases where you want to change the wording/language of your BedrockConnect server, you can do this by creating a JSON file in the same directory as the BedrockConnect JAR. The contents of this file should contain the parts of the wording you want to overwrite.

You can find all the options that can be overwritten here: https://github.com/Pugmatt/BedrockConnect/blob/master/serverlist-server/src/main/resources/language.json

Example custom language file:

{
    "main": {
        "heading": "My Cool ServerList",
        "connectBtn" : "Hop in a server!"
    },
    "disconnect": {
        "exit": "Goodbye!"
    }
}

Then, set language in your BedrockConnect configuration to the path of the json file. (e.g. Setting through an argument to your startup script: language=my_lang.json Replace "my_lang" with the name of your file")

Using your own DNS server

In the case where you want to use your own DNS server instead of the one I supplied, this is what zones you'll need to set your DNS to in order for BedrockConnect to work:

Server Domain IP
The Hive geo.hivebedrock.network 104.238.130.180
The Hive hivebedrock.network 104.238.130.180
Mineville play.inpvp.net 104.238.130.180
Lifeboat mco.lbsg.net 104.238.130.180
Galaxite play.galaxite.net 104.238.130.180
Enchanted Dragons play.enchanted.gg 104.238.130.180

"Why is CubeCraft not included in the above list?"

104.238.130.180 is the IP to the BedrockConnect serverlist server. If you are hosting your own BedrockConnect serverlist server as well, obviously use that IP instead

Here's a script to setup BIND (DNS server software) on Linux: https://github.com/Pugmatt/BedrockConnect/blob/master/scripts/install-bind.sh

Alternatively, instead of using a DNS, you can also use other tools such as MCXboxBroadcast to join the BedrockConnect instance.

Libraries used

Donations

If you like what you see, feel free to throw a few bucks. I won't ever charge for this service. Donations go toward hosting the main BedrockConnect instance, 104.238.130.180.

https://paypal.me/Pugmatt