From 6cd94e0cb19480bb638f8bebf602b100d81f0267 Mon Sep 17 00:00:00 2001 From: CraivMan Date: Sun, 4 Dec 2022 14:51:26 -0600 Subject: Prevented shovels from losing durability --- .../java/com/MylesAndMore/tumble/EventListener.java | 19 +++++++++++++++++++ src/main/java/com/MylesAndMore/tumble/Game.java | 18 +++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) (limited to 'src/main/java/com') diff --git a/src/main/java/com/MylesAndMore/tumble/EventListener.java b/src/main/java/com/MylesAndMore/tumble/EventListener.java index 05f82fe..3f28e89 100644 --- a/src/main/java/com/MylesAndMore/tumble/EventListener.java +++ b/src/main/java/com/MylesAndMore/tumble/EventListener.java @@ -3,10 +3,14 @@ package com.MylesAndMore.tumble; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import java.util.Objects; + public class EventListener implements Listener{ @EventHandler public void PlayerJoinEvent(PlayerJoinEvent event) { @@ -47,4 +51,19 @@ public class EventListener implements Listener{ } } } + + @EventHandler + public void ItemDamageEvent(PlayerItemDamageEvent event) { + // On a BlockBreakEvent, check to make sure there is a defined gameWorld + if (TumbleManager.getGameWorld() != null) { + // Then check to see if the block was broken in the gameWorld, + if (event.getPlayer().getWorld() == Bukkit.getWorld(TumbleManager.getGameWorld())) { + // If it was in the gameWorld, pass this event to the Game + Game.getGame().itemDamage(event); + } + } + } } + + + diff --git a/src/main/java/com/MylesAndMore/tumble/Game.java b/src/main/java/com/MylesAndMore/tumble/Game.java index 1326bd5..7a6512d 100644 --- a/src/main/java/com/MylesAndMore/tumble/Game.java +++ b/src/main/java/com/MylesAndMore/tumble/Game.java @@ -3,7 +3,11 @@ package com.MylesAndMore.tumble; import com.MylesAndMore.tumble.api.Generator; import org.bukkit.*; import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerItemDamageEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -29,7 +33,7 @@ public class Game { // Define local game vars // The gameType keeps the current game type (shocker) - private String gameType; + private static String gameType; // The gameState keeps the current state of the game (I'm so creative, I know) private String gameState; @@ -61,6 +65,8 @@ public class Game { giveItems(new ItemStack(Material.DIAMOND_SHOVEL)); // Send players to the game sendPlayers(); + + // Keep in mind that after this runs, this command will complete and return true } else { @@ -118,6 +124,7 @@ public class Game { Generator.generateLayer(layer, 4, 1, Material.PODZOL); layer.setY(layer.getY() + 2); Generator.generateLayer(layer, 4, 2, Material.TALL_GRASS); + roundType = "shovels"; } else if (Objects.equals(gameType, "snowballs")) { layer.setY(layer.getY() - 1); @@ -128,6 +135,7 @@ public class Game { Generator.generateLayer(layer, 4, 1, Material.AIR); layer.setY(layer.getY() - 1); Generator.generateLayer(layer, 4, 1, Material.LIME_GLAZED_TERRACOTTA); + roundType = "snowballs"; } else if (Objects.equals(gameType, "mixed")) { if (Random.nextInt(2) == 0) { @@ -176,6 +184,14 @@ public class Game { } } + public void itemDamage(PlayerItemDamageEvent event) { + // If the game type is shovels, + if (Objects.equals(roundType, "shovels")) { + // Cancel the event + event.setCancelled(true); + } + } + public void playerDeath(@NotNull Player player) { player.setGameMode(GameMode.SPECTATOR); // If there are more than 2 players in the game, -- cgit v1.2.3