Need help with custom inventory

Discussion in 'Plugin Development' started by nzkiwi.5000, Jun 14, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    nzkiwi.5000

    Hello!
    I'm developing a plugin that displays custom inventory on chest click. The item on there will be randomly taken from the list.
    The deal with custom inventory is because that i don't want to change chests inv, so two players using the same chest will see different items.
    here's my code


    Code:java
    1. package pl.website.bcsn.dynamiczne;
    2.  
    3. import java.util.List;
    4. import java.util.Random;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.Material;
    8. import org.bukkit.block.Block;
    9. import org.bukkit.block.Chest;
    10. import org.bukkit.block.DoubleChest;
    11. import org.bukkit.enchantments.Enchantment;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.Listener;
    15. import org.bukkit.event.inventory.InventoryOpenEvent;
    16. import org.bukkit.event.inventory.InventoryType;
    17. import org.bukkit.event.player.PlayerInteractEvent;
    18. import org.bukkit.inventory.Inventory;
    19. import org.bukkit.inventory.InventoryHolder;
    20. import org.bukkit.inventory.InventoryView;
    21. import org.bukkit.inventory.ItemStack;
    22. import org.bukkit.inventory.meta.ItemMeta;
    23.  
    24. public class ListenerOtwarcia implements Listener{
    25.  
    26. int przedmiotow;
    27. List<String> dostepnePrzedmioty;
    28.  
    29. public void init(){
    30. przedmiotow = DynamiczneSkrzynki.config.getInt("ilosc-itemkow-w-skrz");
    31. dostepnePrzedmioty = DynamiczneSkrzynki.config.getStringList("itemki");
    32. }
    33. public void openGUI(Player p){
    34. InventoryView inv = (InventoryView) getRandomizedInv(DynamiczneSkrzynki.server.createInventory(p, 9, "SKSZYNKA"));
    35. p.openInventory(inv);
    36. //p.openInventory(arg0);
    37. }
    38.  
    39. @EventHandler
    40. public void onBlockInteract(PlayerInteractEvent e){
    41. if(DynamiczneSkrzynki.debug) {
    42. DynamiczneSkrzynki.server.getPlayer(
    43. e.getPlayer().getName()).sendMessage("you opened some kind of eq!!");
    44. }
    45. if (e.getClickedBlock() instanceof Chest || e.getClickedBlock() instanceof DoubleChest){
    46. e.setCancelled(true);
    47. openGUI(e.getPlayer());
    48.  
    49. if(DynamiczneSkrzynki.debug) {
    50. DynamiczneSkrzynki.server.getPlayer(
    51. e.getPlayer().getName()).sendMessage("you opened a chest");
    52. }
    53. }
    54. }
    55.  
    56.  
    57. @SuppressWarnings("deprecation")
    58. public Inventory getRandomizedInv(Inventory inv){
    59.  
    60. //inventory-making code
    61.  
    62. return inv;
    63. }
    64. }
    65.  

    Sorry for polish variable names.
    The listener registration is not a problem, im receiving the debug messages.
    I used a PlayerInteractEvent because inventory open event generated a loop.
    The inventory is showing empty with no custom title.
    Anybody help?
    Thanks a lot :)
     
  2. Offline

    xTigerRebornx

  3. Offline

    nzkiwi.5000

    xTigerRebornx The inventory is showing empty, with no custom name.
     
  4. Offline

    fefe2008

    nzkiwi.5000 Try inv.setItem(is) thats how i do it at least
     
  5. Offline

    nzkiwi.5000

    fefe2008 where exactly should i put it?
     
  6. Offline

    fefe2008

  7. Offline

    nzkiwi.5000

  8. Offline

    fefe2008

  9. Offline

    nzkiwi.5000

    One bump, please.
     
Thread Status:
Not open for further replies.

Share This Page