A Minestom based Minecraft server designed to act like a server network for mini games.
  • Java 89.3%
  • Shell 9%
  • Batchfile 1.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
foxors 57591f793d
All checks were successful
build / build-jar (push) Successful in 1m19s
Now banned players get kicked before loggin fully
2026-08-31 23:09:45 +02:00
.forgejo/workflows Failed docker build for cli so users have to do it themselfe 2026-08-26 19:18:23 +02:00
gradle Forgot to make git so we have a World manager now. 2026-08-12 20:01:33 +02:00
miniserver Now banned players get kicked before loggin fully 2026-08-31 23:09:45 +02:00
worlds Made snowballs despawn 2026-08-31 21:43:54 +02:00
.gitattributes Forgot those to to commit 2026-08-12 20:02:23 +02:00
.gitignore Implemented report-,ban-,local world chat systems 2026-08-20 23:12:33 +02:00
dockerSetup.sh Failed docker build for cli so users have to do it themselfe 2026-08-26 19:18:23 +02:00
gradle.properties Removed java home dir in properties file 2026-08-24 22:37:11 +02:00
gradlew Forgot to make git so we have a World manager now. 2026-08-12 20:01:33 +02:00
gradlew.bat Forgot to make git so we have a World manager now. 2026-08-12 20:01:33 +02:00
README.md Added teleport command 2026-08-31 15:27:13 +02:00
settings.gradle Made an ingame world editor from scratch 2026-08-31 12:01:53 +02:00

Ministom

A smoll minigame server for Minecraft writting in Java with Minestom.

Why?

I always liked to make smoll minigames for Minecraft & I even tried before creating a Minecraft server Network with a friend. However Minecraft servers are verryyyy memory expensive tought it was before the big spike of ram price increase it was still a bit expensive for us (both still students) to buy a better server.

We tried all kinds of tricks and I learned a lot about Networking, docker, server managment so on.

This time i try my luck again with one big server instead of many under a proxy & now I actually know how to write code in java because I am currently in a class about it.

  • my java exam is in a few weeks so it is an additional learning project.

How to player?

There 4 ways you can:

  1. You can build from source with shadowjar task which should give you an .jar which is the entire server and can be just started (require worlds directory in same directory as jar execution context)
  2. Download from the workflow of my forgejo instance the server zip from last succefull build, unzip it and run the jar inside (required folders/files are also in zip)
  3. Do the same as 2 but run dockerSetup.sh which generates a bunch of files includin a compose.yaml which can be composed using podman/docker to create a stack with velocity viaVersion, backwards & rewind to implement multi version support and a ministom container itself

Features

  • Different minigames
  • A system which automaticly manages all game instances
  • A queue system
  • A party system
  • A ban system
    • An automatic bad word block list banner when players use words they really should not (must be configure over properties file)
  • A report system
  • A permission system
  • Persistant reports/bans/permissions accross server restarts with sqlite database
  • Configuration over properties file ooooor ... by modifieng source code ;)
  • Multible commands acting as a 'frontend' to all the systems some require specific permissions to execute
  • A main program to connect everything
  • Velocity support
  • Build tool to modify maps on the go
  • Additional abilities that may be usefull
    • fly in survival mode
    • hide from other players
    • change gamemode
    • help command
  • A console prompt that can be used to execute comands from console side

Permissions

admin                       # all admin permissions
admin.build                 # all build permissions
admin.build.place           # allow player to place blocks in non build areas
admin.build.break           # allow player to break blocks in non build areas
admin.build.interact        # allow player to interact with blocks in non build areas
admin.build.minied          # allow player to use custom build tool
admin.permission            # allow player to change permissions of others
admin.state.gamemode        # allow player to change gamemode
admin.state.fly             # allow player to fly (even when in survival over a command /fly)
admin.state.hide            # allow player to hide themselfe as ghosts
admin.playerManager         # allow player to manage players
admin.playerManager.ban     # allow player to ban/unban players
admin.playerManager.report  # allow player to manage report system (creating reports can be done without this permission)
admin.playerManager.tp      # allow player to teleport themselfe & others
dev                         # all deveolpment permissions (may not have fancy ui or responsive error handling)
dev.crates                  # allow manual modifieng of crate system
dev.queueForce              # allow forcing queue to start even if it does not meet min player requirement

Configuration

Create a file on the same directory level as the .jar named server.properties afterwards you can write following configurations to overwrite their default.

address=0.0.0.0             # the address of the server                     
port=25565                  # the server port
mainAdmin=                  # a player uuid which always will hav every permissions
defaultCrate=Lobby          # the crate/game used as lobby
onlineMode=false            # if online mode should be enabled or not
velocity=false              # if velocity support should be enabled or not (currently not available)
queueTime=10                # time for queue system to wait for additional players after player minnimum was reached but not the maximum
wordsBlacklist=bad,word1    # a list of words that will be detected in player messages and gets them banned
badWordBanTime=720          # how long the bantime of a bad word mention should be om minutes (default 12 hours)

Todo

  • Make .properties config instead of hardcoding everything
  • Try making ram usage lower
  • Make database module switchable with other database
  • Make inventory uis in addition to commands
  • Add /hub command to move players to lobby
  • Move logic from commands to their actually managers to make codebase more consistent
  • Launch instance on foxors.de
  • Automaticly kick players from parties if they go offline
  • Make crates run in other threads to not block main
  • Make crateModules work by giving them the entire crate object itself and using the instance given functions for that
  • Create nice ui for countdounw crates Module
  • Centrelize kicking players from queue/parties if they go offline
  • Make a test with friends
  • GAMES...
    • Snake
    • Classic PvP
    • Jump and run
    • Spleef
    • Get down
    • Dropper
    • Tnt spleef
    • Disasters
    • JumpPvP (original game idea)
    • Snowball fight
    • Towers
  • Kick players in cratesManager if crate gets remove
  • Report player system
  • Ban system
  • Add more comments for javadoc
  • Add autocompletion to queue
  • Make spectator players actually invisible
  • Fix racing condition when creatin creates in queue where players may be sent to crate before it is ready
  • Replay system that saves the last frew minutes when reporting players
  • Make a rank system (+match making) ranks should not be bought they are earned
  • Anti cheat (named watch cat instead of hypixels watch dog)
  • Cach mojang api requests
  • Make auto ban system for people using bad/horrible words in chat
  • Capsel chats of players to their local world
  • Add a help command
  • Make permission command actual work on offline players
  • Make unit tests :(