From ac079013d02e654b6802c101fb76a676d635f2b1 Mon Sep 17 00:00:00 2001 From: AMinecraftDev Date: Tue, 13 Nov 2018 23:28:56 +0800 Subject: [PATCH] 1.0.0-SNAPSHOT-U47 --- .../Core/resources-json/bosses.json | 4 +- .../com/songoda/epicbosses/CustomBosses.java | 14 +++- .../epicbosses/droptable/DropTable.java | 4 +- .../songoda/epicbosses/entity/BossEntity.java | 8 +- .../epicbosses/file/SkillsFileHandler.java | 75 +++++++++++++++++++ .../listeners/after/BossDeathListener.java | 9 +++ .../managers/BossEntityManager.java | 10 ++- .../managers/files/SkillsFileManager.java | 52 +++++++++++++ .../com/songoda/epicbosses/skills/Skill.java | 10 ++- .../epicbosses/skills/custom/Cage.java | 7 +- .../epicbosses/skills/custom/Disarm.java | 12 +-- .../epicbosses/skills/custom/Fireball.java | 8 +- .../epicbosses/skills/custom/Grapple.java | 7 +- .../epicbosses/skills/custom/Insidious.java | 7 +- .../epicbosses/skills/custom/Knockback.java | 7 +- .../epicbosses/skills/custom/Launch.java | 7 +- .../epicbosses/skills/custom/Lightning.java | 7 +- .../epicbosses/skills/custom/Minions.java | 7 +- .../epicbosses/skills/custom/Warp.java | 7 +- .../epicbosses/skills/types/CommandSkill.java | 7 +- .../epicbosses/skills/types/CustomSkill.java | 12 +-- .../epicbosses/skills/types/GroupSkill.java | 7 +- .../epicbosses/skills/types/PotionSkill.java | 7 +- .../epicbosses/utils/MessageUtils.java | 4 +- pom.xml | 2 +- 25 files changed, 242 insertions(+), 59 deletions(-) create mode 100644 plugin-modules/Core/src/com/songoda/epicbosses/file/SkillsFileHandler.java create mode 100644 plugin-modules/Core/src/com/songoda/epicbosses/managers/files/SkillsFileManager.java diff --git a/plugin-modules/Core/resources-json/bosses.json b/plugin-modules/Core/resources-json/bosses.json index 761e828..4736de4 100644 --- a/plugin-modules/Core/resources-json/bosses.json +++ b/plugin-modules/Core/resources-json/bosses.json @@ -8,7 +8,7 @@ "mainStats": { "position": 1, "entityType": "SKELETON", - "health": 500, + "health": 5, "displayName": "&6&lSkeleton King Boss" }, "equipment": { @@ -46,7 +46,7 @@ "drops": { "naturalDrops": false, "dropExp": false, - "dropTable": "SKTable" + "dropTable": "SkeletonTableSpray" }, "messages": { "onSpawn": { diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/CustomBosses.java b/plugin-modules/Core/src/com/songoda/epicbosses/CustomBosses.java index e1c5e71..8603ef1 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/CustomBosses.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/CustomBosses.java @@ -27,11 +27,14 @@ import org.bukkit.plugin.java.JavaPlugin; */ public class CustomBosses extends JavaPlugin implements IReloadable { + private static CustomBosses instance; + @Getter private MessagesFileManager bossMessagesFileManager; @Getter private CommandsFileManager bossCommandFileManager; @Getter private DropTableFileManager dropTableFileManager; @Getter private MinionsFileManager minionsFileManager; @Getter private BossesFileManager bossesFileManager; + @Getter private SkillsFileManager skillsFileManager; @Getter private ItemsFileManager itemStackManager; @Getter private BossDropTableManager bossDropTableManager; @@ -61,6 +64,8 @@ public class CustomBosses extends JavaPlugin implements IReloadable { @Override public void onEnable() { + instance = this; + long beginMs = System.currentTimeMillis(); Debug.setPlugin(this); @@ -79,11 +84,11 @@ public class CustomBosses extends JavaPlugin implements IReloadable { this.bossMechanicManager = new BossMechanicManager(this); this.minionMechanicManager = new MinionMechanicManager(this); this.bossLocationManager = new BossLocationManager(this); - this.bossDropTableManager = new BossDropTableManager(this); loadFileManagersAndHandlers(); //Managers that rely on Files + this.bossDropTableManager = new BossDropTableManager(this); this.bossPanelManager = new BossPanelManager(this); this.bossEntityManager = new BossEntityManager(this); @@ -93,6 +98,7 @@ public class CustomBosses extends JavaPlugin implements IReloadable { this.itemStackManager.reload(); this.bossesFileManager.reload(); this.minionsFileManager.reload(); + this.skillsFileManager.reload(); this.bossCommandFileManager.reload(); this.bossMessagesFileManager.reload(); this.dropTableFileManager.reload(); @@ -122,6 +128,7 @@ public class CustomBosses extends JavaPlugin implements IReloadable { this.bossCommandFileManager.reload(); this.minionsFileManager.reload(); this.bossesFileManager.reload(); + this.skillsFileManager.reload(); this.itemStackManager.reload(); this.dropTableFileManager.reload(); @@ -144,6 +151,7 @@ public class CustomBosses extends JavaPlugin implements IReloadable { this.bossCommandFileManager = new CommandsFileManager(this); this.bossMessagesFileManager = new MessagesFileManager(this); this.dropTableFileManager = new DropTableFileManager(this); + this.skillsFileManager = new SkillsFileManager(this); this.langFileHandler = new LangFileHandler(this); this.editorFileHandler = new EditorFileHandler(this); @@ -174,4 +182,8 @@ public class CustomBosses extends JavaPlugin implements IReloadable { this.langFileHandler.saveFile(lang); Message.setFile(lang); } + + public static CustomBosses get() { + return instance; + } } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/droptable/DropTable.java b/plugin-modules/Core/src/com/songoda/epicbosses/droptable/DropTable.java index e748749..7b7c795 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/droptable/DropTable.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/droptable/DropTable.java @@ -1,9 +1,9 @@ package com.songoda.epicbosses.droptable; +import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; import lombok.Getter; import lombok.Setter; -import com.songoda.epicbosses.droptable.elements.RewardsTableElement; /** * @author Charles Cullen @@ -13,6 +13,6 @@ import com.songoda.epicbosses.droptable.elements.RewardsTableElement; public class DropTable { @Expose @Getter @Setter private String dropType; - @Expose @Getter @Setter private RewardsTableElement rewards; + @Expose @Getter @Setter private JsonObject rewards; } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/entity/BossEntity.java b/plugin-modules/Core/src/com/songoda/epicbosses/entity/BossEntity.java index 217d0f6..981a048 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/entity/BossEntity.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/entity/BossEntity.java @@ -13,18 +13,20 @@ import java.util.List; * @version 1.0.0 * @since 14-May-18 */ -public class BossEntity extends MinionEntity { +public class BossEntity { + @Expose @Getter private final List entityStats; @Expose @Getter private final MessagesElement messages; @Expose @Getter private final CommandsElement commands; @Expose @Getter private final SkillsElement skills; @Expose @Getter private final DropsElement drops; @Expose @Getter @Setter private String spawnItem, targeting; + @Expose @Getter @Setter private boolean editing; public BossEntity(boolean editing, String spawnItem, List entityStats, SkillsElement skills, DropsElement drops, MessagesElement messages, CommandsElement commands) { - super(editing, entityStats); - + this.editing = editing; + this.entityStats = entityStats; this.spawnItem = spawnItem; this.skills = skills; this.drops = drops; diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/file/SkillsFileHandler.java b/plugin-modules/Core/src/com/songoda/epicbosses/file/SkillsFileHandler.java new file mode 100644 index 0000000..1c2fc78 --- /dev/null +++ b/plugin-modules/Core/src/com/songoda/epicbosses/file/SkillsFileHandler.java @@ -0,0 +1,75 @@ +package com.songoda.epicbosses.file; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; +import com.songoda.epicbosses.skills.Skill; +import com.songoda.epicbosses.utils.file.FileHandler; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 13-Nov-18 + */ +public class SkillsFileHandler extends FileHandler> { + + private static final Gson GSON = new GsonBuilder() + .setPrettyPrinting() + .excludeFieldsWithoutExposeAnnotation() + .create(); + + public SkillsFileHandler(JavaPlugin javaPlugin, boolean saveResource, File file) { + super(javaPlugin, saveResource, file); + } + + @Override + public Map loadFile() { + Map skillMap = new HashMap<>(); + + createFile(); + + try { + FileReader fileReader = new FileReader(getFile()); + JsonObject jsonObject = GSON.fromJson(fileReader, JsonObject.class); + + fileReader.close(); + + if(jsonObject != null) { + jsonObject.entrySet().forEach(entry -> { + String id = entry.getKey(); + Skill bossEntity = GSON.fromJson(entry.getValue(), Skill.class); + + skillMap.put(id, bossEntity); + }); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + + return skillMap; + } + + @Override + public void saveFile(Map skillMap) { + try { + FileWriter fileWriter = new FileWriter(getFile()); + Type type = new TypeToken>(){}.getType(); + + fileWriter.write(GSON.toJson(new HashMap<>(skillMap), type)); + fileWriter.flush(); + fileWriter.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } +} diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/after/BossDeathListener.java b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/after/BossDeathListener.java index 1cdf989..69a86cb 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/after/BossDeathListener.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/after/BossDeathListener.java @@ -46,6 +46,14 @@ public class BossDeathListener implements Listener { if(activeBossHolder == null) return; EntityDamageEvent.DamageCause damageCause = entityDamageEvent.getCause(); + Boolean naturalDrops = activeBossHolder.getBossEntity().getDrops().getNaturalDrops(); + Boolean dropExp = activeBossHolder.getBossEntity().getDrops().getDropExp(); + + if(naturalDrops == null) naturalDrops = false; + if(dropExp == null) dropExp = true; + + if(!naturalDrops) event.getDrops().clear(); + if(!dropExp) event.setDroppedExp(0); if(damageCause == EntityDamageEvent.DamageCause.VOID || damageCause == EntityDamageEvent.DamageCause.LAVA || activeBossHolder.getMapOfDamagingUsers().isEmpty()) { @@ -53,6 +61,7 @@ public class BossDeathListener implements Listener { return; } + if(this.bossEntityManager.isAllEntitiesDead(activeBossHolder)) { PreBossDeathEvent preBossDeathEvent = new PreBossDeathEvent(activeBossHolder, location); diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossEntityManager.java b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossEntityManager.java index ba011d2..cddff08 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossEntityManager.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/managers/BossEntityManager.java @@ -1,5 +1,6 @@ package com.songoda.epicbosses.managers; +import com.google.gson.Gson; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.api.BossAPI; import com.songoda.epicbosses.droptable.DropTable; @@ -15,6 +16,7 @@ import com.songoda.epicbosses.managers.files.DropTableFileManager; import com.songoda.epicbosses.managers.files.ItemsFileManager; import com.songoda.epicbosses.managers.files.MinionsFileManager; import com.songoda.epicbosses.skills.custom.Minions; +import com.songoda.epicbosses.utils.BossesGson; import com.songoda.epicbosses.utils.Debug; import com.songoda.epicbosses.utils.RandomUtils; import com.songoda.epicbosses.utils.itemstack.holder.ItemStackHolder; @@ -282,17 +284,19 @@ public class BossEntityManager { return; } + Gson gson = BossesGson.get(); + if(dropType.equalsIgnoreCase("SPRAY")) { - SprayTableElement sprayTableElement = (SprayTableElement) dropTable.getRewards(); + SprayTableElement sprayTableElement = gson.fromJson(dropTable.getRewards(), SprayTableElement.class); List itemStacks = this.bossDropTableManager.getSprayItems(sprayTableElement); sprayDrops(sprayTableElement, itemStacks, deadBossHolder); } else if(dropType.equalsIgnoreCase("GIVE")) { - GiveTableElement giveTableElement = (GiveTableElement) dropTable.getRewards(); + GiveTableElement giveTableElement = gson.fromJson(dropTable.getRewards(), GiveTableElement.class); this.bossDropTableManager.handleGiveTable(giveTableElement, deadBossHolder); } else if(dropType.equalsIgnoreCase("DROP")) { - DropTableElement dropTableElement = (DropTableElement) dropTable.getRewards(); + DropTableElement dropTableElement = gson.fromJson(dropTable.getRewards(), DropTableElement.class); List itemStacks = this.bossDropTableManager.getDropItems(dropTableElement); itemStacks.forEach(itemStack -> deadBossHolder.getLocation().getWorld().dropItemNaturally(deadBossHolder.getLocation(), itemStack)); diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/SkillsFileManager.java b/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/SkillsFileManager.java new file mode 100644 index 0000000..86e4ed2 --- /dev/null +++ b/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/SkillsFileManager.java @@ -0,0 +1,52 @@ +package com.songoda.epicbosses.managers.files; + +import com.songoda.epicbosses.CustomBosses; +import com.songoda.epicbosses.file.SkillsFileHandler; +import com.songoda.epicbosses.skills.Skill; +import com.songoda.epicbosses.utils.ILoadable; +import com.songoda.epicbosses.utils.IReloadable; +import com.songoda.epicbosses.utils.ISavable; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 13-Nov-18 + */ +public class SkillsFileManager implements ILoadable, IReloadable, ISavable { + + private Map skillMap = new HashMap<>(); + private SkillsFileHandler skillsFileHandler; + + public SkillsFileManager(CustomBosses plugin) { + File file = new File(plugin.getDataFolder(), "skills.json"); + + this.skillsFileHandler = new SkillsFileHandler(plugin, true, file); + } + + @Override + public void load() { + this.skillMap = this.skillsFileHandler.loadFile(); + } + + @Override + public void reload() { + load(); + } + + @Override + public void save() { + this.skillsFileHandler.saveFile(this.skillMap); + } + + public Skill getSkill(String name) { + return this.skillMap.getOrDefault(name, null); + } + + public Map getSkillMap() { + return new HashMap<>(this.skillMap); + } +} diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/Skill.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/Skill.java index 956cce3..d615002 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/Skill.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/Skill.java @@ -9,9 +9,17 @@ import lombok.Setter; * @version 1.0.0 * @since 05-Nov-18 */ -public abstract class Skill implements ISkillHandler { +public class Skill { @Expose @Getter @Setter private String mode, type, displayName, customMessage; @Expose @Getter @Setter private Double radius; + public Skill(String mode, String type, Double radius, String displayName, String customMessage) { + this.mode = mode; + this.type = type; + this.radius = radius; + this.displayName = displayName; + this.customMessage = customMessage; + } + } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Cage.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Cage.java index bd1f5a9..3e0575a 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Cage.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Cage.java @@ -3,6 +3,7 @@ package com.songoda.epicbosses.skills.custom; import com.google.gson.annotations.Expose; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.custom.cage.CageLocationData; import com.songoda.epicbosses.skills.custom.cage.CagePlayerData; import com.songoda.epicbosses.skills.elements.CustomCageSkillElement; @@ -24,7 +25,7 @@ import java.util.*; * @version 1.0.0 * @since 06-Nov-18 */ -public class Cage extends CustomSkill { +public class Cage extends CustomSkill implements ISkillHandler { private static final MaterialConverter MATERIAL_CONVERTER = new MaterialConverter(); @@ -33,8 +34,8 @@ public class Cage extends CustomSkill { @Expose @Getter @Setter private CustomCageSkillElement cage; - public Cage(CustomBosses plugin) { - super(plugin); + public Cage(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Disarm.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Disarm.java index 2aa7072..8024a0d 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Disarm.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Disarm.java @@ -1,7 +1,7 @@ package com.songoda.epicbosses.skills.custom; -import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import com.songoda.epicbosses.utils.Message; import com.songoda.epicbosses.utils.RandomUtils; @@ -18,10 +18,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Disarm extends CustomSkill { +public class Disarm extends CustomSkill implements ISkillHandler { - public Disarm(CustomBosses plugin) { - super(plugin); + public Disarm(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override @@ -37,8 +37,8 @@ public class Disarm extends CustomSkill { if(livingEntity instanceof HumanEntity) { HumanEntity humanEntity = (HumanEntity) livingEntity; - itemStack = getPlugin().getVersionHandler().getItemInHand(humanEntity); - getPlugin().getVersionHandler().setItemInHand(humanEntity, replacementItemStack); + itemStack = PLUGIN.getVersionHandler().getItemInHand(humanEntity); + PLUGIN.getVersionHandler().setItemInHand(humanEntity, replacementItemStack); break; } case 1: diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Fireball.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Fireball.java index 0853399..43d5e52 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Fireball.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Fireball.java @@ -1,7 +1,7 @@ package com.songoda.epicbosses.skills.custom; -import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.entity.LivingEntity; import org.bukkit.util.Vector; @@ -13,10 +13,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Fireball extends CustomSkill { +public class Fireball extends CustomSkill implements ISkillHandler { - public Fireball(CustomBosses plugin) { - super(plugin); + public Fireball(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Grapple.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Grapple.java index bee8ed8..193ae7d 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Grapple.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Grapple.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.Location; import org.bukkit.entity.LivingEntity; @@ -14,10 +15,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Grapple extends CustomSkill { +public class Grapple extends CustomSkill implements ISkillHandler { - public Grapple(CustomBosses plugin) { - super(plugin); + public Grapple(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Insidious.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Insidious.java index ef6c906..9aa7b9a 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Insidious.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Insidious.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.entity.LivingEntity; @@ -12,10 +13,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Insidious extends CustomSkill { +public class Insidious extends CustomSkill implements ISkillHandler { - public Insidious(CustomBosses plugin) { - super(plugin); + public Insidious(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Knockback.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Knockback.java index 9e507d2..3b80512 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Knockback.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Knockback.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.Location; import org.bukkit.entity.LivingEntity; @@ -14,10 +15,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Knockback extends CustomSkill { +public class Knockback extends CustomSkill implements ISkillHandler { - public Knockback(CustomBosses plugin) { - super(plugin); + public Knockback(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Launch.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Launch.java index 814c131..1e987ad 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Launch.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Launch.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.Location; import org.bukkit.entity.LivingEntity; @@ -13,10 +14,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Launch extends CustomSkill { +public class Launch extends CustomSkill implements ISkillHandler { - public Launch(CustomBosses plugin) { - super(plugin); + public Launch(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Lightning.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Lightning.java index 435df73..7542f32 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Lightning.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Lightning.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.entity.LivingEntity; @@ -12,10 +13,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Lightning extends CustomSkill { +public class Lightning extends CustomSkill implements ISkillHandler { - public Lightning(CustomBosses plugin) { - super(plugin); + public Lightning(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Minions.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Minions.java index 160e785..84021c7 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Minions.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Minions.java @@ -4,6 +4,7 @@ import com.google.gson.annotations.Expose; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.api.BossAPI; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.elements.CustomMinionSkillElement; import com.songoda.epicbosses.skills.types.CustomSkill; import lombok.Getter; @@ -17,12 +18,12 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Minions extends CustomSkill { +public class Minions extends CustomSkill implements ISkillHandler { @Expose @Getter @Setter private CustomMinionSkillElement minions; - public Minions(CustomBosses plugin) { - super(plugin); + public Minions(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Warp.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Warp.java index cc7188c..45047cf 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Warp.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/custom/Warp.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.custom; import com.songoda.epicbosses.CustomBosses; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.types.CustomSkill; import org.bukkit.entity.LivingEntity; @@ -12,10 +13,10 @@ import java.util.List; * @version 1.0.0 * @since 11-Nov-18 */ -public class Warp extends CustomSkill { +public class Warp extends CustomSkill implements ISkillHandler { - public Warp(CustomBosses plugin) { - super(plugin); + public Warp(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); } @Override diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CommandSkill.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CommandSkill.java index 1f26fd5..3f683de 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CommandSkill.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CommandSkill.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.types; import com.google.gson.annotations.Expose; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.Skill; import com.songoda.epicbosses.skills.elements.CommandSkillElement; import com.songoda.epicbosses.utils.Debug; @@ -18,10 +19,14 @@ import java.util.List; * @version 1.0.0 * @since 05-Nov-18 */ -public class CommandSkill extends Skill { +public class CommandSkill extends Skill implements ISkillHandler { @Expose @Getter @Setter private List commands; + public CommandSkill(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); + } + @Override public void castSkill(ActiveBossHolder activeBossHolder, List nearbyEntities) { List commandSkillElements = getCommands(); diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CustomSkill.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CustomSkill.java index f0a406b..3ab2c69 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CustomSkill.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/CustomSkill.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.types; import com.google.gson.annotations.Expose; import com.songoda.epicbosses.CustomBosses; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.Skill; import com.songoda.epicbosses.skills.elements.CustomSkillElement; import lombok.Getter; @@ -12,14 +13,13 @@ import lombok.Setter; * @version 1.0.0 * @since 05-Nov-18 */ -public abstract class CustomSkill extends Skill { +public class CustomSkill extends Skill { - @Getter private final CustomBosses plugin; - - public CustomSkill(CustomBosses plugin) { - this.plugin = plugin; - } + protected static final CustomBosses PLUGIN = CustomBosses.get(); @Expose @Getter @Setter private CustomSkillElement custom; + public CustomSkill(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); + } } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/GroupSkill.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/GroupSkill.java index 0d0f3b3..a71a5dd 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/GroupSkill.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/GroupSkill.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.types; import com.google.gson.annotations.Expose; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.Skill; import lombok.Getter; import lombok.Setter; @@ -14,10 +15,14 @@ import java.util.List; * @version 1.0.0 * @since 05-Nov-18 */ -public class GroupSkill extends Skill { +public class GroupSkill extends Skill implements ISkillHandler { @Expose @Getter @Setter private List groupedSkills; + public GroupSkill(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); + } + @Override public void castSkill(ActiveBossHolder activeBossHolder, List nearbyEntities) { //TODO diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/PotionSkill.java b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/PotionSkill.java index 9416da0..096f10c 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/PotionSkill.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/skills/types/PotionSkill.java @@ -2,6 +2,7 @@ package com.songoda.epicbosses.skills.types; import com.google.gson.annotations.Expose; import com.songoda.epicbosses.holder.ActiveBossHolder; +import com.songoda.epicbosses.skills.ISkillHandler; import com.songoda.epicbosses.skills.Skill; import com.songoda.epicbosses.utils.Debug; import com.songoda.epicbosses.utils.potion.PotionEffectConverter; @@ -17,13 +18,15 @@ import java.util.List; * @version 1.0.0 * @since 05-Nov-18 */ -public class PotionSkill extends Skill { +public class PotionSkill extends Skill implements ISkillHandler { @Expose @Getter @Setter private List potions; private final PotionEffectConverter potionEffectConverter; - public PotionSkill() { + public PotionSkill(String mode, String type, Double radius, String displayName, String customMessage) { + super(mode, type, radius, displayName, customMessage); + this.potionEffectConverter = new PotionEffectConverter(); } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/MessageUtils.java b/plugin-modules/Core/src/com/songoda/epicbosses/utils/MessageUtils.java index 150ef98..8e75a6e 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/utils/MessageUtils.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/utils/MessageUtils.java @@ -34,11 +34,11 @@ public class MessageUtils { messages.replaceAll(s -> s.replace('&', 'ยง')); if(radius == -1) { - Bukkit.getOnlinePlayers().forEach(player -> messages.forEach(player::sendMessage)); + Bukkit.getOnlinePlayers().forEach(player -> messages.forEach(string -> player.sendMessage(string))); } else { Bukkit.getOnlinePlayers().forEach(player -> { if((player.getWorld().equals(center.getWorld())) && (player.getLocation().distanceSquared(center) <= radius)) { - messages.forEach(player::sendMessage); + messages.forEach(string -> player.sendMessage(string)); } }); } diff --git a/pom.xml b/pom.xml index f45de99..4c35b08 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ - 1.0.0-SNAPSHOT-U46 + 1.0.0-SNAPSHOT-U47 EpicBosses com.songoda.epicbosses.CustomBosses AMinecraftDev