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] MBStone


Inder

Rekomendowane odpowiedzi

Opublikowano

Cześć chciałbym wam zaprezentować wam mój nowy projekt.

Projektem jest plugin na stoniarki, oraz LVL z ***C.

Nie przedłużając wstępu zaczynamy!

 

» POBIERANIE «

https://github.com/Inder00/MBStone/releases'>https://github.com/Inder00/MBStone/releases

Nie zapomniałem też o skanie

https://www.virustotal.com/pl/file/71a03a43d00c1505fdec61f73d0d8fb3cf75258c1f7c11a5235926b7681b786b/analysis/1441639375/

» UPRAWNIENIA «

 

- MBSTONE.LVL /LVL

- MBSTONE.ADMIN /mbstone

 

» CHANGELOG «

 

v1.0

 

- Wydanie pluginu

 

v1.1.32Build

 

• Nowe uprawnienia

  • MBSTONE.LVL /lvl

  • MBSTONE.ADMIN /mbstone

• Rozbudowano config

• Zmieniono system zapisywania na obiekty

• Poprawiono kod

• Dodano Auto Zapis użytkowników (NIE TESTOWANE)

• Dodano możliwość, ustawienia od którego lelevu można pisać na chcacie

 

v1.1.33 Build

 

• Poprawiono błędy

• Dodano AntyBuga związaną z komendą "/lvl"

• Dodano aliasy na komendy "/lvl"

  • level

  • mbstonelvl

  • mvstonelevel

• Opisano komendy w plugin.yml

• Usprawniono system pliku "data.yml"

• Pokolorowano wiadomości w konsoli

 

» BUGI/BŁĘDY «

 

- Brak

 

Piszcie jak znajdziecie.

 

» KOMENDY «

 

- /MBStone

- /LVL

 

» INFORMACJE «

 

Plugin napisałem dnia 2015-09-01, i do tej pory go nie aktualizowałem. Dnia 11.09.2015r opublikowano V1.1!. Dnia 12.09.2015r opublikowano V1.1.33 Build

 

 

 

Kod pluginu został udostępniony pod adresem (jedynie v1.0 BETA)

https://github.com/Inder00/MBStone

Pozdrawiam oraz życzę miłego dnia :)

Opublikowano

jebne se aktualizowanie rankingu w glownym watku a po c**j mi wydajnosc 

po c**j tez obiektowosc jak moge wszystko w pliku w runtime pobierac...

patologia u moderatorow z dzialu srajkrafta ...

17077363944004662812.png

Opublikowano

@up, @up2. W v1.1 jest już praca na objektach. Wydanie ten update bez kodu na githubie

Opublikowano

@Inder

*obiektach

 

@topic

Zrób zapis do MySQL - _- I może dodaj jakieś screeny.

-=-=-=-=-=-=-=-=-=-=-=-=-


Mój serwer Minecraft, IP: FireLand.pl


Tryby: Mega drop i ChestPvP.


-=-=-=-=-=-=-=-=-=-=-=-=-

Opublikowano

W v1.1 wiele zmian. Mam problem z bugiem pewnym poprawiam go. Łapcie ssa z nowych klas

xxfix4.jpg

Opublikowano

Ale Ty pobierasz za KAŻDYM razem dane z pliku, obiektami nie poprawisz wydajności, jeżeli robisz to w ten sposób.

 

@kukubaczek1

 

Jeżeli zapis do YML jest dobrze napisane, to czemu by z niego nie skorzystać? Wczytywanie na starcie, zapisywanie na końcu, jaki problem widzisz?

Opublikowano

Ale Ty pobierasz za KAŻDYM razem dane z pliku, obiektami nie poprawisz wydajności, jeżeli robisz to w ten sposób.

 

@kukubaczek1

 

Jeżeli zapis do YML jest dobrze napisane, to czemu by z niego nie skorzystać? Wczytywanie na starcie, zapisywanie na końcu, jaki problem widzisz?

 

Twój temat jest odwrotny do aktualnych funkcji, które wydałem (1.0). Właśnie obiekty do wczytywanie na starcie danych i na końcu zapisywanie oraz AUTO ZAPIS w v1.1

 

100% prac nad v1.1 @Edit

Opublikowano

Nowy update pluginu!

 

Wersja V1.1.33 Build serdecznie polecam. 2H testowania i aktualizacji w plikach.

Opublikowano

Robisz listenery i komendy w jednej klasie. Przez to kod jest nieprzejrzysty.

 

Ciekawi mnie chociaż, czy wiesz co to enkapsulacja, czy poliforizm? Jeżeli zaczynasz pisać pluginy pod Bukkit/Spigot, zanim zaczniesz jakąkolwiek styczność z Javą - gratulacje dla Ciebie. ;)

 

Poza tym DataLoader to dla Ciebie obiekt, meh.

Opublikowano

Robisz listenery i komendy w jednej klasie. Przez to kod jest nieprzejrzysty.

 

Ciekawi mnie chociaż, czy wiesz co to enkapsulacja, czy poliforizm? Jeżeli zaczynasz pisać pluginy pod Bukkit/Spigot, zanim zaczniesz jakąkolwiek styczność z Javą - gratulacje dla Ciebie. ;)

 

Poza tym DataLoader to dla Ciebie obiekt, meh.

poliformizm jak juz... sie gowniakow narobilo ktorzy po uslyszeniu randomowyh hasel od innych gowniakow uwazaja sie za znawcow...

@top

 

w komendach dajesz return false mimo tego ze komenda sie wykonala... po co ???

patologia u moderatorow z dzialu srajkrafta ...

17077363944004662812.png

Opublikowano

Robisz listenery i komendy w jednej klasie. Przez to kod jest nieprzejrzysty.

 

Ciekawi mnie chociaż, czy wiesz co to enkapsulacja, czy poliforizm? Jeżeli zaczynasz pisać pluginy pod Bukkit/Spigot, zanim zaczniesz jakąkolwiek styczność z Javą - gratulacje dla Ciebie. ;)

 

Poza tym DataLoader to dla Ciebie obiekt, meh.

Komendy są w Cmds.java,listenery w Listeners.java,obiekty są w folderze objects. Twoja odpowiedź jest naganna. Nabijanie postów. Pisanie randomowych tematów. Nawet juz na githubie nie ma kodu nowego bo raraz 999 999 817 281 takich samych pluginów. Widać, że się na javwie nie znasz. A obekty są na "private" i, "this.". Powodzenia w plagiatowaniu.

 

@Edit

poliformizm jak juz... sie gowniakow narobilo ktorzy po uslyszeniu randomowyh hasel od innych gowniakow uwazaja sie za znawcow...

@top

w komendach dajesz return false mimo tego ze komenda sie wykonala... po co ???

Dałem to tylko, żeby proces się zatrzymał, żeby spam z sendów nie poszedł.

Opublikowano

poliformizm jak juz... sie gowniakow narobilo ktorzy po uslyszeniu randomowyh hasel od innych gowniakow uwazaja sie za znawcow...

@top

 

w komendach dajesz return false mimo tego ze komenda sie wykonala... po co ???

 

O jedną literkę poleciałem, straszne ;o

 

 

Komendy są w Cmds.java,listenery w Listeners.java,obiekty są w folderze objects. Twoja odpowiedź jest naganna. Nabijanie postów. Pisanie randomowych tematów. Nawet juz na githubie nie ma kodu nowego bo raraz 999 999 817 281 takich samych pluginów. Widać, że się na javwie nie znasz. A obekty są na "private" i, "this.". Powodzenia w plagiatowaniu.

 

@Edit

 

Dałem to tylko, żeby proces się zatrzymał, żeby spam z sendów nie poszedł.

 

Chyba najwyraźniej nie wiesz o co mi chodzi. Komendy powinny być w oddzielnych klasach. Zobacz jakiś profesjonalnie napisany plugin, przykładowo FunnyGuilds. A obiekty (a raczej ich zawartość) jeżeli są na private i this (choć niekoniecznie), to brawo, dobrze się uczysz z tutoriali Bukkit'a! :)

Opublikowano

@Inder Dobra, czytam sobie teraz kod twojego pluginu, ale zanim zacznę coś o nim pisać - tak, moim zdaniem nie umiesz Javy, widziałem to w rozmowach z tobą :)

 

Co do pluginu:
1. Po co ci w Main getInst() i getPlugin()? Tak samo po co ci zmienne plugin i instance? Przecież obie, są dokładnie tym samym...

2. ​Za każdym razem gdy wywoływany jest AsyncPlayerChatEvent, ty pobierasz 2-3 wartości z configu. Nie byłoby wydajniej zapisać je na starcie serwera do zmiennych? Nie trzeba wtedy co parę sekund sięgać do configu :)
3. Za każdym razem, gdy wejdzie nowy gracz, ty tworzysz nowy plik. Dobra, w sumie jest to zrozumiałe. Ale po co, przy wejściu nowego gracza, pobierać na nowo WSZYSTKIE pliki, jakie znajdują się w folderze 'users' ?! Nie wiem po co ci w takim razie obiekty... To, co ty robisz przy wejściu nowego gracza moim zdaniem zupełnie nie ma sensu i równie dobrze, możesz wywalić te obiekty. Na jedno wyjdzie...

Są też fajne pomysły, np. sprawdzanie autora i nazwy pluginu przy onEnable(), ale jednak ja bym na 100% tego pluginu nie użył, bo wydajny to on nie jest. Polecam pouczyć się Javy i trochę więcej pomyśleć ;)

 

P.S. xAsky może nie zna​ 'całej Javy na wyrywki', ale rozumie ideę obiektowości i jednak ​jak widzę jego pluginy - mają sens. U ciebie chyba najbardziej nie ma sensu to pobieranie wszystkich plików, gdy wejdzie nowy gracz...

Opublikowano

Robiłem tak ponieważ próbowałem z obiektami dac wszystko, ale przy rejestracji obiektu wyskoczył błąd. Ten projekt zamykam na krótki okres. Za dużo czasu na aktualizacje nie mogę przeznaczyć ponieważ piszę plugin pod serwer pewiem @In FerN-o.

 

Za 2-4 tygodnie v1.2.1 Build!

Opublikowano

@Inder Dobra, czytam sobie teraz kod twojego pluginu, ale zanim zacznę coś o nim pisać - tak, moim zdaniem nie umiesz Javy, widziałem to w rozmowach z tobą :)

 

Co do pluginu:

1. Po co ci w Main getInst() i getPlugin()? Tak samo po co ci zmienne plugin i instance? Przecież obie, są dokładnie tym samym...

2. ​Za każdym razem gdy wywoływany jest AsyncPlayerChatEvent, ty pobierasz 2-3 wartości z configu. Nie byłoby wydajniej zapisać je na starcie serwera do zmiennych? Nie trzeba wtedy co parę sekund sięgać do configu :)

3. Za każdym razem, gdy wejdzie nowy gracz, ty tworzysz nowy plik. Dobra, w sumie jest to zrozumiałe. Ale po co, przy wejściu nowego gracza, pobierać na nowo WSZYSTKIE pliki, jakie znajdują się w folderze 'users' ?! Nie wiem po co ci w takim razie obiekty... To, co ty robisz przy wejściu nowego gracza moim zdaniem zupełnie nie ma sensu i równie dobrze, możesz wywalić te obiekty. Na jedno wyjdzie...

 

Są też fajne pomysły, np. sprawdzanie autora i nazwy pluginu przy onEnable(), ale jednak ja bym na 100% tego pluginu nie użył, bo wydajny to on nie jest. Polecam pouczyć się Javy i trochę więcej pomyśleć ;)

 

P.S. xAsky może nie zna​ 'całej Javy na wyrywki', ale rozumie ideę obiektowości i jednak ​jak widzę jego pluginy - mają sens. U ciebie chyba najbardziej nie ma sensu to pobieranie wszystkich plików, gdy wejdzie nowy gracz...

Kamilkime krytykujące kogoś innego o.O aż screena zrobilem.

 

Co do 1 pkt, przypominam ze ty mialeś tworzenie nowej instancji pluginu w getInstance :D

 

2. PlotTwist: zaoszczędzi tym tyle co nic, bo nie sięga się do configu jako pliku, a jedynie do configu jako obiektu, config jest ładowany tylko w momencie wywołania YamlConfiguration.loadConfiguration©, więc o ile ścieżka do zmiennej nie jest zbyt długa, "a.b.c.d.e.f.g.h" to będzie to szybkie.

Takie ładowanie wykonuje się z innych, 2 powodów:

a) przetwarzanie danych, np żeby nie robić za każdym razem cfg.get(spawn.x/y/z/yaw/pitch/world) to robisz to na starcie pluginu, i zapisujesz od razu jako Location, wtedy po 1: jest wygodniej, mniej zbędnego kodu, i jednak szybsze, oraz od razu pojawia się druga sprawa: jak coś zmienisz, np uznasz że to ma byc w innm miejscu "locations.spawn..." to zmieniasz jedno miejsce w kodzie.

B) to co pisałem, trzymasz wszystkie rzeczy obok siebie, więc nie musisz szukać po kodzie gdzie pobierałeś daną zmienną jeśli zmienisz jej miejsce/sposób zapisu itd.

 

Więc warto ładować na starcie a potem jak config jest duży to go wywalić z pamięci, ale tutaj to nie da żadnego skoku wydajności :D

 

3. No tu się w 100% zgadzam. + sam obiekt nie ma zbytnio sensu, autor używa go tylko do przechowywania danych, warto by tez go uzyć do innych rzeczy, np dodać w nim metody typu incraseLevel(), zamiast robic setLevel(getLevel() + 1)

 int stone = User.get(e.getPlayer().getName()).getStone();
      int lvl = User.get(e.getPlayer().getName()).getLVL();
pobrac usera raz, i go używać.

no i nazwa gracza powinna być raczej finalna, bo sie nie zmieni w trakcie jego gry.

Tak samo nie widze sensu ladowania graczy offline.

 

 

 

Tak wpadłem dla kamilka!

1438614356923701010629.png

 

Opublikowano

@GotoFinal Miałem getInst(), ale miałem tylko getInst(), po co by mi było jeszcze getPlugin(), które robi to samo? :D

Opublikowano

Może dodaj na github najnowszy kod 'znawco javy', który twierdzi, że 'final' to zmienna? :D

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...