Skocz do zawartości

DemoN-Zestawy - Zestawy na twoim serwerze!


DemoN

Rekomendowane odpowiedzi

Zestawy

Opis: Plugin służy do zestawów na serwerze które mają za zadanie ułatwić graczom danego serwera rozgrywkę dając im gotowe przedmioty prosto do ekwipunku. Plugin posiada opcję LPM oraz PPM tzn. Po kliknięciu lewym przyciskiem myszy możemy użyć zestawu a po kliknięciu prawym przyciskiem myszy możemy sprawdzić zawartość zestawu. Aktualnie w pluginie jest zapisywanie czasu do HashMapy, więc po zrestartowaniu serwera gracz może użyć zestawu bez odczekiwania reszty czasu, w kolejnych wersjach postaram się to zmienić. Aby mieć dostęp do każdego z zestawów trzeba nadać graczowi permisje które będą podane poniżej.

Wersja gry: 1.8 

Dostępne komendy/permisje: /zestawy, /kit lub /kits. zestawy.gracz - dostęp do zestawu gracz, zestawy.vip - dostęp do zestawu vip, zestawy.premium - dostęp do zestawu premium.

Aktualnie plugin nie ma konfiguracji, lecz z każdą aktualizacją plugin będzie coraz to bardziej możliwy do skonfigurowania!

Skan: https://www.virustotal.com/#/file/599bca321fbebe67c09f67a4697fa229e03d0f70d497909ae149dd1e1864c9cd/detection

Download: http://hostuje.net/file.php?id=efe870ac4b519d4aa77dd94aa9d9b67a

Screeny:  https://zapodaj.net/235d1086fa612.png.html https://zapodaj.net/aca710c87f088.png.html https://zapodaj.net/48825d3870e31.png.html https://zapodaj.net/23cd997243e65.png.html https://zapodaj.net/9de949ba5bce3.png.html https://zapodaj.net/fd884acfcba54.png.html  https://zapodaj.net/9b5372d867b5a.png.html https://zapodaj.net/615463a155e1c.png.html 

Proszę wziąć pod uwagę że plugin waży zaledwie 13kb!

 

Edytowane przez DemoN
Zmiana wersji
Odnośnik do komentarza
Udostępnij na innych stronach

z kodu z dekompilatora poradze ci żebyś nie zamieniał & na § i nie tworzył za każdym razem itemstacków tylko najlepiej przy starcie i je gdzieś trzymał

i nw czy z tym zadziała na 1.12 (spoiler: nie zadziała)

import net.minecraft.server.v1_8_R3.EntityPlayer;
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
import net.minecraft.server.v1_8_R3.PlayerConnection;

i też nie widziałem żadnego cfg zestawów i wgl niczego, tylko sforsowane przez kod kity ;v

@DemoN ja mam z dekompilatora bo src nie widze...

Edytowane przez LloydPL
Odnośnik do komentarza
Udostępnij na innych stronach

Gratulacje ! Brak jakiegokolwiek zapisu, nawet flat. Czyli po każdym reloadzie/restarcie serwera można brać kity od nowa :)

 

  private final Map<String, Long> GRACZ;
  private final Map<String, Long> VIP;
  private final Map<String, Long> PREMIUM;

Zamiast tego można by było użyć prostego usera, dodatkowo ja polecam zapis UUID

 

  public static boolean canUse(long saveTime, long time)
  {
    return System.currentTimeMillis() - saveTime >= time;
  }

Po co taka metoda ? Przecież można porównać longa w sposób tradycyjny.

if(GRACZ.get(p.getDisplayName()) > System.currentTimeMillis()){

 

ItemStack koks = new ItemStack(Material.GOLDEN_APPLE, 10, (short)1);
          ItemStack kilof = new ItemStack(Material.DIAMOND_PICKAXE);
          ItemMeta kilofmeta = kilof.getItemMeta();
          kilofmeta.addEnchant(Enchantment.DIG_SPEED, 5, true);
          kilofmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          kilofmeta.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 3, true);
          kilof.setItemMeta(kilofmeta);
          ItemStack miecz = new ItemStack(Material.DIAMOND_SWORD);
          ItemMeta mieczmeta = miecz.getItemMeta();
          mieczmeta.addEnchant(Enchantment.DAMAGE_ALL, 5, true);
          mieczmeta.addEnchant(Enchantment.FIRE_ASPECT, 2, true);
          mieczmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          miecz.setItemMeta(mieczmeta);
          ItemStack miecz2 = new ItemStack(Material.DIAMOND_SWORD);
          ItemMeta miecz2meta = miecz2.getItemMeta();
          miecz2meta.addEnchant(Enchantment.KNOCKBACK, 2, true);
          miecz2.setItemMeta(miecz2meta);
          ItemStack buty = new ItemStack(Material.DIAMOND_BOOTS);
          ItemMeta butymeta = buty.getItemMeta();
          butymeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          butymeta.addEnchant(Enchantment.DURABILITY, 3, true);
          buty.setItemMeta(butymeta);
          ItemStack spodnie = new ItemStack(Material.DIAMOND_LEGGINGS);
          ItemMeta spodniemeta = spodnie.getItemMeta();
          spodniemeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          spodniemeta.addEnchant(Enchantment.DURABILITY, 3, true);
          spodnie.setItemMeta(spodniemeta);
          ItemStack klata = new ItemStack(Material.DIAMOND_CHESTPLATE);
          ItemMeta klatameta = klata.getItemMeta();
          klatameta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          klatameta.addEnchant(Enchantment.DURABILITY, 3, true);
          klata.setItemMeta(klatameta);
          ItemStack helm = new ItemStack(Material.DIAMOND_HELMET);
          ItemMeta helmmeta = helm.getItemMeta();
          helmmeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          helmmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          helm.setItemMeta(helmmeta);

Za każdym razem tworzysz nowego ItemStacka gdy gracz odbierze zestaw. Lepiej itemy stworzyć przy starcie serwera a potem je tylko dawać do ekwipunku 😛

 

Ale najważniejsze, nie ma tu jakiegokolwiek zapisu... Więc na większe serwery plugin odpada, bo przy każdym restarcie/reloadzie będzie można odebrać kity jak już wcześniej wspomniałem.

Odnośnik do komentarza
Udostępnij na innych stronach

6 minut temu, LloydPL napisał:

z kodu z dekompilatora poradze ci żebyś nie zamieniał & na § i nie tworzył za każdym razem itemstacków tylko najlepiej przy starcie i je gdzieś trzymał

i nw czy z tym zadziała na 1.12


import net.minecraft.server.v1_8_R3.EntityPlayer;
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
import net.minecraft.server.v1_8_R3.PacketPlayOutTitle;
import net.minecraft.server.v1_8_R3.PacketPlayOutTitle.EnumTitleAction;
import net.minecraft.server.v1_8_R3.PlayerConnection;

i też nie widziałem żadnego cfg zestawów i wgl niczego, tylko sforsowane przez kod kity ;v

Kod nie jest z dekompilatora, jest to po prostu klasa przekopiowana ze starszego pluginu tak by się nie męczyć. Poslugiwalem się inv.addItem lecz zmieniłem metodę bo nie działały mi enchanty. Ps. skąd masz kod jak nie z dekompilatora? ; - ;

10 minut temu, HotAngel2K17 napisał:

Gratulacje ! Brak jakiegokolwiek zapisu, nawet flat. Czyli po każdym reloadzie/restarcie serwera można brać kity od nowa :)

 


  private final Map<String, Long> GRACZ;
  private final Map<String, Long> VIP;
  private final Map<String, Long> PREMIUM;

Zamiast tego można by było użyć prostego usera, dodatkowo ja polecam zapis UUID

 


  public static boolean canUse(long saveTime, long time)
  {
    return System.currentTimeMillis() - saveTime >= time;
  }

Po co taka metoda ? Przecież można porównać longa w sposób tradycyjny.

if(GRACZ.get(p.getDisplayName()) > System.currentTimeMillis()){

 


ItemStack koks = new ItemStack(Material.GOLDEN_APPLE, 10, (short)1);
          ItemStack kilof = new ItemStack(Material.DIAMOND_PICKAXE);
          ItemMeta kilofmeta = kilof.getItemMeta();
          kilofmeta.addEnchant(Enchantment.DIG_SPEED, 5, true);
          kilofmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          kilofmeta.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 3, true);
          kilof.setItemMeta(kilofmeta);
          ItemStack miecz = new ItemStack(Material.DIAMOND_SWORD);
          ItemMeta mieczmeta = miecz.getItemMeta();
          mieczmeta.addEnchant(Enchantment.DAMAGE_ALL, 5, true);
          mieczmeta.addEnchant(Enchantment.FIRE_ASPECT, 2, true);
          mieczmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          miecz.setItemMeta(mieczmeta);
          ItemStack miecz2 = new ItemStack(Material.DIAMOND_SWORD);
          ItemMeta miecz2meta = miecz2.getItemMeta();
          miecz2meta.addEnchant(Enchantment.KNOCKBACK, 2, true);
          miecz2.setItemMeta(miecz2meta);
          ItemStack buty = new ItemStack(Material.DIAMOND_BOOTS);
          ItemMeta butymeta = buty.getItemMeta();
          butymeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          butymeta.addEnchant(Enchantment.DURABILITY, 3, true);
          buty.setItemMeta(butymeta);
          ItemStack spodnie = new ItemStack(Material.DIAMOND_LEGGINGS);
          ItemMeta spodniemeta = spodnie.getItemMeta();
          spodniemeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          spodniemeta.addEnchant(Enchantment.DURABILITY, 3, true);
          spodnie.setItemMeta(spodniemeta);
          ItemStack klata = new ItemStack(Material.DIAMOND_CHESTPLATE);
          ItemMeta klatameta = klata.getItemMeta();
          klatameta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          klatameta.addEnchant(Enchantment.DURABILITY, 3, true);
          klata.setItemMeta(klatameta);
          ItemStack helm = new ItemStack(Material.DIAMOND_HELMET);
          ItemMeta helmmeta = helm.getItemMeta();
          helmmeta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 4, true);
          helmmeta.addEnchant(Enchantment.DURABILITY, 3, true);
          helm.setItemMeta(helmmeta);

Za każdym razem tworzysz nowego ItemStacka gdy gracz odbierze zestaw. Lepiej itemy stworzyć przy starcie serwera a potem je tylko dawać do ekwipunku 😛

 

Ale najważniejsze, nie ma tu jakiegokolwiek zapisu... Więc na większe serwery plugin odpada, bo przy każdym restarcie/reloadzie będzie można odebrać kity jak już wcześniej wspomniałem.

Dzięki za rady, lecz napisałem o tym że po każdym restarcie/reloadzie będzie można brać kity na nowo i naprawię to w przyszłej wersji. Co itemów to każdy robi jak chce, nie narzucajmy komuś swojego kodu.

Pozdrawiam :D

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz, DemoN napisał:

Kod nie jest z dekompilatora, jest to po prostu klasa przekopiowana ze starszego pluginu tak by się nie męczyć. Poslugiwalem się inv.addItem lecz zmieniłem metodę bo nie działały mi enchanty. Ps. skąd masz kod jak nie z dekompilatora? ; - ;

Dzięki za rady, lecz napisałem o tym że po każdym restarcie/reloadzie będzie można brać kity na nowo i naprawię to w przyszłej wersji. Co itemów to każdy robi jak chce, nie narzucajmy komuś swojego kodu.

Pozdrawiam :D

tworzenie wiele razy tych samych obiektów jest niewydajne i bez sensu, sendTitle czy co tam miałeś z tym NMSem nie zadziała na innej wersji niż ta co jest w importach

Odnośnik do komentarza
Udostępnij na innych stronach

Teraz, LloydPL napisał:

tworzenie wiele razy tych samych obiektów jest niewydajne i bez sensu, sendTitle czy co tam miałeś z tym NMSem nie zadziała na innej wersji niż ta co jest w importach

Racja, w następnej wersji zrobię poprawkę i użyje klasycznego sendTitle. Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

@DemoN gdzie ja ci code style narzucam ?

Po prostu skopiowałeś metodę "canUse" z filmiku na yt, a ona sensu nie ma tak naprawdę.

Nawet linka dam, bo plugin jest z source code

Przecież do longa można dodawać czas np. w godzinach, sekundach a potem go tylko porównywać.

GRACz.put(p.getDisplayName(), System.currentTimeMillis() + (1000 * 60)); - Nwm czy dobrze dałem "()", jak coś poprawcie

 - np 60 sekund

Odnośnik do komentarza
Udostępnij na innych stronach

2 godziny temu, HotAngel2K17 napisał:

@DemoN gdzie ja ci code style narzucam ?

Po prostu skopiowałeś metodę "canUse" z filmiku na yt, a ona sensu nie ma tak naprawdę.

Nawet linka dam, bo plugin jest z source code

Przecież do longa można dodawać czas np. w godzinach, sekundach a potem go tylko porównywać.

GRACz.put(p.getDisplayName(), System.currentTimeMillis() + (1000 * 60)); - Nwm czy dobrze dałem "()", jak coś poprawcie

 - np 60 sekund

Czy używanie takiej metody od razu jest "kopiowaniem"? Oczywiście, nie narzucasz tylko piszesz że "to przecież mogło być inaczej". Mówiłem że jest to wersja "próbna" pluginu A sam plugin będzie jeszcze rozbudowany o wiele opcji I kod będzie stałe poprawiany. Ale nie mam ci tego za złe bo od tego jest forum, żeby wymieniać się opiniami na dany temat i sugerować swoje rozwiązania. Podałeś dobrą metodę I za to masz +. Jak jeszcze coś zauważysz możesz dac znać.

Pozdrawiam.

Odnośnik do komentarza
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ę...