This commit is contained in:
@@ -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)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user