Solved Help with displaying a players inventory

Discussion in 'Plugin Development' started by Disturbed_Creator, Aug 11, 2013.

Thread Status:
Not open for further replies.
  1. I am making a plugin that displays a targets inventory when you right click on them.
    Here is what I have so far:
    Code:java
    1. @EventHandler
    2. public void onPlayerRightClick(PlayerInteractEntityEvent event){
    3. Entity target = event.getRightClicked();
    4. Player player = event.getPlayer();
    5.  
    6. if (target.getType().equals(EntityType.PLAYER)){
    7. HumanEntity targetPlayer = (HumanEntity) target;
    8. String targetName = targetPlayer.getName();
    9. Inventory targetInventory = targetPlayer.getInventory();
    10. targetInv = Bukkit.createInventory(player, 27, targetName + "'s Inventory");
    11. targetInv.setContents(targetInventory.getContents());
    12.  
    13. player.openInventory(targetInv);
    14. }
    15. }

    That doesn't work.

    If someone could explain why that doesn't work, and/or give me a solution, that would be very helpful.

    Thank you
     
  2. Offline

    Shzylo

    I'm not sure much on how to do this, but the only thing that I really can say is, did you register the event?
     
    Disturbed_Creator likes this.
  3. Offline

    NetherResident

    I believe the problem lies in this line of code.
    Code:
    targetInv = Bukkit.createInventory(player, 27, targetName + "'s Inventory");
    As far as I can see, you are never defining the variable "targetInv".

    Disturbed_Creator
     
    Disturbed_Creator likes this.
  4. Offline

    Compressions

    Disturbed_Creator What exactly doesn't work? Are there any errors in the console?
     
  5. NetherResident
    Thank you, however I defined that earlier.

    Compressions
    This opens a blank inventory when I click on a player:
    Code:
    @EventHandler
        public void onPlayerRightClick(PlayerInteractEntityEvent event){
            Entity target = event.getRightClicked();
            Player player = event.getPlayer();
     
            if (target.getType().equals(EntityType.PLAYER)){
                targetInv = Bukkit.createInventory(player, 27, "Inventory");
     
                player.openInventory(targetInv);
            }
        }
    I am trying to get it to display the targets inventory.

    Here are the error messages:
    Code:
    13:49:27 [SEVERE] Could not pass event PlayerInteractEntityEvent to PickPocket v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:1088)
        at net.minecraft.server.v1_6_R2.Packet7UseEntity.handle(SourceFile:36)
        at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
        at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116)
        at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
        at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
        at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
        at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
        at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
        at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
        at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.IllegalArgumentException: Invalid inventory size; expected 27 or less
        at org.bukkit.craftbukkit.v1_6_R2.inventory.CraftInventory.setContents(CraftInventory.java:67)
        at com.gmail.zrosfjord.PPMain.onPlayerRightClick(PPMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        ... 14 more
    Hope that helps :}
     
  6. Offline

    xCyanide

    Disturbed_Creator
    You are opening a blank inventory because you are making the player open this inventory.
    Code:java
    1. targetInv = Bukkit.createInventory(player, 27, "Inventory"); // Empty inventory

    Try player.openInventory(target.getInventory());
     
    Disturbed_Creator likes this.
  7. xCyanide
    .getInventory() cannot be used on Entities

    I need someway for the target to be seen as a player, then I can do .getInventory().
     
  8. Offline

    xCyanide

    Disturbed_Creator
    Like this, I tested it and it worked
    Code:java
    1. @EventHandler
    2. public void onPlayerRightClick(PlayerInteractEntityEvent event){
    3. Entity target = event.getRightClicked();
    4. Player player = event.getPlayer();
    5.  
    6. if (target.getType().equals(EntityType.PLAYER)){
    7. HumanEntity targetPlayer = (HumanEntity) target;
    8. Inventory targetInventory = targetPlayer.getInventory();
    9.  
    10. player.openInventory(targetInventory);
    11. }
    12. }
     
    Disturbed_Creator and Shzylo like this.
Thread Status:
Not open for further replies.

Share This Page