From d57e1e35eeba8df9d8ab9bd2e86f0aa6230d1ef1 Mon Sep 17 00:00:00 2001 From: jurrejelle Date: Tue, 30 Jun 2026 10:04:55 +0200 Subject: [PATCH 1/3] Remove generic from IMappedRegistryAccess --- .../gtceu/core/IMappedRegistryAccess.java | 66 +------------------ .../core/mixins/MappedRegistryMixin.java | 59 +---------------- 2 files changed, 2 insertions(+), 123 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java b/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java index 92abc3bea5b..e37cf7442b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java +++ b/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java @@ -1,72 +1,8 @@ package com.gregtechceu.gtceu.core; -import net.minecraft.core.Holder; -import net.minecraft.core.RegistrationInfo; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; - -import it.unimi.dsi.fastutil.objects.ObjectList; -import it.unimi.dsi.fastutil.objects.Reference2IntMap; -import org.jetbrains.annotations.TestOnly; -import org.jetbrains.annotations.VisibleForTesting; - -import java.util.Map; - -public interface IMappedRegistryAccess { +public interface IMappedRegistryAccess { default boolean gtceu$isFrozen() { throw new AssertionError(); } - - default ObjectList> gtceu$getById() { - throw new AssertionError(); - } - - default Reference2IntMap gtceu$getToId() { - throw new AssertionError(); - } - - default Map> gtceu$getByLocation() { - throw new AssertionError(); - } - - default Map, Holder.Reference> gtceu$getByKey() { - throw new AssertionError(); - } - - default Map> gtceu$getByValue() { - throw new AssertionError(); - } - - default Map, RegistrationInfo> gtceu$getRegistrationInfos() { - throw new AssertionError(); - } - - /// FOR TESTING ONLY; THIS WILL FUCK UP THINGS IF THINGS ARE IN USE! - @TestOnly - @VisibleForTesting - default void gtceu$remove(ResourceKey key) { - if (this.gtceu$isFrozen()) { - throw new IllegalStateException("Cannot remove entry from a frozen registry: " + key); - } - - Holder.Reference ref = this.gtceu$getByKey().remove(key); - if (ref == null) { - return; // not present, nothing to remove - } - - this.gtceu$getByLocation().remove(key.location()); - - T value = ref.value(); - this.gtceu$getByValue().remove(value); - - int id = this.gtceu$getToId().removeInt(value); - ObjectList> byId = this.gtceu$getById(); - - if (id >= 0 && id < byId.size()) { - byId.set(id, null); - } - - this.gtceu$getRegistrationInfos().remove(key); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java index 065155b35fc..5c59f18b39f 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java @@ -2,80 +2,23 @@ import com.gregtechceu.gtceu.core.IMappedRegistryAccess; -import net.minecraft.core.Holder; import net.minecraft.core.MappedRegistry; -import net.minecraft.core.RegistrationInfo; import net.minecraft.core.WritableRegistry; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.registries.BaseMappedRegistry; -import it.unimi.dsi.fastutil.objects.ObjectList; -import it.unimi.dsi.fastutil.objects.Reference2IntMap; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import java.util.Map; - @SuppressWarnings("UnstableApiUsage") @Mixin(MappedRegistry.class) public abstract class MappedRegistryMixin extends BaseMappedRegistry - implements WritableRegistry, IMappedRegistryAccess { + implements WritableRegistry, IMappedRegistryAccess { @Shadow private boolean frozen; - @Shadow - @Final - private ObjectList> byId; - @Shadow - @Final - private Reference2IntMap toId; - @Shadow - @Final - private Map> byLocation; - @Shadow - @Final - private Map, Holder.Reference> byKey; - @Shadow - @Final - private Map> byValue; - @Shadow - @Final - private Map, RegistrationInfo> registrationInfos; @Override public boolean gtceu$isFrozen() { return this.frozen; } - - @Override - public ObjectList> gtceu$getById() { - return this.byId; - } - - @Override - public Reference2IntMap gtceu$getToId() { - return this.toId; - } - - @Override - public Map> gtceu$getByLocation() { - return this.byLocation; - } - - @Override - public Map, Holder.Reference> gtceu$getByKey() { - return this.byKey; - } - - @Override - public Map> gtceu$getByValue() { - return this.byValue; - } - - @Override - public Map, RegistrationInfo> gtceu$getRegistrationInfos() { - return this.registrationInfos; - } } From bbedd3a191357d135846a6317b5a55bc907ecbee Mon Sep 17 00:00:00 2001 From: jurrejelle Date: Tue, 30 Jun 2026 10:09:11 +0200 Subject: [PATCH 2/3] remove generic from injected interfaces --- injected_interfaces/interfaces.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/injected_interfaces/interfaces.json b/injected_interfaces/interfaces.json index 27bd8ebcfc0..7baed9559e2 100644 --- a/injected_interfaces/interfaces.json +++ b/injected_interfaces/interfaces.json @@ -1,6 +1,6 @@ { "net/minecraft/core/MappedRegistry": [ - "com/gregtechceu/gtceu/core/IMappedRegistryAccess" + "com/gregtechceu/gtceu/core/IMappedRegistryAccess" ], "net/minecraft/client/renderer/block/model/BakedQuad": [ "com/gregtechceu/gtceu/core/util/extensions/BakedQuadExt" From 7c3e37f3ad9ba6305721b2a8ddda3946369328c3 Mon Sep 17 00:00:00 2001 From: jurrejelle Date: Tue, 30 Jun 2026 10:19:22 +0200 Subject: [PATCH 3/3] Turn it into an accessor --- injected_interfaces/interfaces.json | 3 --- .../chemical/material/IMaterialRegistry.java | 4 ++-- .../material/registry/MaterialRegistry.java | 3 ++- .../gtceu/core/IMappedRegistryAccess.java | 8 ------- .../core/mixins/MappedRegistryAccessor.java | 13 ++++++++++ .../core/mixins/MappedRegistryMixin.java | 24 ------------------- src/main/resources/gtceu.mixins.json | 2 +- 7 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java create mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryAccessor.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java diff --git a/injected_interfaces/interfaces.json b/injected_interfaces/interfaces.json index 7baed9559e2..611ff67752d 100644 --- a/injected_interfaces/interfaces.json +++ b/injected_interfaces/interfaces.json @@ -1,7 +1,4 @@ { - "net/minecraft/core/MappedRegistry": [ - "com/gregtechceu/gtceu/core/IMappedRegistryAccess" - ], "net/minecraft/client/renderer/block/model/BakedQuad": [ "com/gregtechceu/gtceu/core/util/extensions/BakedQuadExt" ], diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java index 04e65b368ea..7aeb11eb3b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.core.IMappedRegistryAccess; +import com.gregtechceu.gtceu.core.mixins.MappedRegistryAccessor; import net.minecraft.resources.ResourceLocation; @@ -83,7 +83,7 @@ default Material getMaterial(String name) { /** * * @return {@code true} if this registry is frozen, {@code false} otherwise - * @see IMappedRegistryAccess#gtceu$isFrozen() + * @see MappedRegistryAccessor#isFrozen() */ boolean isFrozen(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java index 55c3eed85cb..2a55567e8d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistry; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.core.mixins.MappedRegistryAccessor; import net.minecraft.core.Holder; import net.minecraft.core.MappedRegistry; @@ -110,7 +111,7 @@ public Material getDefaultFallback() { @Override public boolean isFrozen() { - return this.gtceu$isFrozen(); + return ((MappedRegistryAccessor) (Object) this).isFrozen(); } public void close() { diff --git a/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java b/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java deleted file mode 100644 index e37cf7442b5..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/IMappedRegistryAccess.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.gregtechceu.gtceu.core; - -public interface IMappedRegistryAccess { - - default boolean gtceu$isFrozen() { - throw new AssertionError(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryAccessor.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryAccessor.java new file mode 100644 index 00000000000..0930af0b037 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryAccessor.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.core.mixins; + +import net.minecraft.core.MappedRegistry; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(MappedRegistry.class) +public interface MappedRegistryAccessor { + + @Accessor + boolean isFrozen(); +} diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java deleted file mode 100644 index 5c59f18b39f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/MappedRegistryMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.gregtechceu.gtceu.core.mixins; - -import com.gregtechceu.gtceu.core.IMappedRegistryAccess; - -import net.minecraft.core.MappedRegistry; -import net.minecraft.core.WritableRegistry; -import net.neoforged.neoforge.registries.BaseMappedRegistry; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -@SuppressWarnings("UnstableApiUsage") -@Mixin(MappedRegistry.class) -public abstract class MappedRegistryMixin extends BaseMappedRegistry - implements WritableRegistry, IMappedRegistryAccess { - - @Shadow - private boolean frozen; - - @Override - public boolean gtceu$isFrozen() { - return this.frozen; - } -} diff --git a/src/main/resources/gtceu.mixins.json b/src/main/resources/gtceu.mixins.json index 100c0862820..57d377b62a0 100644 --- a/src/main/resources/gtceu.mixins.json +++ b/src/main/resources/gtceu.mixins.json @@ -53,7 +53,7 @@ "LevelMixin", "LootPoolAccessor", "MapColorAccessor", - "MappedRegistryMixin", + "MappedRegistryAccessor", "OreConfigurationMixin", "OreVeinifierMixin", "PotionBrewingAccessor",