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

[Problem] Jeden ItemStack w dwóch klasach


Rekomendowane odpowiedzi

Opublikowano

Witam,

Mam problem z ItemStackiem. Jesli tworze taki ItemStack:

 

ItemStack Pearl = new ItemStack (Material.ENDER_PEARL);
ItemMeta PearlMeta = Pearl.getItemMeta();
 
Jak chce ten sam ItemStack wykorzystac w innej klasie jako drop to nie dziala. Pisze w tej samej klasie (co stworzylem ItemStack'a) "public static ItemStack Pearl;" i pozniej sie do tego odwoluje w drugiej klasie. I robie np. tak:
 
b.getWorld().dropItemNaturally(b.getLocation(), NAZWA_KLASY_W_KTOREJ_STWORZYLEM_ITEMSTACKA.Pearl);
To nie dziala... A glupota byloby tworzyc drugi ten sam itemStack prawda? Wie ktos jak to naprawic?
Opublikowano
ItemStack Pearl = new ItemStack (Material.ENDER_PEARL);
ItemMeta PearlMeta = Pearl.getItemMeta();

po co ten itemmeta?

zmienne z duzej litery ;-;

b.getWorld().dropItemNaturally(b.getLocation(), new ItemStack(Material.ENDER_PEARL));

no chyba ze kity robisz, to robisz metode robisz...

Opublikowano

@filippop1 w itemstacku musialobyc bo przpisywalem do przedmiotu inne nazwy i enchanty, a tym "b.getWorld().dropItemNaturally(b.getLocation(), new ItemStack(Material.ENDER_PEARL));" tego nie zrobisz...

to albo robisz za kazdym razem nowego itemstacka, ale jak w nim cos zmienisz to bedziesz musial wszedzie to zmieniac albo

robisz metode

public static ItemStack getEnderPearl() {

ItemStack is = new ItemStack(Material.DIAMOND);

ItemMeta im= is.getItemMeta();

im.setDisplayName("treleleleo");

is.setItemMeta(im);

return is;

}

i uzywasz tego tak:

b.getWorld().dropItemNaturally(b.getLocation(), NazwaKlasy.getEnderPearl());"
Opublikowano

Teraz mam inny klopot. Przy metodzie "PlayerInteractEvent" mam ustawione, ze po kliknieciu sprawdza ItemStack  "if(p.getItemInHand().equals(test)){" wszystko dziala, ale jak trzymam 2 przedmioty z ItemStacka "test" to nic sie nie dzieje. Wie ktos jak to naprawic?

ItemStack test = new ItemStack (Material.diamond);
ItemMeta  testMeta = test.getItemMeta();

Chodzi o to, ze podczas klikniecia sprawdza czy liczba jest pojedyncza jak tak to wykonuje, a jak jest liczba przedmiotow mnoga (jak wyzej pisalem np. 2) to nic nie wykonuje. Wie ktos jak to naprawic?

Opublikowano

@1361622928-U485574.pngxWatx

Czy ten kod testowego ItemStacka przypadkiem nie wyrzuca Ci żadnych błędów?

Powinien, jeśli podałeś tutaj taki jaki jest w pluginie. :)

 

Metoda equals sprawdza ile ma się danego itemu:

https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/inventory/ItemStack.java#L312

Metoda isSimilar() już nie.

 

... i dodaj sprawdzanie czy gracz cokolwiek trzyma w ręce.

 

@filippop1

O statycznych zmiennych słyszałeś?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...