Skocz do zawartości
  • 0

Zablokowanie dropu itemstacka


Pytanie

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

Jeżeli chodzi Ci o to, że na żadnym świecie nie może być danego przedmiotu w ilości jedenego, czy to wyrzuconego, czy innego, to takie coś powinno działać (nie testowałem, wklejasz to do onEnable()):

Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
	public void run(){
		for (World w : Bukkit.getWorlds()) {
			for (Entity e : w.getEntities()){
    			if (e instanceof EntityItem) {
        			EntityItem ei = (EntityItem) e;
            		if(ei.getItemStack().getItem() == Items.APPLE && ei.getItemStack().getCount() == 1){
            			e.remove();
            		}
        	    }
    		}
	    }
	}
}, 1, 1);

Jeżeli chodzi Ci o to, że gracz nie może wyrzucać danego przedmiotu (poprzez naciśnięie przycisku Q), to do onEnable() wklejasz

Bukkit.getPluginManager().registerEvents(this, this);

Co mówi Bukkitowi, że ma wykrywać klasę pluginu jako tzw. "Event Handler". W głównej klasie pluginu tworzysz także funkcję onDrop() z adnotacją @EventHandler, która będzie uruchamiana przy wyrzuceniu przedmiotów przez gracza. Powinna ona wyglądać tak:

@EventHandler
public void onDrop(PlayerDropItemEvent evt){
	if(evt.getItem() == Items.APPLE){
		evt.setCancelled(true);
	}
}

Nie wiem dlaczego funkcja ta nie działa na zasadzie ItemStacka, tylko samego Itemu, mnie to mocno zdziwiło (przecież można wyrzucać przedmioty z tagami nbt, ilością i innymi?!). Nie testowałem, ale powinno działać.

Items.APPLE zamieniasz na przedmiot jaki chcesz np. Items.DIRT.

Za pomyłki przepraszam, jeżeli takie są :-P...

Edytowane przez xMarcinos
Odnośnik do komentarza
https://skript.pl/temat/18184-zablokowanie-dropu-itemstacka/#findComment-127878
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ę...