You can read about some of the tech we use in this thread:
Hello CubeCrafters! Welcome to the first edition of "Behind the Cube"! This is a different post than what you'd usually see here. These posts will be more geared around our backend development and how we as a development team deliver updates to...
www.cubecraft.net
But basically we have a customised version of Spigot, and code everything in the Java programming language.
This is fine for our java servers and players, however for Bedrock this introduces a problem as Bedrock uses C++.
Your version of Minecraft, Java or Bedrock, talks to our servers using things called Packets. Packets are little 'bags' of data and info. If you click to open a chest, for example, then your game on your computer sends our servers a packet telling us you just clicked on a chest. Our servers then check a few things, and then send the chest inventory info back to you in a packet. Your game then opens the chest and displays the items.
But the packets are different between Java and Bedrock. So if a Bedrock (C++) packet gets sent to a Java server, the Java server will ignore it. This is why we have our Translator system. This translator system reads all the packets coming into and going out of our servers, and checks if they're a Bedrock or Java packet.
If it's a Java packet coming to us, it just leaves it alone and lets it go through.
If it's a Bedrock packet coming to us, it reads what the packet is, and translates it into a Java packet so our servers understand it.
If it's a Java packet going to a Java player, it just leaves it alone and lets it go through.
If it's a Java packet going to a Bedrock player, it reads what the packet is, and translates it into a Bedrock packet so your game can understand it.
We can't share the code for any of this, so if you want to build something like our server then you'd have to spend years writing it from scratch.
However, I highly suggest looking into
BuildTools by SpigotMC. It lets you run custom code that you write on a java server (which you can open up to your friends). It's probably the easiest way to start coding for minecraft, but it will still be tricky if you have no programming experience.