From bbebd41ed33bb9ab12011ca686eaab2a4b8d5ea6 Mon Sep 17 00:00:00 2001 From: Brianna Date: Thu, 19 Mar 2020 14:52:32 -0400 Subject: [PATCH] A bit jank but this fixes the reload problem for now. --- .../epicbosses/holder/ActiveBossHolder.java | 8 +++---- .../listeners/during/BossDamageListener.java | 21 +++++++++++-------- .../managers/files/BossesFileManager.java | 12 +++++++++++ .../mechanics/boss/NameMechanic.java | 4 +++- .../songoda/epicbosses/utils/StringUtils.java | 10 +++++++++ 5 files changed, 41 insertions(+), 14 deletions(-) diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/holder/ActiveBossHolder.java b/plugin-modules/Core/src/com/songoda/epicbosses/holder/ActiveBossHolder.java index cf4a132..c3aaeab 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/holder/ActiveBossHolder.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/holder/ActiveBossHolder.java @@ -111,12 +111,12 @@ public class ActiveBossHolder implements IActiveHolder { .filter(e -> e.getValue() != null && e.getValue().getWorld().isChunkLoaded( e.getValue().getLocation().getBlockX() >> 4, e.getValue().getLocation().getBlockZ() >> 4)) - .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); // remove everything we can - toRemove.entrySet().stream().forEach(e -> { - e.getValue().remove(); - livingEntityMap.remove(e.getKey()); + toRemove.forEach((key, value) -> { + value.remove(); + livingEntityMap.remove(key); }); return true; diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java index d0d299c..b48eb48 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/listeners/during/BossDamageListener.java @@ -45,22 +45,25 @@ public class BossDamageListener implements Listener { double damage = event.getDamage(); Player player = null; - if (activeBossHolder == null) { + if (activeBossHolder == null && livingEntity.getCustomName() != null) { // Check to see if this was a boss and respawn it if so. - String convert = TextUtils.convertFromInvisibleString(livingEntity.getCustomName()); - if (convert.startsWith("BOSS:")) { + String convert = livingEntity.getCustomName(); + + if (convert.toUpperCase().startsWith(TextUtils.convertToInvisibleString("BOSS:"))) { String name = convert.split(":")[1]; BossEntity bossEntity = bossesFileManager.getBossEntity(name); - bossEntityManager.createActiveBossHolder(bossEntity, livingEntity.getLocation(), name, null); + if (bossEntity != null) { + bossEntityManager.createActiveBossHolder(bossEntity, livingEntity.getLocation(), name, null); - if (livingEntity.isInsideVehicle() && livingEntity.getVehicle() != null) - livingEntity.getVehicle().remove(); + if (livingEntity.isInsideVehicle() && livingEntity.getVehicle() != null) + livingEntity.getVehicle().remove(); - if (livingEntity.getPassenger() != null) - livingEntity.getPassenger().remove(); + if (livingEntity.getPassenger() != null) + livingEntity.getPassenger().remove(); - livingEntity.remove(); + livingEntity.remove(); + } } return; } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/BossesFileManager.java b/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/BossesFileManager.java index 8f20196..0775dea 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/BossesFileManager.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/managers/files/BossesFileManager.java @@ -3,10 +3,13 @@ package com.songoda.epicbosses.managers.files; import com.songoda.epicbosses.EpicBosses; import com.songoda.epicbosses.container.BossEntityContainer; import com.songoda.epicbosses.entity.BossEntity; +import com.songoda.epicbosses.entity.elements.EntityStatsElement; +import com.songoda.epicbosses.entity.elements.MainStatsElement; import com.songoda.epicbosses.file.BossesFileHandler; import com.songoda.epicbosses.utils.ILoadable; import com.songoda.epicbosses.utils.IReloadable; import com.songoda.epicbosses.utils.ISavable; +import com.songoda.epicbosses.utils.StringUtils; import java.io.File; import java.util.ArrayList; @@ -54,6 +57,15 @@ public class BossesFileManager implements ILoadable, ISavable, IReloadable { } public BossEntity getBossEntity(String name) { + for (Map.Entry entry : this.bossEntityContainer.getData().entrySet()) { + for (EntityStatsElement entityStatsElement : entry.getValue().getEntityStats()) { + MainStatsElement mainStatsElement = entityStatsElement.getMainStats(); + String customName = mainStatsElement.getDisplayName(); + System.out.println(name + " : " + StringUtils.get().translateColor(customName)); + if (StringUtils.get().translateColor(customName).equals(name)) + return entry.getValue(); + } + } return this.bossEntityContainer.getData().getOrDefault(name, null); } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/mechanics/boss/NameMechanic.java b/plugin-modules/Core/src/com/songoda/epicbosses/mechanics/boss/NameMechanic.java index 384f906..507156b 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/mechanics/boss/NameMechanic.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/mechanics/boss/NameMechanic.java @@ -10,6 +10,8 @@ import com.songoda.epicbosses.mechanics.IBossMechanic; import com.songoda.epicbosses.utils.StringUtils; import org.bukkit.entity.LivingEntity; +import java.util.Arrays; + /** * @author Charles Cullen * @version 1.0.0 @@ -29,7 +31,7 @@ public class NameMechanic implements IBossMechanic { if (livingEntity == null || customName == null) continue; String formattedName = StringUtils.get().translateColor(customName); - livingEntity.setCustomName(TextUtils.convertToInvisibleString("BOSS:" + activeBossHolder.getName() + ":") + formattedName); + livingEntity.setCustomName(TextUtils.convertToInvisibleString("BOSS:") + formattedName); livingEntity.setCustomNameVisible(true); } diff --git a/plugin-modules/Core/src/com/songoda/epicbosses/utils/StringUtils.java b/plugin-modules/Core/src/com/songoda/epicbosses/utils/StringUtils.java index ef13281..ca9c453 100644 --- a/plugin-modules/Core/src/com/songoda/epicbosses/utils/StringUtils.java +++ b/plugin-modules/Core/src/com/songoda/epicbosses/utils/StringUtils.java @@ -35,6 +35,16 @@ public class StringUtils { return messages; } + public String toNum(String s) { + StringBuilder t = new StringBuilder(); + for (int i = 0; i < s.length(); ++i) { + char ch = s.charAt(i); + int n = (int)ch - (int)'a' + 1; + t.append(n); + } + return t.toString(); + } + public String stripColor(String string) { return ChatColor.stripColor(string); }