diff --git a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java index 05c6a28..45bd5c6 100644 --- a/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java +++ b/src/main/java/dev/rdh/sarcio/mixin/bugfix/world/WorldMixin.java @@ -1,16 +1,22 @@ package dev.rdh.sarcio.mixin.bugfix.world; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.LightType; import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import java.util.Collection; + @Mixin(World.class) public abstract class WorldMixin { @Shadow public abstract boolean isAreaLoaded(BlockPos center, int radius, boolean allowEmpty); @@ -30,4 +36,9 @@ public abstract class WorldMixin { private int setVariableRange(int original) { return this.sarcio$range; } + + @ModifyArg(method = "tickEntities", at = @At(value = "INVOKE", target = "Ljava/util/List;removeAll(Ljava/util/Collection;)Z")) + private Collection sarcio$hashRemovedBlockEntities(@NotNull Collection removed) { + return new ObjectOpenHashSet<>(removed); + } }