From 8d9585728e3a74b1c568e27f4f8b88cdc7bff880 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Fri, 28 Apr 2023 11:37:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=81=E6=AD=A2=E6=94=BE=E7=BD=AE=E6=96=B9?= =?UTF-8?q?=E5=9D=97=E3=80=81=E4=B8=A2=E5=BC=83=E7=AE=A1=E7=90=86=E3=80=81?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=9B=B4=E6=96=B0=E3=80=81=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/MenuCommandExecutor.java | 24 +++--- .../Commands/XfDropCommandExecutor.java | 76 +++++++++++++++++++ .../xf_tools/Events/BlockEvent.java | 53 +++++++++++++ .../xf_tools/Events/DropEvent.java | 32 ++++++++ .../Events/PlayerActivityListener.java | 17 +++++ .../org/frontleaves/xf_tools/XF_Tools.java | 15 +++- 6 files changed, 206 insertions(+), 11 deletions(-) create mode 100644 src/main/java/org/frontleaves/xf_tools/Commands/XfDropCommandExecutor.java create mode 100644 src/main/java/org/frontleaves/xf_tools/Events/BlockEvent.java create mode 100644 src/main/java/org/frontleaves/xf_tools/Events/DropEvent.java diff --git a/src/main/java/org/frontleaves/xf_tools/Commands/MenuCommandExecutor.java b/src/main/java/org/frontleaves/xf_tools/Commands/MenuCommandExecutor.java index f4c0038..8f694e3 100644 --- a/src/main/java/org/frontleaves/xf_tools/Commands/MenuCommandExecutor.java +++ b/src/main/java/org/frontleaves/xf_tools/Commands/MenuCommandExecutor.java @@ -21,43 +21,49 @@ public class MenuCommandExecutor implements CommandExecutor { || command.getName().equalsIgnoreCase("xf-tl")) { System.out.println(); if (strings.length == 0) { - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage(String.format("§3筱锋工具箱[XF_Tool](版本号:%s)", Tools.XF_Version)); sender.sendMessage(String.format("§3作者:%s", Tools.XF_Author)); sender.sendMessage("§3博客:§ehttps://www.blog.x-lf.com/"); sender.sendMessage("§2输入 §6/xf-tool help §2 查看插件帮助吧"); - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); } else { if (Objects.equals(strings[0], "help")) { if (strings.length == 1) { - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage("§6/xf-tool §7- 查看插件信息"); sender.sendMessage("§6/xf-tool help [page] §7- 查看指令帮助"); + sender.sendMessage("§6/xf-tool drop §7- 丢弃管理"); sender.sendMessage("§6/xf-op §7- OP管理"); sender.sendMessage("§6/xf-tool setting §7- 插件基础设置"); - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage("§a页码: §71§8/§71"); } else if (strings.length == 2) { if (Objects.equals(strings[1], "1")) { - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage("§6/xf-tool §7- 查看插件信息"); sender.sendMessage("§6/xf-tool help [page] §7- 查看指令帮助"); sender.sendMessage("§6/xf-op §7- OP管理"); sender.sendMessage("§6/xf-tool setting §7- 插件基础设置"); - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage("§a页码: §71§8/§71"); } else sender.sendMessage(String.format("%s§r%s §r§c页码超出范围!", Tools.XF_Prefix, Tools.XF_PrefixArrow)); } else { sender.sendMessage(String.format("%s§r%s §r§c参数不正确,请输入 §6/xf-tool help §c查看指令帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow)); } } else if (Objects.equals(strings[0], "setting")) { - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); sender.sendMessage("§6/xf-tool update §7- 查看是否有可选更新"); sender.sendMessage("§6/xf-tool version §7- 查看插件版本"); - sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix)); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); } else if (Objects.equals(strings[0], "update")) sender.sendMessage(String.format("%s§r%s §r§c很抱歉,我还没有做接口哈!", Tools.XF_Prefix, Tools.XF_PrefixArrow)); - else if (Objects.equals(strings[0],"version")) + else if (Objects.equals(strings[0], "drop")) { + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); + sender.sendMessage("§6/xf-drop §7- 解除丢弃物品"); + sender.sendMessage("§6/xf-drop §7- 设置是否允许丢弃物品"); + sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==",Tools.XF_Prefix)); + } else if (Objects.equals(strings[0],"version")) sender.sendMessage(String.format("%s§r%s §r§3版本号:%s", Tools.XF_Prefix, Tools.XF_PrefixArrow,Tools.XF_Version)); else sender.sendMessage(String.format("%s§r%s §r§c参数错误请输入 §6/xf-tool help §c查看帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow)); } diff --git a/src/main/java/org/frontleaves/xf_tools/Commands/XfDropCommandExecutor.java b/src/main/java/org/frontleaves/xf_tools/Commands/XfDropCommandExecutor.java new file mode 100644 index 0000000..c490b10 --- /dev/null +++ b/src/main/java/org/frontleaves/xf_tools/Commands/XfDropCommandExecutor.java @@ -0,0 +1,76 @@ +package org.frontleaves.xf_tools.Commands; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.frontleaves.xf_tools.XF_Tools; + +import java.util.Objects; + +public class XfDropCommandExecutor implements CommandExecutor { + + protected XF_Tools Tools; + + public XfDropCommandExecutor(XF_Tools Tools) { + this.Tools = Tools; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (command.getName().equalsIgnoreCase("xf-drop")) { + if (args.length == 0) { + int i = 0; + Object[] User = new Object[2]; + for (; Tools.XF_Player.get(i).length != 0; i++) { + User = Tools.XF_Player.get(i); + if (User[0] == sender.getName()) { + break; + } + } + if ((int) User[1] == 0) { + User[1] = 1; + sender.sendMessage(String.format("%s§r%s §r§2解除丢弃物品设置成功", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } else { + sender.sendMessage(String.format("%s§r%s §r§c你已经解除过绑定了", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } else if (args.length == 1) { + if (Objects.equals(args[0], "on")) { + int i = 0; + Object[] User = new Object[2]; + for (; Tools.XF_Player.get(i).length != 0; i++) { + User = Tools.XF_Player.get(i); + if (User[0] == sender.getName()) { + break; + } + } + if ((int) User[1] == 1) { + User[1] = 0; + sender.sendMessage(String.format("%s§r%s §r§2禁止丢弃物品设置成功", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } else { + sender.sendMessage(String.format("%s§r%s §r§c你已经上锁了", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } else if (Objects.equals(args[0], "off")) { + int i = 0; + Object[] User = new Object[2]; + for (; Tools.XF_Player.get(i).length != 0; i++) { + User = Tools.XF_Player.get(i); + if (User[0] == sender.getName()) { + break; + } + } + if ((int) User[1] == 0) { + User[1] = 1; + sender.sendMessage(String.format("%s§r%s §r§2解除丢弃物品设置成功", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } else { + sender.sendMessage(String.format("%s§r%s §r§c你已经解除过绑定了", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } else { + sender.sendMessage(String.format("%s§r%s §r§c参数不正确,请输入 §6/xf-tool help §c查看指令帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } else { + sender.sendMessage(String.format("%s§r%s §r§c参数不正确,请输入 §6/xf-tool help §c查看指令帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } + return true; + } +} diff --git a/src/main/java/org/frontleaves/xf_tools/Events/BlockEvent.java b/src/main/java/org/frontleaves/xf_tools/Events/BlockEvent.java new file mode 100644 index 0000000..ac4104a --- /dev/null +++ b/src/main/java/org/frontleaves/xf_tools/Events/BlockEvent.java @@ -0,0 +1,53 @@ +package org.frontleaves.xf_tools.Events; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.frontleaves.xf_tools.XF_Tools; + +public class BlockEvent implements Listener { + + protected XF_Tools Tools; + + public BlockEvent(XF_Tools Tools) { + this.Tools = Tools; + } + + @EventHandler + public void InventoryEvent(InventoryCloseEvent Player) { + if (!Player.getPlayer().isOp()) { + // 基岩检测 + if (Player.getPlayer().getInventory().contains(Material.BEDROCK)) { + Player.getPlayer().getInventory().remove(Material.BEDROCK); + Player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK)); + } + } + } + + @EventHandler + public void DropEvent(PlayerDropItemEvent Player) { + if (!Player.getPlayer().isOp()) { + // 基岩检测 + if (Player.getPlayer().getInventory().contains(Material.BEDROCK)) { + Player.setCancelled(true); + Player.getPlayer().getInventory().remove(Material.BEDROCK); + Player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK)); + } + } + } + + @EventHandler + public void BlockPlaceEvent(BlockPlaceEvent Player) { + if (!Player.getPlayer().isOp()) { + // 基岩检测 + if (Player.getPlayer().getInventory().contains(Material.BEDROCK)) { + Player.setCancelled(true); + Player.getPlayer().getInventory().remove(Material.BEDROCK); + Player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", Tools.XF_Prefix, Tools.XF_PrefixArrow, Material.BEDROCK)); + } + } + } +} diff --git a/src/main/java/org/frontleaves/xf_tools/Events/DropEvent.java b/src/main/java/org/frontleaves/xf_tools/Events/DropEvent.java new file mode 100644 index 0000000..a8dd492 --- /dev/null +++ b/src/main/java/org/frontleaves/xf_tools/Events/DropEvent.java @@ -0,0 +1,32 @@ +package org.frontleaves.xf_tools.Events; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.frontleaves.xf_tools.XF_Tools; + +public class DropEvent implements Listener { + + protected XF_Tools Tools; + + public DropEvent(XF_Tools Tools) { + this.Tools = Tools; + } + + @EventHandler + public void Drop(PlayerDropItemEvent Player) { + int i = 0; + Object[] User = new Object[2]; + for (; Tools.XF_Player.get(i).length != 0; i++) { + User = Tools.XF_Player.get(i); + if (User[0] == Player.getPlayer().getName()) { + break; + } + } + if ((int) User[1] == 0) { + Player.setCancelled(true); + if (Player.isCancelled()) + Player.getPlayer().sendMessage(String.format("%s§r%s §r§c丢东西保护,如果确定需要丢物品输入 §6/xf-drop §c开启丢物品", Tools.XF_Prefix, Tools.XF_PrefixArrow)); + } + } +} diff --git a/src/main/java/org/frontleaves/xf_tools/Events/PlayerActivityListener.java b/src/main/java/org/frontleaves/xf_tools/Events/PlayerActivityListener.java index abb4ffb..d8bc02a 100644 --- a/src/main/java/org/frontleaves/xf_tools/Events/PlayerActivityListener.java +++ b/src/main/java/org/frontleaves/xf_tools/Events/PlayerActivityListener.java @@ -4,15 +4,32 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.frontleaves.xf_tools.XF_Tools; public class PlayerActivityListener implements Listener { + + protected XF_Tools Tools; + + public PlayerActivityListener(XF_Tools Tools) { + this.Tools = Tools; + } + @EventHandler public void onJoinServer(PlayerJoinEvent Player) { + Object[] PlayerData = {Player.getPlayer().getName(), 0}; + Tools.XF_Player.add(PlayerData); Player.setJoinMessage(String.format("§7[§2+§7]§3 %s", Player.getPlayer().getDisplayName())); } @EventHandler public void onQuitServer(PlayerQuitEvent Player) { + for (int i = 0; Tools.XF_Player.get(i).length != 0; i++) { + Object[] User = Tools.XF_Player.get(i); + if (User[0] == Player.getPlayer().getName()) { + Tools.XF_Player.remove(i); + break; + } + } Player.setQuitMessage(String.format("§7[§c-§7]§3 %s", Player.getPlayer().getDisplayName())); } } diff --git a/src/main/java/org/frontleaves/xf_tools/XF_Tools.java b/src/main/java/org/frontleaves/xf_tools/XF_Tools.java index ba88b3c..cedc789 100644 --- a/src/main/java/org/frontleaves/xf_tools/XF_Tools.java +++ b/src/main/java/org/frontleaves/xf_tools/XF_Tools.java @@ -3,14 +3,22 @@ package org.frontleaves.xf_tools; import org.bukkit.plugin.java.JavaPlugin; import org.frontleaves.xf_tools.Commands.MenuCommandExecutor; import org.frontleaves.xf_tools.Commands.OpCheckCommandExecutor; +import org.frontleaves.xf_tools.Commands.XfDropCommandExecutor; import org.frontleaves.xf_tools.Commands.XfOpCommandExecutor; +import org.frontleaves.xf_tools.Events.BlockEvent; +import org.frontleaves.xf_tools.Events.DropEvent; import org.frontleaves.xf_tools.Events.PlayerActivityListener; +import java.util.ArrayList; +import java.util.List; + public final class XF_Tools extends JavaPlugin { public String XF_Version = "1.0.0-Alpha"; public String XF_Author = "筱锋xiao_lfeng"; public String XF_Prefix = "§2XF§bTools"; public String XF_PrefixArrow = "§7§l>>"; + // 初始化部分 + public List XF_Player = new ArrayList<>(); @Override public void onEnable() { @@ -22,15 +30,18 @@ public final class XF_Tools extends JavaPlugin { getCommand("xf-tool").setExecutor(new MenuCommandExecutor(this)); getCommand("xf-tl").setExecutor(new MenuCommandExecutor(this)); getCommand("xf-op").setExecutor(new XfOpCommandExecutor(this)); + getCommand("xf-drop").setExecutor(new XfDropCommandExecutor(this)); // 载入监听 - getServer().getPluginManager().registerEvents(new PlayerActivityListener(), this); + getServer().getPluginManager().registerEvents(new PlayerActivityListener(this), this); + getServer().getPluginManager().registerEvents(new BlockEvent(this), this); + getServer().getPluginManager().registerEvents(new DropEvent(this), this); // 输出配置文件 saveDefaultConfig(); // 信息输出 - getLogger().info(String.format("作者:%s",this.XF_Author)); + getLogger().info(String.format("作者:%s", this.XF_Author)); getLogger().info("瞄,希望我的插件对你有所帮助~"); super.onEnable();