O projekcie
Projekt powstał jako prywatny serwer Minecraft uruchomiony na potrzeby wspólnej rozgrywki ze znajomymi.
Serwer został zaprojektowany jako hybrydowe środowisko łączące ekosystem pluginów z modami.
Dlatego wybór silnika padł na Mohist, mimo znanych ograniczeń tego rozwiązania.
Celem tego projektu było utrzymanie stabilnego serwera Minecraft łączącego mody Forge z pluginami Bukkit.

Hardware i infrastruktura
Serwer został w pełni skonteneryzowany, co pozwoliło na izolację zasobów i łatwe zarządzanie serwerem.
- CPU: 4 vCPU Intel Core i5-8500T
- RAM: 16 GB DDR4
- Zarządzanie: kontener Dockera pod kontrolą panelu pelican.dev.
Generacja świata
Zamiast standardowej, minecraft'owej generacji terenu, wykorzystałem głównie modyfikację ReTerraForged, którą skompilowałem, z tego repozytorium.
Pozwoliło to na uzyskanie efektów widocznych na powyższych zdjęciach — unikalność świata, nieosiągalną dla standardowego generatora terenu.
Całość została dopełniona zbudowaniem klimatycznego spawnu.
Architektura serwera
Logika serwera została rozdzielona na warstwy funkcjonalne:
- Warstwa sieciowa: gracze łączyli się do serwera poprzez reverse-proxy (NeoProtect), które odpowiadało za filtrowanie ruchu i ochronę przed atakami DDoS.
- Warstwa logiki: hybrydowy silnik łączył funkcjonalności modów i pluginów. Pluginy odpowiadały głównie za administrację, bezpieczeństwo, uprawnienia i kontrolę świata, natomiast mody skupiały się na rozszerzaniu mechanik i dodawaniu contentu.
- Warstwa danych: dane z pluginów były przechowywane w MariaDB, co pozwoliło na ich niezależność od plików serwera oraz ich przechowywanie danych w jednym miejscu.
Bezpieczeństwo serwera
- Logowanie premium + non-premium
Użytkownik podczas pierwszego wejścia na serwer musiał założyć konto. Przy każdym następnym logowaniu gracz musiał uwierzytelnić się hasłem, chyba że korzystał z konta premium, gdzie logowanie było automatyczne (hasło nie było wymagane).
- Ochrona griefingu i rollbacki
Do ochrony przed griefingiem był wykorzystywany głównie plugin WorldGuard, który umożliwia zdefiniowanie regionów i ustawienie flag, co w danych regionach jest dozwolone.
W przypadku, gdy dochodziło do zgriefowania danej części świata, był możliwy rollback za pomocą pluginu CoreProtect.
Wydajność i optymalizacja
Utrzymanie stabilnego poziomu 20 TPS przy zaawansowanym generatorze terenu i dużej liczbie modów mechanicznych było możliwe dzięki:
- Pre-generacji świata: wykorzystałem narzędzie
Chunkyw celu wyrenderowania świata w promieniu kilku tysięcy bloków, co pozwoliło na brak konieczności generowanie terenu w czasie rzeczywistym w znacznym obszarze mapy. - Wielowątkowości: dzięki silnikowi Mohist, obciążenie wynikające z logiki pluginów oraz mechanik modów zostało efektywnie rozłożone na dostępne 4 rdzenie procesora. Pomiary narzędziem
sparkwykazały stabilność środowiska nawet przy 10 graczach online.
Wyzwania i ograniczenia
- Problemy z kompatybilnością: łączenie modów z pluginami na Mohiście wymagało odpowiedniego dopasowanie i testów stabilności.
- Ograniczenia architektury sieciowej: wykorzystany stack technologiczny uniemożliwił wdrożenie proxy
Velocity. - Ręczne aktualizacje: wszystkie zależności trzeba było aktualizować ręcznie.
Co można było zrobić lepiej
- Alternatywne generatory
Nether'u iEnd'u: generatory Netheru i Endu nie współpracowały poprawnie z hybrydowym silnikiem. - Lokalizacja reverse-proxy: zastosowana ochrona NeoProtect, wprowadzała odczuwalne opóźnienia. Rozwiązaniem byłaby migracja na lokalnego dostawcę ochrony w celu zredukowania pingu.
