Skocz do zawartości
  • 0

Blad w pluginie z efektami


JaTuTylkoYT

Pytanie

Siema, jestem w trakcie pisania pluginu na /efekty i mam problem. Mianowicie przy kliknieciu na item w gui zabiera 48 blokow emeraldow, a nie 32 tak jak jest napisane w kodzie. Ponizej kod z InventoryClickEvent:

 

package whitehc.efekty.events;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class InventoryClick implements Listener {
	
	ItemStack blokiemejedenszesc = new ItemStack(Material.EMERALD_BLOCK, 16);
	ItemStack blokiemetrzydwa = new ItemStack(Material.EMERALD_BLOCK, 32);
	
	
	@EventHandler
	public void onInventoryClick(InventoryClickEvent e) {
		if(!ChatColor.stripColor(e.getInventory().getName()).equalsIgnoreCase("Efekty"))
			return;
		Player p = (Player) e.getWhoClicked();
		if(e.getCurrentItem() == null || e.getCurrentItem().getType() == Material.AIR || !e.getCurrentItem().hasItemMeta()) {
			p.closeInventory();
			return;
		}
		switch(e.getCurrentItem().getType()) {
		case SUGAR:	
			if(p.getInventory().contains(Material.EMERALD_BLOCK, 16)) {
				p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 6000, 0)); //20 = 1 sek | 1200 = 60 sek
				p.getInventory().removeItem(blokiemejedenszesc);
				p.closeInventory();
			} else {
				p.closeInventory();
			}
		case EMERALD:
			if(p.getInventory().contains(Material.EMERALD_BLOCK, 32)) {
				p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 6000, 1)); //20 = 1 sek | 1200 = 60 sek
				p.getInventory().removeItem(blokiemetrzydwa);
				p.closeInventory();
			} else {
				p.closeInventory();
			}
			break;
		default:
			p.closeInventory();
			break;
		}
		
	}
	
	

 

Odnośnik do komentarza
Udostępnij na innych stronach

7 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Teraz, nof napisał:

Czy mógłbyś bardziej opisać swój problem i co dokładnie nie działa?

Ogolem to wszystko dziala jak powinno ale chce zeby w gui byly lacznie 3 itemy i wszystkie to cukier, kazdy z nich to efekt (speed 1, 2 i 3) no i w gui nie wiem jak zrobic zeby byly same cukry, bo nie moge zrobic takiego samego case'a wiec mam case emerald i case sugar i w gui jest cukier i emerald

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, JaTuTylkoYT napisał:

Ogolem to wszystko dziala jak powinno ale chce zeby w gui byly lacznie 3 itemy i wszystkie to cukier, kazdy z nich to efekt (speed 1, 2 i 3) no i w gui nie wiem jak zrobic zeby byly same cukry, bo nie moge zrobic takiego samego case'a wiec mam case emerald i case sugar i w gui jest cukier i emerald

Możesz sprawdzać czy kliknięty item ma nazwę 'SPEED 1' czy 'SPEED 2', lub zamiast sprawdzania itemu sprawdzać slot.

switch (e.getSlot()) {

}

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Godzinę temu, JaTuTylkoYT napisał:

Ogolem to wszystko dziala jak powinno ale chce zeby w gui byly lacznie 3 itemy i wszystkie to cukier, kazdy z nich to efekt (speed 1, 2 i 3) no i w gui nie wiem jak zrobic zeby byly same cukry, bo nie moge zrobic takiego samego case'a wiec mam case emerald i case sugar i w gui jest cukier i emerald

 

sprawdzaj po slocie lub nazwie.

ItemStack is = e.getCurrentItem();
if (is.getType() != Material.SUGAR) return;
if (is.getDisplayName("cos tam")) {
	/no i robisz
}

\Na sloty
if (e.getSlot() == 10) {
	/no i cos tam
}

 

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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