vincss / mcsleepingserverstarter

Put your minecraft server to rest, while SleepingServerStarter is watching !
https://www.spigotmc.org/threads/put-your-server-to-rest-with-sleepingserverstarter.108828/
252 stars 48 forks source link

[Mc Bedrock] Any way to listen on multiple ports? #13

Closed d1ddle closed 3 years ago

d1ddle commented 3 years ago

Mainly to integrate with GeyserMC. This is because Bedrock clients use and connect on port 19132.

vincss commented 3 years ago

Hi ! Not for now, but I will make it configurable on a next version.

octoshrimpy commented 3 years ago

to add to this, bedrock and Geyser run from UDP port, which I think is going to need npm-built-in dgram, or dgramx. I've started on the code a little bit. @vincss do you have any code/branch that needs pushed for this feature? I'll gladly help you get it out.

octoshrimpy commented 3 years ago

@d1ddle you can edit geyser config to use the same port as java. Just remember to set the port on the client as well.

vincss commented 3 years ago

Not for now, I was thinking to pass the code to typescript before any further modification. I don't know if minecraft-protocol handle the UDP packet that you are talking about. https://github.com/PrismarineJS/node-minecraft-protocol I never played with Geyser & Bedrock.

I'm a bit curious, where do you hear about this app ? For about a week there is more activity around it.

d1ddle commented 3 years ago

Thanks for the replies! Ah, @octoshrimpy, that would be ok on PC Bedrock, however I'm currently playing in conjunction to Xbox (on the same network). When Geyser is hosted on the same network, it shows up as a LAN game, but this only happens when a Java player has already connected and booted up the server. So when the server is in sleeping mode, Bedrock clients can't find the server on LAN because of the port and protocol difference. I have tried using Bedrock Connect https://github.com/Pugmatt/BedrockConnect and it has worked great in the past in conjunction with Geyser, however right now I'm not sure what the DNS Servers are doing as I can't connect at all (USA or UK.). Bedrock Connect is just a DNS server you manually set so that you can connect to your own IP addresses from console Bedrock.

So my easiest options as of now, are: A: Have a separate Geyser instance constantly running instead of the plugin version so that Bedrock players can connect via the proxy and to SSS which would then wake the server - (Geyser is a proxy - and redirects/translates packets from Bedrock-Java - and have Geyser redirect Bedrock packets to port 25565 as Octo said, it would wake SSS and start the server) B: Set up my own DNS server with Bedrock Connect and use it via Xbox (which I'm not too keen on doing) C: Debug and fix the public Bedrock Connect DNS issue I have D: Make one SSS instance listen on 19132 TCP-UDP and 25565 TCP (Unlikely...? May take some rewrites? This would be the most convenient for me but I understand it might not be for you guys who actually have to re-write the program LMAO) E: Make another instance of SSS listen on 19132 TCP-UDP (Have 2 services running, one for each port? not sure if that would work for UDP protocol) - I'll try it

Idk, I'll mess around with it a bit

octoshrimpy commented 3 years ago

@d1ddle I have the same "symptom" with mobile bedrock. I've switched the ports on geyser and mobile client to 65, and sleepingServerStarter still doesn't see it, because the mc-protocol server is only listening to TCP. https://github.com/vincss/mcsleepingserverstarter/blob/ebf51b0591e138e2a274a1a1338c62dd7b7090b3/sleepingServerStarter.j

@vincss looks like bedrock isn't being worked in, nor is it currently supported. I've had this on my server for about 2 months now, so I'm not sure about the sudden influx.

--EDIT-- my ports are 65 outside, but they forward to internal 25565 ports inside a docker container

vincss commented 3 years ago

Maybe we can join on a Discord chat to discuss it : https://discord.gg/nJbF6yBc

octoshrimpy commented 3 years ago

@vincss invite invalid.

vincss commented 3 years ago

Yes, it expired after 24 hours . There is a new one : https://discord.gg/auUBXE3X

vincss commented 3 years ago

I created a branch for bedrock compatibility if some of you want to give it a try : https://github.com/vincss/mcsleepingserverstarter/tree/feature/mc_bedrock

With node 14 :

Or download the latest artefact from https://github.com/vincss/mcsleepingserverstarter/actions/workflows/node.js.yml?query=branch%3Afeature%2Fmc_bedrock

vincss commented 3 years ago

I merged the branch and made a new release : https://github.com/vincss/mcsleepingserverstarter/releases/tag/v1.16.5