Spigot Plugin Item in Hand abfragen?
(1.8)Ich versuche einem Spieler, wenn er ein Item bpw. eine Axt in der Hand hält Effekte zu geben und wenn er etwas anderes bzw. einen anderen Slot auswählt die Effekte wieder entfernt werden.
Ich weiß wie ich die Effekte dem Spieler geben kann und wie ich sie ihm wieder entferne.
Aber ich weiß nicht richtig wie ich es Anwenden kann.
Bspw. PlayerInteractEvent etc. funktioniert ja nur wenn ich mit dem Item interagiere(also Rechtsklick etc.).
PlayerItemHeldEvent bspw. funktioniert auch nicht richtig, da dies dann bspw. wenn ich die axt in der Hand hatte mir die Effekte gibt.
Bitte um Hilfe.
Vielen Dank schon einmal im vorraus.
3 Antworten
Versuch es mal mit dem SlotChangeEvent und frag das Item in der Hand ab ^^
EDIT: Habe grade selbst bemerkt das es das Event nicht gibt. Verusuch es mal mit dem PlayerItemHeldEvent
LG
PlayerItemHeldEvent ist doch nur was ein spieler gehalten hat oder? nicht was er hält
Ich bin mir nicht sicher wie du das mit dem PlayerItemHeldEvent gemacht hast, aber das sollte schon funktionieren.
Du musst halt nach
getNewSlot()
abfragen.
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/player/PlayerItemHeldEvent.html
OMG Vielen Dank.
Habe es geschaft(Bin anfänger). <3
@EventHandler
public void effectClear(PlayerItemHeldEvent e) {
ItemStack item = null;
Player p = e.getPlayer();
if(p.getItemInHand().getType() == Material.IRON_AXE)
for (PotionEffect effect : p.getActivePotionEffects())
p.removePotionEffect(effect.getType());
if(e.getPlayer().getInventory().getItem(e.getNewSlot()) != null && e.getPlayer().getInventory().getItem(e.getNewSlot()).getType() == Material.IRON_AXE) {
p.addPotionEffect((new PotionEffect(PotionEffectType.SLOW, 2000, 255)));
p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 2000, 200));
}
}
Du könntest es mit einem Scheduler versuchen