Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Plugin] qEssentialsReloaded - Rise from the Ashes


Rekomendowane odpowiedzi

Opublikowano

@1361622928-U485574.pngfobia_cyfry_666 @1361622928-U485574.pngntsw2 oldis lubi dawać wakacje ;D... kultury ludzie ten temat nie jest od wyzywania.

 

@topic dodaj alias do /help (/pomoc), recipe (komendę na craftingi), i może coś nowszego np. /administracja pokazuje administracje online. A.... i przy wysyłaniu wiadomości na chat/automesseage możesz dodać jakiś dźwięk bo zawsze gracz wtedy chętniej na chat luknie.

hex.svg

 PLAYBASE - Nowoczesna lista serwerów gier

  • Odpowiedzi 181
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Coś takiego w konsoli:

 

 

[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException 

 

 

 

A w grze:

java index out of bounds exception reader index(3) + length(8) exceeds writerIndex(8): UnpooledHeapByteBuf(rdix:3, wdix:3, cap:3)

NU94p9A.gif


Grafika, Reklama, Video dla twojego servera MINECRAFT!


NU94p9A.gif

Opublikowano

 

Coś takiego w konsoli:

 

 

[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException
[03:20:18] [Netty Server IO #1/ERROR]: java.lang.NullPointerException 

 

 

 

A w grze:

java index out of bounds exception reader index(3) + length(8) exceeds writerIndex(8): UnpooledHeapByteBuf(rdix:3, wdix:3, cap:3)

Niestety nie widzę tutaj żadnego błędu związanego z moim pluginiem. Ewidentnie zepsuty silnik, zepsuta Java lub złe parametry startowe.

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Dla wszystkich kochanych osób które mówią że są błędy, lub komuś nie działa :-).

TESTOWAŁEM OSOBIŚCIE ten plugin więc jeżeli on nie działa. To pobierzcie Jave 1.8 i nie używajcie starej 1.7, zmieńcie silnik na 1.9.2 (polecam PaperSpigot'a, Spigot też może być). Albo zmieńcie system .-.
Pozdrawiam.

#Team_@AdamGrzegorz

Opublikowano

Dobry wieczór,

 

Widzę kolego, że wziąłeś się za ten plugin dość porządnie. Nie najgorzej wygląda on z zewnątrz, niestety jest bardzo mało takich pluginów na 1.9, choć z ciekawości zobaczyłem kod źródłowy. Jako, że piszę pluginy na zamówienie na serwer, gdzie 500 graczy to jest nic, oraz sprzedaję na spigotmc, wymaga to ode mnie dużej optymalizacji, profesjonalizmu i prawidłowego działania. Przeglądając ogólnie dużo rzeczy nie podoba mi się, dlatego postanowiłem wszystkie błędy ci pokazać. Z różnych powodów. Krótko mówiąc, nieźle się uśmiałem. No to jedziemy po twoim dziele - klasa po klasie.

 

me.kavzaq.qEssentialsReloaded.commands.aliases.DayAlias

Lists.newArrayList() vs new ArrayList<>();

Oczywiście, że new ArrayList<>(); jest szybsze, pierwszy błąd "programisty".

 

world.setTime(2500L); - trochę późny ten dzień? https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/utils/DescParseTickFormat.java to ci powinno pomóc. :) (drugi błąd)

 

me.kavzaq.qEssentialsReloaded.commands.aliases.NightAlias

Te same błędy, tragedia.

 

me.kavzaq.qEssentialsReloaded.commands.aliases.SunAlias

Tu trzeba być chorym człowiekiem, ustawiasz world.setWeatherDuration(999999999); Wiecie, co to znaczy? ŻE PO WPISANIU /SUN PRZEZ 9,64 DNI PRAWDZIWYCH NIGDY NIE BĘDZIE DESZCZU! Zwracam uwagę na prawdziwych, a nie na Minecraftowe dni. (piąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.aliases.ThunderAlias

No tutaj tak samo, wbijam na serwa, jest burza. Wbijam tydzień później na serwa, znowu burza, no i bajlando. (szósty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.BackCommand

Po co trzy razy sprawdzać ilość argumentów? Można dać:

if(args.length==0) {...} else if(args.length==1) {...} else {// i tu pomoc}
Dodatkowo, returny tutaj są całkowicie niepotrzebne. (siódmy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.BroadcastCommand

ChatColor.translateAlternateColorCodes a alias Util.fixColors - bez sensu całkowicie, tylko zwiększa stacktrace niepotrzebnie (ósmy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ChatCommand

Czyszczenie chatu przez wysłane 100 razy \n - no fajnie, że spamujesz każdemu pakietami. Powinieneś przygotować bufor z char o wielkości 32000, potem wypełnić spacjami (Arrays.fill) i wysyłać to każdemu, a nie przez 100 razy \n. CPU tylko idze na generowanie pakietów. (dziewiąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.DelHomeCommand

Bukkit ma takie coś jak ConfigurationSerializable. Umożliwia to zapis całego obiektu do YAML, polecam szanownemu panu zajrzeć. (dziesiąty błąd, optymalizacja)

 

me.kavzaq.qEssentialsReloaded.commands.normal.DisplayNameCommand

Util.sendMessage(player, String)? Po co xD player.sendMessage(String) nie znasz? (jedenasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.FeedCommand

Gdy gracz zwykły, który ma tylko /feed dla siebie, chce sprawdzić, czy admin ma vanisha, to wystarczy wpisać /feed nick. Jak wyskoczy błąd z uprawnieniami, to znaczy, że admin ma vanisha, a gdy admina nie ma, to dostaniemy player not found. I na co /vanish, jak ten plugin to psuje? Dajcie sobie ludzie spokój z takim czymś. (dwunasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.FlyCommand

Po co przechowywać gdzieś info, czy ktoś ma /fly? Nie można player.isAllowFlying(), np. player.setAllowFlying(!player.isAllowFlying());? Uwierz mi, mój sposób jest o wiele, wiele szybszy od Twojego. (trzynasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.GameModeCommand

Przydałyby się aliasy typu /creative, jak w Essentials prawdziwym pod 1.7.

 

me.kavzaq.qEssentialsReloaded.commands.normal.GarabeCollectorCommand

Nazwa trochę nie odwołuje się do tego, co to robi. Powinna być RamCommand albo coś tego typu, bo System.gc(); czyści RAM, a tego nie powinno się nigdy używać przy wielu wątkach. (czternasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.GodCommand

Szybsze jest od razu sprawdzanie, czy isGod() niż poprzez nową klasę. Dla mnie to jest chore wczytywać specjalnie nową klasę, zamulać serwa. To wszystko laguje, czemu masz tak gdzieś optymalizację? (piętnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HealCommand

Alas /dajmiglowe? Idealnie pasuje do /givemeahead. (szesnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HelpCommand

Czemu nie ma /pomoc albo /?? Poza tym overriding bukkitowych komend jest troszkę unsafe, szczególnie przy reloadach pluginami typu PlugMan. (siedemnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HelpopCommand

Jak wpiszę /helpop hejo admini, to widzę dwa razy tą samą wiadomość. (osiemnasty błąd)

Brakuje też aliasu /ac, jak w standardowym Essentials

 

me.kavzaq.qEssentialsReloaded.commands.normal.HomeCommand

Czemu nie mogę normalnie wpisać /home, tylko muszę np. /home home? (dziewiętnasty błąd)

Załóżmy, że mam home o nazwie domek1 i domek. Jak wpiszesz /home domek, to pojawę się w domek1. SKANDAL! (dwudziesty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.InvseeCommand

Chcę dać moderatorowi uprawnienia do /invsee, aby kontrolował graczy, a on może kontrolować też i właściciela. Powinno być uprawnienie, które daje tzw. bypass (dwudziesty pierwszy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ItemCommand

Różnica między /give jest taka, że nie podaję nicku. No to fajnie, od tego się używa aliasy. (dwudziesty drugi błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.KickCommand

Świetnie, że przy /kick ruszasz tabelę z banami! Powinieneś dać, że jak kick-temporary-ban == 0, to nie edytuje wcale. (dwudziesty trzeci błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.KitCommand

Nie działa poprawnie itemsNotStored. Załóżmy, że mam pełne EQ całe, biorę /kit vip. Dlaczego dostaję tylko jeden przedmiot, gdy /kit vp ma całe diax EQ i diax zestaw narzędzi? (dwudziesty czwarty błąd)

Gracz powinien widzieć /kity, do których ma uprawnienia (pomijam jakieś formatowanie, gdy nie może on tego wziąć, dwudziesty piąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ListCommand

int players = Bukkit.getOnlinePlayers().size();Collection<? extends Player> online = Bukkit.getOnlinePlayers();
powinno być dla szybszego działania:

Collection<? extends Player> online = Bukkit.getOnlinePlayers();int players = online.size();
(dwudziesty szósty błąd)

localsb.toString().replaceFirst(", ", "")
PO prostu brak mi słów na to, ręce opadają (27)

me.kavzaq.qEssentialsReloaded.commands.normal.MessageCommand

// @ console support 
Powinno to działać normalnie w konsoli, jak konsola może nie mieć możliwości pisania do gracza poza /say? (błąd 28)

 

me.kavzaq.qEssentialsReloaded.commands.normal.RepairCommand

Mam wrażenie, że z jednego executera zrobiłeś dwa (RepairCommand i RepairUtils). Dlaczego tego nie połączysz, tylko "wincyj klas"? (29)

 

me.kavzaq.qEssentialsReloaded.commands.normal.SetHomeCommand

Podobnie jak przy /home domek1 i domek (30).

 

me.kavzaq.qEssentialsReloaded.commands.normal.SetSpawnCommand

Fajnie, że nie mogę ustawić spawna na zachód. Ciężko dać w.setLocation(p.getLocation());? Klonujesz obiekt, jak zwykle większe zużycie zasobów, a jeszcze słabo to działa (31 błąd).

 

me.kavzaq.qEssentialsReloaded.commands.normal.SpawnCommand

Już to wiele razy widziałem, po co masz TeleportUtils? Brakuje Ci player.teleport(location);? A może nie wiesz, że jest takie coś, jak PlayerTeleportEvent? (32 błąd)

druga

me.kavzaq.qEssentialsReloaded.commands.normal.TimeCommand

Weź sobie skopiuj lepiej:

https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/utils/DescParseTickFormat.java

Nie mogę wpisać godziny typu 22:00, muszę na ticks zamieniać w głowie, a to mnie grzecznie mówiąc denerwuje (33 błąd), dodatkowo taki z Ciebie troll, że za 69 doliczę Ci 34 błąd! Za liczby, które mają symbol związany z wiekiem przeznaczonym powyżej 18 roku życia powinien być specjalny github, gdzie takie materiały można udostępniać.

 

me.kavzaq.qEssentialsReloaded.commands.normal.TpAcceptCommand

Świetnie, że nie mogę zmienić czasu, po jakim nastąpi teleportacja (co mam zrobić, jak gracz jest podczas PvP?). (błąd 35)

 

me.kavzaq.qEssentialsReloaded.commands.normal.WhoIsCommand

Co, jeśli gracz jest offline? Jak mogę sprawdzić multikonta gracza z jednego IP? (coś jak /see [adres IP])

I szkoda, że nie ma pokazywania HP w skali 0-20 albo w częściach 1/2 (po prostu 2 zamień na 2.0, 36 błąd za słabą obsługę)

 

me.kavzaq.qEssentialsReloaded.commands.CommandManager

Jak Ty rejestrujesz komendy! Od tego jest plugin.yml, a nie refleksja! RATUJCIE MNIE! md_5 jakby to zobaczył, to by tragedia się stała! To jest karygodne! Aliasy, itp. daje się normalnie w plugin.yml, a Ty sobie robisz refleksją to. W dodatku nie twój kod. A co, jak w następnym silniku zmienią commandmapę? Hahahah. (37 błąd)

 

me.kavzaq.qEssentialsReloaded.database.SQLite

A co, jak ktoś nie ma org.sqlite.JDBC? Jak myślisz, że na świecie jest tylko JVM firmy Oracle, to jesteś w błędzie. Nie masz nawet fallbacku, jak ktoś nie ma SQLite, po prostu plugin bez tego nie będzie sprawnie działał (38 błąd).

 

me.kavzaq.qEssentialsReloaded.enums.AverageTime

Jaja sobie robisz? Trzy takie liczby do enum? A idź Pan w c**j. (39 błąd, optymalizacja)

 

me.kavzaq.qEssentialsReloaded.impl.message.MessageContainerImpl

Bardzo wielka klasa, jedno private static final field i public nonstatic method. Powinno być coś tego typu:

package me.kavzaq.qEssentialsReloaded.impl.message;

import java.util.HashMap;

import org.bukkit.entity.Player;

import com.google.common.collect.Maps;

public class MessageContainerImpl  {
    public static final HashMap<Player, Player> messageContainer = Maps.newHashMap();
}
A w sumie, tej klasy wgl nie powinno być. Co się stanie, jak gracz sobie wyjdzie? Odpowiem za Ciebie: plugin dostanie NullPointerException. Jahahahaha! (40 błąd)

 

me.kavzaq.qEssentialsReloaded.impl.teleport.TeleportRequestImpl

Klasa zabawna, bo ma "implements TeleportRequest" :D Co ciekawsze, jest to jedyny implements w całym projekcie. (błąd 41)

Drugi błąd jest podobny do do poprzedniego, z tym, że tutaj gracz musi wysłać prośbę, a docelowy gracz wystarczy, że sobie wyjdzie. (42 błąd)

 

me.kavzaq.qEssentialsReloaded.impl.teleport.TeleportUpdaterImpl

Jak patrzyłem na tą klasę, to zastanawiam się, po co ona jest, a przy setLocation nie powinno być na końcu "return;". Bezużyteczna klasa, z wyjątkiem jednego: zużywa niepotrzebnie zasoby (błąd 43).

 

me.kavzaq.qEssentialsReloaded.impl.UserImpl

String query = String.format("UPDATE `users` SET `homes`='%s',`kits`='%s' WHERE `uuid`='%s'",                     SerializeUtils.serializeList(this.getHomes()), SerializeUtils.serializeList(this.getKits()), this.getUUID().toString());
XDDDDD Dajcie mi jakiś adres IP, gdzie ten plugin jest. :D :D :D Nie, nie dam sobie OP... wejdę tylko na konsolę sobie i w 5 minut skopiuję pliki serwerowe. :) (bład 44)

 

me.kavzaq.qEssentialsReloaded.impl.TabConfigurationImpl

Znasz w programowaniu takie coś, jak tablica (array, bład 45)? Nie? To się nawet za to nie bierz.

 

me.kavzaq.qEssentialsReloaded.interfaces.teleport.TeleportRequest

// mozna by to w sumie lepiej zrobic, np. obiektami, hashmapy w sumie nie sa najlepszym rozwiazaniem    // ale jestem leniem, elo
Skutki Twojego lenistwa. Zacznijmy od tego, że wszystke klasy z me.kavzaq.qEssentialsReloaded.interfaces nie powinny tutaj być, zbędne są, zużywasz tylko niepotrzebnie pamięć RAM (błąd 46).

 

me.kavzaq.qEssentialsReloaded.io.Messages

Widać, że nawet nie znasz struktury YAML. :D Nowe linie można zrobić na wiele sposobów, np.:

wiadomosc: |
  pierwsza linia
  druga linia
Bukkit/Bungee przeczyta to tak, jak w Javie "pierwsza linia\ndruga linia". Więcej sposobów znajdziesz np. tutaj: http://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines (błąd 47)

Dodam, że Bukkit.getScheduler().runTask używa się tylko wtedy, gdy nie działasz na głównym wątku. Odczytujesz plik przy onEnable i jeszcze uważasz, że to jest inny wątek? (błąd 48)

 

me.kavzaq.qEssentialsReloaded.listeners.PlayerQuitListener

quitMessages.replace("{PLAYER}", e.getPlayer().getName()); nie można, po co, lepiej mieć mniej TPS, więcej lagów, więcej klas i użyć StringUtils.replace. Gorzej, niż w JavaScript (chcesz obliczyć 2+2 w JS? Użyj jQuery!, błąd 49).

 

me.kavzaq.qEssentialsReloaded.runnables.tpsmonitor.TPSMonitor

Zamieniasz TPS'y na wartości procentowe? BŁĄD! A gdy ktoś ma zwiększoną ilość TPS niż norma - 20? Dodam, że gdy serwer ma lagi, np. spadnie do 5 TPS, serwer będzie to próbował nadrobić, co spowoduje wartości większe niż 100% (błąd 50).

 

Podsumowując:

Ten plugin jest co najwyżej na pogranie z kolegami z podstawówki na hamachi, ale z pewnością nie na serwery powyżej 20 graczy (dodam, że są serwery po 500 graczy i to nie jest dla mnie dużo). Mówią, że dużo w branży IT jest ludzi, ale wciąż brakuje takich, którzy się znają dobrze na tym. Takie projekty nie powinny wgl dzisiaj istnieć, tym bardziej, że duża część (chociażby stare oficjalne Essentials pod 1.7 max obecnie) czy nawet cały Spigot jest OpenSource. Każdy ma do tego dostęp.

Dodam, że tu są tylko podstawowe błędy, ale najbardziej zabolał mnie ten sqli. Wpisz chociażby /sethome ', powinno wywalić błąd w konsoli, ale odpowiedni argument, którego zdradzać dzieciom nie będę i masz zapełniony np. cały dysk, bo za tym można dać dowolny kod SQLite (np. pętla nieskończona). Taki fajny hakerski trick :)

 

Jak naprawicie to, dam potem dwa razy dłuższą listę, ale będą tam trochę większe błędy. :D Na razie palce mnie lekko bolą od pisania (a miałem opisać jeszcze spam pakietami z listy graczy, tym można na tym pluginie dać "Server crashed - no responsed from ... seconds").

 

I jak coś piszesz, to pisz porządnie, dla siebie możesz być leniwy, ale nie dla ludzi. Współczuję wszystkim w sumie, którzy widzieli kod tego pluginu. Polecam wymienić na jakiś inny, np. https://www.spigotmc.org/resources/essentialsx.9089/ (nie jest to mój plugin, ale jest również OpenSource, dlatego nie ma skanu).

 

Edit: dodam, że @1361622928-U485574.pngntsw2 ma dużo racji, ale niektóre jego błędy pokrywają się też z moimi. Na kiedy szykować kolejną porcję z mojej prywatnej listy issues?

 

PS. Było zostać w starej ekipie, może byś się czegoś nauczył. Póki co, zawiodłem się.

Opublikowano

 

Dobry wieczór,

 

Widzę kolego, że wziąłeś się za ten plugin dość porządnie. Nie najgorzej wygląda on z zewnątrz, niestety jest bardzo mało takich pluginów na 1.9, choć z ciekawości zobaczyłem kod źródłowy. Jako, że piszę pluginy na zamówienie na serwer, gdzie 500 graczy to jest nic, oraz sprzedaję na spigotmc, wymaga to ode mnie dużej optymalizacji, profesjonalizmu i prawidłowego działania. Przeglądając ogólnie dużo rzeczy nie podoba mi się, dlatego postanowiłem wszystkie błędy ci pokazać. Z różnych powodów. Krótko mówiąc, nieźle się uśmiałem. No to jedziemy po twoim dziele - klasa po klasie.

 

me.kavzaq.qEssentialsReloaded.commands.aliases.DayAlias

Lists.newArrayList() vs new ArrayList<>();

Oczywiście, że new ArrayList<>(); jest szybsze, pierwszy błąd "programisty".

 

world.setTime(2500L); - trochę późny ten dzień? https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/utils/DescParseTickFormat.java to ci powinno pomóc. :) (drugi błąd)

 

me.kavzaq.qEssentialsReloaded.commands.aliases.NightAlias

Te same błędy, tragedia.

 

me.kavzaq.qEssentialsReloaded.commands.aliases.SunAlias

Tu trzeba być chorym człowiekiem, ustawiasz world.setWeatherDuration(999999999); Wiecie, co to znaczy? ŻE PO WPISANIU /SUN PRZEZ 9,64 DNI PRAWDZIWYCH NIGDY NIE BĘDZIE DESZCZU! Zwracam uwagę na prawdziwych, a nie na Minecraftowe dni. (piąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.aliases.ThunderAlias

No tutaj tak samo, wbijam na serwa, jest burza. Wbijam tydzień później na serwa, znowu burza, no i bajlando. (szósty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.BackCommand

Po co trzy razy sprawdzać ilość argumentów? Można dać:

if(args.length==0) {...} else if(args.length==1) {...} else {// i tu pomoc}
Dodatkowo, returny tutaj są całkowicie niepotrzebne. (siódmy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.BroadcastCommand

ChatColor.translateAlternateColorCodes a alias Util.fixColors - bez sensu całkowicie, tylko zwiększa stacktrace niepotrzebnie (ósmy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ChatCommand

Czyszczenie chatu przez wysłane 100 razy \n - no fajnie, że spamujesz każdemu pakietami. Powinieneś przygotować bufor z char o wielkości 32000, potem wypełnić spacjami (Arrays.fill) i wysyłać to każdemu, a nie przez 100 razy \n. CPU tylko idze na generowanie pakietów. (dziewiąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.DelHomeCommand

Bukkit ma takie coś jak ConfigurationSerializable. Umożliwia to zapis całego obiektu do YAML, polecam szanownemu panu zajrzeć. (dziesiąty błąd, optymalizacja)

 

me.kavzaq.qEssentialsReloaded.commands.normal.DisplayNameCommand

Util.sendMessage(player, String)? Po co xD player.sendMessage(String) nie znasz? (jedenasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.FeedCommand

Gdy gracz zwykły, który ma tylko /feed dla siebie, chce sprawdzić, czy admin ma vanisha, to wystarczy wpisać /feed nick. Jak wyskoczy błąd z uprawnieniami, to znaczy, że admin ma vanisha, a gdy admina nie ma, to dostaniemy player not found. I na co /vanish, jak ten plugin to psuje? Dajcie sobie ludzie spokój z takim czymś. (dwunasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.FlyCommand

Po co przechowywać gdzieś info, czy ktoś ma /fly? Nie można player.isAllowFlying(), np. player.setAllowFlying(!player.isAllowFlying());? Uwierz mi, mój sposób jest o wiele, wiele szybszy od Twojego. (trzynasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.GameModeCommand

Przydałyby się aliasy typu /creative, jak w Essentials prawdziwym pod 1.7.

 

me.kavzaq.qEssentialsReloaded.commands.normal.GarabeCollectorCommand

Nazwa trochę nie odwołuje się do tego, co to robi. Powinna być RamCommand albo coś tego typu, bo System.gc(); czyści RAM, a tego nie powinno się nigdy używać przy wielu wątkach. (czternasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.GodCommand

Szybsze jest od razu sprawdzanie, czy isGod() niż poprzez nową klasę. Dla mnie to jest chore wczytywać specjalnie nową klasę, zamulać serwa. To wszystko laguje, czemu masz tak gdzieś optymalizację? (piętnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HealCommand

Alas /dajmiglowe? Idealnie pasuje do /givemeahead. (szesnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HelpCommand

Czemu nie ma /pomoc albo /?? Poza tym overriding bukkitowych komend jest troszkę unsafe, szczególnie przy reloadach pluginami typu PlugMan. (siedemnasty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.HelpopCommand

Jak wpiszę /helpop hejo admini, to widzę dwa razy tą samą wiadomość. (osiemnasty błąd)

Brakuje też aliasu /ac, jak w standardowym Essentials

 

me.kavzaq.qEssentialsReloaded.commands.normal.HomeCommand

Czemu nie mogę normalnie wpisać /home, tylko muszę np. /home home? (dziewiętnasty błąd)

Załóżmy, że mam home o nazwie domek1 i domek. Jak wpiszesz /home domek, to pojawę się w domek1. SKANDAL! (dwudziesty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.InvseeCommand

Chcę dać moderatorowi uprawnienia do /invsee, aby kontrolował graczy, a on może kontrolować też i właściciela. Powinno być uprawnienie, które daje tzw. bypass (dwudziesty pierwszy błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ItemCommand

Różnica między /give jest taka, że nie podaję nicku. No to fajnie, od tego się używa aliasy. (dwudziesty drugi błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.KickCommand

Świetnie, że przy /kick ruszasz tabelę z banami! Powinieneś dać, że jak kick-temporary-ban == 0, to nie edytuje wcale. (dwudziesty trzeci błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.KitCommand

Nie działa poprawnie itemsNotStored. Załóżmy, że mam pełne EQ całe, biorę /kit vip. Dlaczego dostaję tylko jeden przedmiot, gdy /kit vp ma całe diax EQ i diax zestaw narzędzi? (dwudziesty czwarty błąd)

Gracz powinien widzieć /kity, do których ma uprawnienia (pomijam jakieś formatowanie, gdy nie może on tego wziąć, dwudziesty piąty błąd)

 

me.kavzaq.qEssentialsReloaded.commands.normal.ListCommand

int players = Bukkit.getOnlinePlayers().size();Collection<? extends Player> online = Bukkit.getOnlinePlayers();
powinno być dla szybszego działania:

Collection<? extends Player> online = Bukkit.getOnlinePlayers();int players = online.size();
(dwudziesty szósty błąd)

localsb.toString().replaceFirst(", ", "")
PO prostu brak mi słów na to, ręce opadają (27)

me.kavzaq.qEssentialsReloaded.commands.normal.MessageCommand

// @[url="http://www.mpcforum.pl/user/422670-todo/"][size=3]Todo[/size][/url] console support
Powinno to działać normalnie w konsoli, jak konsola może nie mieć możliwości pisania do gracza poza /say? (błąd 28)

 

me.kavzaq.qEssentialsReloaded.commands.normal.RepairCommand

Mam wrażenie, że z jednego executera zrobiłeś dwa (RepairCommand i RepairUtils). Dlaczego tego nie połączysz, tylko "wincyj klas"? (29)

 

me.kavzaq.qEssentialsReloaded.commands.normal.SetHomeCommand

Podobnie jak przy /home domek1 i domek (30).

 

me.kavzaq.qEssentialsReloaded.commands.normal.SetSpawnCommand

Fajnie, że nie mogę ustawić spawna na zachód. Ciężko dać w.setLocation(p.getLocation());? Klonujesz obiekt, jak zwykle większe zużycie zasobów, a jeszcze słabo to działa (31 błąd).

 

me.kavzaq.qEssentialsReloaded.commands.normal.SpawnCommand

Już to wiele razy widziałem, po co masz TeleportUtils? Brakuje Ci player.teleport(location);? A może nie wiesz, że jest takie coś, jak PlayerTeleportEvent? (32 błąd)

druga

me.kavzaq.qEssentialsReloaded.commands.normal.TimeCommand

Weź sobie skopiuj lepiej:

https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/utils/DescParseTickFormat.java

Nie mogę wpisać godziny typu 22:00, muszę na ticks zamieniać w głowie, a to mnie grzecznie mówiąc denerwuje (33 błąd), dodatkowo taki z Ciebie troll, że za 69 doliczę Ci 34 błąd! Za liczby, które mają symbol związany z wiekiem przeznaczonym powyżej 18 roku życia powinien być specjalny github, gdzie takie materiały można udostępniać.

 

me.kavzaq.qEssentialsReloaded.commands.normal.TpAcceptCommand

Świetnie, że nie mogę zmienić czasu, po jakim nastąpi teleportacja (co mam zrobić, jak gracz jest podczas PvP?). (błąd 35)

 

me.kavzaq.qEssentialsReloaded.commands.normal.WhoIsCommand

Co, jeśli gracz jest offline? Jak mogę sprawdzić multikonta gracza z jednego IP? (coś jak /see [adres IP])

I szkoda, że nie ma pokazywania HP w skali 0-20 albo w częściach 1/2 (po prostu 2 zamień na 2.0, 36 błąd za słabą obsługę)

 

me.kavzaq.qEssentialsReloaded.commands.CommandManager

Jak Ty rejestrujesz komendy! Od tego jest plugin.yml, a nie refleksja! RATUJCIE MNIE! md_5 jakby to zobaczył, to by tragedia się stała! To jest karygodne! Aliasy, itp. daje się normalnie w plugin.yml, a Ty sobie robisz refleksją to. W dodatku nie twój kod. A co, jak w następnym silniku zmienią commandmapę? Hahahah. (37 błąd)

 

me.kavzaq.qEssentialsReloaded.database.SQLite

A co, jak ktoś nie ma org.sqlite.JDBC? Jak myślisz, że na świecie jest tylko JVM firmy Oracle, to jesteś w błędzie. Nie masz nawet fallbacku, jak ktoś nie ma SQLite, po prostu plugin bez tego nie będzie sprawnie działał (38 błąd).

 

me.kavzaq.qEssentialsReloaded.enums.AverageTime

Jaja sobie robisz? Trzy takie liczby do enum? A idź Pan w c**j. (39 błąd, optymalizacja)

 

me.kavzaq.qEssentialsReloaded.impl.message.MessageContainerImpl

Bardzo wielka klasa, jedno private static final field i public nonstatic method. Powinno być coś tego typu:

package me.kavzaq.qEssentialsReloaded.impl.message;import java.util.HashMap;import org.bukkit.entity.Player;import com.google.common.collect.Maps;public class MessageContainerImpl  {    public static final HashMap<Player, Player> messageContainer = Maps.newHashMap();}
A w sumie, tej klasy wgl nie powinno być. Co się stanie, jak gracz sobie wyjdzie? Odpowiem za Ciebie: plugin dostanie NullPointerException. Jahahahaha! (40 błąd)

 

me.kavzaq.qEssentialsReloaded.impl.teleport.TeleportRequestImpl

Klasa zabawna, bo ma "implements TeleportRequest" :D Co ciekawsze, jest to jedyny implements w całym projekcie. (błąd 41)

Drugi błąd jest podobny do do poprzedniego, z tym, że tutaj gracz musi wysłać prośbę, a docelowy gracz wystarczy, że sobie wyjdzie. (42 błąd)

 

me.kavzaq.qEssentialsReloaded.impl.teleport.TeleportUpdaterImpl

Jak patrzyłem na tą klasę, to zastanawiam się, po co ona jest, a przy setLocation nie powinno być na końcu "return;". Bezużyteczna klasa, z wyjątkiem jednego: zużywa niepotrzebnie zasoby (błąd 43).

 

me.kavzaq.qEssentialsReloaded.impl.UserImpl

String query = String.format("UPDATE `users` SET `homes`='%s',`kits`='%s' WHERE `uuid`='%s'",                     SerializeUtils.serializeList(this.getHomes()), SerializeUtils.serializeList(this.getKits()), this.getUUID().toString());
XDDDDD Dajcie mi jakiś adres IP, gdzie ten plugin jest. :D :D :D Nie, nie dam sobie OP... wejdę tylko na konsolę sobie i w 5 minut skopiuję pliki serwerowe. :) (bład 44)

 

me.kavzaq.qEssentialsReloaded.impl.TabConfigurationImpl

Znasz w programowaniu takie coś, jak tablica (array, bład 45)? Nie? To się nawet za to nie bierz.

 

me.kavzaq.qEssentialsReloaded.interfaces.teleport.TeleportRequest

// mozna by to w sumie lepiej zrobic, np. obiektami, hashmapy w sumie nie sa najlepszym rozwiazaniem    // ale jestem leniem, elo
Skutki Twojego lenistwa. Zacznijmy od tego, że wszystke klasy z me.kavzaq.qEssentialsReloaded.interfaces nie powinny tutaj być, zbędne są, zużywasz tylko niepotrzebnie pamięć RAM (błąd 46).

 

me.kavzaq.qEssentialsReloaded.io.Messages

Widać, że nawet nie znasz struktury YAML. :D Nowe linie można zrobić na wiele sposobów, np.:

wiadomosc: |  pierwsza linia  druga linia
Bukkit/Bungee przeczyta to tak, jak w Javie "pierwsza linia\ndruga linia". Więcej sposobów znajdziesz np. tutaj: http://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines (błąd 47)

Dodam, że Bukkit.getScheduler().runTask używa się tylko wtedy, gdy nie działasz na głównym wątku. Odczytujesz plik przy onEnable i jeszcze uważasz, że to jest inny wątek? (błąd 48)

 

me.kavzaq.qEssentialsReloaded.listeners.PlayerQuitListener

quitMessages.replace("{PLAYER}", e.getPlayer().getName()); nie można, po co, lepiej mieć mniej TPS, więcej lagów, więcej klas i użyć StringUtils.replace. Gorzej, niż w JavaScript (chcesz obliczyć 2+2 w JS? Użyj jQuery!, błąd 49).

 

me.kavzaq.qEssentialsReloaded.runnables.tpsmonitor.TPSMonitor

Zamieniasz TPS'y na wartości procentowe? BŁĄD! A gdy ktoś ma zwiększoną ilość TPS niż norma - 20? Dodam, że gdy serwer ma lagi, np. spadnie do 5 TPS, serwer będzie to próbował nadrobić, co spowoduje wartości większe niż 100% (błąd 50).

 

Podsumowując:

Ten plugin jest co najwyżej na pogranie z kolegami z podstawówki na hamachi, ale z pewnością nie na serwery powyżej 20 graczy (dodam, że są serwery po 500 graczy i to nie jest dla mnie dużo). Mówią, że dużo w branży IT jest ludzi, ale wciąż brakuje takich, którzy się znają dobrze na tym. Takie projekty nie powinny wgl dzisiaj istnieć, tym bardziej, że duża część (chociażby stare oficjalne Essentials pod 1.7 max obecnie) czy nawet cały Spigot jest OpenSource. Każdy ma do tego dostęp.

Dodam, że tu są tylko podstawowe błędy, ale najbardziej zabolał mnie ten sqli. Wpisz chociażby /sethome ', powinno wywalić błąd w konsoli, ale odpowiedni argument, którego zdradzać dzieciom nie będę i masz zapełniony np. cały dysk, bo za tym można dać dowolny kod SQLite (np. pętla nieskończona). Taki fajny hakerski trick :)

 

Jak naprawicie to, dam potem dwa razy dłuższą listę, ale będą tam trochę większe błędy. :D Na razie palce mnie lekko bolą od pisania (a miałem opisać jeszcze spam pakietami z listy graczy, tym można na tym pluginie dać "Server crashed - no responsed from ... seconds").

 

I jak coś piszesz, to pisz porządnie, dla siebie możesz być leniwy, ale nie dla ludzi. Współczuję wszystkim w sumie, którzy widzieli kod tego pluginu. Polecam wymienić na jakiś inny, np. https://www.spigotmc.org/resources/essentialsx.9089/ (nie jest to mój plugin, ale jest również OpenSource, dlatego nie ma skanu).

 

Edit: dodam, że @1361622928-U485574.pngntsw2 ma dużo racji, ale niektóre jego błędy pokrywają się też z moimi. Na kiedy szykować kolejną porcję z mojej prywatnej listy issues?

 

PS. Było zostać w starej ekipie, może byś się czegoś nauczył. Póki co, zawiodłem się.

 

1. Kwestia gustu, dla mnie wygodniej a zaoszczędziłbym parę nanosekund. "programisty" jest niepotrzebne, bo nie jestem profesjonalistą - i nigdzie tak nie powiedziałem.

2. To samo, kwestia gustu, nigdy nie lubiłem mieć wczesnego dnia, tylko od razu jasno.

5. Z tym duration rzeczywiście nie pomyślałem, słuszna uwaga. 

7. Mhm.

8. Czyli chcesz paragrafami to robić? Nieźle...

9. W sumie... ale nadal - zaoszczędzenie paru nanosekund.

10. Nie znam się na YAML, więc dziękuje za to ironiczne polecenie.

11. Nie no, po co, przecież można na ChatColor.RED i paragrafach robić xD - To się nazywa mój panie - WYGODA UŻYTKOWANIA.

12. Słuszna uwaga.

13. Nigdzie nie przechowywuje tej informacji, lecz to prawda, wszystkie klasy z końcówką Switch są bezużyteczne i będą usunięte.

14. Czepiasz się xD Tak się przyjęło - ale skoro już taki przychylny do Essentials jesteś, to czemu nie wypomniałeś im tego błędu? Tak samo u nich, /gc.

15. jw, Switche będą usunięte.

16. Masz jakiś problem ze sobą xD Doliczasz błąd, za eastereggowy alias, gratuluje rozumu.

17. Mhm, dodam. 

18. Bo masz opa, i wysyła do ciebie + do administratorów. Poprawię.

19. Bo możesz mieć ich parę? Mogę w sumie dodać że jak masz tylko jeden dom - teleportuje do niego bez wpisywania argumentu.

20. Ho, pierwsza bardzo słuszna uwaga.

21. Słuszna uwaga.

22. Kolejne głupie czepianie się. Idź płacz do właścicieli Essentials, bo zrobili tak samo (/give i /item), ojej...

23. To wtedy cały system tego kicka by się rozpierdolił. Gdzie tu logika? Jeżeli gracz jest online, to oznacza że nie posiada temporary-bana, więc w sumie if nigdy by się nie spełnił.

24. Słuszna uwaga. 

25. No, powiedzmy, dodam.

26. Dużo na optymalizacji to nie zyska, ale jest to w sumie nielogiczne i zmienię.

27. Nie wiem jak to inaczej zrobić, skoro już tak bardzo chcesz wypominać błędy, to niech ci nie opadają rączki tylko napisz jak poprawić.

28. Czepianie się, @Todo jest właśnie po to, że jeszcze tego modułu nie skończyłem. Meh.

29. Bo wygodniej, a na optymalizacji to nie ucierpi.

30. Słuszna uwaga.

31. Meh, moja gapa. Co ja tu odwaliłem xD

32. player.teleport(); nie dodaje delaya, nieprawdaż? A ta klasa jest po to, aby gracz podczas pvp nie przeteleportował się natychmiast.

Można w sumie żeby nie robić zbędnego obiektu przenieść ją do PlayerTeleportEvent, wygodniej i w sumie szybciej.

33. W sumie można tak zrobić.

34. Hahahaha xD Sztywniak z Ciebie niezły, nie?

35. Hipokryzja level hard, najpierw piszesz żeby używać player.teleport(); bez delaya, a teraz chcesz go dodać, mimo że on jest. (Teleportuje za pomocą tej klasy).

Ty wgl widziałeś co jest w TeleportUtilsach? xD

36. Znowu, kwestia gustu. Błędu tu nie widzę.

37. Bo jest szybciej i łatwiej. Ale za to wolniej - wiem o tym.

38. Będzie jeszcze system flat. Aktualnie to prawda.

39. Yup, dobra uwaga.

40. Słuszna uwaga, dodam zabezpieczenie.

41. Nie rozumiem tego zdania. pls.

42. Słuszna uwaga, jw.

43. Po co? Zapisuje lokację na back, przecież możesz napisać jak rozwiązać to lepiej.

44. Jakbyś był na bieżąco z githubem, to byś wiedział że już dawno zostało to poprawione PreparedStatementem.

45. "Nie znasz ..czegoś..?" "To się nawet nie ucz tego". Gratuluję! Mistrz!

46. Yup, jestem leniwy. Coś mi zrobisz za to? Nie wiem, pobijesz mnie? Nie rozumiem tego argumentu. Co do interfejsów w sumie prawda, niedługo ten system zmienię.

48. Słuszna uwaga.

50. Słuszna uwaga.

 

Podsumowania nie będę komentował, jest bez sensu. Wyśmiewanie się, to chyba jedyne co w tym znajdę.

Naprawdę uważasz że MPCForum to miejsce na publikowanie jedynie projektów high-endowych robionych przez profesjonalistów? Wciąż się uczę, naprawdę nie potrzebuje porównania moich umiejętności do profesjonalistów, bo to jest śmieszne. Co do SQLite, jakbyś patrzył na nowe wersje, wiedziałbyś że SQL Injection jest już niemożliwe. 

 

Czekam na tą dużą listę, im więcej argumentów - tym lepiej.

 

Piszę porządnie, jak na moje umiejętności. Nikt tego używać nie musi, jestem tu jedynie ze względu na naukę - a kod/projekt publikuję jedynie dla ludzi takich jak ty - którzy coś tam pomogą. 

Aczkolwiek nadal na githubie najwięcej ludzi pomaga, @TheMolkaPL, GotoFinal, tutaj to raczej argumenty w sumie trochę z dupy, bez żadnych poprawek czy rad na przyszłość. Czysta wyśmiewka z początkującego.

 

Edit jest bez sensu, wiedziałeś o tym, że pierwszy qessentials jest w 80% napisany przez ntsw, jeżeli naprawdę uważasz że tamten kod był dobry - to dobrze to o tobie nie świadczy.

Jego argumenty są 100x gorsze niż twoje, potrafi jedynie wyzywać i mieć ból dupy o to że kiedyś się pokłóciliśmy.

 

Miłego dnia.

PS: Czekam na tą listę z niecierpliwością.

 

 

­

 

//Edit

Zwracam honor, najwidoczniej nie puscilem commita z poprawieniem sqlinjection

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz

Ty nie pyskuj w ten sposob do czlowieka ktory w Javie programowal zanim ty w ogole umialas wlaczyc komputer.

Tak, Adamie. Bedziemy cie jebac na tym forum i jebac, tak jak nikt cie jeszcze nie jebal. A dlaczego? Bo na to zaslugujesz.

 

 

W 80% przeze mnie? Mozliwe ze qEss 2 ktory nie byl publikowany, a jedynke pisalas ty. Ja ci pomoglem jedynie z kilkoma rzeczami. Ustawilas date wydania, to musialem sie strzeszczac i nie bylo czasu na poprawianie pierdol dla pseudo coderow na mpc.

 


Hipokryzja level hard

Nie uzywaj slow, ktorych znaczenia nie znasz.

Aha, i radze ci siadac do lekcji, bo jutro facetka ci pale postawi za brak pracy domowej :)

Opublikowano

 

Piszę porządnie, jak na moje umiejętnośc

Hahahahahhahahaha :D

Ktos ci jeszcze korepetycji z polskiego musi udzielic :)

Adam, daj sobie spokoj. My cie tu zawsze bedziemy jebac, pogodz sie z tym. Tu kolegow nie znajdziesz, ani reputacji sobie nie wyrobisz ;)

Opublikowano

Kolego skoncz sie osmieszac z tym, kod jest naprawde, ale to naprawde slaby i koledzy wyzej juz napisali dlaczego. Ja powtarzac nie bede. Poducz sie javy, popraw plugin i dopiero cokolwiek tu udostepniaj. Poki co, smiac mi sie chce jak widze ten kod i twoj zapal do odpowiadania na nasza konstruktywna krytyke. Heh, podstawowka   :D 

Opublikowano

Jak wcześniej wspomniano - kod plugin'u jest bardzo słaby. 

Plugin ma wiele błędów i nie da się go używać.

Niemniej jednak polecam! Przydatny jak chce się odstraszyć graczy! 

Opublikowano

Najlepsze jest to, ze póki jedna osoba nie wymienila paru błędów (co prawda chujowych, bo większość była wyssana z palca) to nie było tylu bohaterów, którzy piszą "plugin naprawdę słaby".

 

Kod pluginu nie jest najwyższych lotów, ale Wasze argumenty czy też wiedza (o ile można to tak nazwać) jest jeszcze bardziej c*****a.

 

Nie mówię, ze nie macie prawa oceniać, ale jeżeli już stwierdzacie ze czyjś kod jest słaby, to wypadałoby pokazać coś więcej niż tylko kozaka w Internecie i wulgaryzmy. :D

Opublikowano

@up

Cicho siedz, lizodupie. Nawet nie wiesz komu rowa lizesz :D Ty nadal myslisz ze on ma 17 lat? Takiego wala :D 12.5 ma.

 

 

 

w (co prawda chujowych, bo większość była wyssana z palca)

xD

C*****y, to ty jestes z Javy ;)


Powiem krotko,

 

 

 

bartzz.d3v

Taki z Ciebie dev jak ze mnie baletnica hahhaha :D

"Programisci bukkita" z MPC xD Nie moge po prostu :D 99% z was nie wie w ogole jak Swinga chociazby uzywac.

Opublikowano

@up

Cicho siedz, lizodupie. Nawet nie wiesz komu rowa lizesz :D Ty nadal myslisz ze on ma 17 lat? Takiego wala :D 12.5 ma.

 

 

w (co prawda chujowych, bo większość była wyssana z palca)

xD

C*****y, to ty jestes z Javy ;)

 

Powiem krotko,

 

 

bartzz.d3v

Taki z Ciebie dev jak ze mnie baletnica hahhaha :D

"Programisci bukkita" z MPC xD Nie moge po prostu :D 99% z was nie wie w ogole jak Swinga chociazby uzywac.

Eeeej, pamięć szwankuje? Ostatnio pisałeś że mam 13 ;)

 

Nie będę odpowiadać na te wasze prowokujace wypociny, nie obchodzi mnie to.

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz tab nie chodzi.

Wersja: 1.9

Java: 8

Vault i pex: najnowszy

FunnyGuildsy - od Molki.

qEss - najnowszy

 

Wyświetla się tylko header i footer, a reszta to puste komórki.

Zmieniałeś coś w configu? Bo standardowo config tabu jest pusty ;)

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

 

 

@AdamGrzegorz tab nie chodzi.

Wersja: 1.9

Java: 8

Vault i pex: najnowszy

FunnyGuildsy - od Molki.

qEss - najnowszy

 

Wyświetla się tylko header i footer, a reszta to puste komórki.

Zmieniałeś coś w configu? Bo standardowo config tabu jest pusty ;)

 

­

 

Yep, http://www.mpcforum.pl/topic/1540455-tablist-minecraft-19-do-qessentialsreloaded-funnyguilds-19/ - tab nr. 2

 

Logi? :)

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Brak. Logi czyste, jak podloga w szpitalu.

 

 

 

 

@AdamGrzegorz tab nie chodzi.

Wersja: 1.9

Java: 8

Vault i pex: najnowszy

FunnyGuildsy - od Molki.

qEss - najnowszy

 

Wyświetla się tylko header i footer, a reszta to puste komórki.

Zmieniałeś coś w configu? Bo standardowo config tabu jest pusty ;)

 

­

Yep, http://www.mpcforum.pl/topic/1540455-tablist-minecraft-19-do-qessentialsreloaded-funnyguilds-19/ - tab nr. 2
Logi? :)

 

­

 

Hmm, dziwne. Zaktualizuj https://tcpr.ca/downloads/paperspigot do latest. Nic wiecej nie moge poradzić, bo nie mam logów ;///

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

@AdamGrzegorz - a jak aktualizuje na 1.9.4 to sypia sie bledy z refleksjami.

Już jest 1.9.4? K***a, ale ten czas napierdala. Napisze aktualizację niedługo. Póki co popróbuj z różnymi silnikami, różną konfiguracją, bo niestety mało informacji mam ;/

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Wiesz co??? Dokładnie wszystkie te komendy zawarte są w pluginie essentials. Jest też xEssentials. Ale co ja tu widzę... Kolejna (trzecia) podróbka essentials.

server-icon.png  EndiMC.pl - serwer minecraft 1.21.5 |Survival| |Gildie| |Slimefun| |Terralith|

  Serwer aktywny od ponad 8 lat

  Dołącz już dzisiaj do naszej społeczności!

 

Opublikowano

Update 1.0.4R:

  • Naprawiono pobieranie nazw home'ów i sethomów
  • ­Naprawiono /message i /reply
  • Naprawiono zapis użytkowników
  • Naprawiono SQL Injection
  • Dodano argument pozwalający na ustawienie długości pogody
  • Dodano uprawnienie qessentials.invsee.bypass
  • Inne poprawki.
  • Inne optymalizacje.
  • Ta wersja pluginu jest mniejsza od poprzednich bowiem jest skompresowana przez Netbeans.

Pobieranie: https://github.com/xVacuum/qEssentialsReloaded/releases

Commit: https://github.com/xVacuum/qEssentialsReloaded/commit/e84ee01b674bd1d25e4aa0f179a35f353ff0d36f

 

Zalecana wersja: PaperSpigot 1.9.2-R1

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

A gdzie pobrać wersje PaperSpigot 1.9.2-R1

Tutaj masz listę + download wspieranych silników:

http://kavz.za.pl/plugins/qessentials/supported_engines/

 

Update 1.0.5R:

  • Naprawiono tab (puste tabelki)

Download: https://github.com/xVacuum/qEssentialsReloaded/releases

Commit: https://github.com/xVacuum/qEssentialsReloaded/commit/db386fd85578cf98b0fd910da29bd282dff33fb6

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...