Chest Inventory won't clear

Discussion in 'Plugin Development' started by xMakerx, Aug 29, 2014.

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

    xMakerx

    I'm trying to make a PlayerInteractEvent clear a chest that is right-clicked, but it does not work. The inventory is never cleared. How do I fix this?

    Code:java
    1. @EventHandler
    2. public void onPlayerInteract(PlayerInteractEvent evt) {
    3. Player user = evt.getPlayer();
    4. if(this.manager.isInAnArena(user)) {
    5. if(user.getItemInHand().equals(Material.COMPASS)) {
    6. Arena arena = this.manager.getArenaFromPlayer(user);
    7. if(arena != null) {
    8. if(arena.getArenaState().equals(ArenaState.IN_GAME)) {
    9. Player nearestPlayer = arena.getSlender().findNearestPlayer();
    10. if(nearestPlayer != null) {
    11. user.teleport(nearestPlayer.getLocation());
    12. this.slender.getMessages().sendPlayerMsg(user, "SLENDERMAN_TELEPORT", null);
    13. }
    14. }
    15. }
    16. }else {
    17. if(evt.getAction() == Action.RIGHT_CLICK_BLOCK) {
    18. Block block = evt.getClickedBlock();
    19. if(block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) {
    20. Sign sign = (Sign)block.getState();
    21. if(sign.getLine(0).contains("[Slender]")) {
    22. String arenaName = ChatColor.stripColor(sign.getLine(1));
    23. Arena checkArena = this.manager.getArena(arenaName);
    24. if(checkArena != null) {
    25. if(checkArena.getArenaState() == ArenaState.WAITING || checkArena.getArenaState() == ArenaState.SETTING_UP) {
    26. checkArena.addPlayer(evt.getPlayer());
    27. }else {
    28. if(checkArena.getArenaState() == ArenaState.DISABLED) {
    29. this.slender.getMessages().sendPlayerMsg(user, "JOIN_FAILURE_DISABLED", null);
    30. }
    31. }
    32. }else {
    33. user.sendMessage(arenaName);
    34. this.slender.getMessages().sendPlayerMsg(evt.getPlayer(), "ARENA_NONEXISTANT", null);
    35. }
    36. }
    37. }else if(block.getState() instanceof Chest) {
    38. Chest chest = (Chest)block.getState();
    39. Inventory inv = chest.getBlockInventory();
    40. Arena arena = this.manager.getArenaFromPlayer(user);
    41. if(arena != null) {
    42. if(arena.getSlender().getPlayer().equals(user) == false) {
    43. ItemStack item = inv.getItem(0);
    44. if(item != null) {
    45. if(item.getType() == Material.PAPER) {
    46. if(stopCooldown) {
    47. cooldown = false;
    48. }
    49. if(cooldown == false) {
    50. cooldown = true;
    51. if(inv.getContents().length > 0) {
    52. inv.clear();
    53. chest.update(true);
    54. Game game = this.manager.getGameInstance(arena);
    55. game.setCollectedObjectives(game.getCollectedObjectives() + 1);
    56. user.playSound(user.getLocation(), Sound.ORB_PICKUP, 1F, 1F);
    57. this.slender.getMessages().sendPlayerMsg(user, "OBJECTIVE_OBTAIN", null);
    58. this.manager.getGameInstance(arena).sendArenaMessage(String.format(this.slender.getMessages().getConfMessage("OBJECTIVE_FOUND_ANNOUNCE"), user.getName()));
    59. }
    60. this.doCooldown();
    61. }
    62. evt.setCancelled(true);
    63. }
    64. }
    65. if((inv.getContents().length == 0) || (item == null)) {
    66. this.slender.getMessages().sendPlayerMsg(user, "OBJECTIVE_FAIL_TAKEN", null);
    67. }
    68. }else {
    69. this.slender.getMessages().sendPlayerMsg(user, "OBJECTIVE_FAIL_SLENDERMAN", null);
    70. evt.setCancelled(true);
    71. }
    72. }
    73. }
    74. }
    75. }
    76. }
    77. }
     
  2. chest.getInventory().setContents(null); & debugg your code.
     
  3. Offline

    xMakerx

    RenegadeEagle

    That causes a NPE.

    bump

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 10, 2016
Thread Status:
Not open for further replies.

Share This Page