From 010ca54144ace5b9d6600c865503520b8828064b Mon Sep 17 00:00:00 2001 From: hyperdefined Date: Mon, 13 Jun 2022 03:07:37 -0400 Subject: [PATCH] gamemode check --- .../lol/hyper/toolstats/events/BlocksMined.java | 3 +-- .../java/lol/hyper/toolstats/events/CraftItem.java | 4 ++++ .../lol/hyper/toolstats/events/EntityDamage.java | 14 +++++++++++++- .../lol/hyper/toolstats/events/PickupItem.java | 5 +++++ .../lol/hyper/toolstats/events/PlayerFish.java | 4 ++++ .../lol/hyper/toolstats/events/PlayerInteract.java | 8 +++++++- .../lol/hyper/toolstats/events/SheepShear.java | 4 ++++ .../lol/hyper/toolstats/events/VillagerTrade.java | 13 ++++++++++--- 8 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/main/java/lol/hyper/toolstats/events/BlocksMined.java b/src/main/java/lol/hyper/toolstats/events/BlocksMined.java index a6f930a..c1b00d0 100644 --- a/src/main/java/lol/hyper/toolstats/events/BlocksMined.java +++ b/src/main/java/lol/hyper/toolstats/events/BlocksMined.java @@ -47,8 +47,7 @@ public class BlocksMined implements Listener { return; } Player player = event.getPlayer(); - // ignore creative mode - if (player.getGameMode() != GameMode.SURVIVAL) { + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { return; } // if the player mines something with their fist diff --git a/src/main/java/lol/hyper/toolstats/events/CraftItem.java b/src/main/java/lol/hyper/toolstats/events/CraftItem.java index c2753e8..b116231 100644 --- a/src/main/java/lol/hyper/toolstats/events/CraftItem.java +++ b/src/main/java/lol/hyper/toolstats/events/CraftItem.java @@ -20,6 +20,7 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.UUIDDataType; import org.bukkit.ChatColor; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -46,6 +47,9 @@ public class CraftItem implements Listener { return; } Player player = (Player) event.getWhoClicked(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } ItemStack itemStack = event.getCurrentItem(); if (itemStack == null || itemStack.getType() == Material.AIR) { return; diff --git a/src/main/java/lol/hyper/toolstats/events/EntityDamage.java b/src/main/java/lol/hyper/toolstats/events/EntityDamage.java index 5e6abb9..61034ca 100644 --- a/src/main/java/lol/hyper/toolstats/events/EntityDamage.java +++ b/src/main/java/lol/hyper/toolstats/events/EntityDamage.java @@ -60,7 +60,7 @@ public class EntityDamage implements Listener { // a player is killing something if (event.getDamager() instanceof Player) { Player player = (Player) event.getDamager(); - if (player.getGameMode() != GameMode.SURVIVAL) { + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { return; } // a player killed something with their fist @@ -103,6 +103,9 @@ public class EntityDamage implements Listener { // if the shooter is a player if (arrow.getShooter() instanceof Player) { Player player = (Player) arrow.getShooter(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot()); if (heldItem == null) { return; @@ -122,6 +125,9 @@ public class EntityDamage implements Listener { // player is taken damage but not being killed if (livingEntity instanceof Player) { Player player = (Player) livingEntity; + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } PlayerInventory inventory = player.getInventory(); for (ItemStack armor : inventory.getArmorContents()) { if (armor != null) { @@ -142,6 +148,9 @@ public class EntityDamage implements Listener { // player is taken damage but not being killed if (livingEntity instanceof Player) { Player player = (Player) livingEntity; + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } PlayerInventory inventory = player.getInventory(); for (ItemStack armor : inventory.getArmorContents()) { if (armor != null) { @@ -162,6 +171,9 @@ public class EntityDamage implements Listener { // player is taken damage but not being killed if (livingEntity instanceof Player) { Player player = (Player) livingEntity; + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } PlayerInventory inventory = player.getInventory(); for (ItemStack armor : inventory.getArmorContents()) { if (armor != null) { diff --git a/src/main/java/lol/hyper/toolstats/events/PickupItem.java b/src/main/java/lol/hyper/toolstats/events/PickupItem.java index a41d00c..6967006 100644 --- a/src/main/java/lol/hyper/toolstats/events/PickupItem.java +++ b/src/main/java/lol/hyper/toolstats/events/PickupItem.java @@ -19,6 +19,7 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.UUIDDataType; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.*; import org.bukkit.event.EventHandler; @@ -48,6 +49,10 @@ public class PickupItem implements Listener { } Entity entity = event.getEntity(); if (entity instanceof Player) { + Player player = (Player) entity; + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } Item item = event.getItem(); if (item.getType() == EntityType.DROPPED_ITEM) { ItemStack itemStack = event.getItem().getItemStack(); diff --git a/src/main/java/lol/hyper/toolstats/events/PlayerFish.java b/src/main/java/lol/hyper/toolstats/events/PlayerFish.java index 3657c30..b8908be 100644 --- a/src/main/java/lol/hyper/toolstats/events/PlayerFish.java +++ b/src/main/java/lol/hyper/toolstats/events/PlayerFish.java @@ -19,6 +19,7 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.UUIDDataType; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Item; import org.bukkit.entity.Player; @@ -54,6 +55,9 @@ public class PlayerFish implements Listener { } Player player = event.getPlayer(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } ItemStack heldItem = player.getInventory().getItem(player.getInventory().getHeldItemSlot()); if (heldItem == null || heldItem.getType() == Material.AIR || heldItem.getType() != Material.FISHING_ROD) { return; diff --git a/src/main/java/lol/hyper/toolstats/events/PlayerInteract.java b/src/main/java/lol/hyper/toolstats/events/PlayerInteract.java index 2934c10..bfb3062 100644 --- a/src/main/java/lol/hyper/toolstats/events/PlayerInteract.java +++ b/src/main/java/lol/hyper/toolstats/events/PlayerInteract.java @@ -19,6 +19,7 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -49,11 +50,16 @@ public class PlayerInteract implements Listener { if (block == null) { return; } + + Player player = event.getPlayer(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } // store when a player opens a chest // this is used to detect who opens a newly spawned chest // since that is not really tracked on the lootevent if (block.getType() != Material.AIR && block.getType() == Material.CHEST) { - openedChests.put(block, event.getPlayer()); + openedChests.put(block, player); Bukkit.getScheduler().runTaskLater(toolStats, () -> openedChests.remove(block), 20); } } diff --git a/src/main/java/lol/hyper/toolstats/events/SheepShear.java b/src/main/java/lol/hyper/toolstats/events/SheepShear.java index e0b159b..132a93b 100644 --- a/src/main/java/lol/hyper/toolstats/events/SheepShear.java +++ b/src/main/java/lol/hyper/toolstats/events/SheepShear.java @@ -18,6 +18,7 @@ package lol.hyper.toolstats.events; import lol.hyper.toolstats.ToolStats; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -47,6 +48,9 @@ public class SheepShear implements Listener { return; } Player player = event.getPlayer(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } Entity entity = event.getRightClicked(); if (!(entity instanceof Sheep)) { return; diff --git a/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java b/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java index 0fa27b2..36fe2b0 100644 --- a/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java +++ b/src/main/java/lol/hyper/toolstats/events/VillagerTrade.java @@ -21,6 +21,7 @@ import lol.hyper.toolstats.ToolStats; import lol.hyper.toolstats.UUIDDataType; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -52,6 +53,13 @@ public class VillagerTrade implements Listener { return; } Inventory inventory = event.getClickedInventory(); + if (!(event.getWhoClicked() instanceof Player)) { + return; + } + Player player = (Player) event.getWhoClicked(); + if (player.getGameMode() == GameMode.CREATIVE || player.getGameMode() == GameMode.SPECTATOR) { + return; + } // only check villager inventories if (inventory instanceof MerchantInventory) { // only check the result slot (the item you receive) @@ -60,17 +68,16 @@ public class VillagerTrade implements Listener { // only check items we want for (String x : toolStats.allValidItems) { if (item.getType().toString().toLowerCase(Locale.ROOT).contains(x)) { - // if the player shift clicks show the warning + // if the player shift clicks, show the warning if (event.isShiftClick()) { String configMessage = toolStats.config.getString("messages.shift-click-warning.trading"); if (configMessage != null) { event.getWhoClicked().sendMessage(ChatColor.translateAlternateColorCodes('&', configMessage)); } } - ItemStack newItem = addLore(item, (Player) event.getWhoClicked()); + ItemStack newItem = addLore(item, player); if (newItem != null) { // this gets delayed since villager inventories suck for no reason - // if you don't delay this it doesn't work idk Bukkit.getScheduler().runTaskLater(toolStats, () -> event.setCurrentItem(newItem), 5); return; }