Skocz do zawartości

[Plugin] [1.8 - 1.12] ByteSectors - System sektorów

Polecane posty

Sektory mają w sobie synchronizacje (chat, inventory, potki), nie zawierają gildii albo innych toolsów.

Większość konfiguracji jest po stronie proxy, wszystkie sektory synchronizują swoją konfigurację z bungee.

 

Z oczywistego powodu większość pluginów nie będzie działać z sektorami bez modyfikacji. Jeśli potrzebujesz edycji jakiegoś pluginu - PW.

Dostępne jest API (sczegóły w repo) - serializacja danych, możliwość wysyłania pakietów pomiędzy serwerami, dostęp do Redisa oraz centralnej bazy MySQL

 

Wymagania: Redis, MySQL

Wspierane wersje MC: 1.8.x - 1.12x

GitHubhttps://github.com/mikigal/Bytectors

Releasehttps://github.com/mikigal/ByteSectors/releases



sygnatura_mpc.png

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pani Kasia

Gratki, lecz szkoda trochę, bo teraz znowu będzie atak izihardcorów

 

@edit Ten Twój configapi ciekawy jest i mi posłuży do niecnych celów, dzienks i gratula

Edytowano przez Ekrahb

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przejrzałem kod i wygląda spoko. Jednak ja te managery przerobiłbym na normalne obiekty. To globalne przechowywanie danych to lipa. No i mam też kilka kwestii, które warto rozwiązać.

 

https://github.com/mikigal/ByteSectors/blob/master/Client/src/main/java/pl/mikigal/bytesectors/client/util/PlayerTransferUtils.java#L41-L56

 

Po co cała ta zabawa w serializację, a potem deserializację tego wszystkiego, skoro Minkrafty to już robią. Player.dat zapisuje wszystko co jest potrzebne normalnie w pliku. Wystarczy na EntityPlayer wywołać metodę zapisu do NBTCompound a potem wrzucić to do bazy i Redisa. To też serializuje wtedy wszystkie klucze z PersistentDataContainer, więc jest kompatybilne z automatu z innymi pluginami (chociażby z radiacją z kwadratowej, bo tam efekt lugoli leci właśnie po PersistentDataContainer). Tu dochodzimy do drugiej kwestii - dane latają sobie pubsubem Redisowym bez żadnego sensownego backupu. cloudyUniverse, sektory ze skafa mają bardzo fajną funkcję zapisu gracza do bazy co n czasu i przy każdym potencjalnym momencie utraty/uszkodzenia danych - wyjście z sektora, wejście na sektor, wyjście z serwera, etc. Nawet gdyby w pluginie byłby jakiś bug i coś się wywaliło to można gracza całego przywrócić do dowolnego momentu czasu.

 

https://github.com/mikigal/ByteSectors/blob/master/Client/src/main/java/pl/mikigal/bytesectors/client/util/SerializationUtils.java#L73

 

To jest MEGA niebezpieczne. Wszelkie błędy po prostu ignorujesz i drukujesz wyjątek do standardowego wyjścia. Nawet nie logujesz jakiego to dotyczy gracza. Gdy coś się zwali, a uwierz mi, łatwo można się na takich rzeczach naciąć to nie jesteś w stanie uwierzyć graczowi, że nagle zniknął mu ekwipunek. Przychodzi, mówi, że ma pusty ekwipunek, patrzysz logi, a tam jakiś stack trace nie wiadomo skąd. Nawet gdy dojdzie do takiej sytuacji to właśnie masz do tego backupy danych w bazie. Rozwiązaniem jest na pewno prawidłowa obsługa wyjątków, czyli żadnych catchów aż do momentu obsługi tego (listener wejścia na serwer, etc). Tam dopiero nie pozwalasz mu nawet wejść na serwer do czasu rozwiązania sprawy.

 

Osobiście bym wiele rzeczy inaczej zrobił 😛 Chociażby sektor to powinien być region, który powinien być abstrakcją. Tam byłoby wiele implementacji czy to jest jakiś rectangle, czy unia, czy region Anvil, czy chunk, itd itp. Do tego warstwy siatki - tzn. możemy mieć sektory w siatce np 4x4, ale spawn może być poza tą siatką na wyższej warstwie. W każdym razie jest to chyba teraz najlepszy soft na sektory na GitHubie. 😛


Q8eOMob.png

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Pani Kasia

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×
Okienko zamknie się za 5 sekund...