diff --git a/src/main/java/pers/xanadu/enderdragon/EnderDragon.java b/src/main/java/pers/xanadu/enderdragon/EnderDragon.java
index 5bc0785..7fad18b 100644
--- a/src/main/java/pers/xanadu/enderdragon/EnderDragon.java
+++ b/src/main/java/pers/xanadu/enderdragon/EnderDragon.java
@@ -246,6 +246,7 @@ public final class EnderDragon extends JavaPlugin {
catch (Exception ignored) {}
}
}
+
private void fixWorldBossBar(){
new BukkitRunnable(){
@Override
diff --git a/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java b/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java
index ad42a45..d294fae 100644
--- a/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java
+++ b/src/main/java/pers/xanadu/enderdragon/command/MainCommand.java
@@ -15,7 +15,7 @@ import pers.xanadu.enderdragon.maven.DependencyManager;
import pers.xanadu.enderdragon.reward.Chance;
import pers.xanadu.enderdragon.config.FileUpdater;
import pers.xanadu.enderdragon.task.DragonRespawnTimer;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
@@ -248,7 +248,7 @@ public class MainCommand implements CommandExecutor {
}
if(args.length == 3){
String key = args[2];
- MyDragon dragon = DragonManager.mp.get(key);
+ MyDragon dragon = DragonManager.get_dragon_config(key);
if(dragon == null){
Lang.sendFeedback(sender, Lang.dragon_not_found);
return false;
@@ -349,74 +349,3 @@ public class MainCommand implements CommandExecutor {
}
-// long st=System.currentTimeMillis(),ed;
-// for(int i=0;i<1;i++) {
-// try {
-// ItemStack item = p.getItemInHand();
-// Class> CraftItemStackClass = Class.forName("org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack");
-// Object ci = CraftItemStackClass.cast(item);
-// Method asNMSCopy = CraftItemStackClass.getDeclaredMethod("asNMSCopy", ItemStack.class);
-// Object ei = asNMSCopy.invoke(ci, item);
-// Class> NBTTagCompoundClass = Class.forName("net.minecraft.server.v1_13_R1.NBTTagCompound");
-// Method save = ei.getClass().getDeclaredMethod("save", NBTTagCompoundClass);
-// Object cpd = save.invoke(ei, NBTTagCompoundClass.newInstance());
-// String str = cpd.toString();
-// p.sendMessage(cpd.toString());
-// } catch (ReflectiveOperationException e) {
-// e.printStackTrace();
-// }
-// }
-// ed=System.currentTimeMillis();
-// Bukkit.broadcastMessage("test #1: "+(ed-st)+"ms");
-// st=System.currentTimeMillis();
-// for(int i=0;i<1e5;i++) {
-// ItemStack item = p.getItemInHand();
-// net.minecraft.server.v1_13_R1.ItemStack ni = CraftItemStack.asNMSCopy(item);
-// NBTTagCompound cpd = ni.save(new NBTTagCompound());
-// String str = cpd.toString();
-// }
-// ed=System.currentTimeMillis();
-// Bukkit.broadcastMessage("test #2: "+(ed-st)+"ms");
-//
-// try {
-// CraftItemStackClass=Class.forName("org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack");
-// asNMSCopy = CraftItemStackClass.getDeclaredMethod("asNMSCopy", ItemStack.class);
-// NBTTagCompoundClass = Class.forName("net.minecraft.server.v1_13_R1.NBTTagCompound");
-// ItemStackClass_e = Class.forName("net.minecraft.server.v1_13_R1.ItemStack");
-// save = ItemStackClass_e.getDeclaredMethod("save", NBTTagCompoundClass);
-// } catch (ReflectiveOperationException e) {
-// e.printStackTrace();
-// }
-// for(int i=0;i<1e5;i++) {
-// try {
-// ItemStack item = p.getItemInHand();
-// Object ci = CraftItemStackClass.cast(item);
-// Object ei = asNMSCopy.invoke(ci, item);
-// Object cpd = save.invoke(ei, NBTTagCompoundClass.newInstance());
-// String str = cpd.toString();
-// //p.sendMessage(cpd.toString());
-// } catch (ReflectiveOperationException e) {
-// e.printStackTrace();
-// }
-// }
-// ed=System.currentTimeMillis();
-// Bukkit.broadcastMessage("test #3: "+(ed-st)+"ms");
-
-
-// st=System.currentTimeMillis();
-//
-// for(int i=0;i<1;i++) {
-// ItemStack item = p.getItemInHand();
-// String str = new NbtItemStack(item).getOrCreateTag().toString();
-// //Bukkit.broadcastMessage(str);
-// p.sendMessage(str);
-// }
-// ed=System.currentTimeMillis();
-// Bukkit.broadcastMessage("test #3: "+(ed-st)+"ms");
-
-// net.minecraft.server.v1_16_R3.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
-// NBTTagCompound cpd = nmsItem.save(new NBTTagCompound());
-
-// net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
-// NBTTagCompound cpd = nmsItem.b(new NBTTagCompound());
-// p.sendMessage(cpd.toString());
\ No newline at end of file
diff --git a/src/main/java/pers/xanadu/enderdragon/event/DragonRespawnPostEvent.java b/src/main/java/pers/xanadu/enderdragon/event/DragonRespawnPostEvent.java
index bae8264..7f9b662 100644
--- a/src/main/java/pers/xanadu/enderdragon/event/DragonRespawnPostEvent.java
+++ b/src/main/java/pers/xanadu/enderdragon/event/DragonRespawnPostEvent.java
@@ -6,7 +6,8 @@ import org.bukkit.entity.EnderDragon;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.CreatureSpawnEvent;
import pers.xanadu.enderdragon.manager.DragonManager;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.DragonInfo;
+
/**
* Called when a dragon is spawned, filtered through blacklist.
*
@@ -16,11 +17,11 @@ public final class DragonRespawnPostEvent extends CreatureSpawnEvent {
private static final HandlerList handlers = new HandlerList();
private boolean cancel = false;
private final World world;
- private final MyDragon myDragon;
- public DragonRespawnPostEvent(final EnderDragon dragon, final SpawnReason reason, final MyDragon myDragon) {
+ private final DragonInfo info;
+ public DragonRespawnPostEvent(final EnderDragon dragon, final SpawnReason reason, final DragonInfo dragonInfo) {
super(dragon,reason);
world = dragon.getWorld();
- this.myDragon = myDragon;
+ this.info = dragonInfo;
}
public EnderDragon getEnderDragon(){
@@ -30,11 +31,8 @@ public final class DragonRespawnPostEvent extends CreatureSpawnEvent {
public Location getEndPortalLocation(){
return DragonManager.getEndPortalLocation(world);
}
- public MyDragon getDragonConfiguration(){
- return myDragon;
- }
- public String getDragonUniqueId(){
- return myDragon.unique_name;
+ public DragonInfo getDragonInformation(){
+ return info;
}
public static HandlerList getHandlerList() {
return handlers;
diff --git a/src/main/java/pers/xanadu/enderdragon/gui/GUI.java b/src/main/java/pers/xanadu/enderdragon/gui/GUI.java
index cfc83d3..e9ff465 100644
--- a/src/main/java/pers/xanadu/enderdragon/gui/GUI.java
+++ b/src/main/java/pers/xanadu/enderdragon/gui/GUI.java
@@ -12,8 +12,9 @@ import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.manager.ItemManager;
import pers.xanadu.enderdragon.gui.slot.EmptySlot;
import pers.xanadu.enderdragon.gui.slot.ItemSlot;
+import pers.xanadu.enderdragon.manager.RewardManager;
import pers.xanadu.enderdragon.reward.Reward;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.ArrayList;
import java.util.HashSet;
@@ -117,7 +118,7 @@ public class GUI {
resetPagedItem(key,cmd);
}
else if(type == 2){
- for(MyDragon myDragon : DragonManager.dragons){
+ for(MyDragon myDragon : DragonManager.get_dragons()){
this.addDragon(myDragon.icon.clone(),myDragon.unique_name);
}
}
@@ -125,9 +126,9 @@ public class GUI {
}
public void resetPagedItem(String key,boolean cmd){
this.pagedItems.clear();
- MyDragon dragon = DragonManager.mp.get(key);
- if(dragon == null) return;
- for(Reward reward : dragon.datum){
+ List rewards = RewardManager.getRewards(key);
+ if(rewards == null) return;
+ for(Reward reward : rewards){
if(Config.debug) Bukkit.getLogger().info(reward.toString());
//if(ItemManager.isEmpty(reward.getItem())) continue;
ItemStack item = reward.getItem().clone();
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java
index de53154..b94897a 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonAttackListener.java
@@ -8,7 +8,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.potion.PotionEffect;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.util.ExtraPotionEffect;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
public class DragonAttackListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
@@ -19,7 +19,7 @@ public class DragonAttackListener implements Listener {
EnderDragon dragon = (EnderDragon) attack;
String unique_name = DragonManager.getSpecialKey(dragon);
if(unique_name == null) return;
- MyDragon myDragon = DragonManager.mp.get(unique_name);
+ MyDragon myDragon = DragonManager.get_dragon_config(unique_name);
if(myDragon == null) return;
e.setDamage(Math.max(0.1, e.getDamage() + myDragon.attack_damage_modify));
if(victim instanceof Player){
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java
index 43cad70..ca46647 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonDeathListener.java
@@ -19,7 +19,7 @@ import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.manager.TimerManager;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.util.Pair;
import java.io.IOException;
@@ -36,7 +36,7 @@ public class DragonDeathListener implements Listener {
EnderDragon dragon = (EnderDragon) e.getEntity();
String unique_name = DragonManager.getSpecialKey(dragon);
if(unique_name == null) return;
- MyDragon myDragon = DragonManager.mp.get(unique_name);
+ MyDragon myDragon = DragonManager.get_dragon_config(unique_name);
if(myDragon == null) return;
int times = data.getInt("times");
data.set("times",times+1);
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java
index de0ca51..3f8c4f3 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonFireballListener.java
@@ -1,24 +1,18 @@
package pers.xanadu.enderdragon.listener;
-import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.Particle;
import org.bukkit.entity.AreaEffectCloud;
-import org.bukkit.entity.DragonFireball;
import org.bukkit.entity.EnderDragon;
-import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
-import org.bukkit.event.entity.EnderDragonChangePhaseEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
-import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.potion.PotionEffect;
-import org.bukkit.projectiles.ProjectileSource;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.manager.DragonManager;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import static pers.xanadu.enderdragon.manager.DragonManager.getSpecialKey;
-import static pers.xanadu.enderdragon.manager.DragonManager.mp;
public class DragonFireballListener implements Listener {
@@ -49,7 +43,7 @@ public class DragonFireballListener implements Listener {
EnderDragon dragon = (EnderDragon) effectCloud.getSource();
String unique_name = getSpecialKey(dragon);
if(unique_name == null) return;
- MyDragon myDragon = mp.get(unique_name);
+ MyDragon myDragon = DragonManager.get_dragon_config(unique_name);
if(myDragon == null) return;
effectCloud.setRadius((float) myDragon.effect_cloud_original_radius);
effectCloud.setRadiusPerTick((float) myDragon.effect_cloud_expand_speed/20f);
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java
index 60351d4..25bf4d4 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonHealListener.java
@@ -5,10 +5,10 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityRegainHealthEvent;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.manager.DragonManager;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import static pers.xanadu.enderdragon.manager.DragonManager.getSpecialKey;
-import static pers.xanadu.enderdragon.manager.DragonManager.mp;
public class DragonHealListener implements Listener {
@EventHandler(priority = EventPriority.HIGH)
@@ -18,7 +18,7 @@ public class DragonHealListener implements Listener {
if(!e.getRegainReason().equals(EntityRegainHealthEvent.RegainReason.ENDER_CRYSTAL)) return;
String unique_name = getSpecialKey(dragon);
if(unique_name == null) return;
- MyDragon myDragon = mp.get(unique_name);
+ MyDragon myDragon = DragonManager.get_dragon_config(unique_name);
if(myDragon == null) return;
e.setAmount(myDragon.crystal_heal_speed / 2d);
}
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java
index 2ca58af..52d1a50 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java
@@ -14,7 +14,8 @@ import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.event.DragonRespawnPostEvent;
import pers.xanadu.enderdragon.manager.DamageManager;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.DragonInfo;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.util.Version;
import java.util.*;
@@ -40,6 +41,15 @@ public class DragonSpawnListener implements Listener {
Lang.warn("special_dragon_jude_mode setting error!");
return;
}
+ DragonInfo info = new DragonInfo(myDragon.unique_name);
+ Bukkit.getPluginManager().callEvent(new DragonRespawnPostEvent(dragon,e.getSpawnReason(),info));
+ MyDragon update = getFromInfo(info);
+ if(update == null) {
+ Lang.error("Unknown unique_name in DragonInfo: "+info.unique_name);
+ }
+ else{
+ myDragon = update;
+ }
setSpecialKey(dragon, myDragon.unique_name);
DamageManager.data.put(dragon.getUniqueId(),new ConcurrentHashMap<>());
int times = data.getInt("times");
@@ -73,7 +83,6 @@ public class DragonSpawnListener implements Listener {
else if(Version.mcMainVersion >= 12){
getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon.display_name,bossBar_color,bossBar_style);
}
- Bukkit.getPluginManager().callEvent(new DragonRespawnPostEvent(dragon,e.getSpawnReason(),myDragon));
if(Config.advanced_setting_save_bossbar){
getInstance().getBossBarManager().saveBossBarData(Collections.singletonList(dragon.getWorld()));
}
diff --git a/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java b/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java
index 7ce64c2..895f80e 100644
--- a/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java
+++ b/src/main/java/pers/xanadu/enderdragon/listener/InventoryListener.java
@@ -17,7 +17,7 @@ import pers.xanadu.enderdragon.gui.slot.PageJumpSlot;
import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.manager.GuiManager;
import pers.xanadu.enderdragon.manager.RewardManager;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
public class InventoryListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
@@ -65,7 +65,7 @@ public class InventoryListener implements Listener {
}
if(type == GUISlotType.DRAGON_SLOT){
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
- MyDragon dragon = DragonManager.mp.get(unique_name);
+ MyDragon dragon = DragonManager.get_dragon_config(unique_name);
if(dragon == null){
Lang.sendFeedback(p,Lang.gui_not_found);
return;
@@ -98,7 +98,7 @@ public class InventoryListener implements Listener {
}
if(type == GUISlotType.DRAGON_SLOT){
String unique_name = guiWrapper.getData(guiWrapper.getPage(),e.getRawSlot());
- MyDragon dragon = DragonManager.mp.get(unique_name);
+ MyDragon dragon = DragonManager.get_dragon_config(unique_name);
if(dragon == null){
Lang.sendFeedback(p,Lang.gui_not_found);
return;
diff --git a/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java b/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java
index 0ff6cc5..cd179e6 100644
--- a/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java
+++ b/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java
@@ -12,11 +12,13 @@ import org.bukkit.entity.*;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
+import org.jetbrains.annotations.Nullable;
import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
+import pers.xanadu.enderdragon.metadata.DragonInfo;
import pers.xanadu.enderdragon.reward.RewardDist;
import pers.xanadu.enderdragon.util.ExtraPotionEffect;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.util.Version;
import java.io.File;
@@ -28,8 +30,8 @@ import java.util.concurrent.ThreadLocalRandom;
import static pers.xanadu.enderdragon.EnderDragon.*;
public class DragonManager {
- public static ArrayList dragons = new ArrayList<>();
- public static HashMap mp = new HashMap<>();
+ static final ArrayList dragons = new ArrayList<>();
+ static final Map mp = new HashMap<>();
public static List dragon_names = new ArrayList<>();
private static int sum = 0;
private static final int[][] nxt = {{3,0},{0,3},{-3,0},{0,-3}};
@@ -272,6 +274,30 @@ public class DragonManager {
dragon_names.clear();
}
+ /**
+ * 请勿修改MyDragon对象
+ * 方法将在后续被删除
+ * @return MyDragon configuration
+ */
+ @Deprecated
+ public static MyDragon get_dragon_config(String unique_name){
+ return mp.get(unique_name);
+ }
+
+ /**
+ * 请勿修改得到的List
+ */
+ @Deprecated
+ public static List get_dragons(){
+ return dragons;
+ }
+ @Nullable
+ public static MyDragon getFromInfo(DragonInfo info){
+ return mp.get(info.unique_name);
+ }
+ public static int getCount(){
+ return data.getInt("times");
+ }
public static void setAttribute(final EnderDragon dragon,final Attribute attribute, double amount){
AttributeInstance instance = dragon.getAttribute(attribute);
assert instance != null;
diff --git a/src/main/java/pers/xanadu/enderdragon/manager/RewardManager.java b/src/main/java/pers/xanadu/enderdragon/manager/RewardManager.java
index 44b00d8..008d4e3 100644
--- a/src/main/java/pers/xanadu/enderdragon/manager/RewardManager.java
+++ b/src/main/java/pers/xanadu/enderdragon/manager/RewardManager.java
@@ -10,7 +10,7 @@ import pers.xanadu.enderdragon.config.Config;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.reward.Reward;
import pers.xanadu.enderdragon.reward.Chance;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.io.File;
import java.io.FileNotFoundException;
@@ -101,6 +101,16 @@ public class RewardManager {
}
return false;
}
+
+ /**
+ * 请勿修改获取的List
+ * @return rewards of one type of dragon
+ */
+ public static List getRewards(String unique_name){
+ MyDragon dragon = DragonManager.mp.get(unique_name);
+ if(dragon == null) return null;
+ return dragon.datum;
+ }
private static File getRewardFile(String key){
String file_path = "reward/" + key + ".yml";
File file = new File(plugin.getDataFolder(),file_path);
diff --git a/src/main/java/pers/xanadu/enderdragon/metadata/DragonInfo.java b/src/main/java/pers/xanadu/enderdragon/metadata/DragonInfo.java
new file mode 100644
index 0000000..cfda84c
--- /dev/null
+++ b/src/main/java/pers/xanadu/enderdragon/metadata/DragonInfo.java
@@ -0,0 +1,8 @@
+package pers.xanadu.enderdragon.metadata;
+
+public class DragonInfo {
+ public String unique_name;
+ public DragonInfo(String unique_name){
+ this.unique_name = unique_name;
+ }
+}
diff --git a/src/main/java/pers/xanadu/enderdragon/util/MyDragon.java b/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java
similarity index 95%
rename from src/main/java/pers/xanadu/enderdragon/util/MyDragon.java
rename to src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java
index 65dbf20..e6de4e8 100644
--- a/src/main/java/pers/xanadu/enderdragon/util/MyDragon.java
+++ b/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java
@@ -1,62 +1,63 @@
-package pers.xanadu.enderdragon.util;
-
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.potion.PotionEffect;
-import pers.xanadu.enderdragon.reward.Reward;
-import pers.xanadu.enderdragon.reward.RewardDist;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class MyDragon implements Comparable{
- public ItemStack icon;
- public String unique_name;
- public String display_name;
- public String drop_gui;
- public int edge;
- public int priority;
- public double spawn_chance;
- public int max_health;
- public int spawn_health;
- public int no_damage_tick;
- public int exp_drop;
- public int dragon_egg_spawn_delay;
- public int dragon_egg_spawn_x;
- public int dragon_egg_spawn_y;
- public int dragon_egg_spawn_z;
- public double dragon_egg_spawn_chance;
- public double attack_damage_modify;
- //public double move_speed_modify;
- public double armor_modify;
- public double armor_toughness_modify;
- public double crystal_heal_speed;
- public boolean suck_blood_enable;
- public double suck_blood_rate;
- public double suck_blood_base_amount;
- public boolean suck_blood_only_player;
- public List attack_potion_effect;
- public List attack_extra_effect;
- public List spawn_cmd;
- public List death_cmd;
- public List spawn_broadcast_msg;
- public List death_broadcast_msg;
- public List msg_to_killer;
- public String glow_color;
- public String bossbar_color;
- public String bossbar_style;
- public double effect_cloud_original_radius;
- public double effect_cloud_expand_speed;
- public int effect_cloud_duration;
- public int effect_cloud_color_R;
- public int effect_cloud_color_G;
- public int effect_cloud_color_B;
- public List effect_cloud_potion;
- public List datum = new ArrayList<>();
- public RewardDist reward_dist;
-
- @Override
- public int compareTo(final MyDragon o) {
- return o.priority - this.priority;//降序
- }
-
-}
+package pers.xanadu.enderdragon.metadata;
+
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.potion.PotionEffect;
+import pers.xanadu.enderdragon.reward.Reward;
+import pers.xanadu.enderdragon.reward.RewardDist;
+import pers.xanadu.enderdragon.util.ExtraPotionEffect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MyDragon implements Comparable{
+ public ItemStack icon;
+ public String unique_name;
+ public String display_name;
+ public String drop_gui;
+ public int edge;
+ public int priority;
+ public double spawn_chance;
+ public int max_health;
+ public int spawn_health;
+ public int no_damage_tick;
+ public int exp_drop;
+ public int dragon_egg_spawn_delay;
+ public int dragon_egg_spawn_x;
+ public int dragon_egg_spawn_y;
+ public int dragon_egg_spawn_z;
+ public double dragon_egg_spawn_chance;
+ public double attack_damage_modify;
+ //public double move_speed_modify;
+ public double armor_modify;
+ public double armor_toughness_modify;
+ public double crystal_heal_speed;
+ public boolean suck_blood_enable;
+ public double suck_blood_rate;
+ public double suck_blood_base_amount;
+ public boolean suck_blood_only_player;
+ public List attack_potion_effect;
+ public List attack_extra_effect;
+ public List spawn_cmd;
+ public List death_cmd;
+ public List spawn_broadcast_msg;
+ public List death_broadcast_msg;
+ public List msg_to_killer;
+ public String glow_color;
+ public String bossbar_color;
+ public String bossbar_style;
+ public double effect_cloud_original_radius;
+ public double effect_cloud_expand_speed;
+ public int effect_cloud_duration;
+ public int effect_cloud_color_R;
+ public int effect_cloud_color_G;
+ public int effect_cloud_color_B;
+ public List effect_cloud_potion;
+ public List datum = new ArrayList<>();
+ public RewardDist reward_dist;
+
+ @Override
+ public int compareTo(final MyDragon o) {
+ return o.priority - this.priority;//降序
+ }
+
+}
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/RewardDist.java b/src/main/java/pers/xanadu/enderdragon/reward/RewardDist.java
index 2b41a98..2b7272d 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/RewardDist.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/RewardDist.java
@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.reward.dist.*;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_All.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_All.java
index 47abdd3..6626b52 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_All.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_All.java
@@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.reward.RewardDist;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Drop.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Drop.java
index 8cb1ce3..3db17fa 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Drop.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Drop.java
@@ -11,7 +11,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import pers.xanadu.enderdragon.manager.GlowManager;
import pers.xanadu.enderdragon.reward.RewardDist;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Killer.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Killer.java
index f442e38..c91e4d9 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Killer.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Killer.java
@@ -5,7 +5,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.reward.RewardDist;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Pack.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Pack.java
index a443c3f..27d57d2 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Pack.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Pack.java
@@ -9,7 +9,7 @@ import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.reward.RewardDist;
import pers.xanadu.enderdragon.util.AExpJ;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Rank.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Rank.java
index d17fb95..8dc4e37 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Rank.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Rank.java
@@ -8,7 +8,7 @@ import org.bukkit.inventory.ItemStack;
import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.reward.RewardDist;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List;
import java.util.Map;
diff --git a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Termwise.java b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Termwise.java
index 65bdc1d..05c170d 100644
--- a/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Termwise.java
+++ b/src/main/java/pers/xanadu/enderdragon/reward/dist/Dist_Termwise.java
@@ -8,7 +8,7 @@ import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DamageManager;
import pers.xanadu.enderdragon.reward.RewardDist;
import pers.xanadu.enderdragon.util.AliasSample;
-import pers.xanadu.enderdragon.util.MyDragon;
+import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 10a3d4e..4c7d5c5 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
name: EnderDragon
-version: 2.3.0
+version: 2.4.0
main: pers.xanadu.enderdragon.EnderDragon
author: Xanadu13
api-version: 1.13