From c8716e72b3fb9a0e7c79138d0e046dd7c4ba5cc9 Mon Sep 17 00:00:00 2001 From: "yrsegal@gmail.com" Date: Tue, 3 Oct 2023 15:53:16 -0400 Subject: [PATCH] reroll bees if necessary --- .../quark/mixin/BeehiveBlockEntityMixin.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/vazkii/quark/mixin/BeehiveBlockEntityMixin.java b/src/main/java/vazkii/quark/mixin/BeehiveBlockEntityMixin.java index fdc4ed33eb..a90049c8c6 100644 --- a/src/main/java/vazkii/quark/mixin/BeehiveBlockEntityMixin.java +++ b/src/main/java/vazkii/quark/mixin/BeehiveBlockEntityMixin.java @@ -2,9 +2,14 @@ import com.llamalad7.mixinextras.injector.WrapWithCondition; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.animal.Bee; import net.minecraft.world.level.block.entity.BeehiveBlockEntity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = BeehiveBlockEntity.class) public class BeehiveBlockEntityMixin { @@ -14,4 +19,13 @@ private static boolean doNotRemoveUUIDOfBees(CompoundTag instance, String key) { return !key.equals("UUID"); } + + @Inject(method = "setBeeReleaseData", at = @At("HEAD")) + private static void rerollUUIDIfNeeded(int ticksInHive, Bee bee, CallbackInfo ci) { + if (bee.level instanceof ServerLevel level) { + if (level.getEntities().get(bee.getUUID()) != null) + bee.setUUID(Mth.createInsecureUUID(level.random)); + } + } + }