From 9f80419c6a547b6229b927e209eac926d466002e Mon Sep 17 00:00:00 2001 From: yaohunya <31456652@qq.com> Date: Tue, 23 Jul 2024 02:54:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/artifacts/DemonShiTu.xml | 8 + README.md | 3 + out/artifacts/DemonShiTu/DemonShiTu.jar | Bin 0 -> 49517 bytes pom.xml | 57 ++++ .../Demon/DemonShiTu/Event/DshituEvent.java | 33 +++ src/main/java/me/Demon/DemonShiTu/Main.java | 74 +++++ .../java/me/Demon/DemonShiTu/ShiTuAPI.java | 91 ++++++ .../me/Demon/DemonShiTu/ShituExpansion.java | 57 ++++ .../me/Demon/DemonShiTu/command/AdminCmd.java | 103 +++++++ .../me/Demon/DemonShiTu/command/MainCmd.java | 75 +++++ .../me/Demon/DemonShiTu/data/ShiFuData.java | 99 +++++++ .../DemonShiTu/guimanager/JoinEvent.java | 23 ++ .../DemonShiTu/guimanager/LookDataGui.java | 77 +++++ .../guimanager/OnlineTeacherGui.java | 131 +++++++++ .../DemonShiTu/guimanager/TeacherGui.java | 275 ++++++++++++++++++ .../DemonShiTu/guimanager/ThApplyGui.java | 140 +++++++++ .../Demon/DemonShiTu/guimanager/TudiGui.java | 116 ++++++++ .../DemonShiTu/listener/AttributeLoad.java | 48 +++ .../Demon/DemonShiTu/listener/ChongZhi.java | 90 ++++++ .../me/Demon/DemonShiTu/listener/itemUse.java | 86 ++++++ .../Demon/DemonShiTu/manager/DataManager.java | 162 +++++++++++ .../Demon/DemonShiTu/util/StackLibrary.java | 79 +++++ src/main/resources/config.yml | 0 src/main/resources/plugin.yml | 9 + target/classes/config.yml | 0 .../Demon/DemonShiTu/Event/DshituEvent.class | Bin 0 -> 1047 bytes target/classes/me/Demon/DemonShiTu/Main.class | Bin 0 -> 3722 bytes .../me/Demon/DemonShiTu/ShiTuAPI.class | Bin 0 -> 5145 bytes .../me/Demon/DemonShiTu/ShituExpansion.class | Bin 0 -> 2445 bytes .../Demon/DemonShiTu/command/AdminCmd.class | Bin 0 -> 5662 bytes .../me/Demon/DemonShiTu/command/MainCmd.class | Bin 0 -> 3975 bytes .../me/Demon/DemonShiTu/data/ShiFuData.class | Bin 0 -> 3687 bytes .../DemonShiTu/guimanager/JoinEvent.class | Bin 0 -> 1461 bytes .../DemonShiTu/guimanager/LookDataGui.class | Bin 0 -> 5793 bytes .../guimanager/OnlineTeacherGui.class | Bin 0 -> 8550 bytes .../DemonShiTu/guimanager/TeacherGui.class | Bin 0 -> 13041 bytes .../DemonShiTu/guimanager/ThApplyGui.class | Bin 0 -> 8200 bytes .../Demon/DemonShiTu/guimanager/TudiGui.class | Bin 0 -> 6480 bytes .../DemonShiTu/listener/AttributeLoad.class | Bin 0 -> 2475 bytes .../Demon/DemonShiTu/listener/ChongZhi.class | Bin 0 -> 3521 bytes .../Demon/DemonShiTu/listener/itemUse.class | Bin 0 -> 4310 bytes .../DemonShiTu/manager/DataManager.class | Bin 0 -> 7426 bytes .../Demon/DemonShiTu/util/StackLibrary.class | Bin 0 -> 4869 bytes target/classes/plugin.yml | 9 + 44 files changed, 1845 insertions(+) create mode 100644 .idea/artifacts/DemonShiTu.xml create mode 100644 README.md create mode 100644 out/artifacts/DemonShiTu/DemonShiTu.jar create mode 100644 pom.xml create mode 100644 src/main/java/me/Demon/DemonShiTu/Event/DshituEvent.java create mode 100644 src/main/java/me/Demon/DemonShiTu/Main.java create mode 100644 src/main/java/me/Demon/DemonShiTu/ShiTuAPI.java create mode 100644 src/main/java/me/Demon/DemonShiTu/ShituExpansion.java create mode 100644 src/main/java/me/Demon/DemonShiTu/command/AdminCmd.java create mode 100644 src/main/java/me/Demon/DemonShiTu/command/MainCmd.java create mode 100644 src/main/java/me/Demon/DemonShiTu/data/ShiFuData.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/JoinEvent.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/LookDataGui.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/OnlineTeacherGui.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/TeacherGui.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/ThApplyGui.java create mode 100644 src/main/java/me/Demon/DemonShiTu/guimanager/TudiGui.java create mode 100644 src/main/java/me/Demon/DemonShiTu/listener/AttributeLoad.java create mode 100644 src/main/java/me/Demon/DemonShiTu/listener/ChongZhi.java create mode 100644 src/main/java/me/Demon/DemonShiTu/listener/itemUse.java create mode 100644 src/main/java/me/Demon/DemonShiTu/manager/DataManager.java create mode 100644 src/main/java/me/Demon/DemonShiTu/util/StackLibrary.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml create mode 100644 target/classes/config.yml create mode 100644 target/classes/me/Demon/DemonShiTu/Event/DshituEvent.class create mode 100644 target/classes/me/Demon/DemonShiTu/Main.class create mode 100644 target/classes/me/Demon/DemonShiTu/ShiTuAPI.class create mode 100644 target/classes/me/Demon/DemonShiTu/ShituExpansion.class create mode 100644 target/classes/me/Demon/DemonShiTu/command/AdminCmd.class create mode 100644 target/classes/me/Demon/DemonShiTu/command/MainCmd.class create mode 100644 target/classes/me/Demon/DemonShiTu/data/ShiFuData.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/JoinEvent.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/LookDataGui.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/OnlineTeacherGui.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/TeacherGui.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/ThApplyGui.class create mode 100644 target/classes/me/Demon/DemonShiTu/guimanager/TudiGui.class create mode 100644 target/classes/me/Demon/DemonShiTu/listener/AttributeLoad.class create mode 100644 target/classes/me/Demon/DemonShiTu/listener/ChongZhi.class create mode 100644 target/classes/me/Demon/DemonShiTu/listener/itemUse.class create mode 100644 target/classes/me/Demon/DemonShiTu/manager/DataManager.class create mode 100644 target/classes/me/Demon/DemonShiTu/util/StackLibrary.class create mode 100644 target/classes/plugin.yml diff --git a/.idea/artifacts/DemonShiTu.xml b/.idea/artifacts/DemonShiTu.xml new file mode 100644 index 0000000..18b7ddf --- /dev/null +++ b/.idea/artifacts/DemonShiTu.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/out/artifacts/DemonShiTu + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5903576 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# DemonShiTu +- 玩家之间拜师的系统 +- 师傅可从中获得收益 \ No newline at end of file diff --git a/out/artifacts/DemonShiTu/DemonShiTu.jar b/out/artifacts/DemonShiTu/DemonShiTu.jar new file mode 100644 index 0000000000000000000000000000000000000000..5c7b0b329450da723c51dc1701a2c2ff8d309fc6 GIT binary patch literal 49517 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a51cf97 --- /dev/null +++ b/pom.xml @@ -0,0 +1,57 @@ + + + 4.0.0 + + org.example + DemonShiTu + 1.0-SNAPSHOT + + + 8 + 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 + + + com.yaohun.playermanage + PlayerManage + 1.0.1 + + + + me.clip.placeholderapi + PlaceholderAPI + 2.9.2 + + + me.Demon.ItemReference + ItemKuAPI + 1.0.0 + + + me.Demon.DemonLevels + DemonLevels + 1.0.0 + + + + \ No newline at end of file diff --git a/src/main/java/me/Demon/DemonShiTu/Event/DshituEvent.java b/src/main/java/me/Demon/DemonShiTu/Event/DshituEvent.java new file mode 100644 index 0000000..42c8bc1 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/Event/DshituEvent.java @@ -0,0 +1,33 @@ +package me.Demon.DemonShiTu.Event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class DshituEvent extends Event { + + private static HandlerList handlers = new HandlerList(); + private Player player; + private String ShiFuName; + + @Override + public HandlerList getHandlers() { + return handlers; + } + public static HandlerList getHandlerList() { + return handlers; + } + public DshituEvent(Player player, String ShiFuName) { + this.player = player; + this.ShiFuName = ShiFuName; + } + + public Player getPlayer() { + return player; + } + + public String getShiFuName() { + return ShiFuName; + } + +} diff --git a/src/main/java/me/Demon/DemonShiTu/Main.java b/src/main/java/me/Demon/DemonShiTu/Main.java new file mode 100644 index 0000000..9988b7f --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/Main.java @@ -0,0 +1,74 @@ +package me.Demon.DemonShiTu; + +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.command.AdminCmd; +import me.Demon.DemonShiTu.command.MainCmd; +import me.Demon.DemonShiTu.guimanager.*; +import me.Demon.DemonShiTu.listener.AttributeLoad; +import me.Demon.DemonShiTu.listener.ChongZhi; +import me.Demon.DemonShiTu.listener.itemUse; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.Bukkit; +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; + public static DataManager dataManager; + + @Override + public void onEnable() { + plugin = this; + DemonAPI.sendConsoleMessage("§f[§6!§f] §aDemonShiTu (2.2.0) §f开始加载"); + dataManager = new DataManager(); + getCommand("st").setExecutor(new MainCmd()); + getCommand("stadmin").setExecutor(new AdminCmd()); + getServer().getPluginManager().registerEvents(new LookDataGui(),this); + getServer().getPluginManager().registerEvents(new TeacherGui(),this); + getServer().getPluginManager().registerEvents(new OnlineTeacherGui(),this); + getServer().getPluginManager().registerEvents(new ThApplyGui(),this); + getServer().getPluginManager().registerEvents(new TudiGui(),this); + + getServer().getPluginManager().registerEvents(new JoinEvent(),this); + + getServer().getPluginManager().registerEvents(new ChongZhi(),this); + getServer().getPluginManager().registerEvents(new AttributeLoad(),this); + getServer().getPluginManager().registerEvents(new itemUse(),this); + if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { + new ShituExpansion(this).register(); + DemonAPI.sendConsoleMessage("§f[§a!§f] §fPlaceholderAPI §8> §6完成"); + } + DemonAPI.sendConsoleMessage("§f[§6!§f] §aDemonShiTu §f加载完成,祝你使用愉快!"); + DemonAPI.sendConsoleMessage("§f[§6!§f] §b极光像素工作室出品"); + } + + @Override + public void onDisable() { + dataManager.SaveDataManager(); + DemonAPI.sendConsoleMessage("§f[§6!§f] §aDemonShiTu §f卸载完成,欢迎下次使用!"); + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) { + if (Command.equalsIgnoreCase("stopen") && (sender instanceof Player)) { + //判断玩家是否是师傅 若是 则打开 师傅界面 + String name = sender.getName(); + Player player = (Player) sender; + if (ShiTuAPI.isTeacherExit(name)) { + TeacherGui.OpenGui(player); + } else { + if (dataManager.isPlayerExitTeacher(name)) { + TudiGui.OpenGui(player); + } else { + OnlineTeacherGui.OpenGui(player); + sender.sendMessage("======== §7[§6师徒系统§7] §f========"); + sender.sendMessage("§7/st <玩家名> §6: 让某名玩家成为你的师傅"); + } + } + } + return false; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/ShiTuAPI.java b/src/main/java/me/Demon/DemonShiTu/ShiTuAPI.java new file mode 100644 index 0000000..32f6f51 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/ShiTuAPI.java @@ -0,0 +1,91 @@ +package me.Demon.DemonShiTu; + +import me.Demon.Compat.VexCompatGui; +import me.Demon.DemonBanK.BankAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public abstract class ShiTuAPI { + + + public static void settlementIncome(){ + DataManager dataManager = Main.dataManager; + dataManager.setMonthlyTimeLog(System.currentTimeMillis()); + Bukkit.broadcastMessage("§e§l★ §a师徒激励计划-收益结算"); + for (String sfName : dataManager.getShiFuDataMap().keySet()){ + ShiFuData fuData = dataManager.getTeacherData(sfName); + //获取玩家的收益 + double shouyi = fuData.getEarnings(); + if(shouyi >= 10) { + //获取需要支付给玩家多少软妹币 + int coins = (int) (shouyi * 0.1); + fuData.setEarnings(0); + if(coins >= 100){ + Bukkit.broadcastMessage("§c§l★ §a玩家 §e"+sfName+" §a通过上月激励计划获得 §b"+coins+"软§f(额外奖励20软)"); + coins = coins + 20; + }else{ + Bukkit.broadcastMessage("§c§l★ §a玩家 §e"+sfName+" §a通过上月激励计划获得 §b"+coins+"软"); + } + BankAPI.addCoins(sfName,coins); + } + } + dataManager.SaveDataManager(); + } + + public static void revenueTopList(CommandSender sender){ + DataManager dataManager = Main.dataManager; + HashMap map = new HashMap<>(); + for (String sfName : dataManager.getShiFuDataMap().keySet()) { + ShiFuData fuData = dataManager.getTeacherData(sfName); + double shouyi = fuData.getEarnings(); + map.put(sfName, shouyi); + } + List> list = new ArrayList<>(map.entrySet()); + list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue())); + sender.sendMessage("§e§l★ §a师徒激励计划-收益排行榜"); + int rank = 1; + for (int i = 0; i < list.size(); i++) { + String sfName = list.get(i).getKey(); + double money = list.get(i).getValue()*0.1; + ShiFuData fuData = dataManager.getTeacherData(sfName); + sender.sendMessage("§a§l★ §7第 §e" + rank + " §7名: §e" + sfName + " §f收益: §6"+new DecimalFormat(",###.##").format(money)+"元 §f徒弟: §e"+fuData.getTudiList().size()+"名"); + ++rank; + } + } + + /* + * 判断这个玩家是否成为师傅 + * */ + public static boolean isTeacherExit(String sfName){ + DataManager dataManager = Main.dataManager; + if(dataManager.getTeacherData(sfName) != null){ + return true; + } + return false; + } + + + public static double getExpDouble(String shifu){ + int top = VexCompatGui.getTop_self(shifu); + if(top <= 1){ + return 50.0; + }else if(top <= 3){ + return 30.0; + }else if(top <= 6){ + return 20.0; + }else if(top <= 10){ + return 10.0; + }else if(top <= 30){ + return 5.0; + } + return 0.0; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/ShituExpansion.java b/src/main/java/me/Demon/DemonShiTu/ShituExpansion.java new file mode 100644 index 0000000..73e6f0a --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/ShituExpansion.java @@ -0,0 +1,57 @@ +package me.Demon.DemonShiTu; + +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.clip.placeholderapi.expansion.PlaceholderExpansion; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + +public class ShituExpansion extends PlaceholderExpansion { + private Plugin plugin; + + public ShituExpansion(Plugin plugin) { + this.plugin = plugin; + } + + @Override + public boolean persist() { + return true; + } + + @Override + public boolean canRegister() { + return true; + } + + @Override + public String getAuthor() { + return plugin.getDescription().getAuthors().toString(); + } + + @Override + public String getIdentifier() { + return "shitu"; + } + + @Override + public String getVersion() { + return plugin.getDescription().getVersion(); + } + + @Override + public String onPlaceholderRequest(Player player, String indentifier) { + DataManager dataManager = Main.dataManager; + if (indentifier.equalsIgnoreCase("shifu")) { + return ""+dataManager.getTeacherName(player.getName()); + }else if (indentifier.equalsIgnoreCase("amount")) { + return ""+dataManager.getApprenticeList(player.getName()).size(); + }else if (indentifier.equalsIgnoreCase("level")) { + if(dataManager.getTeacherData(player.getName()) == null){ + return "0"; + } + ShiFuData shiFuData = dataManager.getTeacherData(player.getName()); + return ""+shiFuData.getLevel(); + } + return ""; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/command/AdminCmd.java b/src/main/java/me/Demon/DemonShiTu/command/AdminCmd.java new file mode 100644 index 0000000..651b286 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/command/AdminCmd.java @@ -0,0 +1,103 @@ +package me.Demon.DemonShiTu.command; + +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.guimanager.LookDataGui; +import me.Demon.DemonShiTu.manager.DataManager; +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.HumanEntity; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class AdminCmd implements CommandExecutor , TabCompleter { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!sender.isOp()) { + return true; + } + if(args.length == 0){ + sender.sendMessage("§r"); + sender.sendMessage("§e------- ======= §6拜师系统 - 管理员 §e======= -------"); + sender.sendMessage("§2/stadmin top §f- §2查看师徒排行"); + sender.sendMessage("§2/stadmin jiesuan §f- §2结算师徒收益"); + sender.sendMessage("§2/stadmin lookall §f- §2查看所有师傅档案"); + sender.sendMessage("§2/stadmin delete §e[玩家名] §f- §2删除师傅档案"); + sender.sendMessage("§2/stadmin kick §e[玩家名] §f- §2将玩家踢出徒弟列表"); + sender.sendMessage("§2/stadmin save §f- §2保存师徒数据"); + sender.sendMessage("§e------- ======= §6拜师系统 - 管理员 §e======= -------"); + sender.sendMessage("§r"); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("save")){ + Main.dataManager.SaveDataManager(); + DemonAPI.sendMessage(sender,"玩家数据已保存."); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("jiesuan")){ + ShiTuAPI.settlementIncome(); + DemonAPI.sendMessage(sender,"已结算上月师徒收益."); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("top")){ + ShiTuAPI.revenueTopList(sender); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("lookall")){ + LookDataGui.OpenGui((Player) sender); + return true; + } + if(args.length == 2 && args[0].equalsIgnoreCase("delete")){ + String sfname = args[1]; + DataManager dataManager = Main.dataManager; + if(!ShiTuAPI.isTeacherExit(sfname)){ + DemonAPI.sendMessage(sender,"玩家 §e"+sfname+" §a并未出师."); + return true; + } + dataManager.removeShiFuData(sfname); + dataManager.SaveDataManager(); + DemonAPI.sendMessage(sender,"玩家 §e"+sfname+" §a的出师档案已清理."); + return true; + } + if(args.length == 2 && args[0].equalsIgnoreCase("kick")){ + String name = args[1]; + DataManager dataManager = Main.dataManager; + if(!dataManager.isPlayerExitTeacher(name)){ + DemonAPI.sendMessage(sender,"玩家 §e"+name+" §a并未拜师."); + return true; + } + String sfName = dataManager.getTeacherName(name); + ShiFuData fuData = dataManager.getTeacherData(sfName); + fuData.removeTudiList(name); // 从师傅的数据中移除该玩家(徒弟)的名字 + fuData.SaveData(); // 保存师傅的数据以反映更改 + DemonAPI.sendMessage(sender,"玩家 §e"+name+" §a已从 §b"+sfName+" §a的徒弟列表脱离."); + return true; + } + return false; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { + List completions = new ArrayList<>(); + if(args.length == 1){ + completions.add("top"); + completions.add("jiesuan"); + completions.add("lookall"); + completions.add("delete"); + completions.add("kick"); + completions.add("save"); + }else if(args.length == 2){ + String[] onlinePlayers = Bukkit.getOnlinePlayers().stream().map(HumanEntity::getName).toArray(String[]::new); + completions.addAll(Arrays.asList(onlinePlayers)); + } + return completions; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/command/MainCmd.java b/src/main/java/me/Demon/DemonShiTu/command/MainCmd.java new file mode 100644 index 0000000..766579f --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/command/MainCmd.java @@ -0,0 +1,75 @@ +package me.Demon.DemonShiTu.command; + +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Event.DshituEvent; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.guimanager.OnlineTeacherGui; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.List; + +public class MainCmd implements CommandExecutor { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!(sender instanceof Player)){return true;} + Player p = (Player) sender; + if(args.length == 0){ + sender.sendMessage("§r"); + sender.sendMessage("§e------- ======= §6斗魂学院等级系统 §e======= -------"); + sender.sendMessage("§2/st open §f- §2查看在线师傅名单"); + sender.sendMessage("§2/st §e[师傅名] §f- §2向其他玩家拜师"); + sender.sendMessage("§e------- ======= §6斗魂学院等级系统 §e======= -------"); + sender.sendMessage("§r"); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("open")){ + OnlineTeacherGui.OpenGui(p); + return true; + }else{ + String name = p.getName(); + String sfName = args[0]; + long joinTime = p.getFirstPlayed();// 获取玩家加入服务器的时间 + // 计算玩家已加入服务器超过多少天 (当前时间 - 加入时间) + int joinDay = (int) ((System.currentTimeMillis() - joinTime) / 1000 / (24*60*60)); + // 超过天数的阈值 + int maxJoinDays = 15; + if(joinDay >= maxJoinDays){ + DemonAPI.sendMessage(p,"非常抱歉,你已经加入服务器§e<"+maxJoinDays+"天>§a已经不能拜师了.", Sound.ENTITY_VILLAGER_NO); + return true; + } + // 判断玩家是否已经出师 + if(ShiTuAPI.isTeacherExit(name)){ + DemonAPI.sendMessage(p,"非常抱歉,你已 §e出师 §a无法成为其他人的徒弟.", Sound.ENTITY_VILLAGER_NO); + return true; + } + DataManager dataManager = Main.dataManager; + // 判断玩家是否已经拜师 + if(dataManager.isPlayerExitTeacher(name)){ + DemonAPI.sendMessage(p,"非常抱歉,每名玩家只能拜一位师傅.", Sound.ENTITY_VILLAGER_NO); + return true; + } + List applicationList = dataManager.getApplyForList(sfName);// 获取申请列表 + if(applicationList.contains(name)){ + DemonAPI.sendMessage(p,"你已经发送过拜师请求,请耐心等待对方同意。", Sound.ENTITY_VILLAGER_NO); + return true; + } + applicationList.add(name);// 将玩家加入申请列表 + dataManager.setApplyForList(sfName,applicationList); // 刷新申请列表 + DemonAPI.sendMessage(p,"成功发送拜师请求,请耐心等待对方同意。",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + Player sfPlayer = Bukkit.getPlayer(sfName); + if(sfPlayer != null){ + DemonAPI.sendMessage(sfPlayer,"您新收到有一条拜师请求等待处理.",Sound.ENTITY_VILLAGER_YES); + } + DshituEvent event = new DshituEvent(p,sfName); + Bukkit.getPluginManager().callEvent(event); + } + return false; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/data/ShiFuData.java b/src/main/java/me/Demon/DemonShiTu/data/ShiFuData.java new file mode 100644 index 0000000..bedfe52 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/data/ShiFuData.java @@ -0,0 +1,99 @@ +package me.Demon.DemonShiTu.data; + +import me.Demon.DemonShiTu.Main; +import org.bukkit.configuration.file.FileConfiguration; + +import java.util.List; + +public class ShiFuData { + + private String name; // 师傅名 + private int level; // 师傅等级 + private double earnings; // 徒弟收益 + private List tudiList; // 徒弟列表 + private long loginTime; + + public ShiFuData(String name, int level, double earnings, List apprenticeList, long loginTime){ + this.name = name; + this.level = level; + this.earnings = earnings; + this.tudiList = apprenticeList; + this.loginTime = loginTime; + } + + public void SaveData(){ + FileConfiguration yml = Main.plugin.getConfig(); + yml.set("ShiTuData."+name,null); + yml.set("ShiTuData."+name+".level",level); + yml.set("ShiTuData."+name+".shouyi",earnings); + yml.set("ShiTuData."+name+".loginTime",loginTime); + yml.set("ShiTuData."+name+".tudi",tudiList); + Main.plugin.saveConfig(); + } + + public int getLevel() { + return level; + } + + public String getName() { + return name; + } + + public double getEarnings() { + return earnings; + } + + public void setEarnings(double earnings) { + this.earnings = earnings; + } + + public void addEarnings(double earnings){ + this.earnings += earnings; + } + + public long getLoginTime() { + return loginTime; + } + + public boolean isLoginOvertime(){ + // 最后一次记录时间距离现在时间超过15天 返回true + // 获取当前时间的时间戳 + long currentTime = System.currentTimeMillis(); + // 7天的毫秒数 + long fifteenDaysInMillis = 15L * 24 * 60 * 60 * 1000; + // 检查上次登录时间是否超过15天 + return (currentTime - this.loginTime) > fifteenDaysInMillis; + } + + public void setLoginTime(long loginTime) { + this.loginTime = loginTime; + } + + public List getTudiList() { + return tudiList; + } + public boolean isTudiListExit(String tudiName){ + if(getTudiList().contains(tudiName)){ + return true; + } + return false; + } + public void addTudiList(String tudiName){ + if(!isTudiListExit(tudiName)) { + List stringList = getTudiList(); + stringList.add(tudiName); + setTudiList(stringList); + } + } + public void removeTudiList(String tudiName){ + if(isTudiListExit(tudiName)) { + List stringList = getTudiList(); + stringList.remove(tudiName); + setTudiList(stringList); + } + } + + public void setTudiList(List tudiList) { + this.tudiList = tudiList; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/JoinEvent.java b/src/main/java/me/Demon/DemonShiTu/guimanager/JoinEvent.java new file mode 100644 index 0000000..f9e7bf1 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/JoinEvent.java @@ -0,0 +1,23 @@ +package me.Demon.DemonShiTu.guimanager; + +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +public class JoinEvent implements Listener { + + @EventHandler + public void onJoin(PlayerJoinEvent e){ + Player p = e.getPlayer(); + String sfName = p.getName(); + // 判断玩家是否是师傅 + if(ShiTuAPI.isTeacherExit(sfName)){ + ShiFuData fuData = Main.dataManager.getTeacherData(sfName); + fuData.setLoginTime(System.currentTimeMillis()); + } + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/LookDataGui.java b/src/main/java/me/Demon/DemonShiTu/guimanager/LookDataGui.java new file mode 100644 index 0000000..469152d --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/LookDataGui.java @@ -0,0 +1,77 @@ +package me.Demon.DemonShiTu.guimanager; + +import me.Demon.Compat.VexCompatGui; +import me.Demon.DemonLevels.api.DLevelAPI; +import me.Demon.DemonOnlineTime.DtimeAPI; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class LookDataGui implements Listener { + + public static String invTitle = "师徒系统 - 查看所有师傅数据"; + + @EventHandler + public void onClick(InventoryClickEvent e){ + Player p = (Player) e.getWhoClicked(); + Inventory inv = e.getInventory(); + int rawSlot = e.getRawSlot(); + ItemStack item = e.getCurrentItem(); + if(inv != null && inv.getTitle().equalsIgnoreCase(invTitle)){ + e.setCancelled(true); + } + } + + public static void OpenGui(Player player){ + Inventory inv = Bukkit.createInventory(null,54,invTitle); + for (int i = 0; i < 9; i++) { + inv.setItem(i, DemonAPI.glass(15,"§a§l↓↓§6已出师的玩家列表§a§l↓↓")); + } + DataManager dataManager = Main.dataManager; + for (String sfName : dataManager.getShiFuDataMap().keySet()){ + ShiFuData shiFuData = dataManager.getTeacherData(sfName); + inv.addItem(ShiFuSkull(shiFuData)); + } + for (int i = 45; i < 54; i++) { + inv.setItem(i, DemonAPI.glass(15,"§a§l↑↑§6已出师的玩家列表§a§l↑↑")); + } + player.openInventory(inv); + } + + public static ItemStack ShiFuSkull(ShiFuData fuData){ + String sfName = fuData.getName(); + ItemStack item = new ItemStack(Material.BOOK); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§b§l★§7名称: §6§l"+fuData.getName()); + List lore = new ArrayList<>(); + int levels = (int) DLevelAPI.getOffPlayer_Level(sfName); + lore.add("§a§l★§7级别: §dLv."+ levels); + int time = DtimeAPI.getTime(sfName); + lore.add("§a§l★§7今日活跃: §a"+ time+"分钟"); + lore.add("§a§l★§7本月收益: §6" + String.format("%.1f",fuData.getEarnings()) + "师徒币"); + lore.add("§a§l★§7收徒数量: §e" + fuData.getTudiList().size() + "名"); + int top = VexCompatGui.getTop_self(sfName); + lore.add("§a§l★§7战力排行: §b" + top + "名"); + lore.add("§a§l★§7经验加成: §d"+ShiTuAPI.getExpDouble(sfName)+"%"); + lore.add("§a§l★§7最后一次上线: §c"+DemonAPI.LongToStringData(fuData.getLoginTime(),"yyyy年MM月dd日 HH:mm")); + lore.add(" "); + lore.add("§9§l★ §6SHIFT+左键 §7点击结算他的收益"); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/OnlineTeacherGui.java b/src/main/java/me/Demon/DemonShiTu/guimanager/OnlineTeacherGui.java new file mode 100644 index 0000000..3bb9f63 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/OnlineTeacherGui.java @@ -0,0 +1,131 @@ +package me.Demon.DemonShiTu.guimanager; + +import me.Demon.Compat.VexCompatGui; +import me.Demon.DemonLevels.api.DLevelAPI; +import me.Demon.DemonOnlineTime.DtimeAPI; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Event.DshituEvent; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.Demon.DemonShiTu.util.StackLibrary; +import net.minecraft.server.v1_12_R1.NBTTagCompound; +import org.bukkit.Bukkit; +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.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class OnlineTeacherGui implements Listener { + + public static String invTitle = "师徒系统 - 活跃的大师(在线的则会显示)"; + + @EventHandler + public void onClick(InventoryClickEvent e){ + Player p = (Player) e.getWhoClicked(); + String name = p.getName(); + Inventory inv = e.getInventory(); + int rawSlot = e.getRawSlot(); + ItemStack item = e.getCurrentItem(); + if(inv != null && inv.getTitle().equalsIgnoreCase(invTitle)){ + e.setCancelled(true); + if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)) { + if (rawSlot >= 9 && rawSlot < inv.getSize() - 9) { + if (e.getClick() != ClickType.SHIFT_LEFT) { + DemonAPI.sendMessage(p, "请按下 §eSHIFT+左键 §a进行拜师.", Sound.ENTITY_VILLAGER_NO); + return; + } + p.closeInventory(); + long joinTime = p.getFirstPlayed();// 获取玩家加入服务器的时间 + // 计算玩家已加入服务器超过多少天 (当前时间 - 加入时间) + int joinDay = (int) ((System.currentTimeMillis() - joinTime) / 1000 / (24 * 60 * 60)); + // 超过天数的阈值 + int maxJoinDays = 15; + if (joinDay >= maxJoinDays) { + DemonAPI.sendMessage(p, "非常抱歉,你已经加入服务器§e<" + maxJoinDays + "天>§a已经不能拜师了.", Sound.ENTITY_VILLAGER_NO); + return; + } + // 判断玩家是否已经出师 + if (ShiTuAPI.isTeacherExit(name)) { + DemonAPI.sendMessage(p, "非常抱歉,你已 §e出师 §a无法成为其他人的徒弟.", Sound.ENTITY_VILLAGER_NO); + return; + } + DataManager dataManager = Main.dataManager; + // 判断玩家是否已经拜师 + if (dataManager.isPlayerExitTeacher(name)) { + DemonAPI.sendMessage(p, "非常抱歉,每名玩家只能拜一位师傅.", Sound.ENTITY_VILLAGER_NO); + return; + } + NBTTagCompound nbt = StackLibrary.getNBT(item); + if (nbt.hasKey("sfName")) { + String sfName = nbt.getString("sfName"); + List applicationList = dataManager.getApplyForList(sfName);// 获取申请列表 + if (applicationList.contains(name)) { + DemonAPI.sendMessage(p, "你已经发送过拜师请求,请耐心等待对方同意。", Sound.ENTITY_VILLAGER_NO); + return; + } + applicationList.add(name);// 将玩家加入申请列表 + dataManager.setApplyForList(sfName, applicationList); // 刷新申请列表 + DemonAPI.sendMessage(p, "成功发送拜师请求,请耐心等待对方同意。", Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + Player sfPlayer = Bukkit.getPlayer(sfName); + if (sfPlayer != null) { + DemonAPI.sendMessage(sfPlayer, "您新收到有一条拜师请求等待处理.", Sound.ENTITY_VILLAGER_YES); + } + DshituEvent event = new DshituEvent(p, sfName); + Bukkit.getPluginManager().callEvent(event); + } + } + } + } + } + + public static void OpenGui(Player player){ + Inventory inv = Bukkit.createInventory(null,54,invTitle); + DataManager dataManager = Main.dataManager; + for (String sfName : dataManager.getShiFuDataMap().keySet()){ + Player sfPlayer = Bukkit.getPlayer(sfName); + if(sfPlayer != null) { + ShiFuData shiFuData = dataManager.getTeacherData(sfName); + inv.addItem(ShiFuSkull(shiFuData)); + } + } + for (int i = 0; i < 9; i++) {inv.setItem(i, DemonAPI.glass(15,"§a§l↓↓§6已出师的玩家列表§a§l↓↓"));} + for (int i = 45; i < 54; i++) {inv.setItem(i, DemonAPI.glass(15,"§a§l↑↑§c当日在线60分钟才会显示§a§l↑↑"));} + inv.setItem(4,StackLibrary.tudiInfoShow()); + player.openInventory(inv); + } + + public static ItemStack ShiFuSkull(ShiFuData fuData){ + String sfName = fuData.getName(); + ItemStack item = new ItemStack(Material.BOOK); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§b§l★§7名称: §6§l"+sfName); + List lore = new ArrayList<>(); + int levels = (int) DLevelAPI.getOffPlayer_Level(sfName); + lore.add("§a§l★§7级别: §dLv."+ levels); + int time = DtimeAPI.getTime(sfName); + lore.add("§a§l★§7今日活跃: §a"+ time+"分钟"); + lore.add("§a§l★§7收徒数量: §e" + fuData.getTudiList().size() + "名"); + int top = VexCompatGui.getTop_self(sfName); + lore.add("§a§l★§7战力排行: §b" + top + "名"); + lore.add("§a§l★§7经验加成: §d"+ShiTuAPI.getExpDouble(sfName)+"%"); + lore.add("§a§l★§7最后一次上线: §c"+DemonAPI.LongToStringData(fuData.getLoginTime(),"yyyy年MM月dd日 HH:mm")); + lore.add(" "); + lore.add("§9§l★ §6SHIFT+左键 §7点击拜他为师"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbt = StackLibrary.getNBT(item); + nbt.setString("sfName",sfName); + return StackLibrary.setNBT(item,nbt); + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/TeacherGui.java b/src/main/java/me/Demon/DemonShiTu/guimanager/TeacherGui.java new file mode 100644 index 0000000..baec928 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/TeacherGui.java @@ -0,0 +1,275 @@ +package me.Demon.DemonShiTu.guimanager; + +import com.yaohun.aurechargedata.api.RechargeAPI; +import com.yaohun.aurechargedata.util.TimeType; +import me.Demon.DemonLevels.api.DLevelAPI; +import me.Demon.DemonMonethyCard.api.CardAPI; +import me.Demon.DemonOnlineTime.DtimeAPI; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.Demon.DemonShiTu.util.StackLibrary; +import net.minecraft.server.v1_12_R1.NBTTagCompound; +import org.bukkit.Bukkit; +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.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.time.DayOfWeek; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +public class TeacherGui implements Listener { + + public static String invTitle = "师徒系统 - 管理系统"; + + @EventHandler + public void onClick(InventoryClickEvent e){ + Player player = (Player) e.getWhoClicked(); + String sfName = player.getName(); + Inventory inv = e.getInventory(); + int rawSlot = e.getRawSlot(); + ItemStack item = e.getCurrentItem(); + if(inv != null && inv.getTitle().equalsIgnoreCase(invTitle)){ + e.setCancelled(true); + DataManager dataManager = Main.dataManager; + if(e.getRawSlot() == 5){ + // 获取徒弟列表 + ShiFuData fuData = dataManager.getTeacherData(sfName); + List tudiList = fuData.getTudiList(); + if(tudiList.size() < 1) { + DemonAPI.sendMessage(player,"你还没有收徒喔,无法获得任何收益。",Sound.ENTITY_VILLAGER_NO); + return; + } + int time = DtimeAPI.getTime(sfName); + if(time < 60) { + DemonAPI.sendMessage(player,"需要在线达到<§e§l60分钟§a>才能领取收益。",Sound.ENTITY_VILLAGER_NO); + return; + } + int sfLevel = fuData.getLevel(); // 获取师傅的等级 + double defaultBonus = 5; // 默认奖金 + // 根据师傅的等级设置奖金 + if (sfLevel == 2) { + defaultBonus = 10; + } else if (sfLevel == 3) { + defaultBonus = 15; + } else if (sfLevel == 4) { + defaultBonus = 20; + } else if (sfLevel >= 5) { + defaultBonus = 30; + } + int needTime = 180; // 活跃所需在线时间(分钟) + double addMoney = 0; // 粉丝收益(元) + // 遍历徒弟名单 + for (String name : tudiList) { + if (!dataManager.isActiveReward(name)) { // 检查徒弟是否已领取活跃奖励 + int onlineTime = DtimeAPI.getTime(name); // 获取徒弟的在线时间 + + // 如果徒弟在线时间达到要求 + if (onlineTime >= needTime) { + List activeRewardList = dataManager.getActiveReward(); // 获取活跃奖励名单 + activeRewardList.add(name); // 将徒弟添加到活跃奖励名单中 + dataManager.setActiveReward(activeRewardList); // 更新活跃奖励名单 + addMoney += defaultBonus; // 累计奖金 + } + } + } + // 如果累计奖金不足 1 元 + if (addMoney < 1) { + DemonAPI.sendMessage(player, "暂时还没有任何徒弟活跃收益可领取...等等再来吧...", Sound.ENTITY_VILLAGER_NO); + return; + } + // 获取当前日期的星期 + DayOfWeek currentDayOfWeek = LocalDate.now().getDayOfWeek(); + // 如果今天是周一至周五,奖金提高30% + if (currentDayOfWeek != DayOfWeek.SATURDAY && currentDayOfWeek != DayOfWeek.SUNDAY) { + addMoney *= 1.3; + } + //判断玩家是否是月卡用户 并且还有时间 + String yueka_text = ""; + if(CardAPI.isCardHaoHua(sfName)){ + addMoney *= 1.2; + yueka_text = "§7(§e豪华月卡§7) "; + }else if(CardAPI.isCardJingDian(sfName)){ + addMoney *= 1.1; + yueka_text = "§7(§b经典月卡§7) "; + } + // 获取这个师傅上面是否还有师傅 + if(!dataManager.isPlayerExitTeacher(sfName)){ + fuData.addEarnings(addMoney); + fuData.SaveData(); + DemonAPI.sendMessage(player,"成功领取徒弟活跃收益: §6"+addMoney+"师徒币"+yueka_text,Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + System.out.println("[师徒] 活跃激励 玩家 <" + sfName + ">获得" + addMoney + "师徒币奖励"); + }else{ + double newMoney = (addMoney / 2); + fuData.addEarnings(newMoney); + fuData.SaveData(); + DemonAPI.sendMessage(player,"成功领取徒弟活跃收益: §6"+newMoney+"师徒币"+yueka_text,Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + String sfNameB = dataManager.getTeacherName(sfName); + ShiFuData fuDataB = dataManager.getTeacherData(sfNameB); + fuDataB.addEarnings(newMoney); + fuDataB.SaveData(); + Player shifuBPlayer = Bukkit.getPlayer(fuDataB.getName()); + if(shifuBPlayer != null){ + DemonAPI.sendMessage(shifuBPlayer,"获得徒弟的活在线跃激励收益: §6"+newMoney+"师徒币",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + } + System.out.println("[师徒] 活跃激励 玩家<" + sfName + ">和<"+sfNameB+">各获得" + newMoney + "师徒币奖励"); + } + TeacherGui.OpenGui(player); + } + if(rawSlot == 7){ + ThApplyGui.OpenGui(player); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1.6F,1.8F); + } + if(rawSlot >= 18 && rawSlot < inv.getSize()){ + if(DemonAPI.itemIsNull(item)){return;} + NBTTagCompound nbt = StackLibrary.getNBT(item); + if(nbt.hasKey("tdName")){ + String name = nbt.getString("tdName"); + // 根据师傅的名字从数据管理器中获取师傅的数据 + ShiFuData fuData = dataManager.getTeacherData(sfName); + // 从师傅的数据中移除该玩家(徒弟)的名字 + fuData.removeTudiList(name); + // 保存师傅的数据以反映更改 + fuData.SaveData(); + Player tDPlayer = Bukkit.getPlayer(name); + if (tDPlayer != null) { + DemonAPI.sendMessage(tDPlayer,"您的师傅 §e" + name + " §a已与你解除师徒关系。",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + } + DemonAPI.sendMessage(player,"成功与 §e" + name + " §a解除师徒关系。",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + TeacherGui.OpenGui(player); + } + } + } + } + + public static void OpenGui(Player player){ + Inventory inv = Bukkit.createInventory(null,54,invTitle); + for (int i = 0; i < 9; i++) { + int data = (int) (Math.random() * 6); + inv.setItem(i, DemonAPI.glass(data,"§r ")); + } + for (int i = 9; i < 18; i++) { + inv.setItem(i, DemonAPI.glass(15,"§a§l↓↓§6徒弟列表§a§l↓↓")); + } + DataManager dataManager = Main.dataManager; + ShiFuData shiFuData = dataManager.getTeacherData(player.getName()); + inv.setItem(1,StackLibrary.teacherInfoShow()); + inv.setItem(3,personalInformation(shiFuData)); + inv.setItem(5,earningsRefresh()); + inv.setItem(7,requestProcessing()); + List tuDiList = shiFuData.getTudiList(); + for (String name : tuDiList){ + inv.addItem(apprenticeInformation(name)); + } + long monthlyTimeLog = dataManager.getMonthlyTimeLog(); + // 检查当前时间是否已经是次月并且超过中午12点 + if (isNextMonth(monthlyTimeLog) && isAfterNoon()) { + ShiTuAPI.settlementIncome(); + System.out.println("[调试 - 师徒] 已自动结算每月师徒收益"); + dataManager.setMonthlyTimeLog(System.currentTimeMillis()); + } + long everydayTimeLog = dataManager.getEverydayTimeLog(); + if(!isSameDay(everydayTimeLog,System.currentTimeMillis())){ + System.out.println("[调试 - 师徒] 已清理每日活跃激励奖名单"); + dataManager.setActiveReward(new ArrayList<>()); + dataManager.setEverydayTimeLog(System.currentTimeMillis()); + } + player.openInventory(inv); + } + + private static boolean isSameDay(long timestamp1, long timestamp2) { + LocalDate date1 = Instant.ofEpochMilli(timestamp1).atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate date2 = Instant.ofEpochMilli(timestamp2).atZone(ZoneId.systemDefault()).toLocalDate(); + return date1.equals(date2); + } + + private static boolean isNextMonth(long lastTimeLog) { + Calendar lastCalendar = Calendar.getInstance(); + lastCalendar.setTimeInMillis(lastTimeLog); + int lastMonth = lastCalendar.get(Calendar.MONTH); + int currentMonth = Calendar.getInstance().get(Calendar.MONTH); + return currentMonth != lastMonth; + } + + private static boolean isAfterNoon() { + Calendar calendar = Calendar.getInstance(); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + return hour >= 12; + } + + public static ItemStack personalInformation(ShiFuData fuData){ + ItemStack item = new ItemStack(449, 1); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§e§l个人收益查看"); + List lore = new ArrayList<>(); + lore.add("§a§l★§7名称: §6§l"+ fuData.getName()); + lore.add("§a§l★§7级别: §6§lLv."+ fuData.getLevel()); + lore.add("§a§l★§7徒弟: §6§l"+ fuData.getTudiList().size() +"名"); + lore.add("§a§l★§7收益: §6§l"+ String.format("%.1f",fuData.getEarnings()) +"师徒币"); + lore.add("§a§l★§7最后一次上线: §c"+DemonAPI.LongToStringData(fuData.getLoginTime(),"yyyy年MM月dd日 HH:mm")); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } + + public static ItemStack apprenticeInformation(String name){ + ItemStack item = new ItemStack(Material.BOOK); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§a§l★§7名称: §6§l"+name); + List lore = new ArrayList<>(); + int levels = (int) DLevelAPI.getOffPlayer_Level(name); + lore.add("§a§l★§7级别: §dLv."+ levels); + int time = DtimeAPI.getTime(name); + lore.add("§a§l★§7今日活跃: §a"+ time+"分钟"); + if(ShiTuAPI.isTeacherExit(name)) { + ShiFuData fuDataB = Main.dataManager.getTeacherData(name); + lore.add("§a§l★§7收徒数量: §e" + fuDataB.getTudiList().size() + "名"); + }else{ + lore.add("§a§l★§7收徒数量: §e尚未出师"); + } + int rechargeMonth = RechargeAPI.getRechargeData(name, TimeType.MONTHLY); + lore.add("§a§l★§7本月充值: §b" + rechargeMonth + "软妹币"); + lore.add(" "); + lore.add("§e§l★§7点击解除师徒关系"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbti = StackLibrary.getNBT(item); + nbti.setString("tdName",name); + return StackLibrary.setNBT(item, nbti); + } + + public static ItemStack earningsRefresh(){ + ItemStack item = new ItemStack(347, 1); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§7[§6活跃§7] §a徒弟活跃收益"); + List Lore = new ArrayList<>(); + Lore.add("§7§l★§7点击刷新收益"); + meta.setLore(Lore); + item.setItemMeta(meta); + return item; + } + + public static ItemStack requestProcessing(){ + ItemStack item = new ItemStack(421); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§8« §e处理拜师请求 §8»"); + List lore = new ArrayList<>(); + lore.add("§a§l★ §7点击进行处理 §a§l★"); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/ThApplyGui.java b/src/main/java/me/Demon/DemonShiTu/guimanager/ThApplyGui.java new file mode 100644 index 0000000..545acbd --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/ThApplyGui.java @@ -0,0 +1,140 @@ +package me.Demon.DemonShiTu.guimanager; + +import com.yaohun.aurechargedata.api.RechargeAPI; +import com.yaohun.aurechargedata.util.TimeType; +import me.Demon.DemonLevels.api.DLevelAPI; +import me.Demon.DemonOnlineTime.DtimeAPI; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.Demon.DemonShiTu.util.StackLibrary; +import net.minecraft.server.v1_12_R1.NBTTagCompound; +import org.bukkit.Bukkit; +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.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class ThApplyGui implements Listener { + + public static String invTitle = "师徒系统 - 处理拜师申请"; + + @EventHandler + public void onClick(InventoryClickEvent e){ + Player p = (Player) e.getWhoClicked(); + String sfName = p.getName(); + Inventory inv = e.getInventory(); + int rawSlot = e.getRawSlot(); + ItemStack item = e.getCurrentItem(); + if(inv != null && inv.getTitle().equalsIgnoreCase(invTitle)){ + e.setCancelled(true); + if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){ + if (e.getRawSlot() == 31) { + TeacherGui.OpenGui(p); + p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1.6F,1.8F); + } + if(rawSlot >= 0 && rawSlot < 27) { + DataManager dataManager = Main.dataManager; + if(!ShiTuAPI.isTeacherExit(sfName)){ + DemonAPI.sendMessage(p,"你需要出师后才能进行操作.",Sound.ENTITY_VILLAGER_NO); + return; + } + ShiFuData fuData = dataManager.getTeacherData(sfName); + NBTTagCompound nbt = StackLibrary.getNBT(item); + if (nbt.hasKey("ApplyName")) { + String name = nbt.getString("ApplyName"); + // 获取申请名单 并清理这个玩家 刷新申请列表 + List applyList = dataManager.getApplyForList(sfName); + applyList.remove(name); + dataManager.setApplyForList(sfName,applyList); + if(e.getClick() == ClickType.LEFT){ + int tudiLimitAmount = 18; + if(fuData.getTudiList().size() >= tudiLimitAmount){ + DemonAPI.sendMessage(p,"您当前最多可收<§e§l"+tudiLimitAmount+"名§a>徒弟.",Sound.ENTITY_VILLAGER_NO); + return; + } + // 检测玩家是否已拜师 + if(dataManager.isPlayerExitTeacher(name)){ + DemonAPI.sendMessage(p,"下手慢了 §e"+name+" §a已经拜其他人为师了.",Sound.ENTITY_VILLAGER_NO); + return; + } + fuData.addTudiList(name); // 将玩家列入徒弟列表 + Player player = Bukkit.getPlayer(name); + if (player != null) { + DemonAPI.sendMessage(player,"§6"+sfName+" §a已同意你的拜师请求."); + player.sendTitle("§a拜师成功!","§b您的师傅: §f"+sfName); + } + DemonAPI.sendMessage(p,"玩家 §e"+name+" §a已成为你的徒弟."); + }else if(e.getClick() == ClickType.RIGHT){ + Player player = Bukkit.getPlayer(name); + if (player != null) { + DemonAPI.sendMessage(player,"§6"+sfName+" §a拒绝了你的拜师请求."); + } + DemonAPI.sendMessage(p,"已婉拒 §e"+name+" §a成为你的徒弟."); + } + ThApplyGui.OpenGui(p); + } + } + } + } + } + + public static void OpenGui(Player player){ + String sfName = player.getName(); + // 检测玩家是否已成为师傅 + if(!ShiTuAPI.isTeacherExit(sfName)){ + DemonAPI.sendMessage(player,"你需要 §e出师 §a后才能查看."); + return; + } + DataManager dataManager = Main.dataManager; + Inventory inv = Bukkit.createInventory(null,54,invTitle); + // 获取申请拜师名单 + List applyList = dataManager.getApplyForList(sfName); + for (String name : applyList){ + inv.addItem(showItems(name)); + } + for (int i = 27; i < 36; i++) { + inv.setItem(i, DemonAPI.glass(15, "§7[[§a▧§c▧§a▧§7]]")); + } + inv.setItem(31, StackLibrary.Back_book()); + player.openInventory(inv); + } + + public static ItemStack showItems(String playName){ + ItemStack item = new ItemStack(Material.BOOK); + ItemMeta meta = item.getItemMeta(); + List lore = new ArrayList<>(); + meta.setDisplayName("§a§l★§7名称: §e"+playName); + Player player = Bukkit.getPlayer(playName); + if(player != null) { + lore.add("§a§l★§7状态: §a§l在线"); + }else{ + lore.add("§a§l★§7状态: §c§l离线"); + } + int levels = (int) DLevelAPI.getOffPlayer_Level(playName); + lore.add("§a§l★§7级别: §dLv."+ levels); + int time = DtimeAPI.getTime(playName); + lore.add("§a§l★§7今日活跃: §a"+ time+"分钟"); + int rechargeMonth = RechargeAPI.getRechargeData(playName, TimeType.MONTHLY); + lore.add("§a§l★§7本月充值: §b" + rechargeMonth + "软妹币"); + lore.add(""); + lore.add("§e§l★§7左键点击通过申请"); + lore.add("§c§l★§7右键点击拒绝申请"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbt = StackLibrary.getNBT(item); + nbt.setString("ApplyName",playName); + return StackLibrary.setNBT(item,nbt); + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/guimanager/TudiGui.java b/src/main/java/me/Demon/DemonShiTu/guimanager/TudiGui.java new file mode 100644 index 0000000..1ee1b0e --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/guimanager/TudiGui.java @@ -0,0 +1,116 @@ +package me.Demon.DemonShiTu.guimanager; + +import me.Demon.Compat.VexCompatGui; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.Demon.DemonShiTu.util.StackLibrary; +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; + +public class TudiGui implements Listener { + + public static String invTitle = "师徒系统 - 我的师傅"; + + @EventHandler + public void onClick(InventoryClickEvent e){ + Player p = (Player) e.getWhoClicked(); + Inventory inv = e.getInventory(); + int rawSlot = e.getRawSlot(); + ItemStack item = e.getCurrentItem(); + if(inv != null && inv.getTitle().equalsIgnoreCase(invTitle)){ + e.setCancelled(true); + if(rawSlot == 6){ + p.closeInventory(); + p.playSound(p.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1.6F,1.8F); + DataManager dataManager = Main.dataManager; + if(!dataManager.isPlayerExitTeacher(p.getName())){ + DemonAPI.sendMessage(p,"你需要拜师后才能解除师徒关系.",Sound.ENTITY_VILLAGER_NO); + return; + } + int level = p.getLevel(); + int price = 50000; + if(level >= 90){ + price = 1000000; + }else if(level >= 80){ + price = 500000; + }else if(level >= 60){ + price = 200000; + }else if(level >= 40){ + price = 100000; + } + String money_format = new DecimalFormat(",###").format(price); + if(!DemonAPI.hasMoney(p,price)){ + DemonAPI.sendMessage(p,"你需要支付§6"+money_format+"金币§a才能解除师徒关系.",Sound.ENTITY_VILLAGER_NO); + return; + } + // 从玩家 p 的账户中扣除金额 price + DemonAPI.takeMoney(p, price); + // 获取玩家 p 的名字 + String name = p.getName(); + // 根据玩家的名字从数据管理器中获取其师傅的名字 + String sfName = dataManager.getTeacherName(name); + // 根据师傅的名字从数据管理器中获取师傅的数据 + ShiFuData fuData = dataManager.getTeacherData(sfName); + // 从师傅的数据中移除该玩家(徒弟)的名字 + fuData.removeTudiList(name); + // 保存师傅的数据以反映更改 + fuData.SaveData(); + Player sfPlayer = Bukkit.getPlayer(sfName); + if(sfPlayer != null){ + DemonAPI.sendMessage(sfPlayer,"您的徒弟 §e"+name+" §a已与你解除师徒关系.",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + } + DemonAPI.sendMessage(p,"成功与 §e"+sfName+" §a解除师徒关系.",Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + } + } + } + + public static void OpenGui(Player player){ + Inventory inv = Bukkit.createInventory(null,54,invTitle); + inv.setItem(2, StackLibrary.tudiInfoShow()); + DataManager dataManager = Main.dataManager; + if(!dataManager.isPlayerExitTeacher(player.getName())){ + DemonAPI.sendMessage(player,"你需要拜师后才能查看.",Sound.ENTITY_VILLAGER_NO); + player.closeInventory(); + return; + } + String sfName = dataManager.getTeacherName(player.getName()); + ShiFuData fuData = dataManager.getTeacherData(sfName); + inv.setItem(6, HeadlSkull(player.getName(),fuData)); + player.openInventory(inv); + } + + public static ItemStack HeadlSkull(String playName,ShiFuData fuData){ + String sfName = fuData.getName(); + ItemStack item = new ItemStack(449, 1); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§e§l拜师详情查看"); + List lore = new ArrayList<>(); + lore.add("§a§l★§7我的名称: §6"+ playName); + lore.add("§a§l★§7师傅名称: §6"+ sfName); + lore.add("§a§l★§7师门成员: §e"+ fuData.getTudiList().size()+"名"); + int top = VexCompatGui.getTop_self(sfName); + lore.add("§a§l★§7战力排行: §b" + top + "名"); + lore.add("§a§l★§7经验加成: §d"+ShiTuAPI.getExpDouble(sfName)+"%"); + lore.add("§a§l★§7最后一次上线: §c"+DemonAPI.LongToStringData(fuData.getLoginTime(),"yyyy年MM月dd日 HH:mm")); + lore.add("§7#等级大于85级后无法获得经验加成Buff"); + lore.add(" "); + lore.add("§c§l★§7点击与师傅解除关系"); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/listener/AttributeLoad.java b/src/main/java/me/Demon/DemonShiTu/listener/AttributeLoad.java new file mode 100644 index 0000000..4b233b9 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/listener/AttributeLoad.java @@ -0,0 +1,48 @@ +package me.Demon.DemonShiTu.listener; + +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerChangedWorldEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.serverct.ersha.jd.AttributeAPI; + +import java.util.ArrayList; +import java.util.List; + +public class AttributeLoad implements Listener { + + @EventHandler + public void loadApStats(PlayerChangedWorldEvent e) { + Player p = e.getPlayer(); + String name = p.getName(); + // 判断玩家是否有师傅 + DataManager dataManager = Main.dataManager; + if (dataManager.isPlayerExitTeacher(name)) { + if(p.getLevel() <= 85) { + String sfName = dataManager.getTeacherName(name); + if(ShiTuAPI.getExpDouble(sfName) >= 1) { + List apStats = new ArrayList<>(); + apStats.add("经验加成: " + ShiTuAPI.getExpDouble(sfName) + "%"); + AttributeAPI.addAttribute(p, "师徒_ApStats", apStats); + } + } + } + } + + @EventHandler + public void onquit(PlayerQuitEvent e) { + Player p = e.getPlayer(); + String name = p.getName(); + // 判断玩家是否有师傅 + DataManager dataManager = Main.dataManager; + if (dataManager.isPlayerExitTeacher(name)) { + if(p.getLevel() <= 85) { + AttributeAPI.deleteAttribute(p, "师徒_ApStats"); + } + } + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/listener/ChongZhi.java b/src/main/java/me/Demon/DemonShiTu/listener/ChongZhi.java new file mode 100644 index 0000000..3b96af5 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/listener/ChongZhi.java @@ -0,0 +1,90 @@ +package me.Demon.DemonShiTu.listener; + +import com.yaohun.aurechargedata.event.RechargeEvent; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class ChongZhi implements Listener { + @EventHandler + public void onRecharge(RechargeEvent e){ + DataManager dataManager = Main.dataManager; + String name = e.getPlayerName();// 充值软妹币的玩家名 + // 判断这个玩家是否拜师 + if(dataManager.isPlayerExitTeacher(name)){ + // 获取这个玩家的师傅名 + String sfNameA = dataManager.getTeacherName(name); + // 判断他的师傅是否进行拜师 + if(!dataManager.isPlayerExitTeacher(sfNameA)){ + // 获取他师傅的等级 + ShiFuData shiFuData = dataManager.getTeacherData(sfNameA); + // 若师傅超过15天未上线则不享受此分成 + if(shiFuData.isLoginOvertime()){ + System.out.println("[调试 - 师徒] 师傅 " + sfNameA + " 因长时间未上线,取消本次分成奖励."); + return; + } + int level = shiFuData.getLevel(); + //获取分成比例 + double percentage = getPercentage(level); + double incentivePayments = (e.getMoney() * percentage) * 10; + shiFuData.addEarnings(incentivePayments); // 增加师徒币 + shiFuData.SaveData(); // 保存数据 + System.out.println("[调试 - 师徒] 充值玩家: "+name+" 他的师傅<" + sfNameA + ">获得" + incentivePayments + "师徒币奖励"); + Player sfPlayerA = Bukkit.getPlayer(sfNameA); + if(sfPlayerA != null){ + DemonAPI.sendMessage(sfPlayerA,"获得徒弟的充值激励收益: §6"+incentivePayments+"师徒币"); + } + } else { + // 获取他师傅的等级 + ShiFuData shiFuData = dataManager.getTeacherData(sfNameA); + // 若师傅超过7天未上线则不享受此分成 + if(shiFuData.isLoginOvertime()){ + System.out.println("[调试 - 师徒] 师傅 " + sfNameA + " 因长时间未上线,取消本次分成奖励."); + return; + } + int level = shiFuData.getLevel(); + //获取分成比例 + double percentage = getPercentage(level); + double incentivePayments = ((e.getMoney() * percentage) * 10 )* 0.5; + shiFuData.addEarnings(incentivePayments); // 增加师徒币 + shiFuData.SaveData(); // 保存数据 + System.out.println("[调试 - 师徒] 充值玩家: "+name+" 他的师傅<" + sfNameA + ">获得" + incentivePayments + "师徒币奖励"); + Player sfPlayerA = Bukkit.getPlayer(sfNameA); + if(sfPlayerA != null){ + DemonAPI.sendMessage(sfPlayerA,"获得徒弟的充值激励收益: §6"+incentivePayments+"师徒币"); + } + // 获取他师傅的师傅 + String sfNameB = dataManager.getTeacherName(sfNameA); + ShiFuData shiFuDataB = dataManager.getTeacherData(sfNameB); + // 若师傅超过7天未上线则不享受此分成 + if(shiFuDataB.isLoginOvertime()){ + System.out.println("[调试 - 师徒] 师傅 " + sfNameA + " 因长时间未上线,取消本次分成奖励."); + return; + } + shiFuDataB.addEarnings(incentivePayments);// 增加师徒币 + System.out.println("[调试 - 师徒] 分成玩家: "+sfNameA+" 他的师傅<" + sfNameB + ">获得" + incentivePayments + "师徒币奖励"); + Player sfPlayerB = Bukkit.getPlayer(sfNameB); + if(sfPlayerB != null){ + DemonAPI.sendMessage(sfPlayerB,"获得徒弟的充值激励收益: §6"+incentivePayments+"师徒币"); + } + } + } + } + + public static double getPercentage(int level){ + double percentage = 0.05; + if(level == 2){ + percentage = 0.1; + }else if(level == 3){ + percentage = 0.15; + }else if(level >= 4){ + percentage = 0.2; + } + return percentage; + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/listener/itemUse.java b/src/main/java/me/Demon/DemonShiTu/listener/itemUse.java new file mode 100644 index 0000000..8c15cb3 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/listener/itemUse.java @@ -0,0 +1,86 @@ +package me.Demon.DemonShiTu.listener; + +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.ShiTuAPI; +import me.Demon.DemonShiTu.data.ShiFuData; +import me.Demon.DemonShiTu.manager.DataManager; +import me.Demon.ItemKuAPI; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; + + +public class itemUse implements Listener { + + @EventHandler + public void onUseJoin(PlayerInteractEvent e){ + Player p = e.getPlayer(); + String name = p.getName(); + ItemStack item = p.getInventory().getItemInMainHand(); + if(e.getHand() == EquipmentSlot.HAND) { + Action action = e.getAction(); + if (action == Action.LEFT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { + ItemStack needStack = ItemKuAPI.getItems("出师令", 1); + if(DemonAPI.isMainHandItemsLore(p,needStack,1)){ + // 判断这个玩家是否已有师傅档案 + if(ShiTuAPI.isTeacherExit(name)){ + DemonAPI.sendMessage(p,"你已经出师了,无法使用此道具."); + return; + } + if (item.getAmount() == 1) { + p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); + } else { + item.setAmount(item.getAmount() - 1); + } + // 创建出师档案 + DataManager dataManager = Main.dataManager; + dataManager.createTeacherData(name); + DemonAPI.sendMessage(p,"成功注册出师档案,已完成 §e§l出师!"); + Bukkit.broadcastMessage("§6[§c公告§6] §a玩家 §e"+p.getName()+" §a使用了 §r"+needStack.getItemMeta().getDisplayName()+" §a成功出师,开始收徒。"); + } + } + } + } + + @EventHandler + public void onUseDissolve(PlayerInteractEvent e){ + Player p = e.getPlayer(); + String name = p.getName(); + ItemStack item = p.getInventory().getItemInMainHand(); + if(e.getHand() == EquipmentSlot.HAND) { + Action action = e.getAction(); + if (action == Action.LEFT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) { + ItemStack needStack = ItemKuAPI.getItems("解除令", 1); + if (DemonAPI.isMainHandItemsLore(p, needStack, 1)) { + DataManager dataManager = Main.dataManager; + // 判断这个玩家是否已有师傅档案 + if (dataManager.isPlayerExitTeacher(name)) { + DemonAPI.sendMessage(p, "你还没有拜过师,无法使用此道具."); + return; + } + if (item.getAmount() == 1) { + p.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); + } else { + item.setAmount(item.getAmount() - 1); + } + String sfName = dataManager.getTeacherName(name);// 获取这个玩家的师傅名 + ShiFuData fuData = dataManager.getTeacherData(sfName);// 获取这个玩家的师傅档案 + if (fuData == null) { + DemonAPI.sendMessage(p, "师傅的档案数据出现异常.§7#" + sfName); + return; + } + fuData.removeTudiList(name); // 将玩家从徒弟列表踢出. + fuData.SaveData(); // 保存数据 + DemonAPI.sendMessage(p,"已经和 §e"+sfName+" §a解除师徒关系."); + } + } + } + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/manager/DataManager.java b/src/main/java/me/Demon/DemonShiTu/manager/DataManager.java new file mode 100644 index 0000000..14f271a --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/manager/DataManager.java @@ -0,0 +1,162 @@ +package me.Demon.DemonShiTu.manager; + +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonShiTu.Main; +import me.Demon.DemonShiTu.data.ShiFuData; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DataManager { + + private long monthlyTimeLog; + private long everydayTimeLog; + private HashMap shiFuDataMap = new HashMap<>(); + private HashMap> apprenticeList = new HashMap<>(); + private HashMap> applyForList = new HashMap<>(); + private List activeReward = new ArrayList<>(); + + public DataManager(){ + FileConfiguration yml = Main.plugin.getConfig(); + monthlyTimeLog = yml.getLong("monthlyTimeLog"); + everydayTimeLog = yml.getLong("everydayTimeLog"); + ConfigurationSection section = yml.getConfigurationSection("ShiTuData"); + if(section == null) {return;} + for (String shifuName : section.getKeys(false)){ + int level = section.getInt(shifuName+".level"); + double shouyi = section.getDouble(shifuName+".shouyi"); + long loginTime = section.getLong(shifuName+".loginTime"); + if(loginTime < 0){ + loginTime = System.currentTimeMillis(); + } + List stringList = section.getStringList(shifuName+".tudi"); + shiFuDataMap.put(shifuName,new ShiFuData(shifuName,level,shouyi,stringList,loginTime)); + apprenticeList.put(shifuName,stringList); + } + DemonAPI.sendConsoleMessage("§f[§a!§f] §f每月结算 §8> §6"+DemonAPI.LongToStringData(monthlyTimeLog,"yyyy年MM月")); + DemonAPI.sendConsoleMessage("§f[§a!§f] §f每日刷新 §8> §6"+DemonAPI.LongToStringData(everydayTimeLog,"MM月dd日")); + DemonAPI.sendConsoleMessage("§f[§a!§f] §f师傅档案 §8> §6"+shiFuDataMap.size()+"名"); + DemonAPI.sendConsoleMessage("§f[§a!§f] §f活跃奖励 §8> §6"+activeReward.size()+"名"); + } + + public void SaveDataManager(){ + FileConfiguration yml = Main.plugin.getConfig(); + yml.set("monthlyTimeLog",monthlyTimeLog); + yml.set("everydayTimeLog",everydayTimeLog); + yml.set("activeReward",null); + yml.set("activeReward",activeReward); + for (String sfName : shiFuDataMap.keySet()){ + ShiFuData fuData = shiFuDataMap.get(sfName); + if(fuData.isLoginOvertime()){ + // yml.set("ShiTuData."+sfName,null); + System.out.println("[调试 - 师徒] 由于玩家 "+sfName+" 长时间未上线,他的师徒档案已清理."); + } + fuData.SaveData(); + } + System.out.println("[调试 - 师徒] 活跃收益 "+activeReward.size()+" 名"); + System.out.println("[调试 - 师徒] 已保存 "+shiFuDataMap.size()+" 师傅的数据档案"); + } + + public long getMonthlyTimeLog() { + return monthlyTimeLog; + } + + public void setMonthlyTimeLog(long monthlyTimeLog) { + this.monthlyTimeLog = monthlyTimeLog; + } + + public long getEverydayTimeLog() { + return everydayTimeLog; + } + + public void setEverydayTimeLog(long everydayTimeLog) { + this.everydayTimeLog = everydayTimeLog; + } + + public HashMap getShiFuDataMap() { + return shiFuDataMap; + } + + public void removeShiFuData(String sfName) { + this.shiFuDataMap.remove(sfName); + FileConfiguration yml = Main.plugin.getConfig(); + yml.set("ShiTuData."+sfName,null); + Main.plugin.saveConfig(); + } + + public List getApplyForList(String sfName) { + List stringList = new ArrayList<>(); + if(this.applyForList.get(sfName) == null){ + return stringList; + } + stringList.addAll(applyForList.get(sfName)); + return stringList; + } + + public void setApplyForList(String sfName,List applyForList) { + this.applyForList.put(sfName,applyForList); + } + + // 获取学徒列表 + public List getApprenticeList(String name){ + if(this.apprenticeList.get(name) != null){ + return apprenticeList.get(name); + } + return new ArrayList<>(); + } + + public boolean isActiveReward(String name){ + if(activeReward.contains(name)){ + return true; + } + return false; + } + + public List getActiveReward() { + return activeReward; + } + + public void setActiveReward(List activeReward) { + this.activeReward = activeReward; + } + + public ShiFuData getTeacherData(String sfName){ + if(this.shiFuDataMap.get(sfName) != null){ + return shiFuDataMap.get(sfName); + } + return null; + } + + public boolean isPlayerExitTeacher(String name){ + for (String teacherName : this.apprenticeList.keySet()){ + List stringList = this.apprenticeList.get(teacherName); + if(stringList.contains(name)){ + return true; + } + } + return false; + } + + public String getTeacherName(String name){ + for (String teacherName : this.apprenticeList.keySet()){ + List stringList = this.apprenticeList.get(teacherName); + if(stringList.contains(name)){ + return teacherName; + } + } + return "无"; + } + + public void createTeacherData(String sfName){ + int level = 1; + double shouyi = 0.0; + long loginTime = System.currentTimeMillis(); + List stringList = new ArrayList<>(); + shiFuDataMap.put(sfName,new ShiFuData(sfName,level,shouyi,stringList,loginTime)); + apprenticeList.put(sfName,stringList); + shiFuDataMap.get(sfName).SaveData(); + } +} diff --git a/src/main/java/me/Demon/DemonShiTu/util/StackLibrary.java b/src/main/java/me/Demon/DemonShiTu/util/StackLibrary.java new file mode 100644 index 0000000..6767f79 --- /dev/null +++ b/src/main/java/me/Demon/DemonShiTu/util/StackLibrary.java @@ -0,0 +1,79 @@ +package me.Demon.DemonShiTu.util; + +import net.minecraft.server.v1_12_R1.NBTTagCompound; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class StackLibrary{ + + public static NBTTagCompound getNBT(ItemStack Equipment) { + net.minecraft.server.v1_12_R1.ItemStack nmsEquipment = CraftItemStack.asNMSCopy(Equipment); + return nmsEquipment.hasTag() && nmsEquipment.getTag() != null ? nmsEquipment.getTag() : new NBTTagCompound(); + } + + public static ItemStack setNBT(ItemStack item, NBTTagCompound nbtEquipment) { + net.minecraft.server.v1_12_R1.ItemStack nmsEquipment = CraftItemStack.asNMSCopy(item); + nmsEquipment.setTag(nbtEquipment); + return CraftItemStack.asBukkitCopy(nmsEquipment); + } + + public static ItemStack tudiInfoShow(){ + ItemStack item = new ItemStack(Material.PAPER); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§6§l师徒激励计划§6玩法介绍"); + List lore = new ArrayList<>(); + lore.add("§a§l★§7师傅 = §a玩家A"); + lore.add("§a§l★§7徒弟 = §b玩家B"); + lore.add("§d§l★§7师徒系统经验加成参考: "); + lore.add("§7- [§a玩家A§7]战力排行§e第一名§7,[§b玩家B§7]可获: §d经验加成50% §r"); + lore.add("§7- [§a玩家A§7]战力排行§e前三名§7,[§b玩家B§7]可获: §d经验加成30%"); + lore.add("§7- [§a玩家A§7]战力排行§e前六名§7,[§b玩家B§7]可获: §d经验加成20%"); + lore.add("§7- [§a玩家A§7]战力排行§e前十名§7,[§b玩家B§7]可获: §d经验加成10%"); + lore.add("§7- [§a玩家A§7]战力排行§e前30名§7,[§b玩家B§7]可获: §d经验加成5%"); + lore.add("§c温馨提示:§b徒弟的等级大于90级后将不享有经验加成。"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbti = getNBT(item); + nbti.setString("stex","cailiao_124"); + return setNBT(item, nbti); + } + + public static ItemStack teacherInfoShow(){ + ItemStack item = new ItemStack(Material.PAPER); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§6§l师徒激励计划§6玩法介绍"); + List lore = new ArrayList<>(); + lore.add("§a§l★§7师傅 = §a玩家A"); + lore.add("§a§l★§7徒弟 = §b玩家B"); + lore.add("§a§l★§7徒弟的徒弟 = §c玩家C"); + lore.add("§d§l★§7玩法大致介绍: "); + lore.add("§7- [§b玩家B§7]拜[§a玩家A§7]为师傅,然后[§b玩家B§7]每日§3在线游玩3小时§7以上"); + lore.add("§7- [§a玩家A§7]就能获得§620的师徒币§7作为奖励,若[§b玩家B§7]有任意充值"); + lore.add("§7- [§a玩家A§7]还能获得§e20%的等价师徒币§7作为奖励,依次类推[§c玩家C§7]"); + lore.add("§7- 拜玩家[§b玩家B§7]为师当[§b玩家B§7]获得收益的时候,[§a玩家A§7]可获取"); + lore.add("§7- [§b玩家B§7]收益的§e50%§7作为§6激励计划§7平分收益,若§4解除师徒§7关系"); + lore.add("§7- [§b玩家B§7]将不再与[§a玩家A§7§7]平分§6激励计划§7的收益。"); + lore.add("§7- 每周一至周五师徒币会额外增加§e[30%]§7的收益。"); + lore.add("§d§l✪§7此系统正在测试阶段,若有意见可向客服反馈."); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbti = getNBT(item); + nbti.setString("stex","cailiao_124"); + return setNBT(item, nbti); + } + public static ItemStack Back_book(){ + ItemStack item = new ItemStack(340); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(" §8« §e返回主页 §8»"); + List lore = new ArrayList<>(); + lore.add("§a§l★ §7返回师徒主页 §a§l★"); + meta.setLore(lore); + item.setItemMeta(meta); + return item; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..6664733 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,9 @@ +name: DemonShiTu +main: me.Demon.DemonShiTu.Main +depend: + - DemonAPI +version: 2.2.0 +commands: + st: + stopen: + stadmin: \ No newline at end of file diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/target/classes/me/Demon/DemonShiTu/Event/DshituEvent.class b/target/classes/me/Demon/DemonShiTu/Event/DshituEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..0fa623199845f698c40cf07196243acc2ffdace3 GIT binary patch literal 1047 zcma)4O;6iE5PcgviS4)v4FTGerU6O`X~kZ8E9#{b^fz^2-5spWYU+ZM{$tl~u# zI}FCe_0K#J&KNpQ5RUmUK0lWc7Z<{h_=hy<$XWD;q4L>tFGa}EE>!xFj4t`dBu7=| zU?LCWBX=qon$9Qp!sVXpkNF@9r9Y;E+E_$cV`A<0b_?AW@ape^Giugwq%V%*=}?5n z?$Arx2P4-zaYL!j*`*#$B=y~Krh*@cY2c?TsXC7N`=tHBY$BsL*^{37ogQVBeC|tM zMsFE-uOO{p^uDv*6EaV|(n&C^&p9i=8Eh)ejjBb}3x;LvkGxEc)>91DAc(_}IFxDt zOF1Wd3T?xLWn&E;8#UNA9-vN2{`F%Sw*PBV46FCrBqPKIJuHKsoCZtL)2^h*lSup& zE1=(pC0ZZSX^$eKsDA~!N~)S!4XA3F_I8>_3oCRov3iSLPcnB{dSkcPCgs-fh*rgN zN-8vpjs6Wv{g>C!`me5`f1#^V0%}61eT&wWgrZJhMcz$e8M%_A%qYPPHBLe^JVraC z;S^P_-2V=3-c38_rkpiocmm}@Y0QK5d2nX|*uYbCGVm5DQD5yR%BMG|d;?SF@)I%X K^o;IG=>7#xj?l~i literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/Main.class b/target/classes/me/Demon/DemonShiTu/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..4d82e316898c479a56775ad6ae9adf69e8755dba GIT binary patch literal 3722 zcmai1>su6682=q^vkar+stJY(lDdGhg=Gk+;Yx)qNDjci#6s@9n(r+28)X@)Ll& z@PmkT*qx6CJm$gUBA&pL0%Q@nHrU}oNTkh90g4C_yG3*%>_N8xRm5z*ZopFo=s`q4 zRD>713!p(4&?{mAb_;k~#6mvCL=^MU5OFIXO%aRv7#FdGk9{J_`1p*7axQicA|CAJ z!k!iIoCqJD=bslmc+rEGJb0PwxX*)EJa|>aejE_+S^-|iK@o@W20y%?Q@qKKquE0A zdvKT&9P!{S0Y?SA&5+j{iHB8-y*A8JwrjKY|1UNCWn<6 zLxn48)ZX@Qxc*rL>< z6wOr4z5dn+-{T%KEOi)`rc$}9Ol}NC$-I(jNJ*qH<%b+O7A6nQbJ1SFJCraCVw)b1 zg_QeL9)^4#@M><0gpCMDSdR@1HP;5Zc3m4-Q%2)srPl^zD^IKpDfQJ<*Hqt8L1MhTzbxPTK9PT~|pr5jH;t|s*i>Us}P?EB-YfYTDr;4IyP z8JOA?In=Ghh=;*H1MOBVLRTV{V@B!SjlI2*y_WRlGe~cbcd8blZwA86x~etxQHnAw zb0dwYhN);u%pd61weZevvdqgGgMvUiTk;P0er!*%1&H4nYdl)LMdr$*VAWB zV(`t0gGU+eohH$Ff?KI=6R(^+cVc|(^!V7-$@jjP*ncQ-^}?S&?qjIBNkqrQ$$g0f zhZ3*8HTnJN#N~72W5*MNpCw+ul6ZHYg!2f@eCpw0x=_xk6Bo~3zj|bRxPRi}8T)MO z)I7t~dlilDw1h8lfuSg+{H0YK0T(5Fg+T#dOZWyCBz%kSBwXT5E7v(c^2t5?!Y76g zCVqNn^3v$!=qZBu-S0}$Ncf&#@3n;c4YRai^2qtb;85b|Vaua+rPl|~PnxPf~g7xkBB2PMh4Pq&#RC3YDkha>Qs3YkEux$j1Mr4>7w1 z-boAl1wu`W0=C;9T5CbIB&a{gxPp2a?R}Q)Kf!wzTpRvb@>D$QecMj?2iq1fkOF8AARj zL|PXNL8|o5vevU{J%_J{P&k6Q45RQ8G_P_5^RtnHE+F)l40Iu(MHy%@p^GxmTL~@6 zKo=8wTL!v>(9#UFjL@YSXgQ&`+vqTsd6$o1MHYU={89LJkQ*z8Q2D60ioD@n$v>;; z!#$gAdG=wDp_oFl2=nNHUyc&2rvDSoxQ+h7EI}Nl=%)~#p`FWEhTpLqe_#dv zf{*2)f_YKN7GfnU!75gU>KjpFOPwe+(;2y7e-jzQ=48Mq6YOY9-$58cwb$>cW(R#X zsR-0i@K>XN{#@M%zBCp52N5J0Jahi0R1s+0zRG*Y5bivN)~a7na}3Q@BUsH)ms|BS zYU=WebBA%)F%%T%4ddMM#*2?OQq-y|MNUv>_o?Pz-NVg)gw}sGL;;6+|w320{uVV|J xJ%oqJ8a``7JK4i$j}Qm&3ood=C5N%K_PZUcnRD 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 UVg^d^F#BcoeT2G?Vi2GHFB?;VL;wH) literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/ShituExpansion.class b/target/classes/me/Demon/DemonShiTu/ShituExpansion.class new file mode 100644 index 0000000000000000000000000000000000000000..fa30ed4cb049a97d178b887ab5c5a7f52b1c2a23 GIT binary patch literal 2445 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 literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/guimanager/JoinEvent.class b/target/classes/me/Demon/DemonShiTu/guimanager/JoinEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..e118553bd175bdf55cf20608810691f7138cce84 GIT binary patch literal 1461 zcma)6*-{fh6g{1VfyuCg5{x1mBw-sDR0Ld*MTiMfCY1-@I-v;-$qY4_q2yDn@+b5G z(FZ@kf70^yOoXIJS=3bZ?Vdh;&fU6y{rT||z&x@#bR>05;9d-qNa;vpstePY(J_lT z9VYJUcz}l*9%-1@@R*@vSz6M4!4OWRiwu!fdsi^@W~C*zy;?~)1zxJspMk7h=G7v1 zq*^zAM%;Z_XPC;?gt;bawiS%|eOd6#iYIH_;uYbT8CzQG$HH=#NYJ*_l3^y5wVjGt z@(vHBYYMe(9##1X;dgvgDrJqKzw9{Za2pkzu&g&c#+r2BR+A ztX+|oI!_NvDw8f^99{H8QF`dT3X!EArm=@sCRs){I`s|gi@)7VV~77UhCZ4b0Ra6N zpcTU)hKNKR{){l9WGALi5z5VcN0?!I_6(6v82XCn>?t}HBk{-?v{Q5{@-P(nDA9vv zQKC19bdbITktT7?7o4Y^1UfNH>xiOnNUPa(jF1aa+(w*uLUcZk8-xzyCLv>Bzme2% SOT!pJf;h&>Qu1gF;qG7AyM7J; literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/guimanager/LookDataGui.class b/target/classes/me/Demon/DemonShiTu/guimanager/LookDataGui.class new file mode 100644 index 0000000000000000000000000000000000000000..6188757b82cb857e2ad011356667a88efec40750 GIT binary patch literal 5793 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 literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/guimanager/TeacherGui.class b/target/classes/me/Demon/DemonShiTu/guimanager/TeacherGui.class new file mode 100644 index 0000000000000000000000000000000000000000..c1d395c0887b14f32f515714f3e592ae7cd2b4f9 GIT binary patch literal 13041 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 O88H>r>q^Wip8EgqdTdDm literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/guimanager/ThApplyGui.class b/target/classes/me/Demon/DemonShiTu/guimanager/ThApplyGui.class new file mode 100644 index 0000000000000000000000000000000000000000..4730a42716df59bf3698abfc0f841e72e1980542 GIT binary patch literal 8200 zcmb7J349dib$?GT^rePVvKNfATSP1X$~i8j@Idsv~{&BNZQy<(l&9a>HnMA6RjG|@5juy z-@N<%-}?@I@AFIV6VU_wvYDFbZ8LqHz9G>&>6A?8#gBKzxGtFf z%1qy(@0#g*^nIB=G}900hvM-gG5y!+^ke#o82wae`dJ$N4gIZ|KBAwC4}T}o-I@D!+tH(zsdCP zLilfF`b4HrW%>^@e7r2vZw1@$gtp(O(|^)`iN}9S^aqLlC@4M?@%SH^ZV8e9D}H<~ zJh=_AOli!VWTvH@EFLC_Q_NHeYdJNYC6;AQgIqStoNi`?Gh`lS=1k6#`5u`qX*`@q zm^qtA$~;Qu(K1_Q9wYNu!8=X}9FH*Z1gPVQGEb6tvc&gFd>@mnxmv3=pVPr)v2Rve zRhv_FHQHADJesR<0aNNi&87JkF(v0tU&CZ7ao2-1)2_K375?U0ho@StHJIIXs&kF% z(Zui2q{-K$d71L;%?{gAN3+{yJXbeq)qY!}Uu#xfYNNwrt8OZ8X>qo#@N3X0xm_hr zt!@j`oLsxx(`c*pZ`q>xY>rlk%V&eRc)2}owzBX@r(Pze7YGwGeg1mQt~G1E;%2ws zx|oKF!x=Tcv-4Zj(!GhI?tMFvqTW!JK78#qZOcHZcRL^m^5& zmK(M+O;6}u*tMlmQW4DtznEakNysGR+7O-PIu+=XU9~V_rrqW6*_sjZI*;1mvw0n! zRz$6JR?V#0HC3~06-%nC)y5Kca|`^f2OGnO`{Vq)i`ap!1r~Z6D)bm6BhpNhVx=UA zJ(Nivb?a)U8+MvBpQCwb9(-KwQ|q>XXQVw2Ep07f#N^x&?S+Fexd{9jx}b8kMF*M= z=NvR4QENN})u*{#z~;nQ2MvhnP%2ej z^-hOJ_*dEDZ~>Z3Dq~_A6CYWi)yRXX z*}wQ zX`5HO{hm6t2ZOs`>%X*T5?E1D zc&UNz&Vjz8!GrCA-Cg~CFZ5r!)ZZh504ne|3Gi)JcndqxHm-FPM!5pV4h44|Md$`j z?-J}i`)-`?4qn&^u9b{>wLrKrAKZ5=aNz7Gmv=CYxYkh%XTT!jymNOEOlVNp#cn3^ zz>&8C?{pcqjS1NXUf5%3iFnn*H6c5K2agZ*y$o9u*a3XPxxicdL1YLWC4?rB$TTei z0YPcNK(`m8W829lD9oIVQ^rtbNw+UGJGC!^GSNIu)pXIp?QafTx~lMgUN}0}3DHLs$*tL|*C$?0Z{?thcw$l=!g1NBAiE zUMx|6-+|zZZv@}#yV3oet{vSbuy4=J<7Xv4rtnw!xWp$EKFQDD!5D1+da!+8VE698 z_RE5?7S(v;%K5;#-arokM_3e%ItfLf``pcw?+onh4eaf^x&8Ewt9u7dUIcJ;GT};y z?C8Y^nSn8bOyL*!MTKADQwpDEx58(*ooTWF^ZUmKF7^%dot;!LDe(HPfn$3N@Q1}u zzw6CP9GEI=H#_RE2wG#nWUMD**Whr8_AqnMw-~q$-p&k(%rGg+A(62O_8v_4CZder za4_Y6k&OnrSQN;{X2}wrK>2u7Y}BAR#_OoRaVr-(K%>LAw#lvUzU+vV89c@!IReyo)-?ze5R^rOb#J`Ps4Wp1@R-3<72eTc(~G_1Fie&BJsub# zngTo;Qc$>OK#&Zs(9Sx`@uXjMddnJJSe;8$FIswbqK&}@nCyiv)m7(kIz<>vxf{gJ zVtjn^RyqBRT4*y}yb2bYH7G9gR`{Lh{`bXgQ)0Y~7&je?LM+&ez?wgad52opKPx8f*kHKe&B!J8%952eC6(o?imQsNE30Zs>}4e@#nIzV zVhBhRo1hS9ewEUTz4 zt6pETrp#_HUa_pIrlJxD0I$PUU+(aFae84Yi?glH-3*M@+prxM@718hHgYgJ2b(So z7f=i7Hx3H(6XE3U4i8fjd8)5E`m$!%YCWo_4ec8`afD!673WAo;C#`ONNSVnUFm?5 zG$=6+l}u9;`jnu4Gr^>9*p|CJMuW*2nl<)>mg>Q2v-Qq0Gg|Zlf&NUCS-j*a2_zd? ziwYJQ5@j7apXSD6-{|(yu<2CQINJcrIWhPik`Co=U$z{Hm>LU?A;}?D)MB-M+!aSv z3+#zDU=c8on7rCk2t+E5w16U0K>|MqH_yu}9$9Hd3%gg^`v z)%yCVi3!^tqIyqEe3t0veFHLvK&+ezt&U-eJBz^Vd2v|2+oBW+P7}o)YTVNjs2yC& zf-9w}Y(*(jms#g=s6IzzMPb?)XGs(u5t353I6N#UOCUHF2MIXgr;N@YT4zVbr9Zs> zf<{6SRyei+Az04dDV_bD%wKXlNti%eI9cyOzE0{*dX^(smMvLMVUW%i;Xo^Fa5w}r- z#9;`|Qq3E^AxK8T2JP?cXd6ziO>NO^OZBn7x>=yIvZ2AKsv3QMh^@#{Y{BB!k4hKr z3mnzBPp~Z&w+gyIu>})TLrB5aWEyJE)~33f{4Sg758p%R8&AEl3U1LPk@fP*it1AP zdU2(8mrMx9^r1o-cUdlsfYQ)L!#oB3v3l) zl8k;51EMI@;&Uu&6kRB?UZ!HKFVHPRunQC!S8HEveI5dFQE@aG_ts4~nrZl-CT?+X z^`C+oZcv9MmO;V43fx=XR1Cqo?0+g3<7$RJov@rB_F83oE(I(VVL?| zUKb^OK*{C#y<}plz|WK-6P~GsDR@dnsaDf<{*l$xOEOa@rFD_{6kp9Vby2!CwTG0` z+$r7}r}=AwD{JB_G$y}?hUG(Grr^l3++(ry((n|@PC3K7vs1FhzQ)gV(ug9dpog+g zQ%1gJWG9X4q0twtQb8A4i)0~jOi`LO%`&!&#+~9yV>G_VtW!)VO1Gw4&Al`+iPmDq zn%+f|pnY;D-FuFHm}Mzcta2CK*GoAl59L+L$?u~n>$_>HWm*^IW-DDZ-7*8CF3O8& zwwk*r|5OYqOvx3Kxt5vnq_UW`S0;yoM%rXpS|*@<90W z+|Xwz?xn(Hir6&|9}H#lBa9ui+HmT@b5v%iQ>@B$nq*bN@*?VrB3u!X3nC&HMnCq@ zLjo!$9V(rakMVsZQx0X~uQAy)mB!LEU@w;nX*w;S8MKn}s2X(Zr~nwW(N?-2SA(PIz7#;;!=|&dY(7YGxRL{Zs#?$ zopzwYPzs?k5u=^(4@*4%nsz~Q5|G?ayCE-`viX;^hxQ_ZWBKQ_4;G}*Wc~^5rvoUx zgQ21`v>t-i! zuq*;%FQ7WhIja!m-b0Hk@`1t$MJCY$9%d>^v8MDQkq|jWjFvEcKqW<~1*R*sbbYcY z-DRtLX*o)>%n%F~+=o2#vdTAxN zqWD}wSupW&82SX7l}aP178tE3D>;DLMxe8a%FrPnLw~G6fH$K%imX2i7Y_j8$AK2n z21_BKjE3vqQmKx{0j(l$a9_s@;rk&yzqmyLS_DdxprJ+2bTag4I)+S<{2DWdfC7=< zJW9Dm*~rjs8c(U={33D3C3;b!mx(^3yj%EV<7X(ZG;ygJ%EISJ9H2+H`w+TLvUgLt z9l@?B@1shzt5p?|Vty1Q9O_uTRFyvq1;U=ZP@+D)8?`w_}rWAx5 z#ai%Zr=aiYokviEVqIZsgkZfONEMB7gV8NQayn^a4?R{WMF=+uLP-!l9!pqYsWCVT zEKh_7sxin%Vr!EqFTacG)&gi_(BNguSh!Q4XO(-%@h(DObfgV55@Rpw#)sVdX*BXQ z3ptvHDqM*Cm7;sd>i0EN>^0Qv_ffAuLneQL%=M#6e}xMD6t(#W z;6WhaF(cgc3Q$7O@_W5*ab-fE(5sM=1dRjq=g^W2o!`;XVS=^}dR<3M8|1!$Q7ULR zq2ILvIiI2%i5? literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/guimanager/TudiGui.class b/target/classes/me/Demon/DemonShiTu/guimanager/TudiGui.class new file mode 100644 index 0000000000000000000000000000000000000000..2021285b5c7bd93f5b4c55466306b001e0bfb416 GIT binary patch literal 6480 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 E0ayoyi~s-t literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/listener/ChongZhi.class b/target/classes/me/Demon/DemonShiTu/listener/ChongZhi.class new file mode 100644 index 0000000000000000000000000000000000000000..c02441803656235e0b3aec4f0cab07c4af96e92b GIT binary patch literal 3521 zcmcgv`*T#~8GgRKo!!mJg^)ltf&>C&qk%&axh#~J8wTA#Bp4KH@nmzz9}VlSQx;yZX=4&Rl-z93$J9>4%%3I>A+ zV2>Y$ocH@NBdEYM*aA{ zA1?+mh9CG^Z`mgBqE_6#Q7gx5c!~>{bDH zxVc}z(~%l91S+GZW$ef$2aNP?eIUU%)zMT;PxR|)Q$A0>^km~^MxZI0G_+15nX;U* zFK+J6X$dovH7p~ob;MKF(B8PYSs<9Qb{Vm_o*tshwc%(imDI-cR6J*CdM-WvWl+!R znlWlvS#3tSOFnIu00Wu0xh>a86@ld?*R{r%a<})eQsbUe%F}jqF9<{XhBOG2$vyVy7I%>rXf8=Z()p}Os-{&5 z$zu_(KzUzQj}7GB0o!J zabgF`4p6sl4JM2zGjS29Bus3Em_;6+gvM1#hW1hMx&6{3`M7IWsXRc?mst=QoG%d~&j3 zRYPHNqHyE*^Y(mbyg|ir{9Is7L*d+oFHYW^I-URG^lzumfB5<2k=xgAwiMnvHI<*3 zI)8cU^2Nf$Yf}@)3h$pP9J#Vu#R&=Oq>58Gt>SH*QPGFpD$Yvj9L}rw1vG(%5-X37 z7Y=@Q`{)OSkMofRfr^IDKRtE(?5h&lq46!uiLG~zUMt+7+vE5pE6{;ln0&=qTfsXj zF5sfTN=J|TDSY;h^k93Qx_OWYr%vQ=pF0w1`2D5z%(#0l6uhhAJ^ZRPGJA*jk*)Yz z#Vk;DpZJ{v2aH&jj2G96ofpyRCLplt8`V0SN+}p6l6n>pr}PAtl`@{)7zFBy(H2)W zKb5lY(M@YQwe9X8OJATS++3>m=bIU)O?16zW_KHUEG|>BHau6ic`vhp^)jvGcwJda zajxwwOIhgx8%tW2+Rto0ShbaACYl;Dt(~JrTGqaOC=gvyr2EF$)RX*>$}!%x4k9z9 z^|Iw<$-bc{>By&#j2PA+gI*HM{lszNHC?eZ^k-8uA)Ie(&34Ty8IcPm7>ANn@__J@ z%Ba)ud8D!B%NIQ<%NS$d)CUK<^t8qH%r@o;cghpR-=~in4tIXN%HGWzQIv3Pb^dJ{Ra@0_7+y@XztA&WgmCSxC08^XnXm*vE27}PqP zxsRG`y>rm>(8N++E?U57@RH!>%udU34WHyJIC~$u262Ug3*X}CvtO2DEoIeFz$3iy zfbyeQPc0gID&avTO;%lntLNc7+&fxU<>5KwdQi^Zh^Hmw;qzHsw*_Cs8}jC%oI&GN z_&-J9*=q<^m*t^KHMP2&Lmm}*R9=yKRqK7VzDdm6q|kNs>vhU-4dxGT3WU6MfjnxZ z%7P+43u(<&)#^G9j>8Zosas$D042wD$TNvWk+M+PAF(u4HUnbuJGgY%SeYqrcEo|snsQERVA$zp$bWB#ebt! zCYjq#vX7aSKoyf{99|==Usu1 zuo73%glh=n?|2CRV2wX>1n9 zuvNT`R&fDs;@4;we?o`&GrGjzu+8PdB;oqyg7*Y^R!-wMuE5pK7_Xy9Mi;Mm+n44z^=uJ9E9%hs`r zb3k5L*um&r-FQKm9XUk2L)q3S3lo~X5H+@1?Cq2?vGWW&a|9=3p C1g{MM literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/listener/itemUse.class b/target/classes/me/Demon/DemonShiTu/listener/itemUse.class new file mode 100644 index 0000000000000000000000000000000000000000..ece4a9265329c4f0650b87c00d20fab4c45247fd GIT binary patch literal 4310 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 E4>CFhbN~PV literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/manager/DataManager.class b/target/classes/me/Demon/DemonShiTu/manager/DataManager.class new file mode 100644 index 0000000000000000000000000000000000000000..12b416d8d7fe065bfb148e4a28f39c0b8485bca7 GIT binary patch literal 7426 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 literal 0 HcmV?d00001 diff --git a/target/classes/me/Demon/DemonShiTu/util/StackLibrary.class b/target/classes/me/Demon/DemonShiTu/util/StackLibrary.class new file mode 100644 index 0000000000000000000000000000000000000000..9b66927071025f6cd913463750b2392466996cf6 GIT binary patch literal 4869 zcmbVQ>su378vhL!GlZ!qR@b$yM(PC+4TyKFt>UF%`bXfolf3C$d4ZIzv}cN>Sq%&c+_NrkRzi9?!A zc1k7nj!Ma0CRW;MB;Dq!67A)pTW0T(!6a|3?BTG|=8&vAC5OwYKTB)nvU+R1SGHSA zy<*jIn_TG@-3e>?q@~Khx%N*H|m-j~|!4R@r${a(Z3v25XU5a%gJ`vTRPt zYjsc@Rc`U9*XohnCndM_WL`zy+KK~tRx(p2))cxNb*_46HQ7$tb)sIbbC4kpmg%f> z5S$KA+=}Vk#RB8-o)%%TSf{~Y!a3S#%FPqWt!~=fW|msk^vNX2gd5AL(i@l4nwj~b z_1^kwxyX6cRa)!%hC@c?ySR2pUXjDHse@#b+NKthK%10gce#m8b8N@NlcG)$o9ywj z8H!!zuwWw38tM$LEt|AttNv~moi)TVx9qGb*hXg3ypmW|E4gD?r0gIHR#duN$2piw zUG?rNX}8QMJvW}5Ygj-6^03x~^8#AXO8Y9H4ebIt(8(cZCUg|gg>C^oxWHlY+lg*M zuYm7yk@>zP;4-dIL5=w~jQQ+}zeO4CRbMwMZBN6G29%aw8V_~-s6M+C477&=ohI}N zxQc5W=Ed;b?skg}3{(zF#(W~#`Db7Am~SJqcBa|#iG>Eqi1KJ?y9w6?^y9{4&Cy=v zr* zN7R-+rR}=f)f*n@81qS?2M>b&My02d=KlS%gOm+-Oj+rE9PS$4Lg7}&yI7yQoQB*S zNPSulN^57(-#SAN`MJyA*}BsFaE8{`&cu4>=^0wjW7ZG78#4L1Gc>-QZ0{TMRjK|T z$M4-&yL&=|BU@rv0Rfw^na%)@S31QZwMvxjvgo3dew~2ZxFcXYh=Q3D=xjLEy=!c((%D)_ z7eG8)^^&2m!sq{{7Y<{n-9RaxbZUG5B+dr?BYNc!LqlhWD5FU{RUdb&SMHAa@|FJk zp^?|B-%tMXl_xYhL@t7XyFq^&2P&R7>8d<=8g6<;G*?EiP;IZxB@p$hSNx~h;#d95 z|J}=U0+9c3``yXT`&)y7fO@uDX>L{;UviM9aua^t7w1MI3hJ8`3=F@;TX6J-`d}dR zG@y3fC$|Q;I`{2uKi(Z-N_{w}AHeFvJ48M8d3*TrrSZNY_0jVjA_|oo z(IV_SO<*cL7nDc0)&5SUyL0?r%Nlmq4ARYHu~40C8vB`^Quy^n<@(K_KQKP{GED0y85-7O1rkds5~ZB(KWU5?N@8G_2RH8?k?5Z!bk%d z?FwU^WFhMs)i#>vqS5rqe;HqdlVe%wc~J&K^Rk@1|v?RSoBKt9bo5>ynp-tT?aVK zk2hdUQ#ZD70?^S37Hukh3NQz(G32n~*ILcV4P-`K9I;3zXmOZLFz%E+b#}3#M08NA zH$U^uZjl8sJJvSo9aExMT|G%%XK6teZLNvyQl?~ZUc{jGk)w66T23?{%W36=<(|cGdhABdwI{2i_qO5W(rO&=x`UVANfn)tEJ@e_!O1~WaCT9$>4mLu|RWW(U+i5b481>6T8S@GHEcU3FKlo_UJA+D`_W@ zy$b=P9Qp<3VWjTM9)e(7mHyrf%uYZ6X_VTW;+*ukFOZ&qgE{H*4B>r4m~RLR4B|l;B4ttJ4>!FByU*d$k`+V_5D*It920srZ1<{16KX zJqs2i3rlE&EtKX`N-+b)_?Z4%ScVELM=e(11Xkh{GVvX0HX$4BSfv4!O$n#sTm+yw zIE~LyL~vMW#a`?qfSNEHHUce?Z0gL==Snp2zKDWX9s%#c{{vozfyc*&u*?va8^Q`h zSZN5EhLB|l*@m!67v34yav}{YjZ`X`IaDkQH8k@Ht#u@=CtNoWt{Vx1O@!-a!gUMb zT0kgm#kWMHCSq>~KBe!q&*-~rJN2(SaF0-B)udxQ5XHDZig8B-PZ`3O2$b=I}eRoqz-X1Fq-ukN^Mx literal 0 HcmV?d00001 diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..6664733 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,9 @@ +name: DemonShiTu +main: me.Demon.DemonShiTu.Main +depend: + - DemonAPI +version: 2.2.0 +commands: + st: + stopen: + stadmin: \ No newline at end of file