From 9ed317f52b253e8d437334a5d79a5a9d022334f7 Mon Sep 17 00:00:00 2001
From: modmuss <modmuss50@gmail.com>
Date: Tue, 21 Jan 2025 18:47:31 +0000
Subject: [PATCH] Fix syncing block entity attachments on load. (#4390)

* Fix syncing block entity attachments on load.

Closes #4389

* Return success

(cherry picked from commit 7e31339eff701781b568ae44be51d863e4a49aa7)

(cherry picked from commit 8212661064040ba29dd15f0eb7fff2033208b8cd)
---
 .../fabric/mixin/attachment/AttachmentTargetsMixin.java   | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/AttachmentTargetsMixin.java b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/AttachmentTargetsMixin.java
index bdf2edda7..a11ee6787 100644
--- a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/AttachmentTargetsMixin.java
+++ b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/AttachmentTargetsMixin.java
@@ -28,6 +28,7 @@ import org.spongepowered.asm.mixin.Unique;
 import net.minecraft.block.entity.BlockEntity;
 import net.minecraft.entity.Entity;
 import net.minecraft.nbt.NbtCompound;
+import net.minecraft.registry.DynamicRegistryManager;
 import net.minecraft.registry.RegistryWrapper;
 import net.minecraft.server.network.ServerPlayerEntity;
 import net.minecraft.world.World;
@@ -100,7 +101,7 @@ abstract class AttachmentTargetsMixin implements AttachmentTargetImpl {
 		if (this.fabric_shouldTryToSync() && this.fabric_dataAttachments != null) {
 			this.fabric_dataAttachments.forEach((type, value) -> {
 				if (type.isSynced()) {
-					acknowledgeSynced(type, value);
+					acknowledgeSynced(type, value, wrapperLookup);
 				}
 			});
 		}
@@ -117,8 +118,9 @@ abstract class AttachmentTargetsMixin implements AttachmentTargetImpl {
 	}
 
 	@Unique
-	private void acknowledgeSynced(AttachmentType<?> type, Object value) {
-		acknowledgeSyncedEntry(type, AttachmentChange.create(fabric_getSyncTargetInfo(), type, value, fabric_getDynamicRegistryManager()));
+	private void acknowledgeSynced(AttachmentType<?> type, Object value, RegistryWrapper.WrapperLookup wrapperLookup) {
+		DynamicRegistryManager dynamicRegistryManager = (wrapperLookup instanceof DynamicRegistryManager drm) ? drm : fabric_getDynamicRegistryManager();
+		acknowledgeSyncedEntry(type, AttachmentChange.create(fabric_getSyncTargetInfo(), type, value, dynamicRegistryManager));
 	}
 
 	@Unique