2015-04-23 12 views
7

Sto cercando di aprire il mio inventario ogni volta che prendo un oggetto. Questo è in Bukkit.Come posso aprire il mio inventario tramite un evento?

Ecco l'evento fino ad ora, gli argomenti per player.openInventory sono vuoti.

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

Hai "registrato" l'ascoltatore? – CoderMusgrove

+2

Il plugin funziona, il player.openInventory() ha bisogno di un argomento –

risposta

6

Provare a utilizzare player.getInventory() per recuperare il loro inventario quindi utilizzando player.openInventory(inventory) per aprirlo.

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

Vorrei solo aggiungere, mi piace fare un veloce 'player.closeInventory()' prima di aprire l'inventario. Probabilmente non è necessario, ma il server non sa se il client ha già il suo inventario aperto e, conoscendo il mojang, potrebbe solo violare il client se il server tenta di dire loro di aprire un altro inventario quando ne hanno già uno aperto. – hintss

+1

@hintss l'hanno fatto davvero bene, l'apertura di un inventario chiuderà automaticamente l'ultimo inventario, chiamerà anche InventoryCloseEvent.^_^ –

+0

e il cliente sarà sempre abbastanza intelligente da farlo, nei secoli dei secoli? Questa è la domanda importante. – hintss

3

Per ottenere l'inventario di un giocatore, si può usare:

player.getInventory(); 

Se si voleva aprire l'inventario del giocatore, è possibile utilizzare:

player.openInventory(player.getInventory()); 

Quindi, il codice potrebbe assomigliare a questo:

@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 
} 
Problemi correlati