Minecraft Java Plugin, Inventar move verbieten?

4 Antworten

Du musst einen Listener (onInventoryMove) erstellen, ihn in der Main Class deklarieren. Dann im Listener testen ob es das Item in diesem Inv ist etc und das Event canceln.

http://redditpublic.com/images/b/b2/Items_slot_number.png

mit getRawSlot() kriegst du vom Spieler alle Slots (SlotNr siehe Link)

Den kannst du clearen.

Falls du gar nicht in nem clickevent bist, und nur das inventar leeren willst, geht das über das PlayerInventory.

https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/PlayerInventory.html#getArmorContents--

mit

getExtraContents​()

bekommst du ein ItemStack[], der diese ganzen Slots beinhaltet. Entsprechend mit

setExtraContents​(ItemStack[] items)

kannst du es setzen.

Woher ich das weiß:Hobby – Langjährige Programmiererfahrung
TheHunter147  21.02.2018, 16:22

Die letzte Möglichkeit habe ich übrigens nie ausprobiert, also ohne Gewähr :D

0
CodeDoctor 
Fragesteller
 21.02.2018, 17:11

kann man nicht machen, dass man nichts bewegen kann?

0
TheHunter147  22.02.2018, 08:04
@CodeDoctor

Klar, du könntest das InventoryClickEvent für den Spieler canceln. Evtl natürlich mit vorheriger Überprüfung, ob es sich auch um das richtige Inventar handelt und das angeklickte Item nicht null ist, denn sonst wird manchmal eine NullPointer geworfen, wenn du 'Nichts' anklickst im Inventar bzw. außerhalb der Slots klickst.

0

Also p.getInventory().clear() funktioniert nicht ordentlich?

CodeDoctor 
Fragesteller
 21.02.2018, 14:05

Da löscht man nur die Slots

0
Atomtoasty  22.02.2018, 07:04

slots = actionbar?
Oder slots = actionbar + das 4*9 ‚eigentliche‘ Inventar?

0

Wo oben rechts?

Was genau willst du?

Wie willst du das machen?

CodeDoctor 
Fragesteller
 21.02.2018, 14:06

Ich möchte machen, dass alles gelöscht wird. Wenn man nähmlich die Items in die Craftingleiste tut und dann cleart, werden diese Items nicht gelöscht.

0