From 3d515230cd328ac358202d73db2c8db0bbf900d0 Mon Sep 17 00:00:00 2001 From: yaohunya <31456652@qq.com> Date: Sun, 14 Jul 2024 00:20:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=96=E7=95=8CBOSS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../com/io/yaohun/worldbosshurt/Main.java | 50 +++++- .../event/WorldBossDeathEvent.java | 19 +- .../listener/BossDeathEvent.java | 33 ++++ .../listener/BossKillsDeath.java | 142 +++++++++++++++ .../listener/BossProveEvent.java | 164 ++++++++++++++++++ .../worldbosshurt/mangage/RewardManage.java | 8 + .../yaohun/worldbosshurt/util/BossStack.java | 13 ++ .../yaohun/worldbosshurt/util/BossUtil.java | 6 + 9 files changed, 433 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/io/yaohun/worldbosshurt/listener/BossDeathEvent.java create mode 100644 src/main/java/com/io/yaohun/worldbosshurt/listener/BossProveEvent.java diff --git a/pom.xml b/pom.xml index 3ca214f..83e2161 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,11 @@ DemonLevels 1.0.0 + + me.Demon.DemonHunHuanSx + DemonHunHuanSx + 1.12.2 + com.vexview.api vexview diff --git a/src/main/java/com/io/yaohun/worldbosshurt/Main.java b/src/main/java/com/io/yaohun/worldbosshurt/Main.java index 906ef59..bb2baed 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/Main.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/Main.java @@ -1,16 +1,18 @@ package com.io.yaohun.worldbosshurt; -import com.io.yaohun.worldbosshurt.listener.BossArmor; -import com.io.yaohun.worldbosshurt.listener.BossDamageByPlayer; -import com.io.yaohun.worldbosshurt.listener.BossKillsDeath; -import com.io.yaohun.worldbosshurt.listener.BossSpawnLogs; +import com.io.yaohun.worldbosshurt.command.BossSpawnerCmd; +import com.io.yaohun.worldbosshurt.listener.*; import com.io.yaohun.worldbosshurt.mangage.BossManage; import com.io.yaohun.worldbosshurt.mangage.RewardManage; +import com.io.yaohun.worldbosshurt.util.BossStack; import me.Demon.DemonPlugin.DemonAPI; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; @@ -25,10 +27,13 @@ public class Main extends JavaPlugin { public void onEnable() { plugin = this; reloadMobDataYml(); + getCommand("bossspawner").setExecutor(new BossSpawnerCmd()); getServer().getPluginManager().registerEvents(new BossSpawnLogs(),this); getServer().getPluginManager().registerEvents(new BossArmor(),this); getServer().getPluginManager().registerEvents(new BossDamageByPlayer(),this); getServer().getPluginManager().registerEvents(new BossKillsDeath(),this); + getServer().getPluginManager().registerEvents(new BossDeathEvent(),this); + getServer().getPluginManager().registerEvents(new BossProveEvent(),this); Bukkit.getConsoleSender().sendMessage("§b[BossHurt] §f插件成功载入Server!"); Bukkit.getConsoleSender().sendMessage("§b[BossHurt] §f妖魂QQ:1763917516"); } @@ -46,8 +51,41 @@ public class Main extends JavaPlugin { DemonAPI.sendMessage(sender,"配置文件已重载."); return true; } - if(Command.equalsIgnoreCase("bosspz")){ - + if(Command.equalsIgnoreCase("bosspz")){ // /bosspz + if(args.length >= 2 && args[0].equalsIgnoreCase("give") && sender.isOp()){ + String bossName = args[1]; + if(args.length == 2) { + Player player = (Player) sender; + ItemStack pingzheng = BossStack.BossSlashProof(bossName).clone(); + DemonAPI.giveItem(player,pingzheng); + DemonAPI.sendMessage(player,"恭喜你获得了 "+pingzheng.getItemMeta().getDisplayName()); + } + if(args.length == 3) { + String playName = args[2]; + Player player = Bukkit.getPlayer(playName); + if (player == null) { + DemonAPI.sendMessage(sender, "目标玩家不在线无法发送凭证。"); + return true; + } + ItemStack pingzheng = BossStack.BossSlashProof(bossName).clone(); + DemonAPI.giveItem(player,pingzheng); + DemonAPI.sendMessage(player,"恭喜你获得了 "+pingzheng.getItemMeta().getDisplayName()); + } + return true; + } + if(args.length == 2 && args[0].equalsIgnoreCase("tpall") && sender.isOp()){ + Player p = (Player) sender; + for (Entity entity : p.getWorld().getEntities()){ + if(entity.getCustomName() != null) { + String customName = entity.getCustomName().replaceAll("§[a-zA-Z0-9]", ""); + if (customName.contains(args[1])) { + entity.teleport(p.getLocation()); + } + } + } + sender.sendMessage("操作执行成功.#"+args[1]); + return true; + } } return false; } diff --git a/src/main/java/com/io/yaohun/worldbosshurt/event/WorldBossDeathEvent.java b/src/main/java/com/io/yaohun/worldbosshurt/event/WorldBossDeathEvent.java index 47a2826..bb8e069 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/event/WorldBossDeathEvent.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/event/WorldBossDeathEvent.java @@ -1,13 +1,18 @@ package com.io.yaohun.worldbosshurt.event; import com.io.yaohun.worldbosshurt.data.BossData; +import com.io.yaohun.worldbosshurt.data.RewardData; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import java.util.LinkedHashMap; + public class WorldBossDeathEvent extends Event { private static HandlerList handlers = new HandlerList(); private BossData bossData; + private RewardData rewardData; + private LinkedHashMap sortedMap; @Override public HandlerList getHandlers() { @@ -16,8 +21,10 @@ public class WorldBossDeathEvent extends Event { public static HandlerList getHandlerList() { return handlers; } - public WorldBossDeathEvent(BossData bossData) { + public WorldBossDeathEvent(BossData bossData,RewardData rewardData,LinkedHashMap sortedMap) { this.bossData = bossData; + this.rewardData = rewardData; + this.sortedMap = sortedMap; } public String getBossKey(){ @@ -27,4 +34,14 @@ public class WorldBossDeathEvent extends Event { public String getMobName() { return bossData.getBossName(); } + public BossData getBossData() { + return bossData; + } + + public RewardData getRewardData() { + return rewardData; + } + public LinkedHashMap getSortedMap() { + return sortedMap; + } } diff --git a/src/main/java/com/io/yaohun/worldbosshurt/listener/BossDeathEvent.java b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossDeathEvent.java new file mode 100644 index 0000000..b4acedc --- /dev/null +++ b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossDeathEvent.java @@ -0,0 +1,33 @@ +package com.io.yaohun.worldbosshurt.listener; + +import com.io.yaohun.worldbosshurt.data.RewardData; +import com.io.yaohun.worldbosshurt.event.WorldBossDeathEvent; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import java.util.LinkedHashMap; +import java.util.List; + +public class BossDeathEvent implements Listener { + + @EventHandler + public void onBossDeath(WorldBossDeathEvent e){ + RewardData rewardData = e.getRewardData(); + LinkedHashMap hashMap = e.getSortedMap(); + int rank = 1; + for (String name : hashMap.keySet()){ + if(rank >= 6){break;} + List rankRewardList = rewardData.getTopCmdList(rank); + if(rankRewardList.size() >= 1){ + Player onlinePlayer = Bukkit.getPlayer(name); + if(onlinePlayer != null && onlinePlayer.isOnline()){ + DemonAPI.ConsoleOutCommandList(onlinePlayer,rankRewardList); + } + } + rank++; + } + } +} diff --git a/src/main/java/com/io/yaohun/worldbosshurt/listener/BossKillsDeath.java b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossKillsDeath.java index ab04463..affc4a1 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/listener/BossKillsDeath.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossKillsDeath.java @@ -1,6 +1,148 @@ package com.io.yaohun.worldbosshurt.listener; +import com.io.yaohun.worldbosshurt.Main; +import com.io.yaohun.worldbosshurt.data.BossData; +import com.io.yaohun.worldbosshurt.data.RewardData; +import com.io.yaohun.worldbosshurt.event.WorldBossDeathEvent; +import com.io.yaohun.worldbosshurt.mangage.BossManage; +import com.io.yaohun.worldbosshurt.util.BossStack; +import com.io.yaohun.worldbosshurt.util.BossUtil; +import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobDeathEvent; +import me.Demon.DemonPlugin.DemonAPI; +import org.bukkit.Bukkit; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.scheduler.BukkitRunnable; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.stream.Collectors; public class BossKillsDeath implements Listener { + + @EventHandler + public void onkilldrop(MythicMobDeathEvent e){ + if(e.getKiller() instanceof Player) { // 判断斩杀者是玩家 + Entity entity = e.getEntity(); + BossManage bossManage = Main.bossManage; + String customName = entity.getCustomName(); + if(customName != null && bossManage.isCustomNameContains(customName)){ + BossData bossData = bossManage.getBossData(customName); + if(bossData == null){return;} + String worldName = entity.getWorld().getName(); + if (!worldName.equalsIgnoreCase("teamDungee")) { + Player player = ((Player) e.getKiller()).getPlayer(); + String message = BossUtil.getFinallyKills().replace("%p%", player.getName()); // 获取最终击杀提示 + Bukkit.broadcastMessage(message.replace("%mobs%",bossData.getBossName())); // 发送最终击杀提示 + BossUtil.addMonthlyKillBoss(player.getName()); // 为玩家累积最终斩杀次数 + String Kills_Group_Key = bossData.getKillsReward(); // 获取击杀奖励组名 + RewardData rewardData = Main.rewardManage.getRewardData(Kills_Group_Key); + // 执行命令并发放奖励 + if(bossData.getKillsReward() != null){ + if (!Kills_Group_Key.equalsIgnoreCase("魂环")) { + List commands = rewardData.getKillsCmdList(); + DemonAPI.ConsoleOutCommandList(player, commands); + }else{ + sendRingRewards(player,bossData,rewardData); + } + } + new BukkitRunnable() { + public void run() { + statisticalSettlementOfDamages(bossData,rewardData); + } + }.runTaskLater(Main.plugin, 10L); + } + } + } + } + + /* + * 将对boss造成伤害的存进Hash + * 并进行排序随后发送全服公告 + * */ + public static void statisticalSettlementOfDamages(BossData bossData,RewardData rewardData) { + double totalDamage = 0; // 获取本次造成总伤害 + HashMap hashMap = new HashMap<>(); + Map damageMap = BossDamageByPlayer.damageMap; + List playerList = new ArrayList<>(); + for (Player player : damageMap.keySet()) { + if (player != null && player.isOnline()) { + double damage = damageMap.get(player); // 获取该玩家造成伤害 + totalDamage += damage; // 统计玩家造成总计伤害 + hashMap.put(player.getName(), damage); // 将玩家名和伤害存储 + playerList.add(player); // 将玩家存入在线玩家列表 + } + } + if (hashMap.size() < 1) { return; } + LinkedHashMap sortedMap = hashMap.entrySet() + .stream() + .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) + .collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (e1, e2) -> e1, + LinkedHashMap::new + )); + Bukkit.broadcastMessage("§c§M §6§m §e§m §a§m §b§m §C§L▍ §c§l伤§6§l害§E§L统§A§l计§B§L表 §C§l▍§b§M §a§M §e§M §6§m §c§m §r"); + Bukkit.broadcastMessage("§e世界级Boss: "+bossData.getBossName()+" §e伤害排名如下:"); + int rank = 1; + for (String top_Name : sortedMap.keySet()){ + if(rank == 6){break;} + double damage = sortedMap.get(top_Name); + Bukkit.broadcastMessage("§e第" + rank + "名 - §c" + top_Name + " §e总计伤害: §c" + new DecimalFormat("00.00").format(damage) + "k §e伤害占总比: §c" + new DecimalFormat("0.00").format(damage / totalDamage * 100) + "%"); + rank++; + } + Bukkit.broadcastMessage("§c§M §6§m §e§m §a§m §b§m §C§L▍ §c§l伤§6§l害§E§L统§A§l计§B§L表 §C§l▍§b§M §a§M §e§M §6§m §c§m §r"); + for (Player player : playerList){ + double damage = BossDamageByPlayer.damageMap.get(player); // 获取玩家造成伤害 + player.sendMessage("§e您造成的总伤害: §c" + new DecimalFormat(",###.00").format(damage) + "k §e伤害占总比: §c" + new DecimalFormat("0.00").format(damage / totalDamage * 100) + "%"); + // 判断玩家造成伤害是否达到100K并发放奖励 + if(damage >= 100){ + List damageRewardList = rewardData.getDamageCmdList(); + DemonAPI.ConsoleOutCommandList(player,damageRewardList); + }else{ + DemonAPI.sendMessage(player,"你造成的总伤害不足§4100,000§a无法获得参与奖。"); + } + } + WorldBossDeathEvent worldBossDeathEvent = new WorldBossDeathEvent(bossData,rewardData,sortedMap); + Bukkit.getPluginManager().callEvent(worldBossDeathEvent); + } + + public void sendRingRewards(Player player,BossData bossData,RewardData rewardData) { + String name = player.getName(); + if(DemonAPI.getRandomInt(100,1) >= 10){ + DemonAPI.sendMessage(player,"很遗憾,这只灵兽的最终一击并未掉落任何奖励。"); + }else{ + String bossKey = bossData.getBossKey(); + if (DemonAPI.getRandomInt(100,1) >= 2) { + if (DemonAPI.getRandomInt(100, 1) > 10) { + player.getInventory().addItem(BossStack.BossSlashProof(bossKey)); + Bukkit.broadcastMessage("§6[§4公告§6] §e"+name+" §a通过最终一击获得了 §c§l猎杀凭证 §f("+bossKey+")"); + } else { + if(rewardData.getRewardKey().contains("百万年")){ + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mythicmobs items give " + name + " 百万年" + bossKey + "灵环无献祭"); + DemonAPI.sendMessage(player,"恭喜你获得了 §6§l百万年灵环 §f(" + bossKey + ")"); + Bukkit.broadcastMessage("§6[§4公告§6] §e" + name + " §a通过最终一击获得了 §6§l百万年灵环 §f(" + bossKey + ")"); + } else { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mythicmobs items give " + name + " 十万年" + bossKey + "灵环无献祭"); + DemonAPI.sendMessage(player,"恭喜你获得了 §c§l十万年灵环 §f(" + bossKey + ")"); + Bukkit.broadcastMessage("§6[§4公告§6] §e" + name + " §a通过最终一击获得了 §c§l十万年灵环 §f(" + bossKey + ")"); + } + } + } else { + if(rewardData.getRewardKey().contains("百万年")){ + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mythicmobs items give " + name + " 百万年" + bossKey + "灵环"); + DemonAPI.sendMessage(player,"恭喜你获得了 §6§l百万年灵环 §f(" + bossKey + ")§d[含献祭]"); + Bukkit.broadcastMessage("§6[§4公告§6] §e" + name + " §a通过最终一击获得了 §6§l百万年灵环 §f(" + bossKey + ")§d[含献祭]"); + }else { + Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "mythicmobs items give " + name + " 十万年" + bossKey + "灵环"); + DemonAPI.sendMessage(player,"恭喜你获得了 §c§l十万年灵环 §f(" + bossKey + ")§d[含献祭]"); + Bukkit.broadcastMessage("§6[§4公告§6] §e" + name + " §a通过最终一击获得了 §c§l十万年灵环 §f(" + bossKey + ")§d[含献祭]"); + } + } + } + } + } diff --git a/src/main/java/com/io/yaohun/worldbosshurt/listener/BossProveEvent.java b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossProveEvent.java new file mode 100644 index 0000000..9b45307 --- /dev/null +++ b/src/main/java/com/io/yaohun/worldbosshurt/listener/BossProveEvent.java @@ -0,0 +1,164 @@ +package com.io.yaohun.worldbosshurt.listener; + +import com.io.yaohun.worldbosshurt.util.BossStack; +import me.Demon.DemonHunHuanSX.HunHuanAPI; +import me.Demon.DemonHunHuanSX.Main; +import me.Demon.DemonPlugin.DemonAPI; +import me.Demon.ItemKuAPI; +import net.minecraft.server.v1_12_R1.NBTTagCompound; +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.block.Action; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.List; + +public class BossProveEvent implements Listener { + + public static String invTitle = "斗魂偙国 - 十万年凭证兑换"; + /* + * 交换兑换十万年魂环 + * */ + @EventHandler + public void onclick(InventoryClickEvent e){ + int rawSlot = e.getRawSlot(); + Player p = (Player) e.getWhoClicked(); + Inventory inv = e.getInventory(); + ItemStack item = e.getCurrentItem(); + if(inv != null && invTitle.equalsIgnoreCase(inv.getTitle())){ + e.setCancelled(true); + if(!DemonAPI.itemIsNull(item) && !DemonAPI.itemIsLore(item)){ + p.playSound(p.getLocation(),Sound.BLOCK_COMPARATOR_CLICK,1.6F,1.8F); + NBTTagCompound nbt = BossStack.getNBT(item); + if(nbt.hasKey("hhkey")){ + String hhkey = nbt.getString("hhkey"); + p.closeInventory(); // 关闭界面 + ItemStack needStack = BossStack.BossSlashProof(hhkey); + if(!DemonAPI.isPlayerItemsLore(p,needStack,8)){ + DemonAPI.sendMessage(p,"兑换失败,缺少该十万年灵兽的猎杀凭证。",Sound.ENTITY_VILLAGER_NO); + return; + } + ItemStack laborStack = ItemKuAPI.getItems("劳动者结晶",1); + if(!DemonAPI.isPlayerItemsLore(p,laborStack,2)){ + DemonAPI.sendMessage(p,"兑换失败,缺少劳动者结晶。",Sound.ENTITY_VILLAGER_NO); + return; + } + DemonAPI.removePlayerItemsLore(p,needStack,8); // 扣除凭证 + DemonAPI.removePlayerItemsLore(p,laborStack,2); // 扣除劳动者结晶 + ItemStack hh_item = HunHuanAPI.getHHItems("十万年_"+hhkey+"灵环"); + p.getInventory().addItem(hh_item); + p.sendMessage(Main.prefix+"兑换成功,你获得了 "+hh_item.getItemMeta().getDisplayName()); + return; + } + if(nbt.hasKey("hhkeypro")){ + String hhkey = nbt.getString("hhkeypro"); + p.closeInventory(); // 关闭界面 + ItemStack needStack = BossStack.BossSlashProof(hhkey); + if(!DemonAPI.isPlayerItemsLore(p,needStack,12)){ + DemonAPI.sendMessage(p,"兑换失败,缺少该十万年灵兽的猎杀凭证。",Sound.ENTITY_VILLAGER_NO); + return; + } + // 获取灵环精片 + ItemStack spermTablets = ItemKuAPI.getItems("灵环精片",1); + if(!DemonAPI.isPlayerItemsLore(p,spermTablets,64)){ + DemonAPI.sendMessage(p,"兑换失败,缺少灵环精片。",Sound.ENTITY_VILLAGER_NO); + return; + } + ItemStack laborStack = ItemKuAPI.getItems("劳动者结晶",1); + if(!DemonAPI.isPlayerItemsLore(p,laborStack,10)){ + DemonAPI.sendMessage(p,"兑换失败,缺少劳动者结晶。",Sound.ENTITY_VILLAGER_NO); + return; + } + DemonAPI.removePlayerItemsLore(p,needStack,12); // 扣除凭证 + DemonAPI.removePlayerItemsLore(p,laborStack,10); // 扣除劳动者结晶 + DemonAPI.removePlayerItemsLore(p,spermTablets,64); // 扣除灵环精片 + ItemStack hh_item = HunHuanAPI.getHHItems("十万年_"+hhkey+"灵环"); + ItemMeta meta = hh_item.getItemMeta(); + List lore = meta.getLore(); + lore.add("§d十万年灵兽自愿献祭标识"); + meta.setLore(lore); + hh_item.setItemMeta(meta); + p.getInventory().addItem(hh_item); + p.sendMessage(Main.prefix+"兑换成功,你获得了 "+hh_item.getItemMeta().getDisplayName()); + } + } + } + } + /* + * 玩家手持凭证打开兑换界面 + * */ + @EventHandler + public void onUse(PlayerInteractEvent e){ + Player player = e.getPlayer(); + ItemStack item = player.getInventory().getItemInMainHand(); + if(e.getHand() == EquipmentSlot.HAND){ + if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK){ + if(BossStack.isItemBossProve(item)){ + e.setCancelled(true); + BossProveEvent.OpenGui(player); + player.playSound(player.getLocation(), Sound.BLOCK_COMPARATOR_CLICK,1.6F,1.8F); + } + } + } + } + + public static void OpenGui(Player p){ + Inventory inv = Bukkit.createInventory(null,27,invTitle); + inv.setItem(0,Show_Items("巨兽泰坦")); + inv.setItem(1,Show_Items("青天牛马")); + inv.setItem(2,Show_Items("奇灵舞魅兔")); + inv.setItem(3,Show_Items("冰封魔焰虎")); + inv.setItem(4,Show_Items("噬魂蛛皇")); + inv.setItem(5,Show_Items("雷暴狮王")); + inv.setItem(18,Hd_Items("巨兽泰坦")); + inv.setItem(19,Hd_Items("青天牛马")); + inv.setItem(20,Hd_Items("奇灵舞魅兔")); + inv.setItem(21,Hd_Items("冰封魔焰虎")); + inv.setItem(22,Hd_Items("噬魂蛛皇")); + inv.setItem(23,Hd_Items("雷暴狮王")); + p.openInventory(inv); + } + + public static ItemStack Show_Items(String keyName){ + ItemStack item = HunHuanAPI.getHHItems("十万年_"+keyName+"灵环"); + ItemMeta meta = item.getItemMeta(); + List lore = meta.getLore(); + lore.add(" "); + lore.add("§7-----[兑换需求材料]-----"); + lore.add("§c§l猎杀凭证 §f("+keyName+") §7x 8"); + lore.add("§2§l劳动者结晶 §7x 2"); + lore.add("§a§l✔§f左键点击兑换"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbt = BossStack.getNBT(item); + nbt.setString("hhkey",keyName); + return BossStack.setNBT(item,nbt); + } + + public static ItemStack Hd_Items(String keyName){ + ItemStack item = HunHuanAPI.getHHItems("十万年_"+keyName+"灵环"); + ItemMeta meta = item.getItemMeta(); + List lore = meta.getLore(); + lore.add("§d十万年灵兽自愿献祭标识"); + lore.add(" "); + lore.add("§7-----[兑换需求材料]-----"); + lore.add("§c§l猎杀凭证 §f("+keyName+") §7x 12"); + lore.add("§b§l灵环精片 §7x 64"); + lore.add("§2§l劳动者结晶 §7x 10"); + lore.add("§a§l✔§f左键点击兑换"); + lore.add("§b#活动期间限时开放"); + meta.setLore(lore); + item.setItemMeta(meta); + NBTTagCompound nbt = BossStack.getNBT(item); + nbt.setString("hhkeypro",keyName); + return BossStack.setNBT(item,nbt); + } +} diff --git a/src/main/java/com/io/yaohun/worldbosshurt/mangage/RewardManage.java b/src/main/java/com/io/yaohun/worldbosshurt/mangage/RewardManage.java index 1317737..580faed 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/mangage/RewardManage.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/mangage/RewardManage.java @@ -2,6 +2,7 @@ package com.io.yaohun.worldbosshurt.mangage; import com.io.yaohun.worldbosshurt.data.BossData; import com.io.yaohun.worldbosshurt.data.RewardData; +import com.sun.xml.internal.txw2.output.StreamSerializer; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; @@ -20,4 +21,11 @@ public class RewardManage { } Bukkit.getConsoleSender().sendMessage("§b[BossHurt] §f已导入奖励方案: §a" + rewardDataMap.size() + "个"); } + + public RewardData getRewardData(String string) { + if(rewardDataMap.get(string) != null){ + return rewardDataMap.get(string); + } + return null; + } } diff --git a/src/main/java/com/io/yaohun/worldbosshurt/util/BossStack.java b/src/main/java/com/io/yaohun/worldbosshurt/util/BossStack.java index cb75a3c..0fc6079 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/util/BossStack.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/util/BossStack.java @@ -45,4 +45,17 @@ public class BossStack { nbt.setString("stex","cailiao_68"); return setNBT(item,nbt); } + + public static boolean isItemBossProve(ItemStack item){ + if(DemonAPI.itemIsNull(item) || DemonAPI.itemIsLore(item)){ + return false; + } + ItemMeta meta = item.getItemMeta(); + if(meta.getDisplayName().contains("§c§l猎杀凭证")){ + if(meta.getLore().contains("§7灵兽§a掉落§7的凭证,§a集齐多张")){ + return true; + } + } + return false; + } } diff --git a/src/main/java/com/io/yaohun/worldbosshurt/util/BossUtil.java b/src/main/java/com/io/yaohun/worldbosshurt/util/BossUtil.java index 266bd05..a82e9e8 100644 --- a/src/main/java/com/io/yaohun/worldbosshurt/util/BossUtil.java +++ b/src/main/java/com/io/yaohun/worldbosshurt/util/BossUtil.java @@ -14,6 +14,12 @@ import java.util.stream.Collectors; public class BossUtil { + public static String finallyKills = "§6[§4公告§6] §a玩家 §c%p% §a夺取了 §r%mobs% §6§l最终一击!"; + + public static String getFinallyKills() { + return finallyKills; + } + /* * 增加玩家每月Boss击杀数 * */