First off, I want to talk about myself! My name is Kole and I setup this website. I was elected as the TTU IEEE Webmaster in Spring of 2023 and have been working on the Minecraft server and this documentation ever since! If you need to contact me because you have a question about anything, feel free to message me on Discord.

Ok, now lets get started with the basics!

The Servers:

The Mincraft server is actually a collection of multiple servers that are interconnected with each other though a Minecraft proxy called Velocity. The server that the end player first connects to must always be this proxy server, otherwise authentication will not work! This proxy server is also the server with the game ports exposed to the internet (TCP port 25565 for Java and UDP port 19132 for Bedrock). This proxy can also run special (NOT SPIGOT/BUKKIT) plugins, such as LuckPerms for permissions or Geyser for Java/Bedrock cross-play. The Proxy server does not load any kind of Minecraft world for players to spawn into, it simply proxies their connection to another server. For a player to spawn properly, there must be at least two server running at any given time, the proxy and a “normal” server (Eg. Vanilla, Paper, etc…). The proxy can be setup to connect to any number of servers, always default to a “hub” server, or even reconnect players to the last connected server! Velocity is quite powerful and can be a useful tool for server management and isolation.

It should also be noted that the proxy is the “parent” of all servers for authentication purposes. The child servers must have online mode disabled or players will be unable to join via the proxy. Because of this players should never be allowed to directly connect to any of the child servers. If this is allowed players would be able to change their username or potentially impersonate an admin. Cracked Minecraft clients would also be allowed. To avoid this, simply do not expose the ports of the child servers though the firewall of the host computer.

Connecting to the Server:

Currently, you can only connect to the server if you are on TTUnet or you use the playit.gg proxy service. The playit.gg proxy service creates a tunnel from the computer that allows you to access the server from outside of TTUnet.

The Java Console

Each Minecraft Java edition sever has a console that allows a server admin to directly send commands to the server. This is typically used for first time setup or maintenance, but has a variety of other uses as well. The console can run any command except those that can only be run by a player (Ex. /server or /tpa). Any player with the permission level of operator can run any command as if it were from the console, so give this permission out sparingly.

The Velocity Console

The Velocity Proxy Server also has a console that looks quite similar to the Java server console, but most Java commands will not work within it. For a list of supported commands, refer to the Velocity Documentation. Each Velocity plugin is also able to add commands. For example, LuckPerms adds lpv so that you can interact with it globally instead of on a server-by-server basis. Any additional plugin commands should be referenced by looking at that plugins documentation.

There is an entire page devoted to Velocity and how it works. It can be found here!

Permissions

The server stack uses a plugin called LuckPerms to manage all player permissions across all servers. This plugin is special because it runs on the Velocity proxy as well as all child servers. It also uses an external SQL database (in our case, this is PostgreSQL) that allows it to sync permissions between all servers. LuckPerms is used because it is a modern, relatively easy-to-use, and actively developed plugin that is cross-platform. It also has a really nice web-editor that make changing permissions quite easy. For more info on permissions, refer to this page.