started on xray detector
Java CI with Maven / build (push) Successful in 1m9s

This commit is contained in:
2025-02-06 13:23:55 +00:00
parent 3313ed1977
commit 2f3101a7f1
@@ -0,0 +1,57 @@
package dev.zxq5.fantasysmp.events;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.Plugin;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import static org.bukkit.Bukkit.getConsoleSender;
import static org.bukkit.Bukkit.getPluginManager;
public class XrayDetector implements Listener {
private HashMap<Player, HashMap<Material, Integer>> players = new HashMap<>();
private final ArrayList<Material> trackedBlocks = new ArrayList<>(Arrays.asList(
Material.ANCIENT_DEBRIS,
Material.DIAMOND_ORE,
Material.EMERALD_ORE,
Material.GOLD_ORE,
Material.IRON_ORE,
Material.LAPIS_ORE,
Material.REDSTONE_ORE
));
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
HashMap<Material, Integer> blocks = this.players.get(player);
Material block = event.getBlock().getType();
Plugin plugin = getPluginManager().getPlugin("fantasysmp");
if (!this.players.containsKey(player)) {
this.players.put(player, new HashMap<>());
}
if (this.trackedBlocks.contains(block)) {
if (!(blocks.containsKey(block))) blocks.put(block, 0);
blocks.put(block, blocks.get(block) + 1);
Bukkit.getScheduler().runTaskLater(plugin, () -> {
blocks.put(block, blocks.get(block) - 1);
}, 18000);
}
for (HashMap.Entry<Material, Integer> nextBlock : blocks.entrySet()) {
if (nextBlock.getValue() > 30) {
getConsoleSender().sendMessage("Player " + player.getName() + " has broken 30 " + nextBlock.getKey().name() + " in the last 30 minutes!!! (possible xray)");
}
}
}
}