commit 6526ee66e1438732e519f838f00a8749ded89f40 Author: tianyu <32282861@qq.com> Date: Thu Jul 25 04:39:47 2024 +0800 测试版 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..be19b73 --- /dev/null +++ b/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + org.example + DemonAntiEvent + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + + public-rpg + https://repo.aurora-pixels.com/repository/public-rpg/ + + + + + + org.spigotmc + spigot-api + 1.12.2 + + + me.Demon.DemonPlugin + DemonAPI + 1.2.0 + + + + \ No newline at end of file diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiChangeSpawn.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiChangeSpawn.java new file mode 100644 index 0000000..a9d3f39 --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiChangeSpawn.java @@ -0,0 +1,34 @@ +package me.Demon.DemonAntiEvent.Listener; + +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.event.player.PlayerInteractEvent; + +public class AntiChangeSpawn implements Listener { + + @EventHandler + public void onTryChangeSpanwerType(PlayerInteractEvent e) { + Player p = e.getPlayer(); + if (e.isCancelled()) {return;} + if (!e.hasItem() || !e.hasBlock()) {return;} + if (e.getClickedBlock().getType() == Material.MOB_SPAWNER) { + e.setCancelled(true); + p.sendMessage("§7[§6财产保护§7] §f目标方块已受财产保护禁止修改."); + } + } + + @EventHandler + public void AntiBreakMob_Spawner(BlockBreakEvent e) { + Player p = e.getPlayer(); + if (e.isCancelled()) {return;} + if (!p.isOp()) {return;} + if(e.getBlock().getType() == Material.MOB_SPAWNER){ + e.setCancelled(true); + p.sendMessage("§7[§6财产保护§7] §f目标方块已受财产保护无法拆除."); + } + } + +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCommand.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCommand.java new file mode 100644 index 0000000..0ad1dce --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCommand.java @@ -0,0 +1,22 @@ +package me.Demon.DemonAntiEvent.Listener; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import java.util.List; + +public class AntiCommand implements Listener { + @EventHandler(priority= EventPriority.HIGHEST) + public void onCommand(PlayerCommandPreprocessEvent e) { + Player p = e.getPlayer(); + if(p.isOp()){return;} + String commands = e.getMessage().toLowerCase(); + if(commands.contains("mv") || commands.contains("multiverse-core:mv") || commands.contains("multiverse-core")){ + e.setCancelled(true); + p.sendMessage("§7[§6战争领域§7] §f该命令已被管理员禁止."); + } + } +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCraft.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCraft.java new file mode 100644 index 0000000..1fc5938 --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiCraft.java @@ -0,0 +1,31 @@ +package me.Demon.DemonAntiEvent.Listener; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.inventory.ItemStack; + +public class AntiCraft implements Listener { + + @EventHandler + public void onClick(PrepareItemCraftEvent e) { + if ((e.getRecipe() == null) || (e.getRecipe().getResult() == null)) { + return; + } + if (CheckISBlock(e.getRecipe().getResult())) { + ItemStack item = e.getRecipe().getResult(); + item.setAmount(2); + e.getInventory().setItem(0, item); + } + } + /*判断合成物品的Type类型是否存在禁止合成列表中*/ + public static boolean CheckISBlock(ItemStack item){ + if(item.getType() == Material.DIRT){ + if(item.getDurability() == 1) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEgg.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEgg.java new file mode 100644 index 0000000..ec3900f --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEgg.java @@ -0,0 +1,30 @@ +package me.Demon.DemonAntiEvent.Listener; + +import me.Demon.DemonAntiEvent.Main; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +public class AntiEgg implements Listener { + + @EventHandler + public void onUseEgg(PlayerInteractEvent e) { + Player p = e.getPlayer(); + if(!p.getWorld().getName().contains("ASkyBlock")){ + ItemStack item = p.getItemInHand(); + if(!DemonAPI.itemIsNull(item) && item.getType() == Material.EGG){ + e.setCancelled(true); + p.sendMessage( "§7[§6战争领域§7] §f怎么能把哥哥的蛋乱扔呢?" ); + p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 0.5F, 1.5F); + } + } + } + +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEnchant.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEnchant.java new file mode 100644 index 0000000..28f18ed --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiEnchant.java @@ -0,0 +1,92 @@ +package me.Demon.DemonAntiEvent.Listener; + +import me.Demon.DemonAntiEvent.Main; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonPlugin.Util.ItemNameUtil; +import org.bukkit.Sound; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class AntiEnchant implements Listener { + + public static String getItemName(ItemStack item) { + ItemStack items = item.clone(); + return ItemNameUtil.getChineseName(items); + } + + @EventHandler + public void onPlayerUse(PlayerInteractEvent e) { + Player p = e.getPlayer(); + ItemStack item = p.getItemInHand(); + if (!DemonAPI.itemIsNull(item) && DemonAPI.itemIsName(item)) { + String name = item.getType().name(); + boolean butt = false; + if (name.contains("_AXE")) { + butt = true; + } else if (name.contains("_SPADE")) { + butt = true; + } else if (name.contains("_PICKAXE")) { + butt = true; + } + if (butt) { + if (item.getEnchantments().size() >= 1) { + ItemMeta meta = item.getItemMeta(); + if (!meta.spigot().isUnbreakable()) { + item.setDurability((short) 0); + meta.spigot().setUnbreakable(true); + } + String itemName = getItemName(item); + meta.setDisplayName("§7[§f普通§7]§r" + itemName); + List lore = new ArrayList<>(); + lore.add("§7§0§1§r§7§7耐久§0§1§r§7§f§l: §0§2§r§a" + 512 + "§7/§a" + 512); + meta.setLore(lore); + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + item.setItemMeta(meta); + for (Enchantment enchant : item.getEnchantments().keySet()) { + if (enchant.getId() == 34) { + item.removeEnchantment(enchant); + } + } + p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 0.5F, 1.5F); + p.sendMessage("§7[§6战争领域§7] §f您的工具已完成RPG属性升级."); + } + } + } + } + + @EventHandler + public void onUnbreakable(PlayerInteractEvent e) { + Player p = e.getPlayer(); + ItemStack item = p.getItemInHand(); + if (!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { + ItemMeta meta = item.getItemMeta(); + if (meta.getDisplayName().contains(":")) { + String itemName = getItemName(item); + meta.setDisplayName("§7[§f普通§7]§r" + itemName); + if (!meta.spigot().isUnbreakable()) { + item.setDurability((short) 0); + meta.spigot().setUnbreakable(true); + } + meta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); + item.setItemMeta(meta); + for (Enchantment enchant : item.getEnchantments().keySet()) { + if (enchant.getId() == 34) { + item.removeEnchantment(enchant); + } + } + p.playSound(p.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 0.5F, 1.5F); + p.sendMessage("§7[§6战争领域§7] §f您的工具已完成RPG属性升级."); + } + } + } +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiLagLimit.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiLagLimit.java new file mode 100644 index 0000000..4a3d0cd --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiLagLimit.java @@ -0,0 +1,86 @@ +package me.Demon.DemonAntiEvent.Listener; + +import me.Demon.DemonAntiEvent.Main; +import me.jet315.minions.events.MinerBlockBreakEvent; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class AntiLagLimit implements Listener { + + @EventHandler + public void onmini(MinerBlockBreakEvent e){ + e.setCancelled(true); + } + + public static List lockPlayer = new ArrayList<>(); + + + @EventHandler(priority= EventPriority.HIGHEST) + public void onJoin(PlayerJoinEvent e) { + Player p = e.getPlayer(); + lockPlayer.add(p.getUniqueId()); + Bukkit.getScheduler().runTaskLater(Main.plugin, (Runnable) new Runnable() { + @Override + public void run() { + lockPlayer.remove(p.getUniqueId()); + if(p.isOp()) { + p.sendMessage("§c[系统] §a数据已读取完成."); + } + } + }, (long) 60L); + } + + @EventHandler(priority= EventPriority.HIGHEST) + public void onCommand(PlayerCommandPreprocessEvent e) { + Player p = e.getPlayer(); + if(lockPlayer.contains(p.getUniqueId())){ + e.setCancelled(true); + } + } + + + @EventHandler(priority= EventPriority.HIGHEST) + public void onClick(InventoryClickEvent e) { + Player p = (Player) e.getWhoClicked(); + if(lockPlayer.contains(p.getUniqueId())){ + e.setCancelled(true); + } + } + + @EventHandler(priority= EventPriority.HIGHEST) + public void onInteract(PlayerInteractEvent e) { + Player p = e.getPlayer(); + if(lockPlayer.contains(p.getUniqueId())){ + e.setCancelled(true); + } + } + + @EventHandler(priority= EventPriority.HIGHEST) + public void onBlockp(BlockPlaceEvent e) { + Player p = e.getPlayer(); + if(lockPlayer.contains(p.getUniqueId())){ + e.setCancelled(true); + } + } + + @EventHandler(priority= EventPriority.HIGHEST) + public void onBlockb(BlockBreakEvent e) { + Player p = e.getPlayer(); + if(lockPlayer.contains(p.getUniqueId())){ + e.setCancelled(true); + } + } +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiRedStone.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiRedStone.java new file mode 100644 index 0000000..1bc7e25 --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiRedStone.java @@ -0,0 +1,72 @@ +package me.Demon.DemonAntiEvent.Listener; + +import me.Demon.DemonAntiEvent.Main; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +public class AntiRedStone implements Listener { + + @EventHandler + public void onplace(BlockPlaceEvent e){ + Player p = e.getPlayer(); + Block block = e.getBlock(); + Location location = block.getLocation(); + if(location.getWorld().getName().equalsIgnoreCase("ASkyBlock_nether")){ + if(isRedStone(block.getType())){ + e.setCancelled(true); + p.sendMessage( "§7[§6战争领域§7] §f因有玩家在该领域建造红石机造成卡服,故已停止建设红石项目." ); + p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 0.5F, 1.5F); + } + } + } + + public boolean isRedStone(Material material){ + if(material == Material.REDSTONE_BLOCK){ + return true; + } + if(material == Material.PISTON_BASE){ + return true; + } + if(material == Material.PISTON_STICKY_BASE){ + return true; + } + if(material == Material.REDSTONE_COMPARATOR_OFF){ + return true; + } + if(material == Material.REDSTONE_TORCH_ON){ + return true; + } + if(material == Material.DIODE_BLOCK_OFF){ + return true; + } + return false; + } + + /*@EventHandler + public void onEntitySpawn(EntitySpawnEvent event) { + if (event.getEntityType() == EntityType.PIG_ZOMBIE) { + int maxSpawnCount = 3; + int currentSpawnCount = 0; + for (Entity entity : event.getLocation().getChunk().getEntities()) { + if (entity.getType() == EntityType.PIG_ZOMBIE) { + currentSpawnCount++; + } + } + if (currentSpawnCount >= maxSpawnCount) { + event.setCancelled(true); + } + } + }*/ +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiUse.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiUse.java new file mode 100644 index 0000000..c59e35f --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/AntiUse.java @@ -0,0 +1,33 @@ +package me.Demon.DemonAntiEvent.Listener; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +public class AntiUse implements Listener { + + @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) + public void onUseBed(PlayerInteractEvent e) { + Player p = e.getPlayer(); + if (e.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (e.getClickedBlock().getType() == Material.ANVIL) { + e.setCancelled(true); + p.sendTitle("§7[§6属性保护§7] §f", "§f服务器禁止使用铁砧"); + p.sendMessage("§7[§6属性保护§7] §f因担心RPG装备会被原版修改属性导致失效,所以禁止"); + p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 0.5F, 1.5F); + } + if (e.getClickedBlock().getType() == Material.ENCHANTMENT_TABLE) { + e.setCancelled( true ); + p.sendTitle( "§7[§6属性保护§7] §f", "§f服务器禁止使用附魔台" ); + p.sendMessage( "§7[§6属性保护§7] §f因担心RPG装备会特殊的附魔导致失效,所以禁止" ); + p.playSound(p.getLocation(), Sound.ENTITY_BLAZE_DEATH, 0.5F, 1.5F); + } + } + } + +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Listener/JumpPlate.java b/src/main/java/me/Demon/DemonAntiEvent/Listener/JumpPlate.java new file mode 100644 index 0000000..706922f --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Listener/JumpPlate.java @@ -0,0 +1,26 @@ +package me.Demon.DemonAntiEvent.Listener; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.util.Vector; + +public class JumpPlate implements Listener { + + @EventHandler + public void onJumpPlate(PlayerMoveEvent e) { + Player p = e.getPlayer(); + if(p.getWorld().getName().equals("kuangqu")) { + if (e.getPlayer().getLocation().getBlock().getType() == Material.GOLD_PLATE) { + Vector vector = e.getPlayer().getLocation().getDirection().multiply(1.5D).setY(1.0D); + e.getPlayer().setVelocity(vector); + e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.BLOCK_PISTON_EXTEND, 1.0F, 1.0F); + e.getPlayer().setFallDistance(-9999.0F); + } + } + } + +} diff --git a/src/main/java/me/Demon/DemonAntiEvent/Main.java b/src/main/java/me/Demon/DemonAntiEvent/Main.java new file mode 100644 index 0000000..ac310e7 --- /dev/null +++ b/src/main/java/me/Demon/DemonAntiEvent/Main.java @@ -0,0 +1,53 @@ +package me.Demon.DemonAntiEvent; + +import me.Demon.DemonAntiEvent.Listener.*; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +public class Main extends JavaPlugin { + + public static Main plugin; + + @Override + public void onEnable() { + plugin = this; + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-命令禁止"); + Bukkit.getPluginManager().registerEvents(new AntiCommand(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-合成配方禁用"); + Bukkit.getPluginManager().registerEvents(new AntiCraft(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-数据延迟保护"); + Bukkit.getPluginManager().registerEvents(new AntiLagLimit(), plugin); + Bukkit.getPluginManager().registerEvents(new AntiEgg(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-扔鸡蛋保护"); + Bukkit.getPluginManager().registerEvents(new AntiUse(), plugin); + Bukkit.getPluginManager().registerEvents(new AntiEnchant(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-铁砧保护"); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-附魔台保护"); + Bukkit.getPluginManager().registerEvents(new JumpPlate(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-踏板跳跃"); + Bukkit.getPluginManager().registerEvents(new AntiChangeSpawn(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-刷怪笼保护"); + Bukkit.getPluginManager().registerEvents(new AntiRedStone(), plugin); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f事件注册-地狱红石禁止"); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §a插件成功载入Server!"); + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §a妖魂QQ:1763917516"); + } + + @Override + public void onDisable() { + Bukkit.getConsoleSender().sendMessage("§c[生存禁止] §f插件已关闭."); + } + + public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) { + if (Command.equalsIgnoreCase("antienent") && sender.isOp()) { + Player p = (Player) sender; + World world = p.getWorld(); + sender.sendMessage("当前时间: " + world.getTime()); + } + return false; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..e476490 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,5 @@ +name: DemonAntiEvent +main: me.Demon.DemonAntiEvent.Main +version: 1.0.1 +commands: + antienent: \ No newline at end of file