2015-04-23 9 views
7

Ich versuche, mein Inventar zu öffnen, wenn ich einen Gegenstand abhole. Dies ist in Bukkit.Wie öffne ich mein eigenes Inventar über ein Event?

Hier ist das Ereignis bisher, die Argumente für player.openInventory sind leer.

@EventHandler 
public void blank(PlayerDropItemEvent e){ 
    Player player = e.getPlayer(); 
    player.openInventory(); 
} 
+0

Haben Sie den Zuhörer "registriert"? – CoderMusgrove

+2

Das Plugin funktioniert, die player.openInventory() benötigt ein Argument –

Antwort

6

Versuchen player.getInventory() mit ihrem Inventar abzurufen dann player.openInventory(inventory) es zu öffnen.

@EventHandler 
public void blank(PlayerDropItemEvent e) { 
    Player player = e.getPlayer(); 
    Inventory inventory = player.getInventory(); 
    player.openInventory(inventory); 
} 
+3

Ich möchte nur hinzufügen, ich mache gerne eine schnelle 'player.closeInventory()', bevor ich das Inventar öffne. Es ist wahrscheinlich nicht notwendig, aber der Server weiß nicht, ob der Client bereits sein Inventar geöffnet hat, und wenn er Mojang kennt, kann es den Client beschädigen, wenn der Server ihnen sagt, dass sie ein anderes Inventar öffnen sollen, wenn sie bereits geöffnet haben. – hintss

+1

@hints sie haben es tatsächlich ok gemacht, das Öffnen eines Inventars schließt automatisch das letzte Inventar, es ruft sogar ein InventoryCloseEvent auf.^_^^ –

+0

und wird der Kunde immer schlau genug sein, dies für immer und ewig zu tun? Das ist die wichtige Frage. – hintss

3

Um Inventar des Spielers zu erhalten, könnten Sie verwenden: So, Ihr Code

player.openInventory(player.getInventory()); 

:

player.getInventory(); 

Wenn Sie das Inventar des Spielers öffnen wollten, könnten Sie verwenden könnte in etwa so aussehen:

@EventHandler 
public void dropItem(PlayerDropItemEvent e){ 
    Player player = e.getPlayer(); //get the player that dropped the item 
    player.openInventory(player.getInventory()); //open the player's inventory 
} 
Verwandte Themen