diff --git a/CHANGELOG.md b/CHANGELOG.md index 2afd5213..766d9ea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ hi - Updated Polish translations slightly, thanks to Eggmanplant! ([#4](https://github.com/FrozenBlock/TrailierTales/pull/4)) #### Bugfixes +- Fixed a critical issue with mobs suddenly vanishing. - Fixed a vanilla bug where Powered Rails, Activator Rails, and Detector Rails wouldn't rotate properly in structure generation. - Cracked and Chiseled Purpur Blocks can now be broken faster with a pickaxe. ([#10](https://github.com/FrozenBlock/TrailierTales/issues/10)) - Fixed an issue where modded boats that aren't implemented the same way as vanilla cause a crash. ([#9](https://github.com/FrozenBlock/TrailierTales/issues/9)) diff --git a/src/main/java/net/frozenblock/trailiertales/block/entity/coffin/impl/EntityCoffinData.java b/src/main/java/net/frozenblock/trailiertales/block/entity/coffin/impl/EntityCoffinData.java index 0d49b943..04d804a2 100644 --- a/src/main/java/net/frozenblock/trailiertales/block/entity/coffin/impl/EntityCoffinData.java +++ b/src/main/java/net/frozenblock/trailiertales/block/entity/coffin/impl/EntityCoffinData.java @@ -13,6 +13,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.VisibleForDebug; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; @@ -39,6 +40,10 @@ public UUID getCoffinUUID() { return this.coffinUUID; } + public static boolean entityHasCoffinData(@NotNull Entity entity) { + return entity instanceof EntityCoffinInterface entityCoffinInterface && entityCoffinInterface.trailierTales$getCoffinData() != null; + } + public void tick(LivingEntity entity, @NotNull Level level) { if (level instanceof ServerLevel serverLevel) { long gameTime = level.getGameTime(); diff --git a/src/main/java/net/frozenblock/trailiertales/mixin/common/coffin/EntityMixin.java b/src/main/java/net/frozenblock/trailiertales/mixin/common/coffin/EntityMixin.java index fd20dd25..f6bcbf0b 100644 --- a/src/main/java/net/frozenblock/trailiertales/mixin/common/coffin/EntityMixin.java +++ b/src/main/java/net/frozenblock/trailiertales/mixin/common/coffin/EntityMixin.java @@ -1,7 +1,7 @@ package net.frozenblock.trailiertales.mixin.common.coffin; import net.frozenblock.trailiertales.block.CoffinBlock; -import net.frozenblock.trailiertales.block.entity.coffin.impl.EntityCoffinInterface; +import net.frozenblock.trailiertales.block.entity.coffin.impl.EntityCoffinData; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.portal.DimensionTransition; import org.spongepowered.asm.mixin.Mixin; @@ -14,15 +14,15 @@ public class EntityMixin { @Inject(method = "changeDimension", at = @At("HEAD")) public void trailierTales$changeDimension(DimensionTransition dimensionTransition, CallbackInfoReturnable info) { - CoffinBlock.onCoffinUntrack(Entity.class.cast(this), null, true); + if (EntityCoffinData.entityHasCoffinData(Entity.class.cast(this))) { + CoffinBlock.onCoffinUntrack(Entity.class.cast(this), null, true); + } } @Inject(method = "canUsePortal", at = @At("HEAD"), cancellable = true) public void trailierTales$canUsePortal(CallbackInfoReturnable info) { - if (Entity.class.cast(this) instanceof EntityCoffinInterface entityCoffinInterface) { - if (entityCoffinInterface.trailierTales$getCoffinData() != null) { - info.setReturnValue(false); - } + if (EntityCoffinData.entityHasCoffinData(Entity.class.cast(this))) { + info.setReturnValue(false); } }