Upload files to "src/net/ardakaz/griefalert"

added copper block waxing and unwaxing and dusting off logic, (might need a little extra rework because changing its state is considered "replacing" which sorta breaks the logic)

added log stripping detection (same issue as copper blocks)
This commit is contained in:
2026-04-30 09:03:51 +00:00
parent c3c2113619
commit f59c484d6b
2 changed files with 871 additions and 752 deletions

View File

@@ -4,6 +4,7 @@ import net.coreprotect.CoreProtect;
import net.coreprotect.CoreProtectAPI;
import net.coreprotect.CoreProtectAPI.ParseResult;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -12,27 +13,24 @@ import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.AnimalTamer;
import org.bukkit.entity.Cat;
import org.bukkit.entity.Tameable;
import org.bukkit.entity.Wolf;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.entity.*;
import org.bukkit.event.*;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.entity.ArmorStand;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
@@ -44,11 +42,10 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.bukkit.inventory.EntityEquipment;
import org.bukkit.entity.ItemFrame;
public class GriefAlert extends JavaPlugin implements Listener, TabCompleter {
public class GriefAlert extends JavaPlugin implements Listener {
private static CoreProtectAPI coreProtectAPI;
private Integer identicalAlerts = 1;
@@ -699,6 +696,129 @@ public class GriefAlert extends JavaPlugin implements Listener, TabCompleter {
}
/*code i hope for copper waxing/unwaxing theres no proper onwax() or onUnWax()
so im kinda gonna try to just check a situation like, if ur holding an axe, left clicking a copper block
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 */
@EventHandler
public void onBlockClick(PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
Player player = event.getPlayer();
Block block = event.getClickedBlock();
ItemStack item = event.getItem();
if (block == null || item == null) return;
Material before = block.getType();
int x = block.getX();
int y = block.getY();
int z = block.getZ();
String world = block.getWorld().getName();
if (isLocationIgnored(x, y, z, world)){
return;
}
boolean isCopper = before.name().contains("COPPER");
//if aint copper it can no copper and means no copper affected
if (!isCopper) return;
//for waxing logic might not even be needed
//boolean isHoneycomb = item.getType() == Material.HONEYCOMB;
//for unwax logic and also might not be needed
//boolean isAxe = item.getType().toString().endsWith("_AXE");
String target = inspectBlock(block, player);
if(target == player.getName()) return;
if(target == null) return;
Bukkit.getScheduler().runTaskLater(this, () -> {
String action;
Material after = block.getType();
if (before == after) return;
boolean wasWaxed = before.name().startsWith("WAXED_");
boolean isWaxed = after.name().startsWith("WAXED_");
if(wasWaxed && !isWaxed){
action = "Unwaxed";
} else if(!wasWaxed && isWaxed) {
action = "Waxed";
} else if (item !=null && item.getType().name().endsWith("_AXE")) {
action = "undusted";
}else{
action = "error 404 check with kleedje30";
}
String message = ChatColor.GRAY + player.getName() + action + " Copper " + " at " + x + " " + y + " " + z + getHumanWorldName(world);
alert(message, player.getName(), "[Map Link](" + MAP_LINK + "/?worldname=" + world + "&zoom=7&x=" + x + "&y=" + y + "&z=" + z + ")",target, x, y, z, world);
}, 1L);
}
//stripping logs
@EventHandler
public void onLogStrip(PlayerInteractEvent event){
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
Player player = event.getPlayer();
Block block = event.getClickedBlock();
ItemStack item = event.getItem();
if (block == null || item == null) return;
Material before = block.getType();
int x = block.getX();
int y = block.getY();
int z = block.getZ();
String world = block.getWorld().getName();
boolean isWood = before.name().contains("LOG");
if(!isWood) return;
if (isLocationIgnored(x, y, z, world)){
return;
}
String target = inspectBlock(block, player);
if(target == null) return;
if(target == player.getName()) return;
Bukkit.getScheduler().runTaskLater(this, () -> {
String action;
Material after = block.getType();
if(before == after) return;
if(!before.name().contains("STRIPPED") && after.name().contains("STRIPPED")){
action = "Stripped";
} else{return;}
String message = ChatColor.GRAY + player.getName() + action + " a(n) " + before + " at " + x + " " + y + " " + z + getHumanWorldName(world);
alert(message, player.getName(), "[Map Link](" + MAP_LINK + "/?worldname=" + world + "&zoom=7&x=" + x + "&y=" + y + "&z=" + z + ")",target, x, y, z, world);
}, 1L);
}
private static String getHumanWorldName(String worldName) {
String world = "";

View File

@@ -2,7 +2,6 @@
package net.ardakaz.griefalert;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;