From 0d08dd97cd093a958367a44438e65f8c8873087d Mon Sep 17 00:00:00 2001 From: Isaiah <16439221+pisaiah@users.noreply.github.com> Date: Fri, 17 Jan 2025 03:57:44 -0500 Subject: [PATCH] 1.21.4 update --- .../isaiah/common/mixin/R1_21/MixinEntity.java | 11 +++++++++-- .../common/mixin/R1_21/MixinMobEntity.java | 17 +++++++++++------ .../common/mixin/R1_21/MixinWorld_18.java | 3 ++- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinEntity.java b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinEntity.java index cb29a86..543077b 100644 --- a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinEntity.java +++ b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinEntity.java @@ -24,6 +24,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.TeleportTarget; +import net.minecraft.world.World; @SupportedVersion({"1.17"}) @Mixin(Entity.class) @@ -31,6 +32,8 @@ public class MixinEntity implements IMixinEntity { @Override public void Iremove(IRemoveReason r) { + Entity thiz = ((Entity)(Object)this); + switch (r) { case DIMENSION_CHANGE: removeFromDimension(); @@ -39,7 +42,11 @@ public void Iremove(IRemoveReason r) { discard(); break; case KILLED: - kill(); + + World world = thiz.getWorld(); + if (world instanceof ServerWorld) { + kill( (ServerWorld) world ); + } break; default: ICommonMod.LOGGER.warn("Unknown RemoveReason: " + r.toString()); @@ -55,7 +62,7 @@ public IEntity getAsICommon() { return icommon; } - @Shadow public void kill() {} // Dimension change + @Shadow public void kill(ServerWorld world) {} // Dimension change @Shadow public void discard() {} // Discard @Shadow public void removeFromDimension() {} // Kill diff --git a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinMobEntity.java b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinMobEntity.java index dafa2ff..e9314a2 100644 --- a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinMobEntity.java +++ b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinMobEntity.java @@ -1,5 +1,7 @@ package me.isaiah.common.mixin.R1_21; +import java.util.Optional; + import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -16,12 +18,15 @@ public class MixinMobEntity implements IMixinMobEntity { // <=1.20.4: Lnet/minecraft/entity/mob/MobEntity;lootTable:Lnet/minecraft/util/Identifier; // >=1.20.5: Lnet/minecraft/entity/mob/MobEntity;lootTable:Lnet/minecraft/registry/RegistryKey; - @Shadow - public RegistryKey lootTable; + //@Shadow + //public RegistryKey lootTable; + @Shadow + public Optional> lootTable; // = Optional.empty(); + @Override public void IC$set_loot_table(Identifier id) { - this.lootTable = IC$identifier_to_table(id); + this.lootTable = Optional.of(IC$identifier_to_table(id)); } private RegistryKey IC$identifier_to_table(Identifier key) { @@ -32,10 +37,10 @@ public class MixinMobEntity implements IMixinMobEntity { public Identifier IC$get_loot_table_id() { MobEntity e = ((MobEntity) (Object) this); - if (lootTable == null) { - lootTable = e.getLootTableKey().get(); + if (lootTable == null || lootTable.isEmpty()) { + lootTable = Optional.of( e.getLootTableKey().get() ); } - return lootTable.getValue(); + return lootTable.get().getValue(); } } diff --git a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinWorld_18.java b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinWorld_18.java index 3546dfd..752b101 100644 --- a/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinWorld_18.java +++ b/iCommon-Fabric-1.21.4/src/main/java/me/isaiah/common/mixin/R1_21/MixinWorld_18.java @@ -45,7 +45,8 @@ public class MixinWorld_18 implements IMixinWorld { @SuppressWarnings("resource") @Inject(method = "", at = @At("TAIL")) - public void init(MutableWorldProperties a, RegistryKey b, DynamicRegistryManager rm, RegistryEntry registryEntry, Supplier profiler, boolean f, boolean g, long h, int i, CallbackInfo ci){ + public void init(MutableWorldProperties a, RegistryKey b, DynamicRegistryManager rm, RegistryEntry registryEntry, boolean f, boolean g, long h, int i, CallbackInfo ci){ + // public void init(MutableWorldProperties a, RegistryKey b, DynamicRegistryManager rm, RegistryEntry registryEntry, Supplier profiler, boolean f, boolean g, long h, int i, CallbackInfo ci){ // public void init(MutableWorldProperties a, RegistryKey b, RegistryEntry registryEntry, Supplier profiler, boolean f, boolean g, long h, int i, CallbackInfo ci){ // public void init(MutableWorldProperties a, RegistryKey b, DimensionType d, Supplier e, boolean f, boolean g, long h, CallbackInfo ci){ if (!((Object)this instanceof ServerWorld)) {