diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java index 41927ec9..38934dc3 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinEntity.java @@ -50,10 +50,16 @@ abstract class MixinEntity implements EntityDuck, Trackable { @Override public DataTrackerManager getDataTrackers() { - if (dataTrackerManager == null) { - dataTrackerManager = new DataTrackerManager((Entity)(Object)this); + synchronized (this) { + if (dataTrackerManager == null) { + dataTrackerManager = new DataTrackerManager((Entity)(Object)this); + // ensure lazy registration happens + if (this instanceof Equine.Container eq) { + eq.get(); + } + } + return dataTrackerManager; } - return dataTrackerManager; } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java index 45bfa819..aafd1d35 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinLivingEntity.java @@ -52,10 +52,12 @@ abstract class MixinLivingEntity extends Entity implements LivingEntityDuck, Equ @Override public Living get() { - if (caster == null) { - caster = create(); + synchronized (this) { + if (caster == null) { + caster = create(); + } + return (Living)caster; } - return (Living)caster; } @Override