From 1f3a67d14c468b53b127baedeada47c2135ce959 Mon Sep 17 00:00:00 2001 From: carm Date: Sun, 2 Aug 2020 18:35:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8C=87=E4=BB=A4=E7=9A=84Ta?= =?UTF-8?q?b=E8=A1=A5=E5=85=A8=E3=80=81=E6=8C=87=E4=BB=A4=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E3=80=81=E6=8C=87=E4=BB=A4=E6=9D=83=E9=99=90=E8=AD=A6?= =?UTF-8?q?=E5=91=8A=E7=9A=84=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commands/TimeForFlightCommand.java | 93 ++++++++++++++++++- .../listeners/PlayerListener.java | 6 +- src/main/resources/plugin.yml | 3 + 3 files changed, 97 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/carmwork/plugin/timeforflight/commands/TimeForFlightCommand.java b/src/main/java/com/carmwork/plugin/timeforflight/commands/TimeForFlightCommand.java index d2bcaf2..ba10e41 100644 --- a/src/main/java/com/carmwork/plugin/timeforflight/commands/TimeForFlightCommand.java +++ b/src/main/java/com/carmwork/plugin/timeforflight/commands/TimeForFlightCommand.java @@ -1,7 +1,98 @@ package com.carmwork.plugin.timeforflight.commands; +import com.carmwork.plugin.timeforflight.utils.MessageParser; +import com.google.common.collect.ImmutableList; +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.bukkit.util.StringUtil; + +import java.util.ArrayList; +import java.util.List; + /** * 管理员管理、查看玩家飞行时间的指令 */ -public class TimeForFlightCommand { +public class TimeForFlightCommand implements CommandExecutor, TabCompleter { + + /* + * - set 设置玩家剩余的飞行时间 + * - add 为玩家添加飞行时间 + * - remove 移除玩家的飞行时间 + * - clear 情况玩家的飞行时间 + * + * - help 查看此帮助 + */ + + public static boolean help(CommandSender sender) { + sendMessage(sender, "&6&l限时飞行 &7管理指令帮助"); + return true; + } + + public static boolean noPerm(CommandSender sender) { + sender.sendMessage(MessageParser.parseColor("&c抱歉!&7但您没有这么做的权限。")); + return true; + } + + public static void sendMessage(CommandSender sender, String message) { + sender.sendMessage(MessageParser.parseColor(message)); + } + + public static void sendMessage(Player player, String message) { + player.sendMessage(MessageParser.parseColor(message)); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { + if (!sender.hasPermission("timeforflight.admin")) return noPerm(sender); + if (args.length > 3 || args.length < 1) return help(sender); + + + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + if (!sender.hasPermission("timeforflight.admin")) { + return ImmutableList.of(); + } + switch (args.length) { + case 1: { + List completions = new ArrayList<>(); + List strings = new ArrayList<>(); + strings.add("help"); + strings.add("set"); + strings.add("add"); + strings.add("remove"); + strings.add("clear"); + for (String s : strings) { + if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) { + completions.add(s); + } + } + return completions; + } + case 2: { + String aim = args[1]; + if (aim.equalsIgnoreCase("add") + || aim.equalsIgnoreCase("remove") + || aim.equalsIgnoreCase("set") + || aim.equalsIgnoreCase("clear")) { + List completions = new ArrayList<>(); + for (Player pl : Bukkit.getOnlinePlayers()) { + if (StringUtil.startsWithIgnoreCase(pl.getName(), args[1].toLowerCase())) { + completions.add(pl.getName()); + } + } + return completions; + } + } + default: + return ImmutableList.of(); + } + } + } diff --git a/src/main/java/com/carmwork/plugin/timeforflight/listeners/PlayerListener.java b/src/main/java/com/carmwork/plugin/timeforflight/listeners/PlayerListener.java index e4281b6..bd3dfd0 100644 --- a/src/main/java/com/carmwork/plugin/timeforflight/listeners/PlayerListener.java +++ b/src/main/java/com/carmwork/plugin/timeforflight/listeners/PlayerListener.java @@ -26,10 +26,8 @@ public class PlayerListener implements Listener { Player player = event.getPlayer(); UserData playerCache = DataManager.getData(player.getUniqueId()); - if (player.getAllowFlight()) { - player.setAllowFlight(false); - player.setFlying(false); - } + player.setAllowFlight(false); + player.setFlying(false); DataManager.unloadData(player.getUniqueId()); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6489d90..5df02b6 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,6 +5,9 @@ author: CarmJos depend: [ProtocolLib] commands: TimeForFlight: + permission: timeforflight.admin + description: 管理员指令 + permission-message: "§c抱歉!§7但您没有这么做的权限。" aliases: - flighttime ToggleFly: