• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

ItemClickEvent für ein Item Canceln!

CrackRudi

Redstoneengineer
Registriert
18 April 2016
Beiträge
35
Alter
24
Diamanten
300
Hey Liebes Forum ,

ich bin grade dar bei ein Plugin für ein Freund zu coden! Ich will ein Item Canceln dass im Inventar eines Spielers ist , also dass man nur dieses eine Item im Inventar nicht mehr bewegen kann, aber alle anderen schon!

Liebes Grüße,
CrackRudi
 

CrackRudi

Redstoneengineer
Registriert
18 April 2016
Beiträge
35
Alter
24
Diamanten
300
@SuppressWarnings("deprecation")
@EventHandler
public void invClick(InventoryClickEvent e) {
Player p = (Player )e.getWhoClicked();
if(e.getSlot() == 4) {
if(e.getCurrentItem().getType() == (Material.WATCH)) {
if(Main.ItemMove == false) {
e.setCancelled(true);
}

}
}
p.updateInventory();
}

Dass geht bei mir nicht, dann kann ich nichts bewegen!
 
D

Drayke

Guest
@SuppressWarnings("deprecation")
@EventHandler
public void invClick(InventoryClickEvent e) {
Player p = (Player )e.getWhoClicked();
if(e.getSlot() == 4) {
if(e.getCurrentItem().getType() == (Material.WATCH)) {
if(Main.ItemMove == false) {
e.setCancelled(true);
}

}
}
p.updateInventory();
}

Dass geht bei mir nicht, dann kann ich nichts bewegen!

Ich bin momentan ein wenig raus aus der BukkitAPI, aber gab es nicht bei diesem Event eine setResult() Methode? Ich würde diese der setCancelled() Methode vorziehen. Das wäre dann: e.setResult(Result.DENY); (Oder so ähnlich.. Deine IDE sollte schon das richtige finden für dich)
 

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Das mit den Results waren glaube ich die Login- und PreLogin Events.
Mit dem jetzigen Code, wenn er überhaupt laufen täte, könnte keiner mehr eine Uhr nutzen...

Füge dem NBT Tag des Items den schlüssel "pl_move" mit dem wert false hinzu - dann prüfe den Tag des Items beim Event.
Null-checks nicht vergessen... der Slot und das Item könnten null sein, oder Material.AIR

Ich verstehe nicht warum so viele an diesem ItemClickEvent versagen.. es ist eigentlich ganz simpel.

https://github.com/FastFelix771/Tow...elix771/townywands/inventory/ItemWrapper.java
Hier findest du ein paar Beispiele, wie man den NBT Tag eines Items manipulieren kann.
Hab bissl geschlampert bei der Klasse, aber sie funktioniert tadellos von der 1.10 bis runter zur 1.6 (und vermutlich noch weiter).
 
Oben