diff --git a/pom.xml b/pom.xml index 9b7614b..48fd4a5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.retrohaven pickup - 1.0.1 + 1.0.2 8 diff --git a/src/main/java/org/retrohaven/listeners/PickupBlocksListener.java b/src/main/java/org/retrohaven/listeners/PickupBlocksListener.java index 14ca6a9..08ec322 100644 --- a/src/main/java/org/retrohaven/listeners/PickupBlocksListener.java +++ b/src/main/java/org/retrohaven/listeners/PickupBlocksListener.java @@ -19,6 +19,7 @@ public void onBlockBreak(BlockBreakEvent event) { // Check if the player has the right tool and permission for each block type if (block.getType() == Material.GRASS) { if (player.getItemInHand().getType() == Material.GOLD_SPADE && player.hasPermission("pickup.use")) { + useTool(player); // Decrease tool durability event.setCancelled(true); // Prevent normal block breaking block.setType(Material.AIR); // Set block to air block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.GRASS, 1)); @@ -27,6 +28,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.GLASS) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.GLASS, 1)); @@ -35,6 +37,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.GLOWSTONE) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.GLOWSTONE, 1)); @@ -43,6 +46,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.ICE) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.ICE, 1)); @@ -51,6 +55,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.SNOW_BLOCK) { if (player.getItemInHand().getType() == Material.GOLD_SPADE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.SNOW_BLOCK, 1)); @@ -59,6 +64,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.SNOW) { if (player.getItemInHand().getType() == Material.GOLD_SPADE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.SNOW, 1)); @@ -67,6 +73,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.COBBLESTONE_STAIRS) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.COBBLESTONE_STAIRS, 1)); @@ -75,6 +82,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.WOOD_STAIRS) { if ((player.getItemInHand().getType() == Material.GOLD_SWORD || player.getItemInHand().getType() == Material.GOLD_AXE) && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.WOOD_STAIRS, 1)); @@ -83,6 +91,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.CLAY) { if (player.getItemInHand().getType() == Material.GOLD_SPADE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.CLAY, 1)); @@ -91,10 +100,18 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.CAKE_BLOCK) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE && player.hasPermission("pickup.use")) { + useTool(player); event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.CAKE_BLOCK, 1)); } } } + + public void useTool(Player player) { + if(player.getItemInHand().getDurability() > 31) { + player.setItemInHand(null); + } + player.getItemInHand().setDurability((short)(player.getItemInHand().getDurability() + 1)); + } } diff --git a/src/main/java/org/retrohaven/listeners/SpawnerBreakListener.java b/src/main/java/org/retrohaven/listeners/SpawnerBreakListener.java index 432188b..71928c0 100644 --- a/src/main/java/org/retrohaven/listeners/SpawnerBreakListener.java +++ b/src/main/java/org/retrohaven/listeners/SpawnerBreakListener.java @@ -6,6 +6,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.inventory.ItemStack; public class SpawnerBreakListener implements Listener { @@ -18,6 +19,7 @@ public void onBlockBreak(BlockBreakEvent event) { if (block.getType() == Material.MOB_SPAWNER) { if (player.getItemInHand().getType() == Material.GOLD_PICKAXE) { if (player.hasPermission("pickup.use")) { + useTool(player); // Decrease tool durability event.setCancelled(true); block.setType(Material.AIR); block.getWorld().dropItemNaturally(block.getLocation(), new ItemStack(Material.MOB_SPAWNER, 1)); @@ -25,4 +27,11 @@ public void onBlockBreak(BlockBreakEvent event) { } } } + + public void useTool(Player player) { + if(player.getItemInHand().getDurability() > 31) { + player.setItemInHand(null); + } + player.getItemInHand().setDurability((short)(player.getItemInHand().getDurability() + 1)); + } }