diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/SimpleRegistryMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/SimpleRegistryMixin.java
index d89a1db13..a5ba557f4 100644
--- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/SimpleRegistryMixin.java
+++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/SimpleRegistryMixin.java
@@ -185,8 +185,8 @@ public abstract class SimpleRegistryMixin<T> extends Registry<T> implements Rema
 		} else {
 			RegistryEntry.Reference<T> oldObject = idToEntry.get(registryId.getValue());
 
-			if (oldObject != null && oldObject != object) {
-				int oldId = entryToRawId.getInt(oldObject);
+			if (oldObject != null && oldObject.value() != null && oldObject.value() != object) {
+				int oldId = entryToRawId.getInt(oldObject.value());
 
 				if (oldId != id && checkDuplicateKeys) {
 					throw new RuntimeException("Attempted to register ID " + registryId + " at different raw IDs (" + oldId + ", " + id + ")! If you're trying to override an item, use .set(), not .register()!");