From 99fa76931449b6145f3d0c234d787079d203a8f4 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 17 Apr 2023 14:29:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0md5=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/expvintl/tools/LoginHandler.java | 6 +- src/main/java/expvintl/tools/Tools.java | 138 ++++++++++-------- 2 files changed, 83 insertions(+), 61 deletions(-) diff --git a/src/main/java/expvintl/tools/LoginHandler.java b/src/main/java/expvintl/tools/LoginHandler.java index ad05b92..d05a437 100644 --- a/src/main/java/expvintl/tools/LoginHandler.java +++ b/src/main/java/expvintl/tools/LoginHandler.java @@ -69,11 +69,11 @@ public class LoginHandler implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event){ if(isRegistered(event.getPlayer().getName())) { - event.getPlayer().sendMessage("请使用 \"/l 密码\" 来登录!"); + event.getPlayer().sendMessage("ʹ \"/l \" ¼!"); }else{ - event.getPlayer().sendMessage("您似乎没有注册,请使用 \"/reg 密码 确认密码\" 来注册!"); + event.getPlayer().sendMessage("ƺûעᣬʹ \"/reg ȷ\" ע!"); } - Bukkit.getScheduler().scheduleSyncDelayedTask(plugin,()-> event.getPlayer().kickPlayer("登录验证超时!"),1200L); + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin,()-> event.getPlayer().kickPlayer("¼֤ʱ!"),1200L); } public List getLoggedPlayer(){ return loggedPlayer; diff --git a/src/main/java/expvintl/tools/Tools.java b/src/main/java/expvintl/tools/Tools.java index 1c635c9..c347625 100644 --- a/src/main/java/expvintl/tools/Tools.java +++ b/src/main/java/expvintl/tools/Tools.java @@ -1,7 +1,6 @@ package expvintl.tools; -import org.bukkit.Bukkit; -import org.bukkit.Location; +import org.bukkit.*; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; @@ -10,6 +9,8 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; +import java.math.BigInteger; +import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -19,13 +20,15 @@ import java.util.regex.Pattern; public final class Tools extends JavaPlugin { private LoginHandler loginHandler; public static YamlConfiguration loginConfig; + //ҵ¼ private final String cfgPath=getDataFolder().getPath()+"/PlayerLoginData.yml"; Logger logger=getLogger(); + // private final Map reqQueue=new HashMap<>(); @Override public void onEnable() { // Plugin startup logic - logger.info("Plugin Enabled!"); + logger.info("expvintl:Tools !"); loginHandler=new LoginHandler(this); getServer().getPluginManager().registerEvents(loginHandler,this); } @@ -44,7 +47,7 @@ public final class Tools extends JavaPlugin { try { loginConfig = new YamlConfiguration(); loginConfig.load(cfgPath); - logger.info("已加载配置!"); + logger.info("Ѽ!"); } catch (Exception e) { logger.warning(e.getMessage()); } @@ -54,98 +57,110 @@ public final class Tools extends JavaPlugin { public boolean onCommand(CommandSender sender,Command command,String label,String[] args) { Player player=this.getServer().getPlayer(sender.getName()); if(Objects.isNull(player)){ - sender.sendMessage("玩家不存在!"); + sender.sendMessage("Ҳ!"); return true; } switch(label) { case "reg": if (args.length == 2) { if (loginHandler.isRegistered(sender.getName())||loginHandler.isLogged(sender.getName())) { - sender.sendMessage("你已经注册过了!"); + sender.sendMessage("Ѿע!"); return true; } if (!args[0].equals(args[1])) { - sender.sendMessage("两次密码不匹配!"); + sender.sendMessage("벻ƥ!"); return true; } if (args[0].length() < 6 || args[0].length() > 16) { - sender.sendMessage("密码不能少于6位或大于16位!"); + sender.sendMessage("벻6λ16λ!"); return true; } if(!Pattern.matches("[A-Za-z0-9.-_]+",args[0])){ - sender.sendMessage("密码包含非法字符!\n请使用 大小写字母数字.-_等字符"); + sender.sendMessage("Ƿַ!\nʹ Сдĸ.-_ַ"); return true; } - loginConfig.set(sender.getName(), args[0]); try { + MessageDigest md=MessageDigest.getInstance("MD5"); + String passMd=new BigInteger(1,md.digest(args[0].getBytes())).toString(16); + loginConfig.set(sender.getName(), passMd); loginConfig.save(cfgPath); - } catch (IOException e) { + } catch (Exception e) { logger.warning(e.getMessage()); - sender.sendMessage("密码保存失败!"); + sender.sendMessage("뱣ʧ!"); return true; } loginHandler.getLoggedPlayer().add(sender.getName()); - sender.sendMessage("登录成功!"); + sender.sendMessage("¼ɹ!"); Bukkit.getScheduler().cancelTasks(this); return true; } else { - sender.sendMessage("缺少参数!"); + sender.sendMessage("ȱٲ!"); return false; } case "l": if(args.length==1){ if(loginHandler.isLogged(sender.getName())){ - sender.sendMessage("你似乎已经登录过了?"); + sender.sendMessage("ƺѾ¼?"); return true; } String passwd=loginConfig.getString(sender.getName()); if(passwd==null){ - sender.sendMessage("用户不存在!"); + sender.sendMessage("û!"); return true; } - if(!passwd.equals(args[0])){ - sender.sendMessage("密码错误!"); + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + String passMd = new BigInteger(1, md.digest(args[0].getBytes())).toString(16); + if(!passwd.equals(passMd)){ + sender.sendMessage("!"); + return true; + } + }catch (Exception e){ + sender.sendMessage("֤ʱڲ!"); return true; } + loginHandler.getLoggedPlayer().add(sender.getName()); - sender.sendMessage("登录成功!"); + sender.sendMessage("¼ɹ!"); Bukkit.getScheduler().cancelTasks(this); return true; }else { - sender.sendMessage("参数错误!"); + sender.sendMessage("!"); return false; } case "cp": if(args.length==1){ if(loginHandler.isRegistered(sender.getName())&&loginHandler.isLogged(sender.getName())){ if (args[0].length() < 6 || args[0].length() > 16) { - sender.sendMessage("密码不能少于6位或大于16位!"); + sender.sendMessage("벻6λ16λ!"); return true; } if(!Pattern.matches("[A-Za-z0-9.-_]+",args[0])){ - sender.sendMessage("密码包含非法字符!\n请使用 大小写字母数字.-_等字符"); + sender.sendMessage("Ƿַ!\nʹ Сдĸ.-_ַ"); return true; } - loginConfig.set(sender.getName(),args[0]); try { + MessageDigest md=MessageDigest.getInstance("MD5"); + String passMd=new BigInteger(1,md.digest(args[0].getBytes())).toString(16); + loginConfig.set(sender.getName(),passMd); loginConfig.save(cfgPath); - } catch (IOException e) { + } catch (Exception e) { logger.warning(e.getMessage()); - sender.sendMessage("密码保存失败!"); + sender.sendMessage("뱣ʧ!"); return true; } - sender.sendMessage("密码修改成功!"); + sender.sendMessage("޸ijɹ!"); }else{ - sender.sendMessage("您未注册或登录,无权修改密码!"); + sender.sendMessage("δע¼Ȩ޸!"); } return true; }else{ - sender.sendMessage("缺少参数!"); + sender.sendMessage("ȱٲ!"); return false; } case "kill": if(args.length>0){ - sender.sendMessage(args[0]+" 死了"); + sender.sendMessage(args[0]+" "); return true; } player.setHealth(0); @@ -157,9 +172,9 @@ public final class Tools extends JavaPlugin { double y = Double.parseDouble(args[2]); double z = Double.parseDouble(args[3]); player.teleport(new Location(player.getWorld(),x,y,z)); - getServer().broadcastMessage(String.format("%s 传送到了 X:%.2f Y:%.2f Z:%.2f",player.getName(),x,y,z)); + getServer().broadcastMessage(String.format("%s ͵ X:%.2f Y:%.2f Z:%.2f",player.getName(),x,y,z)); }catch (NumberFormatException f) { - sender.sendMessage("错误的数字格式!"); + sender.sendMessage("ָʽ!"); } }else if(args.length==3) { try { @@ -167,12 +182,12 @@ public final class Tools extends JavaPlugin { double y = Double.parseDouble(args[1]); double z = Double.parseDouble(args[2]); player.teleport(new Location(player.getWorld(), x, y, z)); - getServer().broadcastMessage(String.format("%s 传送到了 X:%.2f Y:%.2f Z:%.2f", player.getName(), x, y, z)); + getServer().broadcastMessage(String.format("%s ͵ X:%.2f Y:%.2f Z:%.2f", player.getName(), x, y, z)); } catch (NumberFormatException f) { - sender.sendMessage("错误的数字格式!"); + sender.sendMessage("ָʽ!"); } }else{ - sender.sendMessage("缺少应有的坐标参数!"); + sender.sendMessage("ȱӦе!"); return false; } return true; @@ -181,65 +196,72 @@ public final class Tools extends JavaPlugin { if(args.length==1){ Player target=getServer().getPlayer(args[0]); if(Objects.isNull(target)) { - sender.sendMessage("玩家不存在或离线!"); + sender.sendMessage(ChatColor.RED+"Ҳڻ!"); return true; } - sender.sendMessage("请求已发送给 "+ target.getName()); - String jsonMsg="[{\"text\":\""+sender.getName()+" 希望传送到你的位置\\n\"},{\"text\":\"[点击接受]\",\"color\":\"green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/tpaccept\"}},{\"text\":\" [点击拒绝]\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/tpreject\"}}]"; + if(sender.getName().equals(args[0])){ + sender.sendMessage(ChatColor.RED+"㲻ܴԼ!"); + return true; + } + sender.sendMessage(ChatColor.GREEN+"ѷ͸ "+ target.getName()); + String jsonMsg="[{\"text\":\""+sender.getName()+" ϣ͵λ\\n\"},{\"text\":\"[]\",\"color\":\"green\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/tpaccept\"}},{\"text\":\" [ܾ]\",\"color\":\"red\",\"clickEvent\":{\"action\":\"run_command\",\"value\":\"/tpreject\"}}]"; Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"tellraw "+target.getName()+" "+jsonMsg); reqQueue.put(sender.getName(),target.getName()); Bukkit.getScheduler().scheduleSyncDelayedTask(this,()->{ - reqQueue.remove(sender.getName()); - target.sendMessage(sender.getName()+" 的传送请求已过期!"); - sender.sendMessage(target.getName()+" 的传送请求已过期!"); + //ȷ󻹴 ѽ/ܾ ⽫ʧЧ + if(reqQueue.get(sender.getName())!=null) { + reqQueue.remove(sender.getName()); + target.sendMessage(sender.getName() + " Ĵѹ!"); + sender.sendMessage(target.getName() + " Ĵѹ!"); + } },600); return true; }else{ - sender.sendMessage("缺少玩家参数!"); + sender.sendMessage("ȱҲ!"); return false; } case "tpaccept": - //标记所有键 + //м for(String pl:reqQueue.keySet()){ - //确定队列中存在传送目标玩家 + //ȷдڴĿ if(reqQueue.get(pl).equals(sender.getName())){ Player tpSender=Bukkit.getPlayer(pl); if(Objects.isNull(tpSender)){ - sender.sendMessage("请求发送者已离线或不存在!"); + sender.sendMessage("߻򲻴!"); return true; } - //传送玩家 + // tpSender.teleport(player); - sender.sendMessage("传送中..."); - tpSender.sendMessage("传送中..."); - //从队列中删除 + sender.sendMessage("..."); + tpSender.sendMessage("..."); + //Ӷɾ reqQueue.remove(pl); return true; } } - sender.sendMessage("没有传送请求或请求已过期!"); + sender.sendMessage("ûдѹ!"); return true; case "tpreject": - //标记所有键 + //м for(String pl:reqQueue.keySet()){ - //确定队列中存在传送目标玩家 + //ȷдڴĿ if(reqQueue.get(pl).equals(sender.getName())){ Player s=Bukkit.getPlayer(pl); if(Objects.isNull(s)) { - sender.sendMessage("已拒绝传送请求!"); - //从队列中删除 + sender.sendMessage("Ѿܾ!"); + //Ӷɾ reqQueue.remove(pl); return true; } - sender.sendMessage("已拒绝传送请求!"); - s.sendMessage(sender.getName()+" 拒绝了您的传送请求!"); - //从队列中删除 + sender.sendMessage("Ѿܾ!"); + s.sendMessage(sender.getName()+" ܾĴ!"); + //Ӷɾ reqQueue.remove(pl); return true; } } - sender.sendMessage("没有传送请求或请求已过期!"); + sender.sendMessage("ûдѹ!"); return true; } return true; @@ -248,6 +270,6 @@ public final class Tools extends JavaPlugin { @Override public void onDisable() { // Plugin shutdown logic - getServer().broadcastMessage("插件已被重载,请重新登录或注册!"); + getServer().broadcastMessage(ChatColor.GOLD+"ѱأµ¼ע!"); } }