From 1b6efaf13136b5208ea2e282b1b152418e2df8a2 Mon Sep 17 00:00:00 2001 From: yaohunya <31456652@qq.com> Date: Thu, 22 Aug 2024 00:55:39 +0800 Subject: [PATCH] Bate --- .gitignore | 2 + lib/AuItemStackLibrary.jar | Bin 0 -> 21823 bytes lib/DemonCSGO.jar | Bin 0 -> 30747 bytes .../java/com/yaohun/crazyprizepool/Main.java | 57 ++++++++ .../crazyprizepool/data/ContentData.java | 73 +++++++++++ .../yaohun/crazyprizepool/data/PoolData.java | 102 +++++++++++++++ .../crazyprizepool/listener/OpenBoxEvent.java | 55 ++++++++ .../crazyprizepool/manager/PoolManager.java | 122 ++++++++++++++++++ src/main/resources/config.yml | 30 +++++ src/main/resources/plugin.yml | 5 + 10 files changed, 446 insertions(+) create mode 100644 .gitignore create mode 100644 lib/AuItemStackLibrary.jar create mode 100644 lib/DemonCSGO.jar create mode 100644 src/main/java/com/yaohun/crazyprizepool/Main.java create mode 100644 src/main/java/com/yaohun/crazyprizepool/data/ContentData.java create mode 100644 src/main/java/com/yaohun/crazyprizepool/data/PoolData.java create mode 100644 src/main/java/com/yaohun/crazyprizepool/listener/OpenBoxEvent.java create mode 100644 src/main/java/com/yaohun/crazyprizepool/manager/PoolManager.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37b1922 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea/ +/out/ diff --git a/lib/AuItemStackLibrary.jar b/lib/AuItemStackLibrary.jar new file mode 100644 index 0000000000000000000000000000000000000000..c94169a047cb0c5b39e1f1fd96a5f4fa555effc2 GIT binary patch literal 21823 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 e#Olu>S4tH4O;8vB0Ojom=?ehB+1pUVG literal 0 HcmV?d00001 diff --git a/src/main/java/com/yaohun/crazyprizepool/Main.java b/src/main/java/com/yaohun/crazyprizepool/Main.java new file mode 100644 index 0000000..c0482de --- /dev/null +++ b/src/main/java/com/yaohun/crazyprizepool/Main.java @@ -0,0 +1,57 @@ +package com.yaohun.crazyprizepool; + +import com.yaohun.crazyprizepool.data.PoolData; +import com.yaohun.crazyprizepool.listener.OpenBoxEvent; +import com.yaohun.crazyprizepool.manager.PoolManager; +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 { + + private Main plugin; + private String prefix = "§7[§6四叶草§7] §f"; + private PoolManager poolManager; + + @Override + public void onEnable() { + plugin = this; + poolManager = new PoolManager(this); + getServer().getPluginManager().registerEvents(new OpenBoxEvent(this),this); + } + + @Override + public void onDisable() { + poolManager.SavePlayerData(); + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String Command, String[] args) { + if (Command.equalsIgnoreCase("crazypool") && sender.isOp()) { + if (args.length == 1) { + String fileName = args[0]; + PoolData poolData = poolManager.getPoolData(fileName); + if (poolData == null) { + return true; + } + Player player = (Player) sender; + player.getInventory().addItem(poolData.getItem()); + } + } + return true; + } + + public PoolManager getPoolManager() { + return poolManager; + } + + public Main getPlugin() { + return plugin; + } + + public String getPrefix() { + return prefix; + } + +} diff --git a/src/main/java/com/yaohun/crazyprizepool/data/ContentData.java b/src/main/java/com/yaohun/crazyprizepool/data/ContentData.java new file mode 100644 index 0000000..c814ae3 --- /dev/null +++ b/src/main/java/com/yaohun/crazyprizepool/data/ContentData.java @@ -0,0 +1,73 @@ +package com.yaohun.crazyprizepool.data; + +import com.yaohun.itemlibrary.api.ItemKuAPI; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.inventory.ItemStack; + +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +public class ContentData { + + private String poolKey; + private Map stackMap = new HashMap<>(); + private Map chanceMap = new HashMap<>(); + + public ContentData(String poolKey, ConfigurationSection section) { + ConfigurationSection section1 = section.getConfigurationSection(poolKey); + for (String contentKey : section1.getKeys(false)) { + double chance = section1.getDouble(contentKey + ".chance"); + if(chance >= 0.1) { + chanceMap.put(contentKey, chance); + int itemAmount = section1.getInt(contentKey + ".amount"); + String itemKey = section1.getString(contentKey + ".item"); + if (itemKey.contains("ItemKu#")) { + String[] strings = itemKey.split("#"); + String stackKey = strings[1]; + ItemStack stack = ItemKuAPI.getItems(stackKey, itemAmount); + stackMap.put(contentKey, stack); + } else if (itemKey.contains("CSGO#")) { + String[] strings = itemKey.split("#"); + String stackKey = strings[1]; + ItemStack stack = me.Demon.DemonCSGO.Api.CratesAPI.getCratesItemStack(stackKey, itemAmount); + stackMap.put(contentKey, stack); + } else { + ItemStack stack = section1.getItemStack(contentKey + ".item"); + stack.setAmount(itemAmount); + stackMap.put(contentKey, stack); + } + } + } + } + + public ItemStack getCratesStack(String contentKey){ + if(this.stackMap.get(contentKey) == null){ + return null; + } + return this.stackMap.get(contentKey); + } + + public String Start_CratesKey(){ + Map chanceMap = new HashMap<>(); + int a = 0; + for (String contentKey : this.chanceMap.keySet()){ + double chance = this.chanceMap.get(contentKey); + chanceMap.put(contentKey,chance); + a += chance; + } + String CratesKey = null; + Random ran = new Random(); + ran.setSeed(System.currentTimeMillis()+ DemonAPI.getRandomInt(80000,1000)); + int b = ran.nextInt(a); + for (String rewardKey : this.chanceMap.keySet()){ + if(chanceMap.get(rewardKey) > b){ + CratesKey = rewardKey; + break; + } + b -= chanceMap.get(rewardKey); + } + return CratesKey; + } +} diff --git a/src/main/java/com/yaohun/crazyprizepool/data/PoolData.java b/src/main/java/com/yaohun/crazyprizepool/data/PoolData.java new file mode 100644 index 0000000..f1e8fa9 --- /dev/null +++ b/src/main/java/com/yaohun/crazyprizepool/data/PoolData.java @@ -0,0 +1,102 @@ +package com.yaohun.crazyprizepool.data; + +import com.yaohun.crazyprizepool.Main; +import de.tr7zw.itemnbtapi.NBTItem; +import me.Demon.DemonPlugin.DemonAPI; +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.*; + +public class PoolData { + private String name; + private ItemStack item; + private Map> poolChanceMap; + private Map contentMap; + + public PoolData(Main plugin,String fileName){ + File file = new File(plugin.getDataFolder(),fileName+".yml"); + FileConfiguration yml = YamlConfiguration.loadConfiguration(file); + this.name = yml.getString("PoolName",fileName); + this.item = yml.getItemStack("PoolItem"); + Map contentDataMap = new HashMap<>(); + ConfigurationSection section = yml.getConfigurationSection("PoolContent"); + for (String poolKey : section.getKeys(false)) { + contentDataMap.put(poolKey,new ContentData(poolKey,section)); + } + this.contentMap = contentDataMap; + ConfigurationSection section1 = yml.getConfigurationSection("FloatChance"); + Map> integerMapMap = new HashMap<>(); + for (String needKey : section1.getKeys(false)) { + int needAmount = Integer.parseInt(needKey); + Map stringDoubleMap = new HashMap<>(); + ConfigurationSection sectionChance = section1.getConfigurationSection(needKey); + for (String poolKey : sectionChance.getKeys(false)){ + stringDoubleMap.put(poolKey,sectionChance.getDouble(poolKey)); + } + integerMapMap.put(needAmount,stringDoubleMap); + } + this.poolChanceMap = integerMapMap; + } + + public ItemStack getItem() { + NBTItem nbt = new NBTItem(item); + nbt.setString("poolItem",this.name); + return nbt.getItem(); + } + + // 执行抽奖获取抽奖池序号 + public int getPoolAmount(int playerValue){ + int poolAmount = 0; + // 假设玩家是5 + // 5: XXXX + // 10: XXXX + // 20: XXXX + // 30: XXXX + // 遍历 + Map> chanceMap = this.poolChanceMap; + // 使用 TreeMap 来自动排序 + Map> sortedMap = new TreeMap<>(chanceMap); + for (Map.Entry> entry : sortedMap.entrySet()) { + if(playerValue >= entry.getKey()){ + poolAmount = entry.getKey(); + }else{ + break; + } + } + return poolAmount; + } + + public String getPoolKey(int poolAmount){ + Map dataMap = this.poolChanceMap.get(poolAmount); + Map chanceMap = new HashMap<>(); + int a = 0; + for (String rewardKey : dataMap.keySet()) { + double chance = dataMap.get(rewardKey); + chanceMap.put(rewardKey,chance); + a += chance; + } + String poolKey = null; + Random ran = new Random(); + ran.setSeed(System.currentTimeMillis()+DemonAPI.getRandomInt(80000,1000)); + int b = ran.nextInt(a); + for (String key : dataMap.keySet()){ + if(chanceMap.get(key) > b){ + poolKey = key; + break; + } + b -= chanceMap.get(key); + } + return poolKey; + } + + public ContentData getContentData(String poolKey){ + if(this.contentMap.get(poolKey) == null){ + return null; + } + return this.contentMap.get(poolKey); + } +} diff --git a/src/main/java/com/yaohun/crazyprizepool/listener/OpenBoxEvent.java b/src/main/java/com/yaohun/crazyprizepool/listener/OpenBoxEvent.java new file mode 100644 index 0000000..d9bb453 --- /dev/null +++ b/src/main/java/com/yaohun/crazyprizepool/listener/OpenBoxEvent.java @@ -0,0 +1,55 @@ +package com.yaohun.crazyprizepool.listener; + +import com.yaohun.crazyprizepool.Main; +import com.yaohun.crazyprizepool.data.ContentData; +import com.yaohun.crazyprizepool.data.PoolData; +import com.yaohun.crazyprizepool.manager.PoolManager; +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.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.UUID; + +public class OpenBoxEvent implements Listener { + + public Main plugin; + public String prefix; + public OpenBoxEvent(Main main){ + plugin = main; + prefix = main.getPrefix(); + } + + @EventHandler + public void onUse(PlayerInteractEvent e){ + Player p = e.getPlayer(); + UUID uuid = p.getUniqueId(); + ItemStack item = p.getInventory().getItemInMainHand(); + if(!DemonAPI.itemIsNull(item)){ + NBTItem nbt = new NBTItem(item); + if(nbt.hasKey("poolItem")){ + String poolKey = nbt.getString("poolItem"); + PoolData poolData = plugin.getPoolManager().getPoolData(poolKey); + if(poolData == null){return;} + PoolManager manager = plugin.getPoolManager(); + int PlayerAmount = manager.getPlayerPoolAmount(uuid,poolKey); + // 获取玩家本次打开奖池的奖池概率 + int PoolAmount = poolData.getPoolAmount(PlayerAmount); + // 获取抽中的是S级、A级、B级、C级 + String PoolKey = poolData.getPoolKey(PoolAmount); + ContentData contentData = poolData.getContentData(PoolKey); + if (contentData == null) { + return; + } + String rewardKey = contentData.Start_CratesKey(); + ItemStack reward_item = contentData.getCratesStack(rewardKey); + p.getWorld().dropItem(p.getLocation(),reward_item); + // 为玩家增加打开奖池次数+1 + plugin.getPoolManager().addPlayerPoolAmount(uuid,poolKey,1); + } + } + } +} diff --git a/src/main/java/com/yaohun/crazyprizepool/manager/PoolManager.java b/src/main/java/com/yaohun/crazyprizepool/manager/PoolManager.java new file mode 100644 index 0000000..caafb1e --- /dev/null +++ b/src/main/java/com/yaohun/crazyprizepool/manager/PoolManager.java @@ -0,0 +1,122 @@ +package com.yaohun.crazyprizepool.manager; + +import com.yaohun.crazyprizepool.Main; +import com.yaohun.crazyprizepool.data.ContentData; +import com.yaohun.crazyprizepool.data.PoolData; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class PoolManager { + + private Main plugin; + private Map> uuidDataMap = new HashMap<>(); + private Map poolDataMap = new HashMap<>(); + public PoolManager(Main main){ + plugin = main; + FileConfiguration yml = plugin.getConfig(); + ConfigurationSection section = yml.getConfigurationSection("PoolData"); + if(section != null) { + for (String uuid : section.getKeys(false)){ + Map integerMap = new HashMap<>(); + ConfigurationSection section1 = section.getConfigurationSection(uuid); + for (String poolKey : section1.getKeys(false)){ + integerMap.put(poolKey,section1.getInt(poolKey)); + } + UUID uuid1 = UUID.fromString(uuid); + uuidDataMap.put(uuid1,integerMap); + } + DemonAPI.sendConsoleMessage("§f[§a!§f] §f玩家数据 §8> §6"+uuidDataMap.size()+" 条"); + } + File folder = new File("./plugins","CrazyPrizePool"); + File[] files = folder.listFiles((dir, name) -> name.endsWith(".yml")); // 列出目录下所有以 .yml 结尾的文件 + if (files != null) { // 确保目录存在且不是空的 + for (File file : files) { // 遍历每个文件 + String fileName = file.getName().replace(".yml",""); + if(!fileName.contains("config")) { + poolDataMap.put(fileName,new PoolData(plugin,fileName)); + } + } + DemonAPI.sendConsoleMessage("§f[§a!§f] §f奖池方案 §8> §6"+poolDataMap.size()+" 个"); + } + } + + public void SavePlayerData(){ + FileConfiguration yml = plugin.getConfig(); + for (UUID uuid : uuidDataMap.keySet()){ + Map integerMap = uuidDataMap.get(uuid); + for (String poolKey : integerMap.keySet()) { + yml.set("PoolData." + uuid+"."+poolKey,integerMap.get(poolKey)); + } + } + plugin.saveConfig(); + } + + // 根据手持物品判断奖池 + public PoolData getItemConvertPoolData(ItemStack stack){ + if(DemonAPI.itemIsNull(stack) || DemonAPI.itemIsLore(stack)){ + return null; + } + ItemMeta stackMeta = stack.getItemMeta(); + for (String poolKey : poolDataMap.keySet()){ + PoolData poolData = poolDataMap.get(poolKey); + ItemStack poolItem = poolData.getItem(); + if(DemonAPI.itemIsNull(poolItem) || DemonAPI.itemIsLore(poolItem)){ + continue; + } + ItemMeta meta = poolItem.getItemMeta(); + if(meta.getDisplayName().contains(stackMeta.getDisplayName())){ + if(meta.getLore().get(1).equalsIgnoreCase(stackMeta.getLore().get(1))){ + return poolData; + } + } + } + return null; + } + // 根据Key获取奖池 + public PoolData getPoolData(String poolKey){ + if(this.poolDataMap.get(poolKey) == null){ + return null; + } + return this.poolDataMap.get(poolKey); + } + // 获取玩家打开这个奖池累积次数 + public int getPlayerPoolAmount(UUID uuid,String poolKey){ + if(this.uuidDataMap.get(uuid) == null){ + return 0; + } + if(this.uuidDataMap.get(uuid).get(poolKey) == null){ + return 0; + } + return this.uuidDataMap.get(uuid).get(poolKey); + } + + // 增加玩家打开这个奖池的累积次数 + public void addPlayerPoolAmount(UUID uuid,String poolKey,int amount){ + int nowAmount = getPlayerPoolAmount(uuid,poolKey); + int newAmount = nowAmount + amount; + setPlayerPoolAmount(uuid,poolKey,newAmount); + } + + // 设置玩家打开这个奖池的累积次数 + public void setPlayerPoolAmount(UUID uuid,String poolKey,int amount){ + Map> uuidData = new HashMap<>(); + if(this.uuidDataMap.get(uuid) != null){ + uuidData = this.uuidDataMap; + } + if(uuidData.get(uuid).get(poolKey) == null){ + Map integerMap = new HashMap<>(); + integerMap.put(poolKey,amount); + uuidData.put(uuid,integerMap); + } + this.uuidDataMap = uuidData; + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..c06eb3e --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,30 @@ +PoolName: 四叶草奖池 +PoolItem: + ==: org.bukkit.inventory.ItemStack + type: DIAMOND + meta: + ==: ItemMeta + meta-type: UNSPECIFIC + display-name: §b§l荣耀之石 + lore: + - §c§l★§7获得它是一种荣耀 + - §a§l✔§7从破产抽奖区获得 + enchants: + PROTECTION_ENVIRONMENTAL: 1 + ItemFlags: + - HIDE_ENCHANTS +# 当玩家累积开启这个达到不同次数后奖池的概率则会变化 +FloatChance: + 10: + S: 0.01 + A: 1.00 + B: 5.00 + C: 10.00 + D: 100.00 +PoolContent: + S: + C9: + chance: 200.0 + # ItemKu# 调用物品库物品 + # CSGO# 调用CSGO物品 + item: ItemKu# \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..43f601f --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,5 @@ +name: CrazyPrizePool +main: com.yaohun.crazyprizepool.Main +version: 1.0 +commands: + crazypool: \ No newline at end of file