package com.h6mc;
import java.io.PrintStream;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener
{
private java.util.HashMap<String, Long> last;
@Override
public void onEnable()
{
long start = System.currentTimeMillis();
Bukkit.getServer().getPluginManager().registerEvents(this, this);
this.last = new java.util.HashMap();
getLogger().info("============================");
getLogger().info("NoAutoPlace已加载 请勿剽窃! ");
getLogger().info("============================");
}
@EventHandler
public void BlockPlace(org.bukkit.event.block.BlockPlaceEvent e) { if (e.isCancelled()) {
return;
}
long now = System.currentTimeMillis();
org.bukkit.entity.Player p = e.getPlayer();
if (p.isSneaking())
{
pr(p.getName(), now);
return;
}
if (!this.last.containsKey(p.getName()))
{
pr(p.getName(), now);
return;
}
if (now - ((Long)this.last.get(p.getName())).longValue() >= 1200L)
{
pr(p.getName(), now);
return;
}
if (p.getLocation().clone().add(0.0D, -1.0D, 0.0D).getBlock() == null) {
pr(p.getName(), now);
return;
}
if (p.getLocation().clone().add(0.0D, -1.0D, 0.0D).getBlock().getType().equals(org.bukkit.Material.AIR))
{
pr(p.getName(), now);
return;
}
if (!p.getLocation().clone().add(0.0D, -3.0D, 0.0D).getBlock().getType().equals(org.bukkit.Material.AIR)) {
pr(p.getName(), now);
return;
}
org.bukkit.Location a = p.getLocation().clone().add(0.0D, -1.0D, 0.0D).getBlock().getLocation();
org.bukkit.Location b = e.getBlockPlaced().getLocation();
if (a.getBlockY() != b.getBlockY()) {
pr(p.getName(), now);
return;
}
if (dis(a, b) != 0.0D) {
pr(p.getName(), now);
return;
}
System.out.println("EXM?");
if (!b.clone().add(0.0D, -1.0D, 0.0D).getBlock().getType().equals(org.bukkit.Material.AIR)) {
pr(p.getName(), now);
return;
}
Bukkit.broadcastMessage("§c§l反作弊 >>§6 玩家§e " + e.getPlayer().getDisplayName() + "§6 疑似使用§7 自动铺路 &6作弊,已踢出该玩家");
p.kickPlayer("§c§l[反作弊]§6请不要作弊哦!");
}
private double dis(org.bukkit.Location a, org.bukkit.Location b) {
double x = Math.abs(Math.pow(a.getX() - b.getX(), 2.0D));
double y = Math.abs(Math.pow(a.getY() - b.getY(), 2.0D));
double z = Math.abs(Math.pow(a.getZ() - b.getZ(), 2.0D));
return Math.sqrt(x + y + z);
}
private void pr(String name, long now) { this.last.put(name, Long.valueOf(now)); }
}
|