diff --git a/build.gradle b/build.gradle index bc321c0c2..3db2bef34 100644 --- a/build.gradle +++ b/build.gradle @@ -18,8 +18,8 @@ plugins { def ENV = System.getenv() class Globals { - static def baseVersion = "0.16.0" - static def mcVersion = "20w30a" + static def baseVersion = "0.16.1" + static def mcVersion = "1.16.2-pre1" static def yarnVersion = "+build.1" } diff --git a/fabric-registry-sync-v0/build.gradle b/fabric-registry-sync-v0/build.gradle index 451d62407..40bc2a295 100644 --- a/fabric-registry-sync-v0/build.gradle +++ b/fabric-registry-sync-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-registry-sync-v0" -version = getSubprojectVersion(project, "0.3.10") +version = getSubprojectVersion(project, "0.4.0") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java index 8147367d6..53bdce0c9 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MixinIdRegistry.java @@ -31,8 +31,10 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import it.unimi.dsi.fastutil.objects.ObjectList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -41,7 +43,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.Int2ObjectBiMap; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.SimpleRegistry; import net.minecraft.util.registry.RegistryKey; @@ -59,11 +60,17 @@ import net.fabricmc.fabric.impl.registry.sync.RemappableRegistry; @Mixin(SimpleRegistry.class) public abstract class MixinIdRegistry<T> implements RemappableRegistry, ListenableRegistry { @Shadow - protected Int2ObjectBiMap<T> indexedEntries; + @Final + private ObjectList<T> field_26682; @Shadow - protected BiMap<Identifier, T> entriesById; + @Final + private Object2IntMap<T> field_26683; @Shadow - protected BiMap<RegistryKey<T>, T> entriesByKey; + @Final + private BiMap<Identifier, T> entriesById; + @Shadow + @Final + private BiMap<RegistryKey<T>, T> entriesByKey; @Shadow private int nextId; @Unique @@ -129,7 +136,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab @SuppressWarnings({"unchecked", "ConstantConditions"}) @Inject(method = "set", at = @At("HEAD")) public void setPre(int id, RegistryKey<T> registryId, Object object, CallbackInfoReturnable info) { - int indexedEntriesId = indexedEntries.getRawId((T) object); + int indexedEntriesId = field_26683.getInt((T) object); if (indexedEntriesId >= 0) { throw new RuntimeException("Attempted to register object " + object + " twice! (at raw IDs " + indexedEntriesId + " and " + id + " )"); @@ -141,7 +148,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab T oldObject = entriesById.get(registryId.getValue()); if (oldObject != null && oldObject != object) { - int oldId = indexedEntries.getRawId(oldObject); + int oldId = field_26683.getInt(oldObject); if (oldId != id) { 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()!"); @@ -298,7 +305,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab Int2IntMap idMap = new Int2IntOpenHashMap(); - for (Object o : indexedEntries) { + for (Object o : field_26682) { Identifier id = registry.getId(o); int rid = registry.getRawId(o); @@ -309,7 +316,8 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab } // entries was handled above, if it was necessary. - indexedEntries.clear(); + field_26682.clear(); + field_26683.clear(); nextId = 0; List<Identifier> orderedRemoteEntries = new ArrayList<>(remoteIndexedEntries.keySet()); @@ -333,7 +341,8 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab } // Add the new object, increment nextId to match. - indexedEntries.put(object, id); + field_26682.set(id, object); + field_26683.put(object, id); if (nextId <= id) { nextId = id + 1; @@ -370,7 +379,7 @@ public abstract class MixinIdRegistry<T> implements RemappableRegistry, Listenab remap(name, fabric_prevIndexedEntries, RemapMode.AUTHORITATIVE); for (Identifier id : addedIds) { - fabric_getAddObjectEvent().invoker().onEntryAdded(indexedEntries.getRawId(entriesById.get(id)), id, entriesById.get(id)); + fabric_getAddObjectEvent().invoker().onEntryAdded(field_26683.getInt(entriesById.get(id)), id, entriesById.get(id)); } fabric_prevIndexedEntries = null;