O projekcie
Projekt powstał jako prywatny serwer Minecraft uruchomiony na potrzeby wspólnej rozgrywki ze znajomymi.
Wraz z rosnącą liczbą modów i pluginów architektura serwera stawała się coraz bardziej skomplikowana, co wymagało starannego dobierania odpowiednich rozwiązań, tak aby wszystko było stabilne oraz wydajne.
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 projektu było utrzymanie stabilnego serwera Minecraft łączącego mody Forge z pluginami Bukkit przy rosnącej liczbie zależności i ograniczeniach silnika.
Hardware
- Intel Core i5-8500T
- 16 GB RAM
Technologie wykorzystane w projekcie
Oprogramowanie
Pluginy
Bezpieczeństwo i administracja
Pluginy odpowiadające za kontrolę uprawnień, logowanie graczy i audyt działań na serwerze.
- AuthMe
- FastLogin
- LuckPerms
- CoreProtect
- WorldGuard
Optymalizacja i wydajność
Narzędzia do monitorowania obciążenia serwera.
- spark
QoL
Pozostałe pluginy QoL, administracyjne i biblioteki.
- BetterRTP
- CustomJoinMessages
- DecentHolograms
- LPC
- MiniMOTD
- NpcPlugin
- PlaceholderAPI
- PlayerKits2
- ProtocolLib
- SetSpawn
- Shopkeepers
- SimpleHomes
- SimpleTpa
- TAB
- WorldEdit
Mody
Generacja świata i biomów
Mody zmieniające teren, struktury i klimat świata.
- reterraforged
- nullscape
- incendium
- structory
Gameplay i mechaniki
Nowe systemy rozgrywki, eksploracji i interakcji.
- create
- railways
QoL
Pozostałe mody QoL, biblioteki i inne.
- another_furniture
- architectury
- brewery
- christmasfestivity
- cloth_config
- corn_delight
- cozy
- ctov
- deathfinder
- decorative_blocks
- doapi
- doggytalents
- farmersdelight
- file/reterraforged-preset.zip
- framedblocks
- geckolib
- konkrete
- lithostitched
- moa_decor_holidays
- moonlight
- mr_better_snowybiome
- mysterious_mountain_lib
- paraglider
- resourcefullib
- snowrealmagic
- snowundertrees
- snowy_tents
- snowyspirit
Architektura
Gracze łączyli się do serwera poprzez reverse-proxy (NeoProtect), które odpowiadało za filtrowanie ruchu i podstawową ochronę sieciową.
Logika serwera została rozdzielona na warstwy funkcjonalne: pluginy i mody.
Pluginy odpowiadały głównie za administrację, bezpieczeństwo, uprawnienia i kontrolę świata, natomiast mody skupiały się na rozszerzaniu mechanik i dodawaniu contentu.
Wszelkie dane z pluginów były przechowywane w MariaDB, co pozwoliło na niezależność od plików serwera i 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.
Jeśli już by doszło do zgriefowania jakiejś części świata, był możliwy rollback za pomocą pluginu CoreProtect.
Wydajność
Pomiar wydajności serwera został wykonany za pomocą pluginu spark, w trakcie normalnej rozgrywki, przy około 10 graczach online.
Ograniczenia projektu
- Niektóre mody/pluginy były niekompatybilne z innymi modami/pluginami lub z samym silnikiem, co wymagało dokładnego dobierania modów oraz pluginów i testów przed uruchomieniem serwera.
- Projekt nie pozwalał na stworzenie sieci serwerów z użyciem velocity jako proxy.
- Brak automatycznej aktualzacji modów i pluginów.
Co można było zrobić lepiej
- Generatory Netheru i Endu działały niepoprawnie.
- Optymalizacja wydajności serwera mogła być lepsza.
- Można było użyć polskiego dostawcy ochrony sieciowej w celu zredukowania pingu.