diff --git a/src/main/java/xyz/etztech/minealert/listeners/GriefAlertListener.java b/src/main/java/xyz/etztech/minealert/listeners/GriefAlertListener.java index 9db4ae7..599ff31 100644 --- a/src/main/java/xyz/etztech/minealert/listeners/GriefAlertListener.java +++ b/src/main/java/xyz/etztech/minealert/listeners/GriefAlertListener.java @@ -5,6 +5,7 @@ import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -43,9 +44,25 @@ public class GriefAlertListener implements Listener { } } - public void addAlert(String playerName, Lang lang) { + public void addAlert(String playerName, Location eventLocation, Lang lang) { String alert = lang.getMessage(playerName); purge(); + + int aboveY = this.plugin.getConfigIntFallback( + 0, + "grief.above_y" + ); + + int belowY = this.plugin.getConfigIntFallback( + 255, + "grief.below_y" + ); + + int eventYLevel = eventLocation.getBlockY(); + if (eventYLevel > belowY || eventYLevel < aboveY) { + return; + } + List dates = map.getOrDefault(alert, new ArrayList<>()); dates.add(new Date()); map.put(alert, dates); @@ -113,22 +130,22 @@ public class GriefAlertListener implements Listener { if (event.getPlayer() != null && (event.getCause() == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL || event.getCause() == BlockIgniteEvent.IgniteCause.FIREBALL)) { - addAlert(event.getPlayer().getName(), Lang.IGNITE_ALERT); + addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.IGNITE_ALERT); } } @EventHandler public void onBlockPlace(BlockPlaceEvent event) { if(event.getBlockPlaced().getType() == Material.TNT) { - addAlert(event.getPlayer().getName(), Lang.TNT_ALERT); + addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.TNT_ALERT); } } @EventHandler public void onBucketEmpty(PlayerBucketEmptyEvent event) { if(event.getBucket() == Material.LAVA_BUCKET) { - addAlert(event.getPlayer().getName(), Lang.LAVA_ALERT); + addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.LAVA_ALERT); } } -} +} \ No newline at end of file diff --git a/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java b/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java index dd547a5..10c0ab8 100644 --- a/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java +++ b/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java @@ -128,8 +128,23 @@ public class OreAlertListener implements Listener { String.format("ore.blocks.%s.ping", blockKey), "ore.ping" ); + int belowY = this.plugin.getConfigIntFallback( + 255, + String.format("ore.blocks.%s.below_y", blockKey), + "ore.below_y" + ); + int aboveY = this.plugin.getConfigIntFallback( + 0, + String.format("ore.blocks.%s.above_y", blockKey), + "ore.above_y" + ); purge(map.getOrDefault(event.getPlayer().getUniqueId(), new ArrayList<>()).iterator()); + int yLevel = event.location.getBlockY(); + if (yLevel > belowY || yLevel < aboveY) { + return; + } + int strikes = 0; for (BlockEvent e : map.getOrDefault(event.getPlayer().getUniqueId(), new ArrayList<>())) { if (e.isParent() && e.getMaterial().name().equals(event.getMaterial().name())) { @@ -274,4 +289,4 @@ public class OreAlertListener implements Listener { return time; } } -} +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d41920f..1eb4acb 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -17,6 +17,10 @@ grief: color: '' # Override url: '' + # y level upper limit + below_y: 255 + # y level lower limit + above_y: 20 # OreAlert ore: @@ -40,6 +44,10 @@ ore: webhook: '' # Override url: '' + # y level upper limit + below_y: 20 + # y level lower limit + above_y: 0 # Only blocks listed here will be monitored # Each of the above notify settings can be overridden per-block if needed