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
3 changed files with 13 additions and 10 deletions

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);