A Minestom based Minecraft server designed to act like a server network for mini games.
  • Java 62.4%
  • Polar 34.3%
  • Shell 2.5%
  • Batchfile 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
foxors 044079fc85
All checks were successful
build / build-jar (push) Successful in 2m19s
Accidantily had wrong compressed file name
2026-10-24 19:34:23 +02:00
.forgejo/workflows Made gradle build process only build miniserver project 2026-09-23 20:37:36 +02:00
Docker Removed worlds in dock compose bc it has a bug 2026-09-28 21:06:48 +02:00
gradle Forgot to make git so we have a World manager now. 2026-08-12 20:01:33 +02:00
luantiserver Got further with luanti protocol but pause for now 2026-09-22 21:51:53 +02:00
miniserver Removed config for pretending to support versions 2026-10-09 20:25:08 +02:00
readmeAssets Added some example images in README 2026-09-29 20:49:56 +02:00
worlds Build map for color party game 2026-09-26 13:52:52 +02:00
.gitattributes Forgot those to to commit 2026-08-12 20:02:23 +02:00
.gitignore Added ministom.db/server.properties docker example 2026-09-28 20:54:53 +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
LICENSE Added MIT licensAdded MIT licensee 2026-09-22 22:01:45 +02:00
README.md Accidantily had wrong compressed file name 2026-10-24 19:34:23 +02:00
settings.gradle Got further with luanti protocol but pause for now 2026-09-22 21:51:53 +02:00

Ministom

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

How to player?

If you want to play/see a demo join with Minecraft java edition 26.2 the server at foxors.de:25565.

To host locally and/or play: please download the jar-release file from my forgejo instance and uncompress the tar.gz file (example on linux tar -xf jar-release). Afterwards you should be able to run the resulting jar with Java java -jar miniserver-all.jar just make sure you use Java runtime version 25 and that the jar file is placed in the same directory as the worlds directory.

Experimental docker image

Be warned! still experimental!

For a docker image please download and uncompress the tar.gz file docker-release. After changing into the directory you should be able to build the image with docker or podman. You may need to rename the DockerFile to Dockerfile depending on your builder. After that you can just use the resulting image. Make sure to open port 25565 to your host system.

Current features

  • Supports Minecraft Java version 26.2
  • 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
  • In game 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
  • Visual ranks for players
  • A console prompt that can be used to execute comands from console side
  • NPC's instead of commands in lobby
  • Prebuild maps to play on

Tip

A presentation video can be found at https://foxors.de/files/ministomVideo.mp4. It only dislays a little portion but it is the most a normal user would probably see.

Look at the maps (& games)

Game Description picture
Spleef You need to make other players fall by getting rid of their snow floor Spleef game
Tnt run Run because the floor gets removed under your feed and do not fall down Tnt run game
Snow ball fight Fight with snowballs and hit other players from map Snow ball fight game
Color party You have to stand on the right color when the lights go off Color party game

Lobby:

Image of the lobby Npc's in lobby

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
admin.playerManager.rank    # allow player to change ranks of 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
dev.stat                    # allow player to use /stat to get information about the server status

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)

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.

Help? / Found a bug?

I don't mind if you have any ideas to add. And if you found a bug i would be just as happy when you tell me about it. On a large scale project like this i probably introduced a bunch.

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
    • Snowball fight
    • Towers
    • Color party
  • 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 :(
  • Finish implementing Luanti server
    • Connect finished java luanti with minestom server