From 9b8cd2dc10a3dd33edd5f5a25dc9f04c38861409 Mon Sep 17 00:00:00 2001 From: yaohunya <1763917516@qq.com> Date: Sat, 10 May 2025 06:11:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/AuItemStackLibrary.jar | Bin 0 -> 33735 bytes lib/DemonMmKillsDrop.jar | Bin 0 -> 52468 bytes lib/DemonMmKillsStats.jar | Bin 0 -> 21961 bytes pom.xml | 54 ++++++ src/README.md | 27 +++ .../yaohun/cardbackpack/AuCardBackpack.java | 90 ++++++++++ .../yaohun/cardbackpack/config/Config.java | 44 +++++ .../yaohun/cardbackpack/data/CardData.java | 41 +++++ .../yaohun/cardbackpack/data/PlayerData.java | 59 +++++++ .../com/yaohun/cardbackpack/gui/CardGui.java | 163 ++++++++++++++++++ .../yaohun/cardbackpack/gui/ConfirmGui.java | 115 ++++++++++++ .../listener/KillMobsListener.java | 73 ++++++++ .../cardbackpack/listener/PlayerListener.java | 32 ++++ .../cardbackpack/manage/DataManager.java | 65 +++++++ .../yaohun/cardbackpack/util/RandomUtil.java | 49 ++++++ .../yaohun/cardbackpack/util/StackUtil.java | 49 ++++++ src/main/resources/plugin.yml | 10 ++ 17 files changed, 871 insertions(+) create mode 100644 lib/AuItemStackLibrary.jar create mode 100644 lib/DemonMmKillsDrop.jar create mode 100644 lib/DemonMmKillsStats.jar create mode 100644 pom.xml create mode 100644 src/README.md create mode 100644 src/main/java/com/yaohun/cardbackpack/AuCardBackpack.java create mode 100644 src/main/java/com/yaohun/cardbackpack/config/Config.java create mode 100644 src/main/java/com/yaohun/cardbackpack/data/CardData.java create mode 100644 src/main/java/com/yaohun/cardbackpack/data/PlayerData.java create mode 100644 src/main/java/com/yaohun/cardbackpack/gui/CardGui.java create mode 100644 src/main/java/com/yaohun/cardbackpack/gui/ConfirmGui.java create mode 100644 src/main/java/com/yaohun/cardbackpack/listener/KillMobsListener.java create mode 100644 src/main/java/com/yaohun/cardbackpack/listener/PlayerListener.java create mode 100644 src/main/java/com/yaohun/cardbackpack/manage/DataManager.java create mode 100644 src/main/java/com/yaohun/cardbackpack/util/RandomUtil.java create mode 100644 src/main/java/com/yaohun/cardbackpack/util/StackUtil.java create mode 100644 src/main/resources/plugin.yml diff --git a/lib/AuItemStackLibrary.jar b/lib/AuItemStackLibrary.jar new file mode 100644 index 0000000000000000000000000000000000000000..9adeac8085e7b138b0fe3a783507121b53605d79 GIT binary patch literal 33735 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

?GJeaY?*8?Zw9s9)m~jNf^jc3^qfAfQ=J zbye~uf96RLpSHst&4@aAE}@6kE4$HE<{q_kV@)Gbx35pOg;32|scXYhv0_7^EPg4x z&;359(!ybheJ}3|VO6o`na4%d6F6+Va&GOg9KUBN%#JZ|Gmi$9WSwg^xmA4}RCWTw zG1YVvve~_k(PG3HTFe_CkFk$JD`EGV9OS$DVKlT~UL%indC`UCcgEI;kbb1W>O7fm z%187Jv6l+o$I#^S<#IUT7@ObcPz}=>ak3yMot~#L&{*AVMZJ4d&NskFT88fLjX0#7Sod|5lz?&8UE2fER8 zT6Plj1_LE`t+cn`i1%DW4lV^p>S9TeO@5}RD*^OM>SvWS>6IGIzLG65wfdIX9;I*B zOb*kRAy3JpV(ha})Djp~y}By7_sB_EwNQZTOqcZ_BwVfBE^`t{N*|x?Sb@AZRz_|v zUg=oojV>jduB>Qs-C;`>AL+N#S8J%HQdt6qA#c8bz;4_QzF8dUtng+-Fx12SL@$Q? z+-SHJnkfo68k3IE;C?4=b}POzu^icz%64C)*skxQM5&@u07P^R$l$5ZX=4e$x+*dv z^SlyX&}!6H(2|UB{Vc@AW5zIZ_5|h*PC*=Gm}mU!$Oqv8K!8qUm!cn{?HsTx*)L5!b(Q ztJ$n;nZ$P0UTQP{a8?j@V?Vdwoh}<$*guHvShDgK#i7bl9`h8`Uh#o>-A;}!YKd$f z2}0_wx9w)kta~-oE5YfY<$(2#Zwqd#I0!?B%ceb}TqX8J!165rM0-GxGWSg2+Xn4{ zZdhNZ@M;!E(aR(pE6&_|$mINo@aIV-d%yYkiZ!KYTC1DoSf=XgS0_l-JKk-^+4{*9 zyB<^aD4V*TCsm}cI5i}f21vs&myYACj8?)^I_xbb2X-XT`hg&y3b@?j+B%(Y+-vQN zj}ZHESN9`)f)Enh-WgGjCyMqd2q6O~>$N>JBMC|Tsl%`!_%9C&88}~exeon-(fR>v z_sCP>meO!5#j)kLJsN5M~$eEc+XoCVp%|qXW|bs z?1zVMxkKdO9zD|rkg=1%Wk{%8oFK(M+-1=qxsfxn7`Q!GNI$dKGoNFc$2xLr@W!#bXgkuR{pwq~rzE}IS=GmefBqJY)R zp1HFA%u0hsnhv%Pjq~0DXSrLoip_x)8|p&H*%(W;LcoemwrslI88#fDBET3+&~$** z`Ux-G!fyN<5O~~(TK8c|jjho&A=e~^5!C0h(dz)m*MskCz+Y#r)|$I=7I5(*WQr4W zV9wNGCel8zl!ep9u`?6(C`80lYVL^Ely5~oU6Mj7)q0(-?JyER?Ir<;E}6uPx=iuoiwMJ;J)p)ZkP$Xr|O-J=&@q>FI?$r7%8jI>YDR zA)+wJJCjVgS}d^j6x_d)@lAY{?Hgn4l9zm~W5OHWFzU*&S=eyNqT*YHC}x}Aye^eq z2TI6vdaJz*>*M!lYYYej06PM5>0Ft4`MNK}zFQNio!tL+O?PS1S?EE`9m90Z+)D|$ zy0)xIC%4rE_`v%byQj`NdFdN#Q{jmnqA$LNT01@%uR`p7$JRZk=-mH^=TVSS98AfQ z_#3tkUt~w(cFPNj57go5d|kTT`jy6R+9*^n4zLv^sI=kxJXYoWxmXy^gua!R!3W03#D61K=$?B2P^^59bIv$=_x6R3C48s zS{*1<)sgSDeXVUPyViKCKKQqxF5aOeKmO2r$2c zP$mM*k0?36qU~>Jzr)7LOH_?-ZBrib)jxmqpO`1&U~BQ9r-NJ`LKP=biz@!L>Tm+PZPn)K_Ux*nnDypZRxLB`8VRvVa_4&U5LVfCuALBhghL{VB~}i?_mAw z&m%YdMUDSXe>vzOLN)Edw9TLA!3^+=BmXH?^T$s6cPj_)5(p`vM4=V=f2{nK5PHxM z;cDXG350MpL6mX4-9sjVcu{fK+!Bs1L}AoBROMd>8R9cZnAwA?GT|sgluN&+@1F;o ogI*vk?*|uH!tzd(CzlQ`_J+FT_^pA2gc<(|ASWS_H6(ocAA_X + + 4.0.0 + + com.yaohun.guaji.AuGuaJi + AuCardBackpack + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + + + + public-rpg + https://repo.aurora-pixels.com/repository/public-rpg/ + + + + + + org.spigotmc + spigot-api + 1.12.2 + + + com.yaohun.demonapi + DemonAPI + 2.1.4 + + + com.yaohun.nbtapi + NBT-API + 1.12.2 + + + com.yaohun.itemku + AuItemStackLib + 1.4.4 + + + org.serverct.ersha.jd + AttributePlus + 2.0 + + + + \ No newline at end of file diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..0f76c04 --- /dev/null +++ b/src/README.md @@ -0,0 +1,27 @@ +# AuCardBackpack 插件 + +## 插件简介 +一个斗罗RPG常见的魂卡系统,击杀怪掉落魂卡,右键魂卡打开背包并概率吸收魂卡 + +## 玩法关联插件 +- PaperMC 1.12.2 +- DemonAPI (核心前置支持) +- AuItemStackLibrary (存储掉落魂卡的战利品) +- DemonMmKillsStats (击杀怪物后概率掉落魂卡) +- DemonMmKillsDrop (记录魂卡掉落数量日志) +- AuItemUse (掉落的魂卡 手持右键鉴定) +- AuForge (鉴定后输出的装备魂卡) +- DemonFenJie (分解鉴定后的装备魂卡) +- DragonCore (属性字符替换、魂卡材质替换) + +## 功能结构 +- 战利品阶段(击杀同年限的怪概率掉落魂卡) +- 背包阶段(可从背包界面取出魂卡) +- 吸收阶段(确认吸收该魂卡,吸收后关闭背包则触发属性) +----------------------------------- + +# 更新日志 + +## v1.0.0 - 2025-05-10 +- 绑定命令 `/aucard open` 打开魂卡背包 +- 初步已实现功能的安装和实装 diff --git a/src/main/java/com/yaohun/cardbackpack/AuCardBackpack.java b/src/main/java/com/yaohun/cardbackpack/AuCardBackpack.java new file mode 100644 index 0000000..6bdbe9d --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/AuCardBackpack.java @@ -0,0 +1,90 @@ +package com.yaohun.cardbackpack; + +import com.yaohun.cardbackpack.config.Config; +import com.yaohun.cardbackpack.gui.CardGui; +import com.yaohun.cardbackpack.gui.ConfirmGui; +import com.yaohun.cardbackpack.listener.KillMobsListener; +import com.yaohun.cardbackpack.listener.PlayerListener; +import com.yaohun.cardbackpack.manage.DataManager; +import org.bukkit.Sound; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +public class AuCardBackpack extends JavaPlugin { + + private static AuCardBackpack instance; + private static DataManager dataManager; + + @Override + public void onEnable() { + instance = this; + dataManager = new DataManager(); + Config.reloadConfig(); + getServer().getPluginManager().registerEvents(new CardGui(), this); + getServer().getPluginManager().registerEvents(new ConfirmGui(), this); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + getServer().getPluginManager().registerEvents(new KillMobsListener(), this); + } + + @Override + public void onDisable() { + getDataManager().SaveAllPlayerData(); + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) { + if (args.length == 1 && args[0].equalsIgnoreCase("open")) { + CardGui.OpenGui((Player) sender); + return true; + } + if (!sender.isOp()) { + return true; + } + if (args.length == 0) { + sender.sendMessage(""); + sender.sendMessage("§e------- ======= §6魂卡背包 §e======= -------"); + sender.sendMessage("§2/"+Command+" open §f- §2打开背包"); + sender.sendMessage("§2/"+Command+" reload §f- §2重载配置文件"); + sender.sendMessage("§e------- ======= §6魂卡背包 §e======= -------"); + sender.sendMessage(""); + return true; + } + if(args.length == 1 && args[0].equalsIgnoreCase("reload")) { + getDataManager().reloadDataManager(); + sender.sendMessage("§f[§c魂卡§f] §a配置文件已重载."); + return true; + } + return false; + } + + public static AuCardBackpack inst() { + return instance; + } + + public static DataManager getDataManager() { + return dataManager; + } + + public static void sendMessage(CommandSender sender, String message) { + String prefix = Config.langData.getMessage("prefix"); + if(sender instanceof Player){ + Player player = (Player) sender; + player.sendMessage(prefix+message); + } else { + sender.sendMessage(prefix+message); + } + } + + public static void sendMessage(CommandSender sender, String message, Sound sound) { + String prefix = Config.langData.getMessage("prefix"); + if(sender instanceof Player){ + Player player = (Player) sender; + player.sendMessage(prefix+message); + player.playSound(player.getLocation(), sound, 0.5f, 1.2f); + } else { + sender.sendMessage(prefix+message); + } + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/config/Config.java b/src/main/java/com/yaohun/cardbackpack/config/Config.java new file mode 100644 index 0000000..53e0099 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/config/Config.java @@ -0,0 +1,44 @@ +package com.yaohun.cardbackpack.config; + +import com.yaohun.cardbackpack.AuCardBackpack; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonPlugin.data.GuiItemData; +import me.Demon.DemonPlugin.data.LangData; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.util.HashMap; + +public class Config { + + public static LangData langData; + private static HashMap guiItemDataMap = new HashMap<>(); + + public static void reloadConfig() { + langData = DemonAPI.getLangData("AuCardBackpack"); + guiItemDataMap.clear(); + loadGuiItemData(); + } + + private static void loadGuiItemData(){ + File file = new File("plugins/AuSettings","AuCardBackpack.yml"); + FileConfiguration configuration = YamlConfiguration.loadConfiguration(file); + ConfigurationSection section = configuration.getConfigurationSection("GuiItemData"); + if(section == null){return;} + for (String itemKey : section.getKeys(false)){ + guiItemDataMap.put(itemKey,new GuiItemData(itemKey,section)); + } + } + + public static ItemStack getItemStack(String itemKey) { + if(guiItemDataMap.containsKey(itemKey)){ + return guiItemDataMap.get(itemKey).getItemStack(); + } + return DemonAPI.getErrItems(); + } + + +} diff --git a/src/main/java/com/yaohun/cardbackpack/data/CardData.java b/src/main/java/com/yaohun/cardbackpack/data/CardData.java new file mode 100644 index 0000000..bab2983 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/data/CardData.java @@ -0,0 +1,41 @@ +package com.yaohun.cardbackpack.data; + +import com.yaohun.cardbackpack.util.RandomUtil; + +public class CardData { + + private String cardKey; + private int cardSlot; + public int needMoney; + public double chance; + + public CardData(String cardKey, int cardSlot, int needMoney, double chance) { + this.cardKey = cardKey; + this.cardSlot = cardSlot; + this.needMoney = needMoney; + this.chance = chance; + } + + public String getCardKey() { + return cardKey; + } + + public int getCardSlot() { + return cardSlot; + } + + public boolean isChance(int addRandom){ + if(chance >= 100){ + return true; + } + if(chance <= 0){ + return false; + } + int max = 100 + addRandom; + double rand = RandomUtil.getRandomDouble(0,max,1); + if(rand < chance / 2){ + return true; + } + return false; + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/data/PlayerData.java b/src/main/java/com/yaohun/cardbackpack/data/PlayerData.java new file mode 100644 index 0000000..e4b7ee4 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/data/PlayerData.java @@ -0,0 +1,59 @@ +package com.yaohun.cardbackpack.data; + +import de.tr7zw.itemnbtapi.NBTItem; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.inventory.ItemStack; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +public class PlayerData { + + private String name; + public HashMap itemStackHashMap; + private File file; + private FileConfiguration configuration; + + public PlayerData(String name) { + this.name = name; + this.file = new File("plugins/AuData/BackpackCard", name + ".yml"); + this.configuration = YamlConfiguration.loadConfiguration(this.file); + this.itemStackHashMap = new HashMap<>(); + ConfigurationSection section = this.configuration.getConfigurationSection("Unlock-Slot"); + if(section != null) { + for (String slotKey : section.getKeys(false)) { + int slot = Integer.parseInt(slotKey); + ItemStack itemStack = section.getItemStack(slotKey); + itemStackHashMap.put(slot, itemStack); + } + } + } + + public void SavePlayerData() { + configuration.set("Unlock-Slot",null); + for (Integer key : itemStackHashMap.keySet()) { + ItemStack itemStack = itemStackHashMap.get(key); + configuration.set("Unlock-Slot."+key, itemStack); + } + try { + this.configuration.save(this.file); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public boolean isCardYearsExit(String hunkaKey){ + for (ItemStack itemStack : itemStackHashMap.values()) { + NBTItem nbtItem = new NBTItem(itemStack); + if(nbtItem.hasKey("hunkaKey")){ + if(nbtItem.getString("hunkaKey").equals(hunkaKey)){ + return true; + } + } + } + return false; + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/gui/CardGui.java b/src/main/java/com/yaohun/cardbackpack/gui/CardGui.java new file mode 100644 index 0000000..a08f843 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/gui/CardGui.java @@ -0,0 +1,163 @@ +package com.yaohun.cardbackpack.gui; + +import com.yaohun.cardbackpack.AuCardBackpack; +import com.yaohun.cardbackpack.config.Config; +import com.yaohun.cardbackpack.data.PlayerData; +import com.yaohun.cardbackpack.manage.DataManager; +import com.yaohun.cardbackpack.util.StackUtil; +import de.tr7zw.itemnbtapi.NBTItem; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonPlugin.Util.CDTimeAPI; +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.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.serverct.ersha.jd.AttributeAPI; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class CardGui implements Listener { + + private static String invTitle; + + public CardGui() { + invTitle = Config.langData.getMessage("Gui-Title"); + } + + public static void OpenGui(Player player){ + String playerName = player.getName(); + DataManager dataManager = AuCardBackpack.getDataManager(); + PlayerData playerData = dataManager.getPlayerData(playerName); + Inventory inv = Bukkit.createInventory(null,27,invTitle); + inv.setItem(0, DemonAPI.glass(11,"§r")); + inv.setItem(8, DemonAPI.glass(11,"§r")); + for (int i = 9; i < 27;i++){ + inv.setItem(i,DemonAPI.glass(15,"§r")); + } + inv.setItem(21, DemonAPI.glass(15,"§r")); + inv.setItem(22,DemonAPI.glass(0,"§7[§6魂卡背包§7]")); + inv.setItem(23, DemonAPI.glass(15,"§r")); + for (int i : new int[]{18,19,20,24,25,26}) { + inv.setItem(i,DemonAPI.glass(0,"§7[§6魂卡背包§7]")); + } + inv.setItem(1,StackUtil.iconHide("§f十年魂卡槽")); + inv.setItem(2,StackUtil.iconHide("§e百年魂卡槽")); + inv.setItem(3,StackUtil.iconHide("§d千年魂卡槽")); + inv.setItem(4,StackUtil.iconHide("§7万年魂卡槽")); + inv.setItem(5,StackUtil.iconHide("§c十万年魂卡槽")); + inv.setItem(6,StackUtil.iconHide("§r")); + inv.setItem(7,StackUtil.iconHide("§r")); + // 设置已穿戴的魂卡 + HashMap stackHashMap = playerData.itemStackHashMap; + for (Integer slot : stackHashMap.keySet()) { + if (stackHashMap.get(slot) != null) { + ItemStack stack = stackHashMap.get(slot).clone(); + if (!DemonAPI.itemIsNull(stack) && !DemonAPI.itemIsLore(stack)) { + ItemMeta meta = stack.getItemMeta(); + meta.setDisplayName(meta.getDisplayName() + " §c§l[点击取出]"); + stack.setItemMeta(meta); + inv.setItem(slot, stack); + } + } + } + player.openInventory(inv); + } + + @EventHandler + public void onClick(InventoryClickEvent e) { + int rawSlot = e.getRawSlot(); + Player player = (Player) e.getWhoClicked(); + String playerName = player.getName(); + Inventory inventory = e.getInventory(); + if (e.getView().getTitle().equalsIgnoreCase(invTitle)) { + if(rawSlot >= 0 && rawSlot < inventory.getSize()){ + e.setCancelled(true); + // 获取点击的物品 + ItemStack click = e.getCurrentItem(); + // 判断点击的物品是否是卡牌槽 + if(rawSlot == 1 || rawSlot == 2 || rawSlot == 3 || + rawSlot == 4 || rawSlot == 5 || rawSlot == 6 || rawSlot == 7){ + if(DemonAPI.itemIsNull(click))return; + DataManager dataManager = AuCardBackpack.getDataManager(); + PlayerData playerData = dataManager.getPlayerData(playerName); + // 若点击此处并非空白则将物品返还给玩家 + if(!click.getType().equals(Material.BARRIER)) { + if(!DemonAPI.itemIsLore(click)) { + ItemStack itemStack = playerData.itemStackHashMap.get(rawSlot); + player.getInventory().addItem(itemStack); + playerData.itemStackHashMap.remove(rawSlot); + inventory.setItem(rawSlot, StackUtil.iconHide("§c§l请放入魂卡")); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK, 1, 1); + // 玩家取出这个卡牌后1分钟内肯定会打算吸一个更厉害的魂卡 + CDTimeAPI.setPlayerCD(player.getUniqueId(),"cardback_fetch",1000L * 60); + } + return; + } + // 获取鼠标上的物品 + ItemStack cursor = e.getCursor(); + if(!DemonAPI.itemIsNull(cursor)){ + NBTItem nbtItem = new NBTItem(cursor); + if(nbtItem.hasKey("hunkaKey")){ + String hunkaKey = nbtItem.getString("hunkaKey"); + if(playerData.isCardYearsExit(hunkaKey)){ + AuCardBackpack.sendMessage(player,Config.langData.getMessage("quantityLimit"),Sound.ENTITY_VILLAGER_NO); + return; + } + e.setCursor(new ItemStack(Material.AIR)); + ConfirmGui.OpenGui(player,cursor,hunkaKey); + // 打开一个新的窗口 + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1,1); + } else { + AuCardBackpack.sendMessage(player,Config.langData.getMessage("typeLimitations"),Sound.ENTITY_VILLAGER_NO); + } + } + } + } + } + } + + @EventHandler + public void onClose(InventoryCloseEvent e){ + Player player = (Player) e.getPlayer(); + String playerName = player.getName(); + Inventory inventory = e.getInventory(); + if(e.getView().getTitle().equalsIgnoreCase(invTitle)){ + String attSource = "cardAttribute"; + AttributeAPI.deleteAttribute(player,attSource); + List statsList = new ArrayList<>(); + PlayerData playerData = AuCardBackpack.getDataManager().getPlayerData(playerName); + for (int i : new int[]{0,1,2,3,4,5,6,7}){ + ItemStack stack = inventory.getItem(i); + if(!DemonAPI.itemIsNull(stack)){ + NBTItem nbtItem = new NBTItem(stack); + if(nbtItem.hasKey("hunkaKey")){ + ItemMeta meta = stack.getItemMeta(); + List lore = meta.getLore(); + for (int l = 0; l < lore.size(); l++) { + String s = lore.get(l); + if(s.contains("繫") || s.contains("龖") || s.contains("儁")){ + statsList.add(s); + } + if(s.contains("鬻 §7物品绑定: §e使用后绑定")){ + lore.set(l,"鬻 §7物品已绑定: §e"+playerName); + meta.setLore(lore); + stack.setItemMeta(meta); + playerData.itemStackHashMap.put(i,stack); + } + } + } + } + } + AttributeAPI.addAttribute(player, attSource, statsList); + } + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/gui/ConfirmGui.java b/src/main/java/com/yaohun/cardbackpack/gui/ConfirmGui.java new file mode 100644 index 0000000..32cc9d9 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/gui/ConfirmGui.java @@ -0,0 +1,115 @@ +package com.yaohun.cardbackpack.gui; + +import com.yaohun.cardbackpack.AuCardBackpack; +import com.yaohun.cardbackpack.config.Config; +import com.yaohun.cardbackpack.data.CardData; +import com.yaohun.cardbackpack.data.PlayerData; +import com.yaohun.cardbackpack.manage.DataManager; +import com.yaohun.cardbackpack.util.StackUtil; +import de.tr7zw.itemnbtapi.NBTItem; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.DemonPlugin.Util.CDTimeAPI; +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.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +public class ConfirmGui implements Listener { + + private static String invTitle; + private static String startTitle; + + public ConfirmGui() { + invTitle = Config.langData.getMessage("Confiirm-Title"); + startTitle = invTitle.split("%s")[0]; + } + + public static void OpenGui(Player player, ItemStack cardStack,String hunkaKey){ + DataManager dataManager = AuCardBackpack.getDataManager(); + CardData cardData = dataManager.getCardData(hunkaKey); + if(cardData == null){ + player.closeInventory(); + player.getInventory().addItem(cardStack); + return; + } + String itemName = cardStack.getItemMeta().getDisplayName(); + Inventory inv = Bukkit.createInventory(null,9,invTitle.replace("%s",itemName)); + inv.setItem(1,cardStack); + inv.setItem(6, StackUtil.confirmStack(cardData)); + inv.setItem(8, Config.getItemStack("backStack")); + player.openInventory(inv); + } + + @EventHandler + public void onClick(InventoryClickEvent e) { + int rawSlot = e.getRawSlot(); + Player player = (Player) e.getWhoClicked(); + String playerName = player.getName(); + Inventory inventory = e.getInventory(); + if (e.getView().getTitle().contains(startTitle)) { + e.setCancelled(true); + if(rawSlot == 8){ + CardGui.OpenGui(player); + } + if(rawSlot == 6){ + ItemStack item = e.getCurrentItem(); + NBTItem nbtItem = new NBTItem(item); + if(nbtItem.hasKey("hunka")){ + String hunkaKey = nbtItem.getString("hunka"); + CardData cardData = AuCardBackpack.getDataManager().getCardData(hunkaKey); + if(cardData == null){ + return; + } + // 判断金币 + int needMoney = cardData.needMoney; + if(!DemonAPI.hasMoney(player, needMoney)){ + CardGui.OpenGui(player); + String message = Config.langData.getMessage("moneyNotEnough"); + AuCardBackpack.sendMessage(player,message.replace("%money%",DemonAPI.MoneyFormat(needMoney)),Sound.ENTITY_VILLAGER_NO); + return; + } + int addRandom = 0; + if(CDTimeAPI.isCD(player.getUniqueId(),"cardback_fetch")){ + addRandom = 100; + } + if(cardData.isChance(addRandom)){ + int slot = cardData.getCardSlot(); + PlayerData playerData = AuCardBackpack.getDataManager().getPlayerData(playerName); + ItemStack stack = inventory.getItem(1); + playerData.itemStackHashMap.put(slot,stack); + inventory.setItem(1,new ItemStack(Material.AIR)); + CardGui.OpenGui(player); + String message = Config.langData.getMessage("successfullyInhaled"); + String itemName = stack.getItemMeta().getDisplayName(); + AuCardBackpack.sendMessage(player,message.replace("%itemName%",itemName),Sound.ENTITY_EXPERIENCE_ORB_PICKUP); + } else { + inventory.setItem(1,new ItemStack(Material.AIR)); + player.closeInventory(); + CardGui.OpenGui(player); + String message = Config.langData.getMessage("probabilityFailure"); + AuCardBackpack.sendMessage(player,message,Sound.ENTITY_VILLAGER_NO); + } + } + } + } + } + + @EventHandler + public void onClose(InventoryCloseEvent e) { + Player player = (Player) e.getPlayer(); + String playerName = player.getName(); + Inventory inventory = e.getInventory(); + if (e.getView().getTitle().contains(startTitle)) { + ItemStack itemStack = inventory.getItem(1); + if(!DemonAPI.itemIsNull(itemStack) && !DemonAPI.itemIsLore(itemStack)){ + player.getInventory().addItem(itemStack); + } + } + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/listener/KillMobsListener.java b/src/main/java/com/yaohun/cardbackpack/listener/KillMobsListener.java new file mode 100644 index 0000000..9b56b27 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/listener/KillMobsListener.java @@ -0,0 +1,73 @@ +package com.yaohun.cardbackpack.listener; + +import com.io.yaohun.itemlibrary.api.ItemKuAPI; +import com.yaohun.cardbackpack.util.RandomUtil; +import me.Demon.DemonMmKillsDrop.data.DropLogsData; +import me.Demon.DemonMmKillsDrop.manage.LogsManager; +import me.Demon.DemonMmKillsStats.Event.KillsMobsStatsEvent; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; +import org.serverct.ersha.jd.Ha; + +import java.util.HashMap; + +public class KillMobsListener implements Listener { + + private static HashMap mobLuckyValue = new HashMap<>(); + + private static double getLuckyValue(String mobsType) { + if(!mobLuckyValue.containsKey(mobsType)) { + return 0.0D; + } + return mobLuckyValue.get(mobsType); + } + + private static void addLuckyValue(String mobsType, double luckyValue) { + double nowValue = getLuckyValue(mobsType); + if(!mobLuckyValue.containsKey(mobsType)) { + mobLuckyValue.put(mobsType, nowValue + luckyValue); + } + mobLuckyValue.put(mobsType, nowValue + luckyValue); + } + + @EventHandler + public void onkills(KillsMobsStatsEvent e) { + Player player = e.getPlayer(); + String mobType = e.getMob_type(); + double luckyValue = getLuckyValue(mobType); + double randomChance = RandomUtil.getRandomDouble(0.1D,300.0D,2); + if(luckyValue > randomChance) { + ItemStack stack = getCardStack(mobType); + if(!DemonAPI.itemIsNull(stack)) { + player.getInventory().addItem(stack); + } + mobLuckyValue.put(mobType,0.0D); // 清空幸运值 + } else { + addLuckyValue(mobType, RandomUtil.getRandomDouble(0.1,1.0,1)); + } + } + + public ItemStack getCardStack(String mobsType) { + String itemKey = null; + if(mobsType.contains("百年")){ + itemKey = "百年魂卡"; + }else if(mobsType.contains("千年")){ + itemKey = "千年魂卡"; + }else if(mobsType.contains("万年")){ + itemKey = "万年魂卡"; + }else if(mobsType.contains("十年")){ + itemKey = "十年魂卡"; + } + if(itemKey != null) { + LogsManager logsManager = me.Demon.DemonMmKillsDrop.Main.getDataManager().getLogsManager(); + DropLogsData dropLogsData = logsManager.addDropLogsDataMap(mobsType); + dropLogsData.addDropKeyAmount(itemKey); + return ItemKuAPI.getItemSystemNoLog(itemKey); + } else { + return null; + } + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/listener/PlayerListener.java b/src/main/java/com/yaohun/cardbackpack/listener/PlayerListener.java new file mode 100644 index 0000000..a287c0f --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/listener/PlayerListener.java @@ -0,0 +1,32 @@ +package com.yaohun.cardbackpack.listener; + +import com.yaohun.cardbackpack.gui.CardGui; +import de.tr7zw.itemnbtapi.NBTItem; +import me.Demon.DemonPlugin.DemonAPI; +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 PlayerListener implements Listener { + + @EventHandler + public void onMutual(PlayerInteractEvent event) { + Player player = event.getPlayer(); + if(event.getHand() == EquipmentSlot.HAND){ + Action action = event.getAction(); + if(action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK){ + ItemStack stack = player.getInventory().getItemInMainHand(); + if(!DemonAPI.itemIsNull(stack) && !DemonAPI.itemIsLore(stack)){ + NBTItem nbtItem = new NBTItem(stack); + if(nbtItem.hasKey("hunkaKey")){ + CardGui.OpenGui(player); + } + } + } + } + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/manage/DataManager.java b/src/main/java/com/yaohun/cardbackpack/manage/DataManager.java new file mode 100644 index 0000000..ac208f6 --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/manage/DataManager.java @@ -0,0 +1,65 @@ +package com.yaohun.cardbackpack.manage; + +import com.yaohun.cardbackpack.config.Config; +import com.yaohun.cardbackpack.data.CardData; +import com.yaohun.cardbackpack.data.PlayerData; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.serverct.ersha.jd.Ha; + +import java.io.File; +import java.util.HashMap; + +public class DataManager { + + private HashMap cardDataMap = new HashMap<>(); + private HashMap playerDataMap = new HashMap<>(); + + + public DataManager(){ + loadCardData(); + } + + public void reloadDataManager(){ + SaveAllPlayerData(); + playerDataMap.clear(); + cardDataMap.clear(); + loadCardData(); + Config.reloadConfig(); + } + + public void loadCardData(){ + File file = new File("plugins/AuSettings","AuCardBackpack.yml"); + FileConfiguration configuration = YamlConfiguration.loadConfiguration(file); + ConfigurationSection section = configuration.getConfigurationSection("CardData"); + if(section != null){ + for (String hunkaKey : section.getKeys(false)){ + int slot = section.getInt(hunkaKey+".slot"); + int money = section.getInt(hunkaKey+".money"); + double chance = section.getDouble(hunkaKey+".chance"); + this.cardDataMap.put(hunkaKey,new CardData(hunkaKey,slot,money,chance)); + } + } + } + + public void SaveAllPlayerData(){ + for (PlayerData playerData : playerDataMap.values()) { + playerData.SavePlayerData(); + } + } + + public PlayerData getPlayerData(String playerName){ + if(!this.playerDataMap.containsKey(playerName)){ + this.playerDataMap.put(playerName, new PlayerData(playerName)); + } + return this.playerDataMap.get(playerName); + } + + public CardData getCardData(String hunkaKey){ + if(this.cardDataMap.containsKey(hunkaKey)){ + return this.cardDataMap.get(hunkaKey); + } + return null; + } +} diff --git a/src/main/java/com/yaohun/cardbackpack/util/RandomUtil.java b/src/main/java/com/yaohun/cardbackpack/util/RandomUtil.java new file mode 100644 index 0000000..e4de99b --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/util/RandomUtil.java @@ -0,0 +1,49 @@ +package com.yaohun.cardbackpack.util; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +import java.util.Random; + +public class RandomUtil { + + public static boolean random(double d) { + return d >= new Random().nextFloat(); + } + + public static int getRandomInt(int min, int max) { + if (min == max) { + return max; + } + Random r = new Random(); + int i = min < max ? min : max; + int a = min < max ? max : min; + return r.nextInt(a - i + 1) + i; + } + + public static double getRandomDouble(double min, double max, int scl) { + int pow = (int) Math.pow(10, scl); + return Math.floor((Math.random() * (max - min) + min) * pow) / pow; + } + + public static Location getRandomLocation(World world, double minX, double maxX, double minY, double maxY, double minZ, double maxZ) { + double rx = getRandomDouble(minX, maxX, 3); + double ry = getRandomDouble(minY, maxY, 3); + double rz = getRandomDouble(minZ, maxZ, 3); + return new Location(world, rx, ry, rz); + } + + public static Location getRandomLocation(Player zhubo, World world, double minX, double maxX, double minY, double maxY, double minZ, double maxZ) { + Location location = zhubo.getLocation().add(getRandomInt(-3,3),0,getRandomInt(-3,3)); + for (int i = 0; i < 10;i++) { + Location loc = new Location(world, getRandomDouble(minX, maxX, 3), getRandomDouble(minY, maxY, 3), getRandomDouble(minZ, maxZ, 3)); + if (loc.distance(zhubo.getLocation()) <= 50) { + location = loc; + break; + } + } + return location; + } + +} diff --git a/src/main/java/com/yaohun/cardbackpack/util/StackUtil.java b/src/main/java/com/yaohun/cardbackpack/util/StackUtil.java new file mode 100644 index 0000000..af15cfc --- /dev/null +++ b/src/main/java/com/yaohun/cardbackpack/util/StackUtil.java @@ -0,0 +1,49 @@ +package com.yaohun.cardbackpack.util; + +import com.yaohun.cardbackpack.AuCardBackpack; +import com.yaohun.cardbackpack.config.Config; +import com.yaohun.cardbackpack.data.CardData; +import com.yaohun.cardbackpack.manage.DataManager; +import de.tr7zw.itemnbtapi.NBTItem; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class StackUtil { + + public static ItemStack iconHide(String name){ + ItemStack stack = Config.getItemStack("iconHide").clone(); + ItemMeta meta = stack.getItemMeta(); + meta.setDisplayName(name); + stack.setItemMeta(meta); + NBTItem nbtItem = new NBTItem(stack); + nbtItem.setString("icon","hide"); + nbtItem.setString("stex","icon_air"); + return nbtItem.getItem(); + } + + public static ItemStack confirmStack(CardData cardData){ + ItemStack stack = Config.getItemStack("confirmStack").clone(); + ItemMeta meta = stack.getItemMeta(); + List lore = meta.getLore(); + for (int i = 0; i < lore.size(); i++){ + String string = lore.get(i); + if(string.contains("{chance}")){ + string = string.replace("{chance}",String.valueOf(cardData.chance)); + } + if(string.contains("{money}")){ + string = string.replace("{money}", DemonAPI.MoneyFormat(cardData.needMoney)); + } + lore.set(i, string); + } + meta.setLore(lore); + stack.setItemMeta(meta); + NBTItem nbtItem = new NBTItem(stack); + nbtItem.setString("hunka",cardData.getCardKey()); + return nbtItem.getItem(); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..34b2264 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,10 @@ +name: AuCardBackpack +main: com.yaohun.cardbackpack.AuCardBackpack +version: 1.0.0 +depend: + - DemonAPI + - DemonMmKillsStats +commands: + aucard: + aliases: + - aucard \ No newline at end of file