Added Y-Level filters to alerts (#9)
Merge branch 'master' into alert_range fixed_the_snake_case Switch to camelCase + Too much not java programing Added Y-Level filters to alerts + Useful to filter out fortuning or TNT used in Netherite Mining + Might be a good idea to expand this setting to be per world Co-authored-by: Etzelia <etzelia@hotmail.com> Co-authored-by: Joey Hines <joey@ahines.net> Reviewed-on: https://git.etztech.xyz/Minecraft/MineAlert/pulls/9 Reviewed-by: Etzelia <etzelia@hotmail.com>master
parent
d03f54594a
commit
f27eb90f82
|
@ -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.ClickEvent;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
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);
|
String alert = lang.getMessage(playerName);
|
||||||
purge();
|
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<Date> dates = map.getOrDefault(alert, new ArrayList<>());
|
List<Date> dates = map.getOrDefault(alert, new ArrayList<>());
|
||||||
dates.add(new Date());
|
dates.add(new Date());
|
||||||
map.put(alert, dates);
|
map.put(alert, dates);
|
||||||
|
@ -113,21 +130,21 @@ public class GriefAlertListener implements Listener {
|
||||||
if (event.getPlayer() != null &&
|
if (event.getPlayer() != null &&
|
||||||
(event.getCause() == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL ||
|
(event.getCause() == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL ||
|
||||||
event.getCause() == BlockIgniteEvent.IgniteCause.FIREBALL)) {
|
event.getCause() == BlockIgniteEvent.IgniteCause.FIREBALL)) {
|
||||||
addAlert(event.getPlayer().getName(), Lang.IGNITE_ALERT);
|
addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.IGNITE_ALERT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
if(event.getBlockPlaced().getType() == Material.TNT) {
|
if(event.getBlockPlaced().getType() == Material.TNT) {
|
||||||
addAlert(event.getPlayer().getName(), Lang.TNT_ALERT);
|
addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.TNT_ALERT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBucketEmpty(PlayerBucketEmptyEvent event) {
|
public void onBucketEmpty(PlayerBucketEmptyEvent event) {
|
||||||
if(event.getBucket() == Material.LAVA_BUCKET) {
|
if(event.getBucket() == Material.LAVA_BUCKET) {
|
||||||
addAlert(event.getPlayer().getName(), Lang.LAVA_ALERT);
|
addAlert(event.getPlayer().getName(), event.getBlock().getLocation(), Lang.LAVA_ALERT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,8 +128,23 @@ public class OreAlertListener implements Listener {
|
||||||
String.format("ore.blocks.%s.ping", blockKey),
|
String.format("ore.blocks.%s.ping", blockKey),
|
||||||
"ore.ping"
|
"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());
|
purge(map.getOrDefault(event.getPlayer().getUniqueId(), new ArrayList<>()).iterator());
|
||||||
|
|
||||||
|
int yLevel = event.location.getBlockY();
|
||||||
|
if (yLevel > belowY || yLevel < aboveY) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int strikes = 0;
|
int strikes = 0;
|
||||||
for (BlockEvent e : map.getOrDefault(event.getPlayer().getUniqueId(), new ArrayList<>())) {
|
for (BlockEvent e : map.getOrDefault(event.getPlayer().getUniqueId(), new ArrayList<>())) {
|
||||||
if (e.isParent() && e.getMaterial().name().equals(event.getMaterial().name())) {
|
if (e.isParent() && e.getMaterial().name().equals(event.getMaterial().name())) {
|
||||||
|
|
|
@ -17,6 +17,10 @@ grief:
|
||||||
color: ''
|
color: ''
|
||||||
# Override
|
# Override
|
||||||
url: ''
|
url: ''
|
||||||
|
# y level upper limit
|
||||||
|
below_y: 255
|
||||||
|
# y level lower limit
|
||||||
|
above_y: 20
|
||||||
|
|
||||||
# OreAlert
|
# OreAlert
|
||||||
ore:
|
ore:
|
||||||
|
@ -40,6 +44,10 @@ ore:
|
||||||
webhook: ''
|
webhook: ''
|
||||||
# Override
|
# Override
|
||||||
url: ''
|
url: ''
|
||||||
|
# y level upper limit
|
||||||
|
below_y: 20
|
||||||
|
# y level lower limit
|
||||||
|
above_y: 0
|
||||||
|
|
||||||
# Only blocks listed here will be monitored
|
# Only blocks listed here will be monitored
|
||||||
# Each of the above notify settings can be overridden per-block if needed
|
# Each of the above notify settings can be overridden per-block if needed
|
||||||
|
|
Loading…
Reference in New Issue