Just organizing a bit and adding comments
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 45s
All checks were successful
Build / Explore-Gitea-Actions (push) Successful in 45s
This commit is contained in:
@@ -50,6 +50,10 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
private Boolean ALLOW_STEALING;
|
||||
private Connection connection;
|
||||
|
||||
/*
|
||||
UTILITY FUNCTIONS
|
||||
*/
|
||||
|
||||
// Block inspector: only the most recent placement counts for ownership.
|
||||
private static String inspectBlock(Block block, Player player) {
|
||||
List<String[]> lookup = coreProtectAPI.blockLookup(block, 50000000);
|
||||
@@ -90,6 +94,65 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
return world;
|
||||
}
|
||||
|
||||
// Sends the alert (or cancels it)
|
||||
private void alert(String message, String playerName, String mapLink, String target, int x, int y, int z, String world) {
|
||||
// Exclude trusted people
|
||||
Player griefer = Bukkit.getPlayer(playerName);
|
||||
if (griefer.hasPermission("griefalert.exclude") || griefer.hasPermission("griefalert.exclude." + target)) {
|
||||
return;
|
||||
}
|
||||
// Spam limiter
|
||||
String realAlertMessage = message;
|
||||
String[] alert1 = null;
|
||||
if (lastAlert != null) {
|
||||
alert1 = lastAlert.split(" ");
|
||||
}
|
||||
String[] alert2 = message.split(" ");
|
||||
if (alert1 != null) {
|
||||
if (alert1[2].equals(alert2[2]) && alert1[5].equals(alert2[5]) && alert1[1].equals("broke") && alert2[1].equals("broke")) {
|
||||
identicalAlerts += 1;
|
||||
} else if (Arrays.equals(alert1, alert2)) {
|
||||
identicalAlerts += 1;
|
||||
} else {
|
||||
identicalAlerts = 1;
|
||||
}
|
||||
}
|
||||
if (identicalAlerts == 4) {
|
||||
message = ChatColor.GRAY + "Same behavior continues.";
|
||||
mapLink = null;
|
||||
}
|
||||
if (identicalAlerts > 4) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Use direct location check
|
||||
if (world != null && isLocationIgnored(x, y, z, world)) {
|
||||
return; // Do not alert if location is ignored
|
||||
}
|
||||
|
||||
// Send an event for external hooks
|
||||
GriefAlertEvent griefalert_event;
|
||||
if (MAP_LINK != null && !MAP_LINK.isEmpty() && mapLink != null) {
|
||||
griefalert_event = new GriefAlertEvent(message + " (" + mapLink + ")");
|
||||
} else {
|
||||
griefalert_event = new GriefAlertEvent(message);
|
||||
}
|
||||
getServer().getPluginManager().callEvent(griefalert_event);
|
||||
|
||||
// Notify staff ingame
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (player.hasPermission("griefalert.notify")) {
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
lastAlert = realAlertMessage;
|
||||
}
|
||||
|
||||
/*
|
||||
INITIALIZATION
|
||||
*/
|
||||
|
||||
// Init GriefAlert
|
||||
@Override
|
||||
public void onEnable() {
|
||||
@@ -141,6 +204,10 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
LOCATION IGNORING
|
||||
*/
|
||||
|
||||
private boolean isLocationIgnored(int x, int y, int z, String world) {
|
||||
try {
|
||||
PreparedStatement ps = connection.prepareStatement("SELECT 1 FROM ignored_locations WHERE x=? AND y=? AND z=? AND world=?");
|
||||
@@ -191,6 +258,10 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
EVENT LISTENERS
|
||||
*/
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
// Block break alerts
|
||||
public void onBlockBreak(BlockBreakEvent event) {
|
||||
@@ -336,7 +407,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
//event handler for item frames
|
||||
// Placing item to an item frame
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
||||
if (!(event.getRightClicked() instanceof ItemFrame frame)) return;
|
||||
@@ -370,7 +441,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
// Breaking item frame item (uses a different event then placing an item)
|
||||
// Item frame stealing alerts
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onItemFrameDamage(EntityDamageByEntityEvent event) {
|
||||
if (!(event.getEntity() instanceof ItemFrame frame)) return;
|
||||
@@ -398,6 +469,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
alert(message, playerName, "[Map Link](" + MAP_LINK + "/?worldname=" + worldName + "&zoom=7&x=" + x + "&y=" + y + "&z=" + z + ")", target, x, y, z, worldName);
|
||||
}
|
||||
|
||||
// Item frame breaking alerts
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onItemFrameBreak(HangingBreakByEntityEvent event) {
|
||||
if (!(event.getEntity() instanceof ItemFrame frame)) return;
|
||||
@@ -423,6 +495,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
|
||||
}
|
||||
|
||||
// Command handler
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (!command.getName().equalsIgnoreCase("griefalert")) return false;
|
||||
@@ -584,57 +657,6 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Sends the alert (or cancels it)
|
||||
private void alert(String message, String playerName, String mapLink, String target, int x, int y, int z, String world) {
|
||||
// Exclude trusted people
|
||||
Player griefer = Bukkit.getPlayer(playerName);
|
||||
if (griefer.hasPermission("griefalert.exclude") || griefer.hasPermission("griefalert.exclude." + target)) {
|
||||
return;
|
||||
}
|
||||
// Spam limiter
|
||||
String realAlertMessage = message;
|
||||
String[] alert1 = null;
|
||||
if (lastAlert != null) {
|
||||
alert1 = lastAlert.split(" ");
|
||||
}
|
||||
String[] alert2 = message.split(" ");
|
||||
if (alert1 != null) {
|
||||
if (alert1[2].equals(alert2[2]) && alert1[5].equals(alert2[5]) && alert1[1].equals("broke") && alert2[1].equals("broke")) {
|
||||
identicalAlerts += 1;
|
||||
} else if (Arrays.equals(alert1, alert2)) {
|
||||
identicalAlerts += 1;
|
||||
} else {
|
||||
identicalAlerts = 1;
|
||||
}
|
||||
}
|
||||
if (identicalAlerts == 4) {
|
||||
message = ChatColor.GRAY + "Same behavior continues.";
|
||||
mapLink = null;
|
||||
}
|
||||
if (identicalAlerts > 4) {
|
||||
return;
|
||||
}
|
||||
// Use direct location check
|
||||
if (world != null && isLocationIgnored(x, y, z, world)) {
|
||||
return; // Do not alert if location is ignored
|
||||
}
|
||||
// Send an event for external hooks
|
||||
GriefAlertEvent griefalert_event;
|
||||
if (MAP_LINK != null && !MAP_LINK.isEmpty() && mapLink != null) {
|
||||
griefalert_event = new GriefAlertEvent(message + " (" + mapLink + ")");
|
||||
} else {
|
||||
griefalert_event = new GriefAlertEvent(message);
|
||||
}
|
||||
getServer().getPluginManager().callEvent(griefalert_event);
|
||||
// Notify staff ingame
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (player.hasPermission("griefalert.notify")) {
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
lastAlert = realAlertMessage;
|
||||
}
|
||||
|
||||
//pet alert(dog and cat only)
|
||||
@EventHandler
|
||||
public void onPetKill(EntityDeathEvent event) {
|
||||
@@ -662,7 +684,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
|
||||
}
|
||||
|
||||
//farm animal handler
|
||||
// Mob killing alerts
|
||||
@EventHandler
|
||||
public void onFarmAnimalDeath(EntityDeathEvent event) {
|
||||
if (!(event.getEntity().getKiller() instanceof Player killer)) return;
|
||||
@@ -698,6 +720,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
and its waxed, ill assume ur unwaxing, and therefor sending an alert
|
||||
but some of this code was written at 1am so idk how and why im why and howing */
|
||||
|
||||
// Waxing/unwaxing alerts
|
||||
@EventHandler
|
||||
public void onBlockClick(PlayerInteractEvent event) {
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
@@ -760,7 +783,7 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}, 1L);
|
||||
}
|
||||
|
||||
//stripping logs
|
||||
// Log stripping alerts
|
||||
@EventHandler
|
||||
public void onLogStrip(PlayerInteractEvent event) {
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
@@ -811,6 +834,10 @@ public class GriefAlert extends JavaPlugin implements Listener {
|
||||
}, 1L);
|
||||
}
|
||||
|
||||
/*
|
||||
CoreProtect API
|
||||
*/
|
||||
|
||||
private CoreProtectAPI getCoreProtect() {
|
||||
Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user