Skocz do zawartości

explock - Nigdy więcej eksplozji


Rekomendowane odpowiedzi

Hej,
chciałbym przedstawić wam mój pierwszy publiczny plugin - explock.

Jest to wtyczka blokująca eksplozje na serwerze, posiada łatwą możliwość wyłączenia/włączenia blokady eksplozji
pod komendą.

Posiada kilka komend, które pomogą ci w korzystaniu z niego.

Komendy:

Spoiler

/explock help - wyświetla listę komend

upload_2022-6-21_14-49-25.png

/explock info - pokazuje najważniejsze informacje

upload_2021-12-4_21-42-10.png

/explock reload - Przeładowuje plugin (config, wiadomości)

/explock turn - Włącza/Wyłącza blokadę eksplozji

upload_2020-10-24_15-19-24.png

/explock update - Pokazuje informacje o nowszej wersji

/explock plugin - Pokazuje informacje o wtyczce

/explock gui - Otwiera menu ustawień w grze

Permisje:

Spoiler

explock.* - Wszystkie permisje
explock.help - Dostęp do /explock help
explock.reload - Dostęp do /explock reload
explock.info - Dostęp do /explock info
explock.update - Wysyła informacje o aktualizacjach przy wejściu (do wyłączenia w configu), dostęp do /explock update
explock.turn - Dostęp do /explock turn
explock.gui - Dostęp do /explock gui

Wtyczkę tą możesz konfigurować na wiele sposobów, w configu oraz pliku wiadomości.

Config.yml

Spoiler

enable: true #Włącza/wyłącza blokadę eksplozji (true/false)
sendCancelMessage: false #Wysyła wiadomość do konsoli przy zablokowaniu eksplozji (true/false)
updateChecker: true #Wysyła wiadomość do konsoli czy plugin jest aktualny [przy starcie] (true/false)
cancelExplosionDamage: true #Wyłącza obrażenia od eksplozji (true/false)
keepItemsOnExplosion: false #Wyłącza domyślne usuwanie przedmiotów z ziemi przy eksplozji (true/false)
lockedEntities:
- PRIMED_TNT
- MINECART_TNT

#Lista blokowanych eksplozji (bytów)
enable-world-filter: false #Włącza/wyłącza filtrowanie światów (true/false)
enabledWorlds:
- world
#Lista światów, w których eksplozje będą blokowane
lockBlocks: false
#Blokuje eksplozję bloków - łóżek w netherze / kotwic w overworldzie (true/false)
updateInfoToPlayer: true
#Wysyła wiadomość o aktualności pluginu przy dołączeniu do graczy z permisją (true/false)

WAŻNE: Możesz wybrać które eksplozje mają być anulowane (np. tnt). Ustawisz je w configu (lockedEntities). Dostępne: PRIMED_TNT, MINECART_TNT, CREEPER, ENDER_CRYSTAL, WITHER, WITHER_SKULL. Pozostaw listę w configu pustą by zablokować wszystkie eksplozje bytów. Możesz również zablokować eksplozję bloków (łóżek w netherze / kotwic w overworldzie)

Możesz w łatwy sposób zmienić wiadomości wysyłane przez plugin.

messages.yml

Spoiler

Prefix: ' &8»&r '
None: Brak
All: Wszystkie
Disabled: '&cWyłączono'
Config:
reload: Ładowanie konfiguracji..
loaded: '&aPomyślnie przeładowano'
Sender:
noPermission: '&cNie posiadasz permisji do tego.'
explosionLockOff: '&7Blokada eksplozji jest &cwyłączona.'
explosionLockOn: '&7Blokada eksplozji jest &awłączona..'
cancelMessages:
'Off': '&7Wiadomości o anulowanych eksplozjach są &cwyłączone&7.'
'On': '&7Wiadomości o anulowanych eksplozjach są &awłączone&7.'
explosionLockDisabled: '&7Pomyślnie &cwyłączono &7blokadę eksplozji.'
explosionLockEnabled: '&7Pomyślnie &awłączono &7blokadę eksplozji.'
cancelExplosionDamage:
'Off': '&7Blokada obrażeń od eksplozji jest &cwyłączona&7.'
'On': '&7Blokada obrażeń od eksplozji jest &awłączona&7.'
updateChecker:
'Off': '&7Sprawdzanie aktualizacji jest &cwyłączone&7.'
'On': '&7Sprawdzanie aktualizacji jest &awłączone&7.'
explosionCancelMessage: '&4Anulowano eksplozję.'
lockedEntities: '&7Zablokowane byty: '
wrongCommand: '&cNieznana komenda! Wpisz /explock help po listę komend.'
blockExplosionLockInfo:
'Off': '&7Blokada eksplozji bloków jest &cwyłączona'
'On': '&7Blokada eksplozji bloków jest &awłączona'
updateInfoToPlayer:
'Off': '&7Informacje o akt. do graczy są &cwyłączone'
'On': '&7Informacje o akt. do graczy są &awłączone'
worldFilter:
'Off': '&7Filtrowanie światów jest &cwyłączone'
'On': '&7Filtrowanie światów jest &awłączone'
List: '&7Blokada eksplozji w światach: '
keepItemsOnExplosion:
'Off': '&7Itemy przy eksplozji &csą usuwane'
'On': '&7Itemy przy eksplozji &anie są usuwane'
modules:
gui:

explosionDamageDisabled: '&7Pomyślnie &cwyłączono &7obrażenia od eksplozji'
explosionDamageEnabled: '&7Pomyślnie &awłączono &7obrażenia od eksplozji'
updateCheckerDisabled: '&7Pomyślnie &cwyłączono &7sprawdzanie aktualizacji'
updateCheckerEnabled: '&7Pomyślnie &awłączono &7sprawdzanie aktualizacji'
blockExplosionDisabled: '&7Pomyślnie &cwyłączono &7blokadę eksplozji bloków'
blockExplosionEnabled: '&7Pomyślnie &awłączono &7blokadę eksplozji bloków'
sendUpdateInfoToPlayerDisabled: '&7Pomyślnie &cwyłączono &7informacje o akt. do graczy'
sendUpdateInfoToPlayerEnabled: '&7Pomyślnie &awłączono &7informacje o akt. do graczy'
worldFilterDisabled: '&7Pomyślnie &cwyłączono &7filtrowanie światów'
worldFilterEnabled: '&7Pomyślnie &awłączono &7filtrowanie światów'
keepingItemsDisabled: '&7Pomyślnie &cwyłączono &7utrzymanie przedmiotów przy eksplozji'
keepingItemsEnabled: '&7Pomyślnie &awłączono &7utrzymanie przedmiotów przy eksplozji'
savedSettings: '&7Zapisano config!'

Funkcje/możliwości

Spoiler

Blokowanie eksplozji bytów (tnt, creeper itd.)
Blokowanie eksplozji bloków (łóżek w netherze / kotwic w overworldzie)
Blokowanie eksplozji w poszczególnych światach
Sprawdzanie aktualności wersji
Blokowanie obrażeń od eksplozji
Możliwość zablokowania znikania leżących przedmiotów przy eksplozji
Wysyłanie informacji o zablokowaniu eksplozji do konsoli
Możliwość dostosowywania wiadomości wysyłanych przez plugin
Możliwość edytowania ustawień wtyczki w GUI

Możliwość edycji ustawień z poziomu gry
 

Spoiler

upload_2022-7-16_16-34-46.png

Pobieranie

Kliknij tu, aby pobrać plugin!

Jeśli masz jakieś pytania - możesz skierować je na discordzie (maxcom1#0988) lub na tym forum w wiadomości prywatnej ;)

 

Edytowane przez maxcom1
Aktualizacja 0.8
Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/
Udostępnij na innych stronach

Dodaj link do githuba, będzie wygodniej z oceną.

A z dekompilatora z tego co widzę, to kod wygląda dziwnie.

  • Momentami używasz paragrafów, a raz metody ChatColor
  • Boolean enableinfo = Boolean.valueOf(Main.plugin.getConfig().getBoolean("enable"));
  • Używasz niepotrzebnie obiektu Boolean + pobierasz zmienne podczas działania pluginu, zamiast wcześniej je gdzieś załadować. (W eventach to samo)
  •  
  • No i wydaje mi sie, że metoda UpdateChecker jest wzięta z jakiegoś innego źródła. Skąd to podejrzenie ? Prosto, tutaj używasz obiektowego podejścia:
  • private Main plugin;
      
      private int resourceId;
      
      public UpdateChecker(Main plugin, int resourceId) {
        this.plugin = plugin;
        this.resourceId = resourceId;
      }
  • No a w reszcie same instancje 

Dodatkowo TabComplete nie zadziała do końca tak jak powinien, ale po 1:

  • Po co tworzysz cały czas nową listę ? można ją utworzyć wcześniej a potem ją tylko zwracać

No i ten błąd:

  • Jeżeli gracz np. wpisze upd i kliknie TAB to z automatu wyskoczy mu Help, a nie update, spowodowane jest to tym, że nie sprawdzasz czy argument jest pusty czy nie itd. Przykład tutaj:
Player senderPlayer = sender instanceof Player ? (Player) sender : null;

        ArrayList<String> matchedPlayers = new ArrayList<String>();
        for (Player player : sender.getServer().getOnlinePlayers()) {
            String name = player.getName();
            if ((senderPlayer == null || senderPlayer.canSee(player)) && StringUtil.startsWithIgnoreCase(name, lastWord)) {
                matchedPlayers.add(name);
            }
        }

        Collections.sort(matchedPlayers, String.CASE_INSENSITIVE_ORDER);
        return matchedPlayers;

 

Kod działać, działa ale jakieś poprawki by się sprzydały.

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-250711
Udostępnij na innych stronach

Dobrze, dziękuje za opinie.

Postaram się wszystko zoptymalizować, jednak nie cały kod który podałeś faktycznie znajduje się w pluginie.

Godzinę temu, kerpson napisał:

Jeżeli gracz np. wpisze upd i kliknie TAB to z automatu wyskoczy mu Help, a nie update, spowodowane jest to tym, że nie sprawdzasz czy argument jest pusty czy nie itd. Przykład tutaj:

Wiesz jak to naprawić?

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-250726
Udostępnij na innych stronach

W dniu 25.06.2020 o 17:51, maxcom1Games napisał:

Postaram się wszystko zoptymalizować, jednak nie cały kod który podałeś faktycznie znajduje się w pluginie.

 

wina dekompilatora może nwm, dlatego fajnie jakbyś dał na githuba

 

W dniu 25.06.2020 o 17:51, maxcom1Games napisał:

Wiesz jak to naprawić?

ta

return StringUtil.startsWithIgnoreCase(listaKtoraUtworzysz, args[0])

 

 

Tamtego nie dawaj, pomyliłem metody XD

Użyj tego:

return StringUtil.copyPartialMatches(args[0], listaKtoraZrobisz, new ArrayList<>);

 

Edytowane przez kerpson
jakis blad i kliklem edytuj ale nie moge edytowac XD
Wojciu

Łączę posty.

Notatka dodana przez Wojciu

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-250730
Udostępnij na innych stronach

Ok, jeżeli chodzi o

3 godziny temu, kerpson napisał:

Momentami używasz paragrafów, a raz metody ChatColor

ChatColor używam tylko do wysyłania wiadomości z configu, a do innych paragrafy.

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-250745
Udostępnij na innych stronach

Aktualizacja 0.4

Dodano możliwość zablokowania wybranych eksplozji (np. tych od TNT) [opisano w prezentacji]
Poprawiono i zoptymalizowano kod
Dodano nowy element do komendy /explock info
Dodano logi blokowania eksplozji (z dokładnością co do czasu, świata i koordynatów)
Dodano oficjalne wsparcie dla 1.16
Naprawiono błąd z tabami (podziękowania dla @kerpson)

 

 

Edytowane przez maxcom1
Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-251507
Udostępnij na innych stronach

W dniu 5.07.2020 o 23:50, Ask3r napisał:

Możesz dodać że o wybranej godzinie tnt jest wyłączone, a potem się włącza. Pewnie komuś się przyda :)

Dzięki za komentarz. Planuję coś takiego w przyszłości.

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-252470
Udostępnij na innych stronach

Aktualizacja 0.5.1
Przepisano wtyczkę, naprawiając błędy,
Zoptymalizowano wtyczkę,
Dodano sekcje Permisji do prezentacji,
Naprawiono błędy z przeładowywaniem configu i wiadomości,
Naprawiono błędy z blokadą eksplozji bytów,
Dodano możliwość blokowania eksplozji bloków (łóżka w netherze czy kresie, oraz kotwicy w zwykłym świecie),
Naprawiono inne błędy,
Dodano nowe opcje w pliku messages.yml,
Dodano możliwość zmiany prefixu,
Dodano nowe informacje do /explock info

Wersje poniżej 0.5 nie są już wspierane!
Jeśli znajdziesz jakiś błąd, proszę zgłoś go do mnie.

 

Edytowane przez maxcom1
Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-265169
Udostępnij na innych stronach

Aktualizacja 0.6 - 0.8
Hej, ostatnio wyszła nowa wersja wtyczki - 0.8. We wcześniejszych wersjach zaszły zmiany:
- Zoptymalizowano działanie wtyczki
- Poprawiono kilka mniejszych błędów
- Dodano możliwość włączenia blokady na poszczególnych światach
- Poprawiono działanie konfiguracji
- Dodano tryb GUI - zarządzanie ustawieniami z poziomu gry
- Dodano opcję blokady usuwania przedmiotów przy eksplozji
- Dodano wsparcie dla starszych i nowszych wersji (akt. 1.3.2 - 1.19.x)

Odnośnik do komentarza
https://skript.pl/temat/40096-explock-nigdy-wi%C4%99cej-eksplozji/#findComment-323893
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...