Compare commits

..

10 Commits

11 changed files with 640 additions and 110 deletions

View File

@ -7,52 +7,75 @@ import org.frontleaves.xf_tools.XF_Tools;
import java.util.Objects;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class MenuCommandExecutor implements CommandExecutor {
public XF_Tools Tools;
public MenuCommandExecutor(XF_Tools Tools) {
this.Tools = Tools;
public XF_Tools tools;
public MenuCommandExecutor(XF_Tools plugins) {
this.tools = plugins;
}
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
if (command.getName().equalsIgnoreCase("xftool")
|| command.getName().equalsIgnoreCase("xftl")
|| command.getName().equalsIgnoreCase("xf-tool")
|| command.getName().equalsIgnoreCase("xf-tl")) {
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
if ("xftool".equalsIgnoreCase(command.getName())
|| "xftl".equalsIgnoreCase(command.getName())
|| "xf-tool".equalsIgnoreCase(command.getName())
|| "xf-tl".equalsIgnoreCase(command.getName())) {
System.out.println();
if (strings.length == 0) {
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage(String.format("§3筱锋工具箱[XF_Tool](版本号:%s", Tools.XF_Version));
commandSender.sendMessage(String.format("§3作者%s", Tools.XF_Author));
commandSender.sendMessage("§3博客§ehttps://www.blog.x-lf.com/");
commandSender.sendMessage("§2输入 §6/xf-tool help §2 查看插件帮助吧");
commandSender.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.xfPrefix));
sender.sendMessage(String.format("§3筱锋工具箱[XF_Tool](版本号:%s", tools.xfVersion));
sender.sendMessage(String.format("§3作者%s", tools.xfAuthor));
sender.sendMessage("§3博客§ehttps://blog.x-lf.com/");
sender.sendMessage("§2输入 §6/xf-tool help §2 查看插件帮助吧");
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
} else {
if (Objects.equals(strings[0], "help")) {
if (strings.length == 1) {
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage("§6/xf-tool §7- 查看插件信息");
commandSender.sendMessage("§6/xf-tool help [page] §7- 查看指令帮助");
commandSender.sendMessage("§6/xf-tool setting §7- 插件基础设置");
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage("§a页码 §71§8/§71");
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
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==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
sender.sendMessage("§a页码 §71§8/§71");
} else if (strings.length == 2) {
if (Objects.equals(strings[1], "1")) {
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage("§6/xf-tool §7- 查看插件信息");
commandSender.sendMessage("§6/xf-tool help [page] §7- 查看指令帮助");
commandSender.sendMessage("§6/xf-tool op §7- 赋予OP操作");
commandSender.sendMessage("§6/xf-tool setting §7- 插件基础设置");
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage("§a页码 §71§8/§71");
} else commandSender.sendMessage(String.format("%s§r%s §r§c页码超出范围", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
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==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
sender.sendMessage("§a页码 §71§8/§71");
} else {
sender.sendMessage(String.format("%s§r%s §r§c页码超出范围", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
commandSender.sendMessage(String.format("%s§r%s §r§c参数不正确请输入 §6/xf-tool help §c查看指令帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("%s§r%s §r§c参数不正确请输入 §6/xf-tool help §c查看指令帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
} else if (Objects.equals(strings[0], "setting")) {
commandSender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==",Tools.XF_Prefix));
commandSender.sendMessage("§6/xf-tool update §7- 查看是否有可选更新");
commandSender.sendMessage("§6/xf-tool version §7- 查看插件版本");
commandSender.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.xfPrefix));
sender.sendMessage("§6/xf-tool update §7- 查看是否有可选更新");
sender.sendMessage("§6/xf-tool version §7- 查看插件版本");
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
} else if (Objects.equals(strings[0], "update")) {
sender.sendMessage(String.format("%s§r%s §r§c很抱歉我还没有做接口哈", tools.xfPrefix, tools.xfPrefixArrow));
} else if (Objects.equals(strings[0], "drop")) {
if (tools.getConfig().getBoolean("Plugin_Drop")) {
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
sender.sendMessage("§6/xf-drop §7- 解除丢弃物品");
sender.sendMessage("§6/xf-drop <on or off> §7- 设置是否允许丢弃物品");
sender.sendMessage(String.format("§7§l§m==]==========§r %s §7§l§m==========[==", tools.xfPrefix));
} else {
sender.sendMessage(String.format("%s§r%s §r§c服务器没有开启服务器掉落保护", tools.xfPrefix, tools.xfPrefixArrow));
}
} else if (Objects.equals(strings[0],"version")) {
sender.sendMessage(String.format("%s§r%s §r§3版本号%s", tools.xfPrefix, tools.xfPrefixArrow, tools.xfVersion));
} else {
sender.sendMessage(String.format("%s§r%s §r§c参数错误请输入 §6/xf-tool help §c查看帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
}
}

View File

@ -4,30 +4,42 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.frontleaves.xf_tools.XF_Tools;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class OpCheckCommandExecutor implements CommandExecutor {
public XF_Tools Tools;
public XF_Tools tools;
public OpCheckCommandExecutor(XF_Tools plugins) {
this.Tools = plugins;
this.tools = plugins;
}
@Override
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
if (command.getName().equalsIgnoreCase("op")) {
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
if ("op".equalsIgnoreCase(command.getName()) || "deop".equalsIgnoreCase(command.getName())) {
if (strings.length == 0) {
if (commandSender.isOp()) {
commandSender.sendMessage(String.format("%s§r%s §r§c我不建议你赋予管理员", Tools.XF_Prefix, Tools.XF_PrefixArrow));
if (sender.isOp()) {
if (sender instanceof ConsoleCommandSender) {
sender.sendMessage(String.format("%s§r%s §r§c此命令被禁止请使用 §6/xf-op §c查看帮助", tools.xfPrefix, tools.xfPrefixArrow));
} else {
sender.sendMessage(String.format("%s§r%s §r§c我不建议你赋予管理员", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
commandSender.sendMessage(String.format("%s§r%s §r§c你可不是管理员哦这个指令不要用别怪我没提醒你", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("%s§r%s §r§c你可不是管理员哦这个指令不要用别怪我没提醒你", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
if (commandSender instanceof ConsoleCommandSender) {
commandSender.sendMessage(String.format("%s§r%s §r§c此命令被禁止请使用 §6/xf-op §c查看帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow));
if (sender instanceof ConsoleCommandSender) {
sender.sendMessage(String.format("%s§r%s §r§c此命令被禁止请使用 §6/xf-op §c查看帮助", tools.xfPrefix, tools.xfPrefixArrow));
} else {
commandSender.sendMessage(String.format("%s§r%s §r§c禁止游戏内赋予管理员此命令被禁止", Tools.XF_Prefix, Tools.XF_PrefixArrow));
Player player = (Player) sender;
sender.sendMessage(String.format("%s§r%s §r§c禁止游戏内赋予管理员此命令被禁止", tools.xfPrefix, tools.xfPrefixArrow));
if (sender.isOp()) {
player.kickPlayer(String.format("§7[%s§7] §r§c我跟你说过了服务器内不允许赋予OP", tools.xfPrefix));
} else {
player.kickPlayer(String.format("§7[%s§7] §r§c我跟你说过了服务器内不允许赋予OP何况你也不是OP", tools.xfPrefix));
}
}
}
}

View File

@ -0,0 +1,89 @@
package org.frontleaves.xf_tools.Commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.frontleaves.xf_tools.XF_Tools;
import java.util.Objects;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class XfDropCommandExecutor implements CommandExecutor {
protected XF_Tools tools;
public XfDropCommandExecutor(XF_Tools plugins) {
this.tools = plugins;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if ("xf-drop".equalsIgnoreCase(command.getName())) {
if (tools.getConfig().getBoolean("Plugin_Drop")) {
if (sender instanceof Player) {
if (args.length == 0) {
int i = 0;
Object[] user = new Object[2];
for (; tools.xfPlayer.get(i).length != 0; i++) {
user = tools.xfPlayer.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.xfPrefix, tools.xfPrefixArrow));
} else {
sender.sendMessage(String.format("%s§r%s §r§c你已经解除过绑定了", tools.xfPrefix, tools.xfPrefixArrow));
}
} else if (args.length == 1) {
if (Objects.equals(args[0], "on")) {
int i = 0;
Object[] user = new Object[2];
for (; tools.xfPlayer.get(i).length != 0; i++) {
user = tools.xfPlayer.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.xfPrefix, tools.xfPrefixArrow));
} else {
sender.sendMessage(String.format("%s§r%s §r§c你已经上锁了", tools.xfPrefix, tools.xfPrefixArrow));
}
} else if (Objects.equals(args[0], "off")) {
int i = 0;
Object[] user = new Object[2];
for (; tools.xfPlayer.get(i).length != 0; i++) {
user = tools.xfPlayer.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.xfPrefix, tools.xfPrefixArrow));
} else {
sender.sendMessage(String.format("%s§r%s §r§c你已经解除过绑定了", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§r%s §r§c参数不正确请输入 §6/xf-tool help §c查看指令帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§r%s §r§c参数不正确请输入 §6/xf-tool help §c查看指令帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c此指令只允许玩家进行操作", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§r%s §r§c服务器没有开启服务器掉落保护", tools.xfPrefix, tools.xfPrefixArrow));
}
}
return true;
}
}

View File

@ -10,92 +10,102 @@ import org.bukkit.entity.Player;
import org.frontleaves.xf_tools.XF_Tools;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
public class XfOpCommandExecutor implements CommandExecutor {
public XF_Tools Tools;
public XF_Tools tools;
public XfOpCommandExecutor(XF_Tools Tools) {
this.Tools = Tools;
public XfOpCommandExecutor(XF_Tools plugins) {
this.tools = plugins;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("xf-op")) {
if ("xf-op".equalsIgnoreCase(command.getName())) {
if (sender instanceof ConsoleCommandSender) {
if (args.length == 0) {
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
sender.sendMessage("§6/xf-op add <player> <password> §7- 添加一位OP");
sender.sendMessage("§6/xf-op del <player> <password> §7- 删除一位OP");
sender.sendMessage("§6/xf-op list §7- 查看目前的OP");
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
} else if (args.length <= 2) {
if (Objects.equals(args[0], "add")) {
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误", tools.xfPrefix, tools.xfPrefixArrow));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
sender.sendMessage("§r§3方法§6/xf-op add <player> <password>");
sender.sendMessage("§r§3作用§7添加一个OP");
sender.sendMessage("§r§3示例§a/xf-op add xiao_lfeng 123456");
sender.sendMessage("§r§3备注§c你的 <password> 是根据你在 config 中的配置决定");
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
} else if (Objects.equals(args[0], "del")) {
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误", tools.xfPrefix, tools.xfPrefixArrow));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
sender.sendMessage("§r§3方法§6/xf-op del <player> <password>");
sender.sendMessage("§r§3作用§7删除一个OP");
sender.sendMessage("§r§3示例§a/xf-op del xiao_lfeng 123456");
sender.sendMessage("§r§3备注§c你的 <password> 是根据你在 config 中的配置决定");
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", Tools.XF_Prefix));
sender.sendMessage(String.format("§7§l§m==]========== %s§7§l§m ==========[==", tools.xfPrefix));
} else if (Objects.equals(args[0], "list")) {
Set<OfflinePlayer> GetOP = Tools.getServer().getOperators();
String AllOperatorPlayer = null;
for (OfflinePlayer player : GetOP) {
if (AllOperatorPlayer == null) AllOperatorPlayer = player.getName();
else AllOperatorPlayer += ',' + player.getName();
Set<OfflinePlayer> getOp = tools.getServer().getOperators();
StringBuilder allOperatorPlayer = null;
for (OfflinePlayer player : getOp) {
if (allOperatorPlayer == null) {
allOperatorPlayer = Optional.ofNullable(player.getName()).map(StringBuilder::new).orElse(null);
} else {
allOperatorPlayer.append(',').append(player.getName());
}
}
sender.sendMessage(String.format("%s§3§r%s §r§3服内管理员如下", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("%s§3§r%s §r§3%s", Tools.XF_Prefix, Tools.XF_PrefixArrow, AllOperatorPlayer));
sender.sendMessage(String.format("%s§3§r%s §r§3服内管理员如下", tools.xfPrefix, tools.xfPrefixArrow));
sender.sendMessage(String.format("%s§3§r%s §r§3%s", tools.xfPrefix, tools.xfPrefixArrow, allOperatorPlayer == null ? null : allOperatorPlayer.toString()));
}
} else if (args.length == 3) {
// 获取文件参数
FileConfiguration FileData = Tools.getConfig();
FileConfiguration fileData = tools.getConfig();
if (Objects.equals(args[0], "add")) {
if (Objects.equals(args[2], FileData.getString("OP_Password"))) {
Player player = Tools.getServer().getPlayer(args[1]);
if (Objects.equals(args[2], fileData.getString("OP_Password"))) {
Player player = tools.getServer().getPlayer(args[1]);
if (player != null) {
player.setOp(true);
player.sendMessage(String.format("%s§3§r%s §r§2恭喜你加入管理员团队", Tools.XF_Prefix, Tools.XF_PrefixArrow));
sender.sendMessage(String.format("%s§3§r%s §r§2用户 %s 加入管理员团队!", Tools.XF_Prefix, Tools.XF_PrefixArrow, player.getName()));
player.sendMessage(String.format("%s§3§r%s §r§2恭喜你加入管理员团队", tools.xfPrefix, tools.xfPrefixArrow));
sender.sendMessage(String.format("%s§3§r%s §r§2用户 %s 加入管理员团队!", tools.xfPrefix, tools.xfPrefixArrow, player.getName()));
} else {
OfflinePlayer SetOpPlayer = Tools.getServer().getOfflinePlayer(args[1]);
if (SetOpPlayer.hasPlayedBefore()) {
SetOpPlayer.setOp(true);
sender.sendMessage(String.format("%s§3§r%s §r§2用户 %s 加入管理员团队!", Tools.XF_Prefix, Tools.XF_PrefixArrow, SetOpPlayer.getName()));
} else
sender.sendMessage(String.format("%s§3§r%s §r§c这个用户还没加入过服务器你还是检查一下叭", Tools.XF_Prefix, Tools.XF_PrefixArrow));
}
} else
sender.sendMessage(String.format("%s§3§r%s §r§c无法操作密码错误", Tools.XF_Prefix, Tools.XF_PrefixArrow));
} else if (Objects.equals(args[0], "del")) {
if (Objects.equals(args[2], FileData.getString("OP_Password"))) {
OfflinePlayer DelOpPlayer = Tools.getServer().getOfflinePlayer(args[1]);
if (DelOpPlayer.isOp()) {
DelOpPlayer.setOp(false);
if (DelOpPlayer.isOnline()) {
Player player1 = DelOpPlayer.getPlayer();
player1.sendMessage(String.format("%s§3§r%s §r§c很遗憾你离开了管理员团队", Tools.XF_Prefix, Tools.XF_PrefixArrow));
OfflinePlayer setOpPlayer = tools.getServer().getOfflinePlayer(args[1]);
if (setOpPlayer.hasPlayedBefore()) {
setOpPlayer.setOp(true);
sender.sendMessage(String.format("%s§3§r%s §r§2用户 %s 加入管理员团队!", tools.xfPrefix, tools.xfPrefixArrow, setOpPlayer.getName()));
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c这个用户还没加入过服务器你还是检查一下叭", tools.xfPrefix, tools.xfPrefixArrow));
}
sender.sendMessage(String.format("%s§3§r%s §r§c用户 %s 离开管理员团队!", Tools.XF_Prefix, Tools.XF_PrefixArrow, DelOpPlayer.getName()));
} else
sender.sendMessage(String.format("%s§3§r%s §r§c这个用户本身不是管理员欸!", Tools.XF_Prefix, Tools.XF_PrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c无法操作密码错误", tools.xfPrefix, tools.xfPrefixArrow));
}
} else
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误请使用 §6/xf-op §c查看帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow));
} else
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误请使用 §6/xf-op §c查看帮助", Tools.XF_Prefix, Tools.XF_PrefixArrow));
} else
sender.sendMessage(String.format("%s§3§r%s §r§c此指令只允许后台进行操作", Tools.XF_Prefix, Tools.XF_PrefixArrow));
} else if (Objects.equals(args[0], "del")) {
if (Objects.equals(args[2], fileData.getString("OP_Password"))) {
OfflinePlayer delOpPlayer = tools.getServer().getOfflinePlayer(args[1]);
if (delOpPlayer.isOp()) {
delOpPlayer.setOp(false);
if (delOpPlayer.isOnline()) {
Player player1 = delOpPlayer.getPlayer();
player1.sendMessage(String.format("%s§3§r%s §r§c很遗憾你离开了管理员团队", tools.xfPrefix, tools.xfPrefixArrow));
}
sender.sendMessage(String.format("%s§3§r%s §r§c用户 %s 离开管理员团队!", tools.xfPrefix, tools.xfPrefixArrow, delOpPlayer.getName()));
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c这个用户本身不是管理员欸", tools.xfPrefix, tools.xfPrefixArrow));
}
}
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误请使用 §6/xf-op §c查看帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c参数错误请使用 §6/xf-op §c查看帮助", tools.xfPrefix, tools.xfPrefixArrow));
}
} else {
sender.sendMessage(String.format("%s§3§r%s §r§c此指令只允许后台进行操作", tools.xfPrefix, tools.xfPrefixArrow));
}
}
return true;
}

View File

@ -0,0 +1,93 @@
package org.frontleaves.xf_tools.Events;
import org.bukkit.Location;
import org.bukkit.Material;
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.EntityPickupItemEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.frontleaves.xf_tools.XF_Tools;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class BlockEvent implements Listener {
protected XF_Tools tools;
public BlockEvent(XF_Tools plugins) {
this.tools = plugins;
}
@EventHandler
public void inventoryEvent(InventoryCloseEvent player) {
for (String value : tools.blockBanList) {
if (!player.getPlayer().isOp()) {
// 基岩检测
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
player.getPlayer().getInventory().remove(Material.getMaterial(value));
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", tools.xfPrefix, tools.xfPrefixArrow, value));
}
} else {
tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 从背包获取了 %s", player.getPlayer().getName(), player.getPlayer().getLocation().getWorld().getName(), player.getPlayer().getLocation().getX(), player.getPlayer().getLocation().getY(), player.getPlayer().getLocation().getZ(), value));
}
}
}
@EventHandler
public void dropEvent(PlayerDropItemEvent player) {
for (String value : tools.blockBanList) {
if (!player.getPlayer().isOp()) {
// 基岩检测
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
player.setCancelled(true);
player.getPlayer().getInventory().remove(Material.getMaterial(value));
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", tools.xfPrefix, tools.xfPrefixArrow, Material.getMaterial(value)));
}
} else {
Player players = (Player) player;
Location playerLocation = players.getLocation();
tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 从丢弃了 %s", players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
}
}
}
@EventHandler
public void pickupEvent(EntityPickupItemEvent pickupItemEvent) {
for (String value : tools.blockBanList) {
Player entity = (Player) pickupItemEvent.getEntity();
if (!entity.isOp()) {
if (pickupItemEvent.getItem().getItemStack().getType() == Material.getMaterial(value)) {
entity.setCanPickupItems(false);
entity.sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", tools.xfPrefix, tools.xfPrefixArrow, value));
} else {
Location playerLocation = entity.getLocation();
tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 捡起了 %s%n", entity.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
}
}
}
}
@EventHandler
public void blockPlaceEvent(BlockPlaceEvent player) {
for (String value : tools.blockBanList) {
if (!player.getPlayer().isOp()) {
// 基岩检测
if (player.getPlayer().getInventory().contains(Material.getMaterial(value))) {
player.setCancelled(true);
player.getPlayer().getInventory().remove(Material.getMaterial(value));
player.getPlayer().sendMessage(String.format("%s§r%s §r§c这个 %s 你不可以拥有", tools.xfPrefix, tools.xfPrefixArrow, value));
} else {
Player players = (Player) player;
Location playerLocation = players.getLocation();
tools.getLogger().warning(String.format("管理 %s 在 [%s][%s,%s,%s] 位置使用了 %s", players.getDisplayName(), playerLocation.getWorld(), playerLocation.getX(), playerLocation.getY(), playerLocation.getZ(), value));
}
}
}
}
}

View File

@ -0,0 +1,62 @@
package org.frontleaves.xf_tools.Events;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.frontleaves.xf_tools.XF_Tools;
import java.util.regex.Pattern;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class CommandEvent implements Listener {
private final XF_Tools tools;
public CommandEvent(XF_Tools plugins) {
this.tools = plugins;
}
@EventHandler
public void playerCommandEvent(PlayerCommandPreprocessEvent playerCommandPreprocessEvent) {
// 将数据输出并载入数据库
if (tools.useSql) {
tools.getLogger().warning(String.format("§r玩家 %s 输入了 %s", playerCommandPreprocessEvent.getPlayer().getDisplayName(), playerCommandPreprocessEvent.getMessage()));
} else {
tools.getLogger().warning(String.format("§r玩家 %s 输入了 %s", playerCommandPreprocessEvent.getPlayer().getDisplayName(), playerCommandPreprocessEvent.getMessage()));
}
}
@EventHandler
public void playerCommandForDropEvent(PlayerCommandPreprocessEvent playerCommandPreprocessEvent) {
// 检查数据内容
if ("/drop".equals(playerCommandPreprocessEvent.getMessage())) {
playerCommandPreprocessEvent.setMessage("/xf-drop off");
}
if ("/drop-on".equals(playerCommandPreprocessEvent.getMessage())) {
playerCommandPreprocessEvent.setMessage("/xf-drop on");
}
}
/**
* 检查玩家是否输入了 <b>//calc</b> 指令
* <br>
* 注意这里是玩家管理员默认被允许操作
*
* @param playerCommandPreprocessEvent 输入指令的玩家
*/
@EventHandler
public void playerCommandForCalcEvent(PlayerCommandPreprocessEvent playerCommandPreprocessEvent) {
if (Pattern.matches("^//calc",playerCommandPreprocessEvent.getMessage())) {
if (playerCommandPreprocessEvent instanceof Player && !playerCommandPreprocessEvent.getPlayer().isOp()) {
playerCommandPreprocessEvent.setCancelled(true);
if (playerCommandPreprocessEvent.isCancelled()) {
playerCommandPreprocessEvent.getPlayer().sendMessage(String.format("%s§r%s §r§c玩家不能够直接执行此命令", tools.xfPrefix, tools.xfPrefixArrow));
}
}
}
}
}

View File

@ -0,0 +1,41 @@
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;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class DropEvent implements Listener {
protected XF_Tools tools;
public DropEvent(XF_Tools plugins) {
this.tools = plugins;
}
@EventHandler
public void dropEvent(PlayerDropItemEvent player) {
if (tools.getConfig().getBoolean("Plugin_Drop")) {
int i = 0;
Object[] user = new Object[2];
for (; tools.xfPlayer.get(i).length != 0; i++) {
user = tools.xfPlayer.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.xfPrefix, tools.xfPrefixArrow));
}
}
} else {
player.getPlayer().sendMessage(String.format("%s§r%s §r§c服务器没有开启服务器掉落保护", tools.xfPrefix, tools.xfPrefixArrow));
}
}
}

View File

@ -4,15 +4,36 @@ 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;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class PlayerActivityListener implements Listener {
@EventHandler
public void onJoinServer(PlayerJoinEvent Player) {
Player.setJoinMessage(String.format("§7[§2+§7]§3 %s", Player.getPlayer().getDisplayName()));
protected XF_Tools tools;
public PlayerActivityListener(XF_Tools tools) {
this.tools = tools;
}
@EventHandler
public void onQuitServer(PlayerQuitEvent Player) {
Player.setQuitMessage(String.format("§7[§c-§7]§3 %s", Player.getPlayer().getDisplayName()));
public void onJoinServer(PlayerJoinEvent player) {
Object[] playerData = {player.getPlayer().getName(), 0};
tools.xfPlayer.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.xfPlayer.get(i).length != 0; i++) {
Object[] user = tools.xfPlayer.get(i);
if (user[0] == player.getPlayer().getName()) {
tools.xfPlayer.remove(i);
break;
}
}
player.setQuitMessage(String.format("§7[§c-§7]§3 %s", player.getPlayer().getDisplayName()));
}
}

View File

@ -0,0 +1,100 @@
package org.frontleaves.xf_tools.Others;
import org.frontleaves.xf_tools.XF_Tools;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
public class DataBaseCreate {
private final XF_Tools tools;
public DataBaseCreate(XF_Tools plugins) {
this.tools = plugins;
}
public void createTable() {
try {
Class.forName("com.mysql.jdbc.Driver");
tools.sqlConn = DriverManager.getConnection("jdbc:mysql://" + tools.getConfig().getString("Mysql_Host") + ":" + tools.getConfig().getInt("Mysql_Port") + "/?useSSL=" + tools.getConfig().getString("Mysql_SSL"), tools.getConfig().getString("Mysql_User"), tools.getConfig().getString("Mysql_Password"));
tools.stmt = tools.sqlConn.createStatement();
tools.useSql = true;
tools.getLogger().info("数据库已成功连接!");
} catch (ClassNotFoundException e) {
tools.useSql = false;
} catch (SQLException e) {
tools.getLogger().warning("数据库无法连接,已禁止使用数据库!");
tools.useSql = false;
}
if (this.create()) {
tools.getLogger().info("创建数据表");
tools.useSql = true;
} else {
tools.useSql = false;
}
}
public boolean create() {
try {
if (tools.stmt.executeQuery("SELECT TABLE_NAME,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='xf_tools' AND TABLE_NAME LIKE '%xftls%'").next()) {
tools.getLogger().info("2");
ResultSet resultTable = tools.stmt.executeQuery("SELECT TABLE_NAME,TABLE_SCHEMA FROM information_schema.TABLES WHERE TABLE_SCHEMA='xf_tools' AND TABLE_NAME LIKE '%xftls%'");
while (resultTable.next()) {
if (!Objects.equals(resultTable.getString("TABLE_NAME"), TABLE_NAME.xftls_commandslogs.name())) {
if (!createCommandsLogs()) {
tools.getLogger().warning("数据表 xftls_commandslogs 创建失败");
}
return true;
}
}
} else {
tools.getLogger().info("20");
if (!tools.stmt.executeQuery("SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='xf_tools'").next()) {
if (tools.stmt.execute("CREATE SCHEMA xf_tools")) {
tools.getLogger().info("数据库 xf_tools 创建完毕");
} else {
tools.getLogger().info("数据库创建失败,数据库禁用");
tools.useSql = false;
return false;
}
}
if (!createCommandsLogs()) {
tools.getLogger().warning("数据表 xftls_commandslogs 创建失败,数据库禁用");
tools.useSql = false;
return false;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return false;
}
private boolean createCommandsLogs() {
/*Tools.getLogger().info("1");
// 如果不存在这个数据库需要创建一个数据库
try {
Tools.getLogger().info("2");
Tools.Stmt.execute("CREATE TABLE xf_tools.xftls_commandslogs (`id` INT NOT NULL AUTO_INCREMENT," +
"`player` VARCHAR(16) NOT NULL," +
"`command` TEXT NOT NULL, " +
"PRIMARY KEY (`id`)) ENGINE = MyISAM;");
return true;
} catch (SQLException e) {
throw new RuntimeException(e);
return false;
}*/
return false;
}
public enum TABLE_NAME {
xftls_commandslogs,
}
}

View File

@ -3,30 +3,66 @@ 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.CommandEvent;
import org.frontleaves.xf_tools.Events.DropEvent;
import org.frontleaves.xf_tools.Events.PlayerActivityListener;
import org.frontleaves.xf_tools.Others.DataBaseCreate;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* @author 筱锋xiao_lfeng
* @since v1.0.0-Alpha
*/
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§b§lTools";
public String XF_PrefixArrow = "§7§l>>";
public String xfVersion = "1.0.0-Alpha";
public String xfAuthor = "筱锋xiao_lfeng";
public String xfPrefix = "§2XF§bTools";
public String xfPrefixArrow = "§7§l>>";
// 初始化部分
public List<Object[]> xfPlayer = new ArrayList<>();
public boolean useSql = false;
public Connection sqlConn;
public Statement stmt;
public List<String> blockBanList = new ArrayList<>();
@Override
public void onEnable() {
// 载入指令
getCommand("op").setExecutor(new OpCheckCommandExecutor(this));
getCommand("deop").setExecutor(new OpCheckCommandExecutor(this));
getCommand("xftool").setExecutor(new MenuCommandExecutor(this));
getCommand("xftl").setExecutor(new MenuCommandExecutor(this));
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);
getServer().getPluginManager().registerEvents(new CommandEvent(this),this);
// 输出配置文件
saveDefaultConfig();
// 获取配置文件
this.blockBanList = getConfig().getStringList("BanBlock_List");
// 数据库配置部分
if (getConfig().getBoolean("Mysql_Open")) {
DataBaseCreate dataBaseCreate = new DataBaseCreate(this);
dataBaseCreate.createTable();
}
// 信息输出
getLogger().info("插件已启动");
getLogger().info("作者筱锋xiao_lfeng");
getLogger().info(String.format("作者:%s", this.xfAuthor));
getLogger().info("瞄,希望我的插件对你有所帮助~");
super.onEnable();
}

View File

@ -0,0 +1,43 @@
#################################
# 筱锋工具箱配置文件 #
# 作者筱锋xiao_lfeng #
# 博客https://www.x-lf.com/ #
# 版本1.0.0-Alpha #
#################################
###
# 基础配置信息
###
# 插件前缀显示
Global_Prefix: "§2XF§b§lTools"
###
# OP管理
###
# 赋予OP密码
OP_Password: 20040227
###
# 插件管理
###
# 是否开启凋落物保护
Plugin_Drop: true
# 是否开启违禁物品检测
Plugin_BanBlock: true
BanBlock_List:
- "BEDROCK"
- "COMMAND_BLOCK"
# 是否开启玩家指令记录
Plugin_CommandLog: true
# 是否开启管理员指令记录
Plugin_CommandAdminLog: true
###
# 数据库配置信息
###
Mysql_Open: false
Mysql_Host: "localhost"
Mysql_Port: 3306
Mysql_User: ""
Mysql_Password: ""
Mysql_SSL: false