Solved inventory clears every tick

Discussion in 'Plugin Development' started by PikaThieme, Jan 17, 2017.

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

    PikaThieme

    So I made a plugin to open the inventory from a player if you right click it. Everything works EXCEPT 1 thing; my inventory clears every tick so I can't pick blocks or anything.

    Code:
    Code:
    package main.pikathieme.eeneentwee.events;
    
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryType;
    import org.bukkit.event.player.PlayerInteractAtEntityEvent;
    import org.bukkit.inventory.EquipmentSlot;
    
    public class Openinv implements Listener {
       
        @EventHandler
        public void PopoInvTake(PlayerInteractAtEntityEvent e) {
            if (e.getRightClicked() instanceof Player) {
               
                Player p = e.getPlayer();
                if(e.getHand() == EquipmentSlot.HAND) {
               
                if  (p.hasPermission("minetopia.invsee")) {
                    Player r = (Player)e.getRightClicked();
                    if (!r.hasPermission("minetopia.invdeny") || r.getGameMode() != GameMode.CREATIVE) {
                    p.openInventory(r.getInventory());
                    r.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "[" + ChatColor.WHITE + "" + ChatColor.BOLD + "112" + ChatColor.BLUE + "" + org.bukkit.ChatColor.BOLD + "] " + ChatColor.RED + p.getName() + ChatColor.WHITE + " kijkt in je inventory!");
                    p.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "[" + ChatColor.WHITE + "" + ChatColor.BOLD + "112" + ChatColor.BLUE + "" + ChatColor.BOLD + "] " + ChatColor.WHITE + "Je kijkt nu in de inventory van " + ChatColor.RED + r.getName() + ChatColor.WHITE + "!");
                    }
                }
               
                }     
            } 
        }
        @EventHandler
        public void ClickEvent(InventoryClickEvent e) {
            if(e.getCurrentItem() == null)
                return;
            if (e.getClickedInventory().getType() == (InventoryType.PLAYER) && !e.getClickedInventory().equals(e.getWhoClicked().getOpenInventory())) {
                if (!e.getWhoClicked().hasPermission("minetopia.invtake")) {
                    e.setCancelled(true);
                }
            }
        }
         
    }
    
    Btw: how to add syntax? :p
     
    Last edited by a moderator: Jan 17, 2017
  2. Offline

    timtower Administrator Administrator Moderator

    Moved to plugin development.
    [code] <code here> [/code] for what you have now.
    [syntax=java] <code here> [/syntax] for the black background with more highlighting.
     
  3. Offline

    Zombie_Striker

    @PikaThieme
    It most likely has something to do with the fact that you are getting the "raw" player inventory. Try creating a new inventory with 45 slots and copy the contents over.
     
  4. Offline

    PikaThieme

    @Zombie_Striker How am I supposed to do that? I just started for something like a week so I have literally no clue...
     
  5. Offline

    Zombie_Striker

    @PikaThieme
    1. Inventory inv = Bukkit.createInventory(null, 45, PLAYER+"'s inventory"); Replace PLAYER with the player's name.
    2. inv.setContents(PLAYER#getInventory().getContents());
     
  6. Offline

    PikaThieme

    @Zombie_Striker With the players name you mean like "e" or something? (Yes I am literally a noob xd)
     
  7. Offline

    Zombie_Striker

    @PikaThieme
    e.getPlayer.getName returns the player's name.
     
  8. Offline

    PikaThieme

    @Zombie_Striker I know that but I often just don't know what to do when people send me a piece of code (like where to add it etc)
     
  9. Offline

    Zombie_Striker

    @PikaThieme
    Put it right above the "p.openInv" line. Then, replace "r.getInv" with that inventory instance.
     
  10. Offline

    PikaThieme

    Thx a lot :)
     
  11. Offline

    Zombie_Striker

    @PikaThieme

    If your problem has been solved, mark this thread as solved.
     
Thread Status:
Not open for further replies.

Share This Page