Don't cache mob infomation in the updater task

This commit is contained in:
Shane Freeder 2019-12-31 12:16:12 +00:00
parent 601297799f
commit 8fd1af4cbf
No known key found for this signature in database
GPG Key ID: A3F61EA5A085289C
3 changed files with 13 additions and 10 deletions

View File

@ -1,5 +1,6 @@
Version 2.1.112
Correct locale usage for enum access, now enforces using the english locale to prevent issues with oddball locales for configs/commands
Don't cache names in mob health updater task, also; Don't schedule if the entity is already dead
Version 2.1.111
mcMMO is compatible with the following versions of MC: 1.15 / 1.14.4 / 1.14.3 / 1.14.2 / 1.14.1 / 1.14 / 1.13.2

View File

@ -6,23 +6,20 @@ import org.bukkit.scheduler.BukkitRunnable;
public class MobHealthDisplayUpdaterTask extends BukkitRunnable {
private LivingEntity target;
private String oldName;
private boolean oldNameVisible;
public MobHealthDisplayUpdaterTask(LivingEntity target) {
if (target.isValid()) {
this.target = target;
this.oldName = target.getMetadata(mcMMO.customNameKey).get(0).asString();
this.oldNameVisible = target.getMetadata(mcMMO.customVisibleKey).get(0).asBoolean();
}
this.target = target;
}
@Override
public void run() {
if (target != null && target.isValid()) {
target.setCustomNameVisible(oldNameVisible);
target.setCustomName(oldName);
if (target.hasMetadata(mcMMO.customNameKey)) {
target.setCustomName(target.getMetadata(mcMMO.customNameKey).get(0).asString());
target.removeMetadata(mcMMO.customNameKey, mcMMO.p);
}
if (target.hasMetadata(mcMMO.customVisibleKey)) {
target.setCustomNameVisible(target.getMetadata(mcMMO.customVisibleKey).get(0).asBoolean());
target.removeMetadata(mcMMO.customVisibleKey, mcMMO.p);
}
}

View File

@ -60,6 +60,11 @@ public final class MobHealthbarUtils {
return;
}
// Don't mangle invalid entities, they're not going to be rendered anyways
if (!target.isValid()) {
return;
}
boolean oldNameVisible = target.isCustomNameVisible();
String newName = createHealthDisplay(Config.getInstance().getMobHealthbarDefault(), target, damage);