From e3f1bdf0f71ae3112acb1d76a24eea3621377fe0 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 15:21:25 +1000 Subject: [PATCH 1/9] refactor some registrate stuff --- .../material/registry/MaterialRegistry.java | 12 --- .../api/registry/registrate/GTRegistrate.java | 87 ++++++++++++++++--- .../gregtechceu/gtceu/common/CommonProxy.java | 9 +- .../gtceu/common/data/GTFluids.java | 2 +- .../gtceu/common/data/GTMaterialBlocks.java | 12 +-- .../gtceu/common/data/GTMaterialItems.java | 7 +- 6 files changed, 89 insertions(+), 40 deletions(-) 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 25e4d6a59d8..1c3a43bf169 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 @@ -1,30 +1,18 @@ package com.gregtechceu.gtceu.api.data.chemical.material.registry; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.addon.AddonFinder; -import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.registry.GTRegistry; -import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.common.registry.GTRegistration; import net.minecraft.resources.ResourceLocation; -import lombok.Getter; import org.jetbrains.annotations.NotNull; import java.util.Collection; public abstract class MaterialRegistry extends GTRegistry.String { - @Getter - private final GTRegistrate registrate; - public MaterialRegistry(java.lang.String modId) { super(new ResourceLocation(modId, "material")); - IGTAddon addon = AddonFinder.getAddon(modId); - this.registrate = addon != null ? addon.getRegistrate() : - GTCEu.MOD_ID.equals(modId) ? GTRegistration.REGISTRATE : GTRegistrate.create(modId); } public abstract void register(Material material); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 251bc5b670c..3a096c41368 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; @@ -25,8 +26,10 @@ import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.javafmlmod.FMLModContainer; import net.minecraftforge.registries.RegisterEvent; import net.minecraftforge.registries.RegistryObject; @@ -40,11 +43,12 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; -import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.IdentityHashMap; import java.util.Map; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; import java.util.function.Consumer; @@ -57,27 +61,83 @@ @MethodsReturnNonnullByDefault public class GTRegistrate extends AbstractRegistrate { + private static final Map EXISTING_REGISTRATES = new Object2ObjectOpenHashMap<>(); + private final AtomicBoolean registered = new AtomicBoolean(false); protected GTRegistrate(String modId) { super(modId); } - public static IGTFluidBuilder fluid(GTRegistrate parent, Material material, String name, String langKey, - ResourceLocation stillTexture, ResourceLocation flowingTexture) { - return parent.entry(name, - callback -> new GTFluidBuilder<>(parent, parent, material, name, langKey, callback, stillTexture, - flowingTexture, GTFluidBuilder::defaultFluidType).defaultLang().defaultSource() - .setData(ProviderType.LANG, NonNullBiConsumer.noop())); + public ResourceLocation makeResourceLocation(String path) { + return new ResourceLocation(this.getModid(), path); } - @NotNull + /** + * Get or create a new {@link GTRegistrate} and register event listeners for registration and data generation. + * A new {@code GTRegistrate} instance is only made if one doesn't already exist in the cache. + * + * @param modId The mod ID for which objects will be registered + * @return The {@link GTRegistrate} instance + */ public static GTRegistrate create(String modId) { - return new GTRegistrate(modId); + return create(modId, true); + } + + /** + * Get or create a new {@link GTRegistrate} and conditionally register event listeners. + * A new {@code GTRegistrate} instance is only made if one doesn't already exist in the cache. + *
+ * Note that if you do not allow event listeners to be registered automatically, you must + * call {@link #registerEventListeners(IEventBus)} yourself with your {@link IEventBus mod event bus}. + * + * @param modId The mod ID for which objects will be registered + * @param registerEvents Whether to register required event listeners. + * @return The {@link GTRegistrate} instance + */ + public static GTRegistrate create(String modId, boolean registerEvents) { + return innerCreate(modId, false, registerEvents); + } + + /** + * Get or create a new {@link GTRegistrate} and register event listeners for registration and data generation. + * A new {@code GTRegistrate} instance is only made if one doesn't already exist in the cache. + *
+ * Completely skips all mod id validity messages and defaults to GT's bus instead. ADDON DEVS DO NOT USE. + * + * @param modId The mod ID for which objects will be registered + * @return The {@link GTRegistrate} instance + */ + @ApiStatus.Internal + public static GTRegistrate createIgnoringListenerErrors(String modId) { + return innerCreate(modId, true, false); } - public void registerRegistrate() { - registerEventListeners(FMLJavaModLoadingContext.get().getModEventBus()); + private static GTRegistrate innerCreate(String modId, boolean registerEvents, boolean requireValidEventBus) { + if (EXISTING_REGISTRATES.containsKey(modId)) { + return EXISTING_REGISTRATES.get(modId); + } + var registrate = new GTRegistrate(modId); + if (registerEvents) { + Optional modEventBus = ModList.get().getModContainerById(modId) + .filter(FMLModContainer.class::isInstance) + .map(FMLModContainer.class::cast) + .map(FMLModContainer::getEventBus); + if (requireValidEventBus) { + modEventBus.ifPresentOrElse(registrate::registerEventListeners, () -> { + String message = "# [GTRegistrate] Failed to register eventListeners for mod " + modId + + ", This should be reported to this mod's dev #"; + String hashtags = "#".repeat(message.length()); + GTCEu.LOGGER.fatal(hashtags); + GTCEu.LOGGER.fatal(message); + GTCEu.LOGGER.fatal(hashtags); + }); + } else { + registrate.registerEventListeners(modEventBus.orElse(FMLJavaModLoadingContext.get().getModEventBus())); + } + } + EXISTING_REGISTRATES.put(modId, registrate); + return registrate; } @Override @@ -116,7 +176,10 @@ protected

NoConfigBuilder createCreativ public IGTFluidBuilder createFluid(String name, String langKey, Material material, ResourceLocation stillTexture, ResourceLocation flowingTexture) { - return fluid(this, material, name, langKey, stillTexture, flowingTexture); + return entry(name, + callback -> new GTFluidBuilder<>(this, this, material, name, langKey, callback, stillTexture, + flowingTexture, GTFluidBuilder::defaultFluidType).defaultLang().defaultSource() + .setData(ProviderType.LANG, NonNullBiConsumer.noop())); } public MachineBuilder machine(String name, diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index ccd0d830521..e572dbed238 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -25,6 +25,7 @@ import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.fluid.*; import com.gregtechceu.gtceu.api.recipe.lookup.ingredient.item.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.GTPlaceholders; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; @@ -33,7 +34,6 @@ import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.network.GTNetwork; -import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; @@ -158,13 +158,12 @@ public static void init() { WaypointManager.init(); AddonFinder.getAddons().forEach(IGTAddon::initializeAddon); - GTRegistration.REGISTRATE.registerRegistrate(); - GregTechDatagen.initPost(); // Register all material manager registries, for materials with mod ids. GTCEuAPI.materialManager.getRegistries().forEach(registry -> { // Force the material lang generator to be at index 0, so that addons' lang generators can override it. - AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registry.getRegistrate(); + var registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); + AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registrate; if (accessor.getDoDatagen().get()) { // noinspection UnstableApiUsage List> providers = Multimaps.asMap(accessor.getDatagens()) @@ -178,7 +177,7 @@ public static void init() { } } - registry.getRegistrate() + registrate .registerEventListeners(ModList.get().getModContainerById(registry.getModid()) .filter(FMLModContainer.class::isInstance) .map(FMLModContainer.class::cast) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index db7b5d1a282..ca960480083 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -41,7 +41,7 @@ public static void init() { // register fluids for materials REGISTRATE.creativeModeTab(() -> GTCreativeModeTabs.MATERIAL_FLUID); for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (var material : registry.getAllMaterials()) { var fluidProperty = material.getProperty(PropertyKey.FLUID); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 7600b448de6..028bec15b37 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -60,7 +60,7 @@ public static void generateMaterialBlocks() { for (TagPrefix tagPrefix : TagPrefix.values()) { if (!TagPrefix.ORES.containsKey(tagPrefix) && tagPrefix.doGenerateBlock()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (tagPrefix.doGenerateBlock(material)) { registerMaterialBlock(tagPrefix, material, registrate); @@ -95,7 +95,7 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material public static void generateOreBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks..."); for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (allowOreBlock(material)) { registerOreBlock(material, registrate); @@ -146,7 +146,7 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) public static void generateOreIndicators() { GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks..."); for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (allowOreIndicator(material)) { registerOreIndicator(material, registrate); @@ -185,7 +185,7 @@ public static void generateCableBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Cable/Wire Blocks..."); for (Insulation insulation : Insulation.values()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (allowCableBlock(material, insulation)) { registerCableBlock(material, insulation, registrate); @@ -228,7 +228,7 @@ public static void generateFluidPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks..."); for (var fluidPipeType : FluidPipeType.values()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (allowFluidPipeBlock(material, fluidPipeType)) { registerFluidPipeBlock(material, fluidPipeType, registrate); @@ -276,7 +276,7 @@ public static void generateItemPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Item Pipe Blocks..."); for (var itemPipeType : ItemPipeType.values()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (allowItemPipeBlock(material, itemPipeType)) { registerItemPipeBlock(material, itemPipeType, registrate); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 64f9ceb1bd7..998b4e95c17 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -72,7 +72,7 @@ public static void generateMaterialItems() { for (var tagPrefix : TagPrefix.values()) { if (tagPrefix.doGenerateItem()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (tagPrefix.doGenerateItem(material)) { generateMaterialItem(tagPrefix, material, registrate); @@ -104,7 +104,7 @@ public static void generateTools() { REGISTRATE.creativeModeTab(() -> TOOL); for (GTToolType toolType : GTToolType.getTypes().values()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); + GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); for (Material material : registry.getAllMaterials()) { if (material.hasProperty(PropertyKey.TOOL)) { var property = material.getProperty(PropertyKey.TOOL); @@ -136,10 +136,9 @@ public static void generateArmors() { REGISTRATE.creativeModeTab(() -> TOOL); for (ArmorItem.Type type : ArmorItem.Type.values()) { for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = registry.getRegistrate(); for (Material material : registry.getAllMaterials()) { if (material.hasProperty(PropertyKey.ARMOR)) { - generateArmor(material, type, registrate); + generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(registry.getModid())); } } } From ac0a3d7da14ee47e898b48047d2f372acf51de88 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 19:21:59 +1000 Subject: [PATCH 2/9] remove material registry impl class --- .../gregtechceu/gtceu/api/addon/IGTAddon.java | 9 --- .../material/event/MaterialRegistryEvent.java | 20 ----- .../material/registry/MaterialRegistry.java | 75 ++++++++++++------ .../gtceu/api/registry/GTRegistries.java | 2 + .../gregtechceu/gtceu/common/CommonProxy.java | 4 - .../material/MaterialRegistryImpl.java | 79 ------------------- .../material/MaterialRegistryManager.java | 18 ++--- 7 files changed, 62 insertions(+), 145 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/event/MaterialRegistryEvent.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryImpl.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java b/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java index 7aa4eb45714..c7d6a23213c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java +++ b/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java @@ -42,15 +42,6 @@ default void registerTagPrefixes() {} */ default void registerElements() {} - /** - * Call init on your custom Material class(es) here - * - * @deprecated use {@link com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent} and - * {@link com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent} instead. - */ - @Deprecated(forRemoval = true, since = "1.0.21") - default void registerMaterials() {} - /** * Call init on your custom Sound class(es) here */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/event/MaterialRegistryEvent.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/event/MaterialRegistryEvent.java deleted file mode 100644 index 4749df8e1a5..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/event/MaterialRegistryEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gregtechceu.gtceu.api.data.chemical.material.event; - -import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistryManager; - -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.fml.event.IModBusEvent; - -/** - * Event to add a material registry in. - *
- * Material events are fired on the MOD bus as the forge bus isn't active until all mods have loaded. - * - * @see IMaterialRegistryManager#createRegistry(String) - */ -public class MaterialRegistryEvent extends Event implements IModBusEvent { - - public MaterialRegistryEvent() { - super(); - } -} 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 1c3a43bf169..9f1aeeadc21 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 @@ -1,46 +1,73 @@ package com.gregtechceu.gtceu.api.data.chemical.material.registry; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.registry.GTRegistry; +import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; +import lombok.Getter; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.NotNull; import java.util.Collection; -public abstract class MaterialRegistry extends GTRegistry.String { +public class MaterialRegistry extends GTRegistry.String { + + private static int networkIdCounter; + @Getter + private final int networkId = networkIdCounter++; + private final java.lang.String modid; + + private boolean isRegistryClosed = false; + @NotNull + private Material fallbackMaterial = GTMaterials.NULL; public MaterialRegistry(java.lang.String modId) { super(new ResourceLocation(modId, "material")); + this.modid = modId; + } + + public void register(Material material) { + this.register(material.getName(), material); } - public abstract void register(Material material); + @Override + public T register(@NotNull java.lang.String key, @NotNull T value) { + if (isRegistryClosed) { + GTCEu.LOGGER.error( + "Materials cannot be registered in the PostMaterialEvent (or after)! Must be added in the MaterialEvent. Skipping material {}...", + key); + return null; + } + super.register(key, value); + return value; + } @NotNull - public abstract Collection getAllMaterials(); - - /** - * Set the fallback material for this registry. - * This is only for manual fallback usage. - * - * @param material the fallback material - */ - public abstract void setFallbackMaterial(@NotNull Material material); - - /** - * This is only for manual fallback usage. - * - * @return the fallback material, used for when another material does not exist - */ - @NotNull - public abstract Material getFallbackMaterial(); + public Collection getAllMaterials() { + return values(); + } - /** - * @return the network ID for this registry - */ - public abstract int getNetworkId(); + public void setFallbackMaterial(@NotNull Material material) { + this.fallbackMaterial = material; + } + + @NotNull + public Material getFallbackMaterial() { + if (this.fallbackMaterial.isNull()) { + this.fallbackMaterial = MaterialRegistryManager.getInstance().getDefaultFallback(); + } + return this.fallbackMaterial; + } @NotNull - public abstract java.lang.String getModid(); + public java.lang.String getModid() { + return modid; + } + + public void closeRegistry() { + this.isRegistryClosed = true; + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index a42b600a203..d3fca5b2d40 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -44,6 +44,8 @@ public final class GTRegistries { // GT Registry + + public static final GTRegistry.String ELEMENTS = new GTRegistry.String<>(GTCEu.id("element")); public static final GTRegistry.RL RECIPE_TYPES = new GTRegistry.RL<>(GTCEu.id("recipe_type")); diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index e572dbed238..325390a0715 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -8,7 +8,6 @@ import com.gregtechceu.gtceu.api.capability.GTCapability; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent; -import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; @@ -205,9 +204,6 @@ private static void initMaterials() { // First, register other mods' Registries MaterialRegistryManager managerInternal = (MaterialRegistryManager) GTCEuAPI.materialManager; - GTCEu.LOGGER.info("Registering material registries"); - ModLoader.get().postEvent(new MaterialRegistryEvent()); - // First, register CEu Materials managerInternal.unfreezeRegistries(); GTCEu.LOGGER.info("Registering GTCEu Materials"); diff --git a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryImpl.java b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryImpl.java deleted file mode 100644 index 97caae9df6a..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.gregtechceu.gtceu.common.unification.material; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; -import com.gregtechceu.gtceu.common.data.GTMaterials; - -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public class MaterialRegistryImpl extends MaterialRegistry { - - private static int networkIdCounter; - - private final int networkId = networkIdCounter++; - private final java.lang.String modid; - - private boolean isRegistryClosed = false; - @NotNull - private Material fallbackMaterial = GTMaterials.NULL; - - protected MaterialRegistryImpl(@NotNull java.lang.String modid) { - super(modid); - this.modid = modid; - } - - @Override - public void register(Material material) { - this.register(material.getName(), material); - } - - @Override - public T register(@NotNull java.lang.String key, @NotNull T value) { - if (isRegistryClosed) { - GTCEu.LOGGER.error( - "Materials cannot be registered in the PostMaterialEvent (or after)! Must be added in the MaterialEvent. Skipping material {}...", - key); - return null; - } - super.register(key, value); - return value; - } - - @NotNull - @Override - public Collection getAllMaterials() { - return this.values(); - } - - @Override - public void setFallbackMaterial(@NotNull Material material) { - this.fallbackMaterial = material; - } - - @NotNull - @Override - public Material getFallbackMaterial() { - if (this.fallbackMaterial.isNull()) { - this.fallbackMaterial = MaterialRegistryManager.getInstance().getDefaultFallback(); - } - return this.fallbackMaterial; - } - - @Override - public int getNetworkId() { - return this.networkId; - } - - @NotNull - @Override - public java.lang.String getModid() { - return this.modid; - } - - public void closeRegistry() { - this.isRegistryClosed = true; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java index 88836ecc457..aba82b95e86 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java +++ b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java @@ -24,13 +24,13 @@ public final class MaterialRegistryManager implements IMaterialRegistryManager { private static MaterialRegistryManager INSTANCE; - private final Object2ObjectMap registries = new Object2ObjectOpenHashMap<>(); - private final Int2ObjectMap networkIds = new Int2ObjectOpenHashMap<>(); + private final Object2ObjectMap registries = new Object2ObjectOpenHashMap<>(); + private final Int2ObjectMap networkIds = new Int2ObjectOpenHashMap<>(); @Nullable private Collection registeredMaterials; - private final MaterialRegistryImpl gregtechRegistry = createInternalRegistry(); + private final MaterialRegistry gregtechRegistry = createInternalRegistry(); private Phase registrationPhase = Phase.PRE; @@ -52,7 +52,7 @@ public MaterialRegistry createRegistry(@NotNull String modid) { Preconditions.checkArgument(!registries.containsKey(modid), "Material registry already exists for modid %s", modid); - MaterialRegistryImpl registry = new MaterialRegistryImpl(modid); + MaterialRegistry registry = new MaterialRegistry(modid); registries.put(modid, registry); networkIds.put(registry.getNetworkId(), registry); return registry; @@ -126,12 +126,12 @@ public Phase getPhase() { } public void unfreezeRegistries() { - registries.values().forEach(MaterialRegistryImpl::unfreeze); + registries.values().forEach(MaterialRegistry::unfreeze); registrationPhase = Phase.OPEN; } public void closeRegistries() { - registries.values().forEach(MaterialRegistryImpl::closeRegistry); + registries.values().forEach(MaterialRegistry::closeRegistry); Collection collection = new ArrayList<>(); for (MaterialRegistry registry : registries.values()) { collection.addAll(registry.getAllMaterials()); @@ -141,13 +141,13 @@ public void closeRegistries() { } public void freezeRegistries() { - registries.values().forEach(MaterialRegistryImpl::freeze); + registries.values().forEach(MaterialRegistry::freeze); registrationPhase = Phase.FROZEN; } @NotNull - private MaterialRegistryImpl createInternalRegistry() { - MaterialRegistryImpl registry = new MaterialRegistryImpl(GTCEu.MOD_ID); + private MaterialRegistry createInternalRegistry() { + MaterialRegistry registry = new MaterialRegistry(GTCEu.MOD_ID); this.registries.put(GTCEu.MOD_ID, registry); return registry; } From 4234b3de744e2e20b39387e64e51dc71fd5d83fc Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 19:31:00 +1000 Subject: [PATCH 3/9] switch material registry to RL registry --- .../material/IMaterialRegistryManager.java | 2 +- .../api/data/chemical/material/Material.java | 2 +- .../material/registry/MaterialRegistry.java | 6 +++--- .../gtceu/api/gui/misc/ProspectorMode.java | 2 +- .../gtceu/common/CommonEventListener.java | 6 +++--- .../commands/arguments/MaterialParser.java | 2 +- .../material/MaterialRegistryManager.java | 16 ++++++---------- .../gtceu/integration/kjs/GTRegistryInfo.java | 2 +- 8 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java index b5a55466bac..015b7a6f369 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java @@ -97,7 +97,7 @@ default boolean canModifyMaterials() { default Codec codec() { return ResourceLocation.CODEC .flatXmap( - id -> Optional.ofNullable(this.getRegistry(id.getNamespace()).get(id.getPath())) + id -> Optional.ofNullable(this.getRegistry(id.getNamespace()).get(id)) .map(DataResult::success) .orElseGet(() -> DataResult .error(() -> "Unknown registry key in material registry: " + id)), diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 063d6addcb3..b3985163139 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -1875,7 +1875,7 @@ public Material buildAndRegister() { @Override @HideFromJS - public Material register() { + public @NotNull Material register() { return value = buildAndRegister(); } } 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 9f1aeeadc21..4ef1a2b1391 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 @@ -13,7 +13,7 @@ import java.util.Collection; -public class MaterialRegistry extends GTRegistry.String { +public class MaterialRegistry extends GTRegistry.RL { private static int networkIdCounter; @Getter @@ -30,11 +30,11 @@ public MaterialRegistry(java.lang.String modId) { } public void register(Material material) { - this.register(material.getName(), material); + this.register(material.getResourceLocation(), material); } @Override - public T register(@NotNull java.lang.String key, @NotNull T value) { + public T register(@NotNull ResourceLocation key, @NotNull T value) { if (isRegistryClosed) { GTCEu.LOGGER.error( "Materials cannot be registered in the PostMaterialEvent (or after)! Must be added in the MaterialEvent. Skipping material {}...", diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index 0a00d5a9c19..ce3d42097f5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -340,7 +340,7 @@ public void serialize(OreInfo item, FriendlyByteBuf buf) { public OreInfo deserialize(FriendlyByteBuf buf) { ResourceLocation materialId = buf.readResourceLocation(); return new OreInfo( - GTCEuAPI.materialManager.getRegistry(materialId.getNamespace()).get(materialId.getPath()), + GTCEuAPI.materialManager.getRegistry(materialId.getNamespace()).get(materialId), buf.readVarInt(), buf.readVarInt(), buf.readVarInt()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index aa13751d7bd..97e2159fda1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -720,7 +720,7 @@ public static void remapIds(MissingMappingsEvent event) { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); + GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); if (block != null && block.isPresent()) { mapping.remap(block.get()); } @@ -730,12 +730,12 @@ public static void remapIds(MissingMappingsEvent event) { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); + GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); if (block != null && block.isPresent()) { mapping.remap(block.asItem()); } else { ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(matcher.group(1))); + GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); if (item != null && item.isPresent()) { mapping.remap(item.asItem()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java index 1fd78749b78..97fa622a273 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java @@ -72,7 +72,7 @@ private void readMaterial() throws CommandSyntaxException { int i = this.reader.getCursor(); ResourceLocation id = ResourceLocation.read(this.reader); - Material material = this.materials.getRegistry(id.getNamespace()).get(id.getPath()); + Material material = this.materials.getRegistry(id.getNamespace()).get(id); if (material == null || material.isNull()) { this.reader.setCursor(i); throw ERROR_UNKNOWN_ITEM.createWithContext(this.reader, id); diff --git a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java index aba82b95e86..dedb4ba6710 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java +++ b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java @@ -94,24 +94,20 @@ public Collection getRegisteredMaterials() { @Override public Material getMaterial(@NotNull String name) { if (!name.isEmpty()) { - String modid; - String materialName; - int index = name.indexOf(':'); - if (index >= 0) { - modid = name.substring(0, index); - materialName = name.substring(index + 1); + if (name.contains(":")) { + ResourceLocation resLoc = ResourceLocation.tryParse(name); + if (resLoc == null) return GTMaterials.NULL; + return getRegistry(resLoc.getNamespace()).get(resLoc); } else { - modid = GTCEu.MOD_ID; - materialName = name; + return getRegistry(GTCEu.MOD_ID).get(GTCEu.id(name)); } - return getRegistry(modid).get(materialName); } return GTMaterials.NULL; } @Override public Material getMaterial(ResourceLocation resourceLocation) { - return getRegistry(resourceLocation.getNamespace()).get(resourceLocation.getPath()); + return getRegistry(resourceLocation.getNamespace()).get(resourceLocation); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java index 1b9310443f2..7f74a9c6f2c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java @@ -48,7 +48,7 @@ public record BuilderType(String type, Class> ALL_BUILDERS = new ArrayList<>(); public static final GTRegistryInfo ELEMENT = add(GTRegistries.ELEMENTS, Element.class); - public static final GTRegistryInfo MATERIAL = add( + public static final GTRegistryInfo MATERIAL = add( MaterialRegistryManager.getInstance().getRegistry(GTCEu.MOD_ID), Material.class); public static final GTRegistryInfo RECIPE_TYPE = add(GTRegistries.RECIPE_TYPES, GTRecipeType.class); From fe2d74dc06d339c4e3ef3a3cc50293a9b27d3306 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 20:10:58 +1000 Subject: [PATCH 4/9] merge all mod mat registries into unified material registry --- docs/content/Modpacks/Changes/v8.0.0.md | 3 +- .../com/gregtechceu/gtceu/api/GTCEuAPI.java | 3 - .../api/data/chemical/ChemicalHelper.java | 5 +- .../material/IMaterialRegistryManager.java | 117 ------------- .../api/data/chemical/material/Material.java | 8 +- .../material/registry/MaterialRegistry.java | 81 +++++++-- .../api/data/worldgen/GTLayerPattern.java | 3 +- .../worldgen/bedrockore/WeightedMaterial.java | 3 +- .../indicators/SurfaceIndicatorGenerator.java | 3 +- .../generator/veins/ClassicVeinGenerator.java | 3 +- .../generator/veins/DikeVeinGenerator.java | 3 +- .../generator/veins/GeodeVeinGenerator.java | 11 +- .../veins/StandardVeinGenerator.java | 3 +- .../generator/veins/VeinedVeinGenerator.java | 3 +- .../gtceu/api/gui/misc/ProspectorMode.java | 3 +- .../gtceu/api/registry/GTRegistries.java | 2 + .../data_transformers/ValueTransformers.java | 3 +- .../gtceu/common/CommonEventListener.java | 8 +- .../gregtechceu/gtceu/common/CommonProxy.java | 28 ++-- .../commands/arguments/MaterialArgument.java | 5 +- .../commands/arguments/MaterialParser.java | 14 +- .../gtceu/common/data/GTFluids.java | 8 +- .../gtceu/common/data/GTMaterialBlocks.java | 43 ++--- .../gtceu/common/data/GTMaterialItems.java | 25 +-- .../gtceu/common/data/GTMaterials.java | 4 +- .../gtceu/common/data/GTRecipes.java | 3 +- .../gtceu/common/data/models/GTModels.java | 3 +- .../item/behavior/TurbineRotorBehaviour.java | 3 +- .../material/MaterialRegistryManager.java | 155 ------------------ .../gregtechceu/gtceu/core/MixinHelpers.java | 4 +- .../data/lang/MaterialLangGenerator.java | 14 +- .../GTOreProcessingEmiCategory.java | 2 +- .../GTOreProcessingInfoCategory.java | 3 +- .../gtceu/integration/kjs/GTRegistryInfo.java | 4 +- .../integration/kjs/GregTechKubeJSPlugin.java | 2 - .../GTOreProcessingDisplayCategory.java | 3 +- 36 files changed, 177 insertions(+), 411 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java diff --git a/docs/content/Modpacks/Changes/v8.0.0.md b/docs/content/Modpacks/Changes/v8.0.0.md index fc7c33f8651..83a4c675f55 100644 --- a/docs/content/Modpacks/Changes/v8.0.0.md +++ b/docs/content/Modpacks/Changes/v8.0.0.md @@ -130,4 +130,5 @@ A large number of machine feature interfaces have been removed, and have had the - `BlastingRecipeBuilder`, `CampfireRecipeBuilder`, `SmeltingRecipeBuilder` and `SmokingRecipeBuilder` have been merged into `SimpleCookingRecipeBuilder` - Example usage: `SimpleCookingRecipeBuilder.campfireCooking("cooking_chicken").input(new ItemStack(Items.CHICKEN)).output(new ItemStacks(Items.COOKED_CHICKEN)).cookingTime(100).experience(100).save(provider);` - `GTFluidImpl` has been merged into `GTFluid`, use `GTFluid.Flowing` and `GTFluid.Source` instead of `GTFluidImpl.Flowing` and `GTFluidImpl.Source`. -- Item behaviors have been moved to `common/item/behavior`, and some items have been moved from `api/item` to `common/item`. \ No newline at end of file +- Item behaviors have been moved to `common/item/behavior`, and some items have been moved from `api/item` to `common/item`. +- All materials are now stored in a single registry, instead of a registry per addon. Replace references to `GTCEuAPI.materialManager` with `GTRegistries.MATERIALS`. \ No newline at end of file diff --git a/src/main/java/com/gregtechceu/gtceu/api/GTCEuAPI.java b/src/main/java/com/gregtechceu/gtceu/api/GTCEuAPI.java index e9bdd6edacf..e203cd914d2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/GTCEuAPI.java +++ b/src/main/java/com/gregtechceu/gtceu/api/GTCEuAPI.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.block.ICoilType; import com.gregtechceu.gtceu.api.block.IFilterType; -import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistryManager; import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; import com.gregtechceu.gtceu.api.registry.GTRegistry; import com.gregtechceu.gtceu.common.block.BatteryBlock; @@ -28,8 +27,6 @@ public class GTCEuAPI { /** Will always be available */ public static GTCEu instance; - /** Will be available at the Construction stage */ - public static IMaterialRegistryManager materialManager; /** Will be available at the Pre-Initialization stage */ @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 3cc568351df..68d51acccbe 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.data.tag.TagUtil; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTMaterials; import net.minecraft.MethodsReturnNonnullByDefault; @@ -97,7 +98,7 @@ public static MaterialStack getMaterialStack(ItemLike itemLike) { public static Material getMaterial(Fluid fluid) { if (FLUID_MATERIAL.isEmpty()) { Set> allFluidTags = BuiltInRegistries.FLUID.getTagNames().collect(Collectors.toSet()); - for (final Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (final Material material : GTRegistries.MATERIALS.values()) { if (material.hasProperty(PropertyKey.FLUID)) { FluidProperty property = material.getProperty(PropertyKey.FLUID); FluidStorageKey.allKeys().stream() @@ -209,7 +210,7 @@ public static MaterialEntry getMaterialEntry(TagKey tag) { // lookups. Set> allItemTags = BuiltInRegistries.ITEM.getTagNames().collect(Collectors.toSet()); for (TagPrefix prefix : TagPrefix.values()) { - for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { prefix.getItemTags(material).stream() .filter(allItemTags::contains) .forEach(tagKey -> { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java deleted file mode 100644 index 015b7a6f369..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistryManager.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.gregtechceu.gtceu.api.data.chemical.material; - -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; - -import net.minecraft.resources.ResourceLocation; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Optional; - -public interface IMaterialRegistryManager { - - /** - * Create a registry for a modid. Accessible when in phase {@link Phase#PRE}. - * - * @param modid the mod id for the registry - * @return the registry for the mod - */ - @NotNull - MaterialRegistry createRegistry(@NotNull String modid); - - /** - * Get a mod's registry. Accessible during all phases. - * - * @param modid the modid of the mod - * @return the registry associated with the mod, or the GregTech registry if it does not have one - */ - @NotNull - MaterialRegistry getRegistry(@NotNull String modid); - - /** - * Get a mod's registry. Accessible during all phases. - * - * @param networkId the network ID of the registry - * @return the registry associated with the network ID, or the GregTech registry if it does not have one - */ - @NotNull - MaterialRegistry getRegistry(int networkId); - - /** - * Accessible when in phases: - *

    - *
  • {@link Phase#OPEN}
  • - *
  • {@link Phase#CLOSED}
  • - *
  • {@link Phase#FROZEN}
  • - *
- * - * @return all the Material Registries - */ - @NotNull - Collection getRegistries(); - - /** - * Accessible when in phases: - *
    - *
  • {@link Phase#CLOSED}
  • - *
  • {@link Phase#FROZEN}
  • - *
- * - * @return all registered materials. - */ - @NotNull - Collection getRegisteredMaterials(); - - /** - * Get a material from a String in formats: - *
    - *
  • {@code "modid:registry_name"}
  • - *
  • {@code "registry_name"} - where modid is inferred to be {@link com.gregtechceu.gtceu.GTCEu#MOD_ID}
  • - *
- * - * Intended for use in reading/writing materials from/to NBT tags. - * - * @param name the name of the material in the above format - * @return the material associated with the name - */ - Material getMaterial(String name); - - Material getMaterial(ResourceLocation resourceLocation); - - ResourceLocation getKey(Material material); - - /** - * @return the current phase in the material registration process - * @see Phase - */ - @NotNull - Phase getPhase(); - - default boolean canModifyMaterials() { - return this.getPhase() != Phase.FROZEN && this.getPhase() != Phase.PRE; - } - - default Codec codec() { - return ResourceLocation.CODEC - .flatXmap( - id -> Optional.ofNullable(this.getRegistry(id.getNamespace()).get(id)) - .map(DataResult::success) - .orElseGet(() -> DataResult - .error(() -> "Unknown registry key in material registry: " + id)), - obj -> DataResult.success(obj.getResourceLocation())); - } - - enum Phase { - /** Material Registration and Modification is not started */ - PRE, - /** Material Registration and Modification is available */ - OPEN, - /** Material Registration is unavailable and only Modification is available */ - CLOSED, - /** Material Registration and Modification is unavailable */ - FROZEN - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index b3985163139..839801d86cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -16,6 +16,7 @@ import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.item.tool.MaterialToolTier; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; @@ -150,13 +151,14 @@ protected Material(ResourceLocation resourceLocation) { } protected void registerMaterial() { - GTCEuAPI.materialManager.getRegistry(getModid()).register(this); + GTRegistries.MATERIALS.register(this); } public String getName() { return materialInfo.resourceLocation.getPath(); } + @ApiStatus.Internal public String getDefaultTranslation() { return materialInfo.overriddenName != null ? materialInfo.overriddenName : toEnglishName(getName()); @@ -176,7 +178,7 @@ public boolean shouldGenerateRecipesFor(@NotNull TagPrefix prefix) { } public void addFlags(MaterialFlag... flags) { - if (!GTCEuAPI.materialManager.canModifyMaterials()) + if (!GTRegistries.MATERIALS.canModifyMaterials()) throw new IllegalStateException("Cannot add flag to material when registry is frozen!"); this.flags.addFlags(flags).verify(this); } @@ -533,7 +535,7 @@ public void removeProperty(PropertyKey key) { } public void setProperty(PropertyKey key, IMaterialProperty property) { - if (!GTCEuAPI.materialManager.canModifyMaterials()) { + if (!GTRegistries.MATERIALS.canModifyMaterials()) { throw new IllegalStateException("Cannot add properties to a Material when registry is frozen!"); } properties.setProperty(key, property); 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 4ef1a2b1391..7404d6ff3d1 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 @@ -5,28 +5,44 @@ import com.gregtechceu.gtceu.api.registry.GTRegistry; import com.gregtechceu.gtceu.common.data.GTMaterials; -import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.NotNull; import java.util.Collection; +import java.util.Set; public class MaterialRegistry extends GTRegistry.RL { + @Getter + private final Set usedNamespaces = new ObjectOpenHashSet<>(); + private static int networkIdCounter; @Getter private final int networkId = networkIdCounter++; - private final java.lang.String modid; - private boolean isRegistryClosed = false; + private Phase registrationPhase = Phase.PRE; + @NotNull private Material fallbackMaterial = GTMaterials.NULL; - public MaterialRegistry(java.lang.String modId) { - super(new ResourceLocation(modId, "material")); - this.modid = modId; + public MaterialRegistry() { + super(GTCEu.id("material")); + } + + public Material get(java.lang.String name) { + if (!name.isEmpty()) { + if (name.contains(":")) { + ResourceLocation resLoc = ResourceLocation.tryParse(name); + if (resLoc == null) return GTMaterials.NULL; + return get(resLoc); + } else { + return get(GTCEu.id(name)); + } + } + return GTMaterials.NULL; } public void register(Material material) { @@ -35,18 +51,29 @@ public void register(Material material) { @Override public T register(@NotNull ResourceLocation key, @NotNull T value) { - if (isRegistryClosed) { + if (registrationPhase == Phase.CLOSED || registrationPhase == Phase.FROZEN) { GTCEu.LOGGER.error( "Materials cannot be registered in the PostMaterialEvent (or after)! Must be added in the MaterialEvent. Skipping material {}...", key); return null; } super.register(key, value); + usedNamespaces.add(key.getNamespace()); return value; } + /** + * Accessible when in phases: + *
    + *
  • {@link Phase#CLOSED}
  • + *
  • {@link Phase#FROZEN}
  • + *
+ * + * @return all registered materials. + */ @NotNull public Collection getAllMaterials() { + if (registrationPhase == Phase.PRE || registrationPhase == Phase.OPEN) throw new IllegalStateException("Cannot retrieve all materials before registration"); return values(); } @@ -56,18 +83,42 @@ public void setFallbackMaterial(@NotNull Material material) { @NotNull public Material getFallbackMaterial() { - if (this.fallbackMaterial.isNull()) { - this.fallbackMaterial = MaterialRegistryManager.getInstance().getDefaultFallback(); - } - return this.fallbackMaterial; + return fallbackMaterial; + } + + public void closeRegistry() { + registrationPhase = Phase.CLOSED; + } + + @Override + public void freeze() { + super.freeze(); + registrationPhase = Phase.FROZEN; + } + + @Override + public void unfreeze() { + super.unfreeze(); + registrationPhase = Phase.OPEN; } @NotNull - public java.lang.String getModid() { - return modid; + public Phase getPhase() { + return registrationPhase; } - public void closeRegistry() { - this.isRegistryClosed = true; + public boolean canModifyMaterials() { + return getPhase() != Phase.FROZEN && getPhase() != Phase.PRE; + } + + public enum Phase { + /** Material Registration and Modification is not started */ + PRE, + /** Material Registration and Modification is available */ + OPEN, + /** Material Registration is unavailable and only Modification is available */ + CLOSED, + /** Material Registration and Modification is unavailable */ + FROZEN } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java index 1e3f77f0b85..1d125e26a87 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -84,7 +85,7 @@ public GTLayerPattern build() { public static class Layer { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.list(Codec.either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec())) + Codec.list(Codec.either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.codec())) .fieldOf("targets") .forGetter(layer -> layer.targets), Codec.intRange(0, Integer.MAX_VALUE) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java index d2406a5a58b..9f02ac48f63 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.WeightedEntry; import com.mojang.serialization.Codec; @@ -11,7 +12,7 @@ public record WeightedMaterial(Material material, int weight) implements Weighte public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - GTCEuAPI.materialManager.codec().fieldOf("material").forGetter(WeightedMaterial::material), + GTRegistries.MATERIALS.codec().fieldOf("material").forGetter(WeightedMaterial::material), Codec.INT.fieldOf("weight").forGetter(WeightedMaterial::weight)) .apply(instance, WeightedMaterial::new)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java index 6ea881caa33..17e7015622e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.IndicatorGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.GeneratedVeinMetadata; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreIndicatorPlacer; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import net.minecraft.MethodsReturnNonnullByDefault; @@ -50,7 +51,7 @@ public class SurfaceIndicatorGenerator extends IndicatorGenerator { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(BlockState.CODEC, GTCEuAPI.materialManager.codec()).fieldOf("block") + Codec.either(BlockState.CODEC, GTRegistries.MATERIALS.codec()).fieldOf("block") .forGetter(ext -> ext.block), IntProvider.codec(1, 32).fieldOf("radius").forGetter(ext -> ext.radius), FloatProvider.codec(0.0f, 2.0f).fieldOf("density").forGetter(ext -> ext.density), diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java index 37dd3c02296..e2c1d918e41 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.util.ExtraCodecs; @@ -230,7 +231,7 @@ public ClassicVeinGenerator sporadic(Consumer builder) { public static class Layer { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()) + Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.codec()) .fieldOf("targets").forGetter(layer -> layer.target), ExtraCodecs.intRange(-1, Integer.MAX_VALUE).optionalFieldOf("layers", -1) .forGetter(layer -> layer.layers)) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java index 6d294d07826..687639df267 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.GTUtil; import com.gregtechceu.gtceu.utils.WeightedEntry; @@ -180,7 +181,7 @@ public record DikeBlockDefinition(Either, Material> block implements WeightedEntry { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()).fieldOf("block") + Codec.either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.codec()).fieldOf("block") .forGetter(x -> x.block), Codec.INT.fieldOf("weight").forGetter(x -> x.weight), Codec.INT.fieldOf("min_y").orElse(320).forGetter(x -> x.minY), diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java index b15a38b6f85..e0123e01d30 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -324,16 +325,16 @@ public record GeodeBlockSettings(Either fillingPro TagKey invalidBlocks, @NotNull TagPrefix providerMaterialPrefix) { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(BlockStateProvider.CODEC, GTCEuAPI.materialManager.codec()).fieldOf("filling_provider") + Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.codec()).fieldOf("filling_provider") .forGetter(config -> config.fillingProvider), - Codec.either(BlockStateProvider.CODEC, GTCEuAPI.materialManager.codec()).fieldOf("inner_layer_provider") + Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.codec()).fieldOf("inner_layer_provider") .forGetter(config -> config.innerLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTCEuAPI.materialManager.codec()) + Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.codec()) .fieldOf("alternate_inner_layer_provider") .forGetter(config -> config.alternateInnerLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTCEuAPI.materialManager.codec()) + Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.codec()) .fieldOf("middle_layer_provider").forGetter(config -> config.middleLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTCEuAPI.materialManager.codec()).fieldOf("outer_layer_provider") + Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.codec()).fieldOf("outer_layer_provider") .forGetter(config -> config.outerLayerProvider), ExtraCodecs.nonEmptyList(BlockState.CODEC.listOf()).fieldOf("inner_placements") .forGetter(config -> config.innerPlacements), diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java index 4a5e7860366..d7ebceac655 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.core.registries.BuiltInRegistries; @@ -47,7 +48,7 @@ public class StandardVeinGenerator extends VeinGenerator { .apply(instance, StandardVeinGenerator::new)); public static final Codec CODEC_LIST = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()) + Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.codec()) .fieldOf("targets").forGetter(ext -> ext.blocks)) .apply(instance, StandardVeinGenerator::new)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java index efcded6a955..b35935531d7 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTFeatures; import com.gregtechceu.gtceu.utils.GTUtil; import com.gregtechceu.gtceu.utils.WeightedEntry; @@ -54,7 +55,7 @@ public class VeinedVeinGenerator extends VeinGenerator { public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec - .either(TargetBlockState.CODEC.listOf(), GTCEuAPI.materialManager.codec()); + .either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.codec()); public static final Codec CODEC = RecordCodecBuilder.create((instance) -> instance.group( VeinBlockDefinition.CODEC.listOf().fieldOf("ore_blocks").forGetter(it -> it.oreBlocks), diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index ce3d42097f5..781f4eb8c1d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.FluidVeinWorldEntry; import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreVeinSavedData; import com.gregtechceu.gtceu.api.gui.texture.ProspectingTexture; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -340,7 +341,7 @@ public void serialize(OreInfo item, FriendlyByteBuf buf) { public OreInfo deserialize(FriendlyByteBuf buf) { ResourceLocation materialId = buf.readResourceLocation(); return new OreInfo( - GTCEuAPI.materialManager.getRegistry(materialId.getNamespace()).get(materialId), + GTRegistries.MATERIALS.get(materialId), buf.readVarInt(), buf.readVarInt(), buf.readVarInt()); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java index d3fca5b2d40..17ec04169e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.cover.CoverDefinition; import com.gregtechceu.gtceu.api.data.DimensionMarker; import com.gregtechceu.gtceu.api.data.chemical.Element; +import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.bedrockfluid.BedrockFluidDefinition; @@ -45,6 +46,7 @@ public final class GTRegistries { // GT Registry + public static final MaterialRegistry MATERIALS = new MaterialRegistry(); public static final GTRegistry.String ELEMENTS = new GTRegistry.String<>(GTCEu.id("element")); diff --git a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/ValueTransformers.java b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/ValueTransformers.java index 0f1b5a75b6c..d568c17b031 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/ValueTransformers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sync_system/data_transformers/ValueTransformers.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.sync_system.data_transformers; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.cover.CoverBehavior; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -194,7 +193,7 @@ public static void registerTransformerSupplier(Class type, Supplier( GTRecipeType::getRegistryName, GTRegistries.RECIPE_TYPES::get)); registerTransformer(Material.class, new ResourceLocationReferenceTransformer<>( - Material::getResourceLocation, GTCEuAPI.materialManager::getMaterial)); + Material::getResourceLocation, GTRegistries.MATERIALS::get)); registerTransformer(MonitorGroup.class, new MonitorGroupTransformer()); registerTransformer(CoverBehavior.class, new CoverBehaviorTransformer()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index 97e2159fda1..c11e00e2225 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -548,7 +548,7 @@ public static void modifyBreakSpeed(PlayerEvent.BreakSpeed event) { @SubscribeEvent public static void addAlloyBlastProperties(PostMaterialEvent event) { - for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (!material.hasFlag(MaterialFlags.DISABLE_ALLOY_PROPERTY)) { addAlloyBlastProperty(material); } @@ -720,7 +720,7 @@ public static void remapIds(MissingMappingsEvent event) { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); + GTRegistries.MATERIALS.get(GTCEu.id(matcher.group(1)))); if (block != null && block.isPresent()) { mapping.remap(block.get()); } @@ -730,12 +730,12 @@ public static void remapIds(MissingMappingsEvent event) { Matcher matcher = idPattern.matcher(mapping.getKey().getPath()); if (matcher.matches()) { BlockEntry block = GTMaterialBlocks.MATERIAL_BLOCKS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); + GTRegistries.MATERIALS.get(GTCEu.id(matcher.group(1)))); if (block != null && block.isPresent()) { mapping.remap(block.asItem()); } else { ItemEntry item = GTMaterialItems.MATERIAL_ITEMS.get(prefix, - GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).get(GTCEu.id(matcher.group(1)))); + GTRegistries.MATERIALS.get(GTCEu.id(matcher.group(1)))); if (item != null && item.isPresent()) { mapping.remap(item.asItem()); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 325390a0715..1112734b27b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.GTCapability; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; @@ -33,7 +34,6 @@ import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.owner.MachineOwner; import com.gregtechceu.gtceu.common.network.GTNetwork; -import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import com.gregtechceu.gtceu.data.GregTechDatagen; @@ -92,9 +92,6 @@ public CommonProxy() { // used for forge events (ClientProxy + CommonProxy) IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus(); eventBus.register(this); - // must be set here because of KubeJS compat - // trying to read this before the pre-init stage - GTCEuAPI.materialManager = MaterialRegistryManager.getInstance(); ConfigHolder.init(); GTCEuAPI.initializeHighTier(); if (GTCEu.isDev()) { @@ -159,16 +156,17 @@ public static void init() { GregTechDatagen.initPost(); // Register all material manager registries, for materials with mod ids. - GTCEuAPI.materialManager.getRegistries().forEach(registry -> { + GTRegistries.MATERIALS.forEach(material -> { + var location = material.getResourceLocation(); // Force the material lang generator to be at index 0, so that addons' lang generators can override it. - var registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); + var registrate = GTRegistrate.createIgnoringListenerErrors(location.getNamespace()); AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registrate; if (accessor.getDoDatagen().get()) { // noinspection UnstableApiUsage List> providers = Multimaps.asMap(accessor.getDatagens()) .get(ProviderType.LANG); NonNullConsumer generator = (provider) -> MaterialLangGenerator - .generate((RegistrateLangProvider) provider, registry); + .generate((RegistrateLangProvider) provider, location.getNamespace()); if (providers == null) { accessor.getDatagens().put(ProviderType.LANG, generator); } else { @@ -177,7 +175,7 @@ public static void init() { } registrate - .registerEventListeners(ModList.get().getModContainerById(registry.getModid()) + .registerEventListeners(ModList.get().getModContainerById(location.getNamespace()) .filter(FMLModContainer.class::isInstance) .map(FMLModContainer.class::cast) .map(FMLModContainer::getEventBus) @@ -201,15 +199,11 @@ public static void init() { } private static void initMaterials() { - // First, register other mods' Registries - MaterialRegistryManager managerInternal = (MaterialRegistryManager) GTCEuAPI.materialManager; - // First, register CEu Materials - managerInternal.unfreezeRegistries(); + GTRegistries.MATERIALS.unfreeze(); GTCEu.LOGGER.info("Registering GTCEu Materials"); GTMaterials.init(); - MaterialRegistryManager.getInstance() - .getRegistry(GTCEu.MOD_ID) + GTRegistries.MATERIALS .setFallbackMaterial(GTMaterials.Aluminium); // Then, register addon Materials @@ -222,14 +216,14 @@ private static void initMaterials() { // Fire Post-Material event, intended for when Materials need to be iterated over in-full before freezing // Block entirely new Materials from being added in the Post event - managerInternal.closeRegistries(); + GTRegistries.MATERIALS.closeRegistry(); ModLoader.get().postEvent(new PostMaterialEvent()); if (GTCEu.Mods.isKubeJSLoaded()) { KJSEventWrapper.materialModification(); } // Freeze Material Registry before processing Items, Blocks, and Fluids - managerInternal.freezeRegistries(); + GTRegistries.MATERIALS.freeze(); /* End Material Registration */ } @@ -327,7 +321,7 @@ public void registerPackFinders(AddPackFindersEvent event) { public static final class KJSEventWrapper { public static void materialRegistry() { - GTRegistryInfo.registerFor(GTCEuAPI.materialManager.getRegistry(GTCEu.MOD_ID).getRegistryName()); + GTRegistryInfo.registerFor(GTRegistries.MATERIALS.getRegistryName()); } public static void materialModification() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java index b752292f67f..0dc04db160d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.context.CommandContext; @@ -26,7 +27,7 @@ public static MaterialArgument material() { @Override public Material parse(StringReader reader) throws CommandSyntaxException { - return MaterialParser.parseForMaterial(GTCEuAPI.materialManager, reader); + return MaterialParser.parseForMaterial(GTRegistries.MATERIALS, reader); } public static Material getMaterial(CommandContext context, String name) { @@ -35,7 +36,7 @@ public static Material getMaterial(CommandContext context, String name) { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return MaterialParser.fillSuggestions(GTCEuAPI.materialManager, builder); + return MaterialParser.fillSuggestions(GTRegistries.MATERIALS, builder); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java index 97fa622a273..343535f484b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.common.commands.arguments; -import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistryManager; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -28,7 +28,7 @@ public class MaterialParser { private static final char SYNTAX_START_NBT = '{'; private static final char SYNTAX_TAG = '#'; private static final Function> SUGGEST_NOTHING = SuggestionsBuilder::buildFuture; - private final IMaterialRegistryManager materials; + private final MaterialRegistry materials; private final StringReader reader; private Material result; /** @@ -36,12 +36,12 @@ public class MaterialParser { */ private Function> suggestions = SUGGEST_NOTHING; - private MaterialParser(IMaterialRegistryManager materials, StringReader reader) { + private MaterialParser(MaterialRegistry materials, StringReader reader) { this.materials = materials; this.reader = reader; } - public static Material parseForMaterial(IMaterialRegistryManager registry, + public static Material parseForMaterial(MaterialRegistry registry, StringReader reader) throws CommandSyntaxException { int i = reader.getCursor(); @@ -55,7 +55,7 @@ public static Material parseForMaterial(IMaterialRegistryManager registry, } } - public static CompletableFuture fillSuggestions(IMaterialRegistryManager lookup, + public static CompletableFuture fillSuggestions(MaterialRegistry lookup, SuggestionsBuilder builder) { StringReader stringReader = new StringReader(builder.getInput()); stringReader.setCursor(builder.getStart()); @@ -72,7 +72,7 @@ private void readMaterial() throws CommandSyntaxException { int i = this.reader.getCursor(); ResourceLocation id = ResourceLocation.read(this.reader); - Material material = this.materials.getRegistry(id.getNamespace()).get(id); + Material material = materials.get(id); if (material == null || material.isNull()) { this.reader.setCursor(i); throw ERROR_UNKNOWN_ITEM.createWithContext(this.reader, id); @@ -87,6 +87,6 @@ private void parse() throws CommandSyntaxException { private CompletableFuture suggestMaterial(SuggestionsBuilder builder) { return SharedSuggestionProvider.suggestResource( - this.materials.getRegisteredMaterials().stream().map(Material::getResourceLocation), builder); + materials.values().stream().map(Material::getResourceLocation), builder); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index ca960480083..9d63636f6a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.common.fluid.potion.PotionFluid; import com.gregtechceu.gtceu.data.recipe.CustomTags; @@ -40,14 +41,11 @@ public static void init() { // register fluids for materials REGISTRATE.creativeModeTab(() -> GTCreativeModeTabs.MATERIAL_FLUID); - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (var material : registry.getAllMaterials()) { + for (var material : GTRegistries.MATERIALS.getAllMaterials()) { var fluidProperty = material.getProperty(PropertyKey.FLUID); if (fluidProperty != null) { - fluidProperty.registerFluids(material, registrate); - } + fluidProperty.registerFluids(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 028bec15b37..3fa2358c4b0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.api.item.MaterialBlockItem; import com.gregtechceu.gtceu.api.item.MaterialPipeBlockItem; import com.gregtechceu.gtceu.api.item.SurfaceRockBlockItem; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.common.pipelike.cable.Insulation; @@ -59,14 +60,11 @@ public static void generateMaterialBlocks() { for (TagPrefix tagPrefix : TagPrefix.values()) { if (!TagPrefix.ORES.containsKey(tagPrefix) && tagPrefix.doGenerateBlock()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (tagPrefix.doGenerateBlock(material)) { - registerMaterialBlock(tagPrefix, material, registrate); + registerMaterialBlock(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - } } } GTCEu.LOGGER.debug("Generating GTCEu Material Blocks... Complete!"); @@ -94,14 +92,11 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material // Material Ore Blocks public static void generateOreBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks..."); - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (allowOreBlock(material)) { - registerOreBlock(material, registrate); + registerOreBlock(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - } GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks... Complete!"); } @@ -145,14 +140,11 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) // Material Ore Indicator Piles public static void generateOreIndicators() { GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks..."); - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (allowOreIndicator(material)) { - registerOreIndicator(material, registrate); + registerOreIndicator(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - } SURFACE_ROCK_BLOCKS = SURFACE_ROCK_BLOCKS_BUILDER.build(); GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks... Complete!"); } @@ -184,13 +176,10 @@ private static void registerOreIndicator(Material material, GTRegistrate registr public static void generateCableBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Cable/Wire Blocks..."); for (Insulation insulation : Insulation.values()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (allowCableBlock(material, insulation)) { - registerCableBlock(material, insulation, registrate); + registerCableBlock(material, insulation, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } - } } } CABLE_BLOCKS = CABLE_BLOCKS_BUILDER.build(); @@ -227,14 +216,11 @@ private static void registerCableBlock(Material material, Insulation insulation, public static void generateFluidPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks..."); for (var fluidPipeType : FluidPipeType.values()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (allowFluidPipeBlock(material, fluidPipeType)) { - registerFluidPipeBlock(material, fluidPipeType, registrate); + registerFluidPipeBlock(material, fluidPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - } } FLUID_PIPE_BLOCKS = FLUID_PIPE_BLOCKS_BUILDER.build(); GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks... Complete!"); @@ -275,13 +261,10 @@ private static void registerFluidPipeBlock(Material material, FluidPipeType flui public static void generateItemPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Item Pipe Blocks..."); for (var itemPipeType : ItemPipeType.values()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (allowItemPipeBlock(material, itemPipeType)) { - registerItemPipeBlock(material, itemPipeType, registrate); + registerItemPipeBlock(material, itemPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } - } } } ITEM_PIPE_BLOCKS = ITEM_PIPE_BLOCKS_BUILDER.build(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 998b4e95c17..3ab561117d9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.TagPrefixItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.common.item.armor.GTArmorItem; import com.gregtechceu.gtceu.common.item.armor.GTDyeableArmorItem; @@ -56,12 +57,12 @@ public class GTMaterialItems { // Reference Tables public static Table> MATERIAL_ITEMS; public static final Table> TOOL_ITEMS = ArrayTable.create( - GTCEuAPI.materialManager.getRegisteredMaterials().stream() + GTRegistries.MATERIALS.values().stream() .filter(mat -> mat.hasProperty(PropertyKey.TOOL)) .toList(), GTToolType.getTypes().values().stream().toList()); public static final Table> ARMOR_ITEMS = ArrayTable.create( - GTCEuAPI.materialManager.getRegisteredMaterials().stream() + GTRegistries.MATERIALS.values().stream() .filter(mat -> mat.hasProperty(PropertyKey.ARMOR)) .toList(), Arrays.asList(ArmorItem.Type.values())); @@ -71,14 +72,11 @@ public static void generateMaterialItems() { REGISTRATE.creativeModeTab(() -> MATERIAL_ITEM); for (var tagPrefix : TagPrefix.values()) { if (tagPrefix.doGenerateItem()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (tagPrefix.doGenerateItem(material)) { - generateMaterialItem(tagPrefix, material, registrate); + generateMaterialItem(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - } } } MATERIAL_ITEMS = MATERIAL_ITEMS_BUILDER.build(); @@ -103,17 +101,14 @@ private static void generateMaterialItem(TagPrefix tagPrefix, Material material, public static void generateTools() { REGISTRATE.creativeModeTab(() -> TOOL); for (GTToolType toolType : GTToolType.getTypes().values()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(registry.getModid()); - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (material.hasProperty(PropertyKey.TOOL)) { var property = material.getProperty(PropertyKey.TOOL); if (property.hasType(toolType)) { - generateTool(material, toolType, registrate); + generateTool(material, toolType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } } - } } } @@ -135,12 +130,10 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis public static void generateArmors() { REGISTRATE.creativeModeTab(() -> TOOL); for (ArmorItem.Type type : ArmorItem.Type.values()) { - for (MaterialRegistry registry : GTCEuAPI.materialManager.getRegistries()) { - for (Material material : registry.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { if (material.hasProperty(PropertyKey.ARMOR)) { - generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(registry.getModid())); + generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } - } } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index a4fb7dad431..f8043257a6c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -1,13 +1,13 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterial; import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlag; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.materials.*; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; @@ -272,7 +272,7 @@ public static void init() { @NotNull public static Material get(String name) { - var mat = GTCEuAPI.materialManager.getMaterial(name); + var mat = GTRegistries.MATERIALS.get(name); // material could be null here due to the registry grabbing a material that isn't in the map if (mat == null) { GTCEu.LOGGER.warn("{} is not a known Material", name); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java index b6197f6adec..f774fbe398d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.data.recipe.MaterialInfoLoader; import com.gregtechceu.gtceu.data.recipe.configurable.RecipeAddition; import com.gregtechceu.gtceu.data.recipe.configurable.RecipeRemoval; @@ -51,7 +52,7 @@ public static void recipeAddition(Consumer originalConsumer) { MaterialInfoLoader.init(); // com.gregtechceu.gtceu.data.recipe.generated.* - for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (material.hasFlag(MaterialFlags.NO_UNIFICATION) || material.hasFlag(MaterialFlags.DISABLE_MATERIAL_RECIPES)) { continue; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java index 6065874b12c..92d75467b57 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java @@ -10,6 +10,7 @@ import com.gregtechceu.gtceu.api.fluids.store.FluidStorage; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; import com.gregtechceu.gtceu.api.machine.multiblock.IBatteryData; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.core.MixinHelpers; @@ -289,7 +290,7 @@ public static void createPipeBlockModel(DataGenContext items) { - for (Material material : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (!material.shouldGenerateRecipesFor(turbineBlade) || !material.hasProperty(PropertyKey.INGOT)) { continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java b/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java deleted file mode 100644 index dedb4ba6710..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/unification/material/MaterialRegistryManager.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.gregtechceu.gtceu.common.unification.material; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistryManager; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; -import com.gregtechceu.gtceu.common.data.GTMaterials; - -import net.minecraft.resources.ResourceLocation; - -import com.google.common.base.Preconditions; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2ObjectMap; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; - -public final class MaterialRegistryManager implements IMaterialRegistryManager { - - private static MaterialRegistryManager INSTANCE; - - private final Object2ObjectMap registries = new Object2ObjectOpenHashMap<>(); - private final Int2ObjectMap networkIds = new Int2ObjectOpenHashMap<>(); - - @Nullable - private Collection registeredMaterials; - - private final MaterialRegistry gregtechRegistry = createInternalRegistry(); - - private Phase registrationPhase = Phase.PRE; - - private MaterialRegistryManager() {} - - public static MaterialRegistryManager getInstance() { - if (INSTANCE == null) { - INSTANCE = new MaterialRegistryManager(); - } - return INSTANCE; - } - - @NotNull - @Override - public MaterialRegistry createRegistry(@NotNull String modid) { - if (getPhase() != Phase.PRE) { - throw new IllegalStateException("Cannot create registries in phase " + getPhase()); - } - - Preconditions.checkArgument(!registries.containsKey(modid), - "Material registry already exists for modid %s", modid); - MaterialRegistry registry = new MaterialRegistry(modid); - registries.put(modid, registry); - networkIds.put(registry.getNetworkId(), registry); - return registry; - } - - @NotNull - @Override - public MaterialRegistry getRegistry(@NotNull String modid) { - MaterialRegistry registry = registries.get(modid); - return registry != null ? registry : gregtechRegistry; - } - - @NotNull - @Override - public MaterialRegistry getRegistry(int networkId) { - MaterialRegistry registry = networkIds.get(networkId); - return registry != null ? registry : gregtechRegistry; - } - - @NotNull - @Override - public Collection getRegistries() { - if (getPhase() == Phase.PRE) { - throw new IllegalStateException("Cannot get all material registries during phase " + getPhase()); - } - return Collections.unmodifiableCollection(registries.values()); - } - - @NotNull - @Override - public Collection getRegisteredMaterials() { - if (registeredMaterials == null || - (getPhase() != Phase.CLOSED && getPhase() != Phase.FROZEN)) { - throw new IllegalStateException("Cannot retrieve all materials before registration"); - } - return registeredMaterials; - } - - @Override - public Material getMaterial(@NotNull String name) { - if (!name.isEmpty()) { - if (name.contains(":")) { - ResourceLocation resLoc = ResourceLocation.tryParse(name); - if (resLoc == null) return GTMaterials.NULL; - return getRegistry(resLoc.getNamespace()).get(resLoc); - } else { - return getRegistry(GTCEu.MOD_ID).get(GTCEu.id(name)); - } - } - return GTMaterials.NULL; - } - - @Override - public Material getMaterial(ResourceLocation resourceLocation) { - return getRegistry(resourceLocation.getNamespace()).get(resourceLocation); - } - - @Override - public ResourceLocation getKey(Material material) { - return material.getResourceLocation(); - } - - @NotNull - @Override - public Phase getPhase() { - return registrationPhase; - } - - public void unfreezeRegistries() { - registries.values().forEach(MaterialRegistry::unfreeze); - registrationPhase = Phase.OPEN; - } - - public void closeRegistries() { - registries.values().forEach(MaterialRegistry::closeRegistry); - Collection collection = new ArrayList<>(); - for (MaterialRegistry registry : registries.values()) { - collection.addAll(registry.getAllMaterials()); - } - registeredMaterials = Collections.unmodifiableCollection(collection); - registrationPhase = Phase.CLOSED; - } - - public void freezeRegistries() { - registries.values().forEach(MaterialRegistry::freeze); - registrationPhase = Phase.FROZEN; - } - - @NotNull - private MaterialRegistry createInternalRegistry() { - MaterialRegistry registry = new MaterialRegistry(GTCEu.MOD_ID); - this.registries.put(GTCEu.MOD_ID, registry); - return registry; - } - - @NotNull - public Material getDefaultFallback() { - return gregtechRegistry.getFallbackMaterial(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 26da2a0bc53..bca9fe49cc2 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -124,7 +124,7 @@ public static void generateGTDynamicTags(Map void generateGTDynamicTags(Map mat.getModid().equals(modId)) + .forEach(material -> { + provider.add(material.getUnlocalizedName(), toEnglishName(material.getName())); + }); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java index 26c4a4e8306..826f60ad3db 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java @@ -31,7 +31,7 @@ public GTOreProcessingEmiCategory() { } public static void registerDisplays(EmiRegistry registry) { - for (Material mat : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material mat : GTRegistries.MATERIALS.values()) { if (mat.hasProperty(ORE) && !mat.hasFlag(MaterialFlags.NO_ORE_PROCESSING_TAB)) { registry.addRecipe(new GTEmiOreProcessing(mat)); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java index cf18967945c..c2fcf8518b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java @@ -7,6 +7,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.lowdragmc.lowdraglib.jei.ModularUIRecipeCategory; import net.minecraft.network.chat.Component; @@ -37,7 +38,7 @@ public GTOreProcessingInfoCategory(IJeiHelpers helpers) { } public static void registerRecipes(IRecipeRegistration registry) { - registry.addRecipes(RECIPE_TYPE, GTCEuAPI.materialManager.getRegisteredMaterials().stream() + registry.addRecipes(RECIPE_TYPE, GTRegistries.MATERIALS.values().stream() .filter((material) -> material.hasProperty(PropertyKey.ORE) && !material.hasFlag(MaterialFlags.NO_ORE_PROCESSING_TAB)) .map(GTOreProcessingInfoWrapper::new) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java index 7f74a9c6f2c..907a54edefa 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java @@ -16,7 +16,6 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.GTRegistry; import com.gregtechceu.gtceu.api.registry.registrate.BuilderBase; -import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.integration.kjs.built.KJSTagPrefix; import com.gregtechceu.gtceu.integration.kjs.events.GTRegistryEventJS; @@ -48,8 +47,7 @@ public record BuilderType(String type, Class> ALL_BUILDERS = new ArrayList<>(); public static final GTRegistryInfo ELEMENT = add(GTRegistries.ELEMENTS, Element.class); - public static final GTRegistryInfo MATERIAL = add( - MaterialRegistryManager.getInstance().getRegistry(GTCEu.MOD_ID), Material.class); + public static final GTRegistryInfo MATERIAL = add(GTRegistries.MATERIALS, Material.class); public static final GTRegistryInfo RECIPE_TYPE = add(GTRegistries.RECIPE_TYPES, GTRecipeType.class); public static final GTRegistryInfo RECIPE_CATEGORY = add( diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index e007aa4151b..d7f0e4a5f3c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -70,7 +70,6 @@ import com.gregtechceu.gtceu.common.data.models.GTModels; import com.gregtechceu.gtceu.common.item.armor.PowerlessJetpack; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveFancyUIWorkableMachine; -import com.gregtechceu.gtceu.common.unification.material.MaterialRegistryManager; import com.gregtechceu.gtceu.core.mixins.IngredientAccessor; import com.gregtechceu.gtceu.data.recipe.CraftingComponent; import com.gregtechceu.gtceu.data.recipe.GTCraftingComponents; @@ -284,7 +283,6 @@ public void registerBindings(BindingsEvent event) { // Material related event.add("GTElements", GTElements.class); event.add("GTMaterials", GTMaterials.class); - event.add("GTMaterialRegistry", MaterialRegistryManager.getInstance()); event.add("TagPrefix", TagPrefix.class); event.add("ItemGenerationCondition", TagPrefix.Conditions.class); event.add("MaterialEntry", MaterialEntry.class); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java index 0d86bae41c9..ce8a1e8ade4 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.lowdragmc.lowdraglib.gui.texture.ItemStackTexture; import com.lowdragmc.lowdraglib.rei.IGui2Renderer; import com.lowdragmc.lowdraglib.rei.ModularUIDisplayCategory; @@ -62,7 +63,7 @@ public Component getTitle() { } public static void registerDisplays(DisplayRegistry registry) { - for (Material mat : GTCEuAPI.materialManager.getRegisteredMaterials()) { + for (Material mat : GTRegistries.MATERIALS.values()) { if (mat.hasProperty(ORE) && !mat.hasFlag(MaterialFlags.NO_ORE_PROCESSING_TAB)) { registry.add(new GTOreProcessingDisplay(mat)); } From 4ef71a6f479ea132542088b0877ff3272303c74d Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 20:15:06 +1000 Subject: [PATCH 5/9] spotless --- .../api/data/chemical/ChemicalHelper.java | 1 - .../api/data/chemical/material/Material.java | 2 - .../material/registry/MaterialRegistry.java | 9 ++-- .../api/data/worldgen/GTLayerPattern.java | 3 +- .../worldgen/bedrockore/WeightedMaterial.java | 3 +- .../indicators/SurfaceIndicatorGenerator.java | 1 - .../generator/veins/ClassicVeinGenerator.java | 3 +- .../generator/veins/DikeVeinGenerator.java | 1 - .../generator/veins/GeodeVeinGenerator.java | 3 +- .../veins/StandardVeinGenerator.java | 3 +- .../generator/veins/VeinedVeinGenerator.java | 1 - .../gtceu/api/gui/misc/ProspectorMode.java | 1 - .../api/registry/registrate/GTRegistrate.java | 2 +- .../gtceu/common/CommonEventListener.java | 1 - .../gregtechceu/gtceu/common/CommonProxy.java | 1 - .../commands/arguments/MaterialArgument.java | 3 +- .../commands/arguments/MaterialParser.java | 2 +- .../gtceu/common/data/GTFluids.java | 10 ++-- .../gtceu/common/data/GTMaterialBlocks.java | 54 ++++++++++--------- .../gtceu/common/data/GTMaterialItems.java | 32 +++++------ .../gtceu/common/data/GTRecipes.java | 1 - .../gtceu/common/data/models/GTModels.java | 1 - .../item/behavior/TurbineRotorBehaviour.java | 3 +- .../gregtechceu/gtceu/core/MixinHelpers.java | 1 - .../data/lang/MaterialLangGenerator.java | 5 +- .../GTOreProcessingEmiCategory.java | 1 - .../GTOreProcessingInfoCategory.java | 3 +- .../gtceu/integration/kjs/GTRegistryInfo.java | 3 +- .../GTOreProcessingDisplayCategory.java | 3 +- 29 files changed, 67 insertions(+), 90 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java index 68d51acccbe..414ae5b2168 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/ChemicalHelper.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.data.chemical; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 839801d86cc..48b8b4f40ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.chemical.material; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.Element; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlag; @@ -158,7 +157,6 @@ public String getName() { return materialInfo.resourceLocation.getPath(); } - @ApiStatus.Internal public String getDefaultTranslation() { return materialInfo.overriddenName != null ? materialInfo.overriddenName : toEnglishName(getName()); 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 7404d6ff3d1..13d2ef9a68d 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 @@ -3,12 +3,12 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.registry.GTRegistry; - import com.gregtechceu.gtceu.common.data.GTMaterials; -import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import lombok.Getter; + import net.minecraft.resources.ResourceLocation; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import lombok.Getter; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -73,7 +73,8 @@ public T register(@NotNull ResourceLocation key, @NotNull T */ @NotNull public Collection getAllMaterials() { - if (registrationPhase == Phase.PRE || registrationPhase == Phase.OPEN) throw new IllegalStateException("Cannot retrieve all materials before registration"); + if (registrationPhase == Phase.PRE || registrationPhase == Phase.OPEN) + throw new IllegalStateException("Cannot retrieve all materials before registration"); return values(); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java index 1d125e26a87..e2ce393ef5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTLayerPattern.java @@ -1,10 +1,9 @@ package com.gregtechceu.gtceu.api.data.worldgen; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java index 9f02ac48f63..c6aa5690de6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/WeightedMaterial.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.bedrockore; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.WeightedEntry; @@ -12,7 +11,7 @@ public record WeightedMaterial(Material material, int weight) implements Weighte public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - GTRegistries.MATERIALS.codec().fieldOf("material").forGetter(WeightedMaterial::material), + GTRegistries.MATERIALS.codec().fieldOf("material").forGetter(WeightedMaterial::material), Codec.INT.fieldOf("weight").forGetter(WeightedMaterial::weight)) .apply(instance, WeightedMaterial::new)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java index 17e7015622e..5a05bdb55f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/indicators/SurfaceIndicatorGenerator.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.indicators; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.WorldGeneratorUtils; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java index e2c1d918e41..9f5ed39de59 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/ClassicVeinGenerator.java @@ -1,14 +1,13 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.util.ExtraCodecs; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java index 687639df267..46de33fa340 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/DikeVeinGenerator.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java index e0123e01d30..3d01a4249ec 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/GeodeVeinGenerator.java @@ -1,14 +1,13 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java index d7ebceac655..a2f82482d63 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/StandardVeinGenerator.java @@ -1,14 +1,13 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerator; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreBlockPlacer; import com.gregtechceu.gtceu.api.data.worldgen.ores.OreVeinUtil; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java index b35935531d7..502a12d15e4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/generator/veins/VeinedVeinGenerator.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen.generator.veins; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.worldgen.GTOreDefinition; diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java index 781f4eb8c1d..e84c7213a39 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/ProspectorMode.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.gui.misc; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 3a096c41368..fd06954cd65 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -11,7 +11,6 @@ import com.gregtechceu.gtceu.api.registry.registrate.forge.GTFluidBuilder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; @@ -43,6 +42,7 @@ import com.tterrag.registrate.util.nullness.NonNullBiConsumer; import com.tterrag.registrate.util.nullness.NonNullFunction; import com.tterrag.registrate.util.nullness.NonNullSupplier; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index c11e00e2225..354ff71ba48 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.BlockAttributes; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 1112734b27b..97642583955 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -7,7 +7,6 @@ import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.capability.GTCapability; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java index 0dc04db160d..94fa8826d92 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialArgument.java @@ -1,9 +1,8 @@ package com.gregtechceu.gtceu.common.commands.arguments; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.context.CommandContext; diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java index 343535f484b..efcf1c84fd1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/arguments/MaterialParser.java @@ -1,8 +1,8 @@ package com.gregtechceu.gtceu.common.commands.arguments; import com.gregtechceu.gtceu.api.data.chemical.material.Material; - import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; + import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index 9d63636f6a7..c7f94f160fa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -1,10 +1,8 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; @@ -41,11 +39,11 @@ public static void init() { // register fluids for materials REGISTRATE.creativeModeTab(() -> GTCreativeModeTabs.MATERIAL_FLUID); - for (var material : GTRegistries.MATERIALS.getAllMaterials()) { - var fluidProperty = material.getProperty(PropertyKey.FLUID); + for (var material : GTRegistries.MATERIALS.getAllMaterials()) { + var fluidProperty = material.getProperty(PropertyKey.FLUID); - if (fluidProperty != null) { - fluidProperty.registerFluids(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); + if (fluidProperty != null) { + fluidProperty.registerFluids(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 3fa2358c4b0..8bb3e4b655f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -1,12 +1,10 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.block.MaterialBlock; import com.gregtechceu.gtceu.api.block.MaterialPipeBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.MaterialBlockItem; import com.gregtechceu.gtceu.api.item.MaterialPipeBlockItem; @@ -60,11 +58,12 @@ public static void generateMaterialBlocks() { for (TagPrefix tagPrefix : TagPrefix.values()) { if (!TagPrefix.ORES.containsKey(tagPrefix) && tagPrefix.doGenerateBlock()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (tagPrefix.doGenerateBlock(material)) { - registerMaterialBlock(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (tagPrefix.doGenerateBlock(material)) { + registerMaterialBlock(tagPrefix, material, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); } + } } } GTCEu.LOGGER.debug("Generating GTCEu Material Blocks... Complete!"); @@ -92,11 +91,11 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material // Material Ore Blocks public static void generateOreBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks..."); - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (allowOreBlock(material)) { - registerOreBlock(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (allowOreBlock(material)) { + registerOreBlock(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } + } GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks... Complete!"); } @@ -140,11 +139,11 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) // Material Ore Indicator Piles public static void generateOreIndicators() { GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks..."); - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (allowOreIndicator(material)) { - registerOreIndicator(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (allowOreIndicator(material)) { + registerOreIndicator(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } + } SURFACE_ROCK_BLOCKS = SURFACE_ROCK_BLOCKS_BUILDER.build(); GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks... Complete!"); } @@ -176,10 +175,11 @@ private static void registerOreIndicator(Material material, GTRegistrate registr public static void generateCableBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Cable/Wire Blocks..."); for (Insulation insulation : Insulation.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (allowCableBlock(material, insulation)) { - registerCableBlock(material, insulation, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (allowCableBlock(material, insulation)) { + registerCableBlock(material, insulation, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); + } } } CABLE_BLOCKS = CABLE_BLOCKS_BUILDER.build(); @@ -216,11 +216,12 @@ private static void registerCableBlock(Material material, Insulation insulation, public static void generateFluidPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks..."); for (var fluidPipeType : FluidPipeType.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (allowFluidPipeBlock(material, fluidPipeType)) { - registerFluidPipeBlock(material, fluidPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (allowFluidPipeBlock(material, fluidPipeType)) { + registerFluidPipeBlock(material, fluidPipeType, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); } + } } FLUID_PIPE_BLOCKS = FLUID_PIPE_BLOCKS_BUILDER.build(); GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks... Complete!"); @@ -261,10 +262,11 @@ private static void registerFluidPipeBlock(Material material, FluidPipeType flui public static void generateItemPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Item Pipe Blocks..."); for (var itemPipeType : ItemPipeType.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (allowItemPipeBlock(material, itemPipeType)) { - registerItemPipeBlock(material, itemPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (allowItemPipeBlock(material, itemPipeType)) { + registerItemPipeBlock(material, itemPipeType, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); + } } } ITEM_PIPE_BLOCKS = ITEM_PIPE_BLOCKS_BUILDER.build(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 3ab561117d9..2058314a912 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -1,10 +1,8 @@ package com.gregtechceu.gtceu.common.data; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.item.IGTTool; @@ -72,11 +70,12 @@ public static void generateMaterialItems() { REGISTRATE.creativeModeTab(() -> MATERIAL_ITEM); for (var tagPrefix : TagPrefix.values()) { if (tagPrefix.doGenerateItem()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (tagPrefix.doGenerateItem(material)) { - generateMaterialItem(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (tagPrefix.doGenerateItem(material)) { + generateMaterialItem(tagPrefix, material, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); } + } } } MATERIAL_ITEMS = MATERIAL_ITEMS_BUILDER.build(); @@ -101,14 +100,15 @@ private static void generateMaterialItem(TagPrefix tagPrefix, Material material, public static void generateTools() { REGISTRATE.creativeModeTab(() -> TOOL); for (GTToolType toolType : GTToolType.getTypes().values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (material.hasProperty(PropertyKey.TOOL)) { - var property = material.getProperty(PropertyKey.TOOL); - if (property.hasType(toolType)) { - generateTool(material, toolType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (material.hasProperty(PropertyKey.TOOL)) { + var property = material.getProperty(PropertyKey.TOOL); + if (property.hasType(toolType)) { + generateTool(material, toolType, + GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } + } } } @@ -130,10 +130,10 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis public static void generateArmors() { REGISTRATE.creativeModeTab(() -> TOOL); for (ArmorItem.Type type : ArmorItem.Type.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { - if (material.hasProperty(PropertyKey.ARMOR)) { - generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(material.getModid())); - } + for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + if (material.hasProperty(PropertyKey.ARMOR)) { + generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(material.getModid())); + } } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java index f774fbe398d..eca7dcea107 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.addon.AddonFinder; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; import com.gregtechceu.gtceu.api.data.chemical.material.Material; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java index 92d75467b57..33b4dc15a7d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTModels.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.common.data.models; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.block.*; import com.gregtechceu.gtceu.api.block.property.GTBlockStateProperties; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/TurbineRotorBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/TurbineRotorBehaviour.java index 5dbfb21bafe..1d0510b35cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/TurbineRotorBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/TurbineRotorBehaviour.java @@ -1,13 +1,12 @@ package com.gregtechceu.gtceu.common.item.behavior; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.component.IMaterialPartItem; import com.gregtechceu.gtceu.api.item.component.ISubItemHandler; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index bca9fe49cc2..151d5f293bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.core; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.ItemMaterialData; diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java index 55aad4a4588..9eeffd3943c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java @@ -1,10 +1,7 @@ package com.gregtechceu.gtceu.data.lang; -import com.gregtechceu.gtceu.api.GTCEuAPI; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.registry.MaterialRegistry; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import com.tterrag.registrate.providers.RegistrateLangProvider; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java index 826f60ad3db..358d68b8bbc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/emi/oreprocessing/GTOreProcessingEmiCategory.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.integration.emi.oreprocessing; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.machine.MachineDefinition; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java index c2fcf8518b1..bb9649e68bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/jei/oreprocessing/GTOreProcessingInfoCategory.java @@ -1,13 +1,12 @@ package com.gregtechceu.gtceu.integration.jei.oreprocessing; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import com.lowdragmc.lowdraglib.jei.ModularUIRecipeCategory; import net.minecraft.network.chat.Component; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java index 907a54edefa..b995d5559d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTRegistryInfo.java @@ -47,7 +47,8 @@ public record BuilderType(String type, Class> ALL_BUILDERS = new ArrayList<>(); public static final GTRegistryInfo ELEMENT = add(GTRegistries.ELEMENTS, Element.class); - public static final GTRegistryInfo MATERIAL = add(GTRegistries.MATERIALS, Material.class); + public static final GTRegistryInfo MATERIAL = add(GTRegistries.MATERIALS, + Material.class); public static final GTRegistryInfo RECIPE_TYPE = add(GTRegistries.RECIPE_TYPES, GTRecipeType.class); public static final GTRegistryInfo RECIPE_CATEGORY = add( diff --git a/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java index ce8a1e8ade4..134bacbdcab 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/rei/oreprocessing/GTOreProcessingDisplayCategory.java @@ -1,12 +1,11 @@ package com.gregtechceu.gtceu.integration.rei.oreprocessing; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; - import com.gregtechceu.gtceu.api.registry.GTRegistries; + import com.lowdragmc.lowdraglib.gui.texture.ItemStackTexture; import com.lowdragmc.lowdraglib.rei.IGui2Renderer; import com.lowdragmc.lowdraglib.rei.ModularUIDisplayCategory; From 2e5c686b91b3e0fb1314ee6dda0c3b252e296ad6 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 20:21:25 +1000 Subject: [PATCH 6/9] remove network id --- .../material/registry/MaterialRegistry.java | 16 +++++++--------- .../gregtechceu/gtceu/common/CommonProxy.java | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) 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 13d2ef9a68d..d7ad83d156b 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 @@ -7,11 +7,13 @@ import net.minecraft.resources.ResourceLocation; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import org.jetbrains.annotations.NotNull; import java.util.Collection; +import java.util.Map; import java.util.Set; public class MaterialRegistry extends GTRegistry.RL { @@ -19,14 +21,10 @@ public class MaterialRegistry extends GTRegistry.RL { @Getter private final Set usedNamespaces = new ObjectOpenHashSet<>(); - private static int networkIdCounter; - @Getter - private final int networkId = networkIdCounter++; - private Phase registrationPhase = Phase.PRE; @NotNull - private Material fallbackMaterial = GTMaterials.NULL; + private Map fallbackMaterial = new Object2ObjectOpenHashMap<>(); public MaterialRegistry() { super(GTCEu.id("material")); @@ -78,13 +76,13 @@ public Collection getAllMaterials() { return values(); } - public void setFallbackMaterial(@NotNull Material material) { - this.fallbackMaterial = material; + public void setFallbackMaterial(java.lang.String modId, @NotNull Material material) { + this.fallbackMaterial.put(modId, material); } @NotNull - public Material getFallbackMaterial() { - return fallbackMaterial; + public Material getFallbackMaterial(java.lang.String modId) { + return fallbackMaterial.get(modId); } public void closeRegistry() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 97642583955..d6972527229 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -203,7 +203,7 @@ private static void initMaterials() { GTCEu.LOGGER.info("Registering GTCEu Materials"); GTMaterials.init(); GTRegistries.MATERIALS - .setFallbackMaterial(GTMaterials.Aluminium); + .setFallbackMaterial(GTCEu.MOD_ID, GTMaterials.Aluminium); // Then, register addon Materials GTCEu.LOGGER.info("Registering addon Materials"); From e900d818318056008b855d0080fd1a9944675681 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 1 May 2026 20:32:23 +1000 Subject: [PATCH 7/9] remove fallback material --- .../material/registry/MaterialRegistry.java | 14 -------------- .../com/gregtechceu/gtceu/common/CommonProxy.java | 2 -- 2 files changed, 16 deletions(-) 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 d7ad83d156b..a88a74caeba 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 @@ -7,13 +7,11 @@ import net.minecraft.resources.ResourceLocation; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import org.jetbrains.annotations.NotNull; import java.util.Collection; -import java.util.Map; import java.util.Set; public class MaterialRegistry extends GTRegistry.RL { @@ -23,9 +21,6 @@ public class MaterialRegistry extends GTRegistry.RL { private Phase registrationPhase = Phase.PRE; - @NotNull - private Map fallbackMaterial = new Object2ObjectOpenHashMap<>(); - public MaterialRegistry() { super(GTCEu.id("material")); } @@ -76,15 +71,6 @@ public Collection getAllMaterials() { return values(); } - public void setFallbackMaterial(java.lang.String modId, @NotNull Material material) { - this.fallbackMaterial.put(modId, material); - } - - @NotNull - public Material getFallbackMaterial(java.lang.String modId) { - return fallbackMaterial.get(modId); - } - public void closeRegistry() { registrationPhase = Phase.CLOSED; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index d6972527229..86c1f057827 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -202,8 +202,6 @@ private static void initMaterials() { GTRegistries.MATERIALS.unfreeze(); GTCEu.LOGGER.info("Registering GTCEu Materials"); GTMaterials.init(); - GTRegistries.MATERIALS - .setFallbackMaterial(GTCEu.MOD_ID, GTMaterials.Aluminium); // Then, register addon Materials GTCEu.LOGGER.info("Registering addon Materials"); From 0025171d3398434a61d69494405af805d28c24c6 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 2 May 2026 09:56:58 +1000 Subject: [PATCH 8/9] fixes --- .../gtceu/api/data/chemical/material/Material.java | 2 +- .../chemical/material/registry/MaterialRegistry.java | 10 +++------- .../gtceu/api/registry/registrate/GTRegistrate.java | 9 +++++---- .../com/gregtechceu/gtceu/common/CommonProxy.java | 7 ------- .../com/gregtechceu/gtceu/common/data/GTFluids.java | 2 +- .../gtceu/common/data/GTMaterialBlocks.java | 12 ++++++------ .../gtceu/common/data/GTMaterialItems.java | 6 +++--- 7 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 48b8b4f40ab..17c0074e4c2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -150,7 +150,7 @@ protected Material(ResourceLocation resourceLocation) { } protected void registerMaterial() { - GTRegistries.MATERIALS.register(this); + GTRegistries.MATERIALS.register(getResourceLocation(), this); } public String getName() { 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 a88a74caeba..dfe15451e30 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 @@ -10,8 +10,8 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import lombok.Getter; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.UnmodifiableView; -import java.util.Collection; import java.util.Set; public class MaterialRegistry extends GTRegistry.RL { @@ -38,10 +38,6 @@ public Material get(java.lang.String name) { return GTMaterials.NULL; } - public void register(Material material) { - this.register(material.getResourceLocation(), material); - } - @Override public T register(@NotNull ResourceLocation key, @NotNull T value) { if (registrationPhase == Phase.CLOSED || registrationPhase == Phase.FROZEN) { @@ -65,10 +61,10 @@ public T register(@NotNull ResourceLocation key, @NotNull T * @return all registered materials. */ @NotNull - public Collection getAllMaterials() { + public @UnmodifiableView Set values() { if (registrationPhase == Phase.PRE || registrationPhase == Phase.OPEN) throw new IllegalStateException("Cannot retrieve all materials before registration"); - return values(); + return super.values(); } public void closeRegistry() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index fd06954cd65..752aaa87425 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -96,7 +96,7 @@ public static GTRegistrate create(String modId) { * @return The {@link GTRegistrate} instance */ public static GTRegistrate create(String modId, boolean registerEvents) { - return innerCreate(modId, false, registerEvents); + return innerCreate(modId, registerEvents, registerEvents); } /** @@ -114,10 +114,11 @@ public static GTRegistrate createIgnoringListenerErrors(String modId) { } private static GTRegistrate innerCreate(String modId, boolean registerEvents, boolean requireValidEventBus) { - if (EXISTING_REGISTRATES.containsKey(modId)) { - return EXISTING_REGISTRATES.get(modId); - } + + var existing = EXISTING_REGISTRATES.get(modId); + if (existing != null) return existing; var registrate = new GTRegistrate(modId); + if (registerEvents) { Optional modEventBus = ModList.get().getModContainerById(modId) .filter(FMLModContainer.class::isInstance) diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 86c1f057827..69b9a20e67a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -172,13 +172,6 @@ public static void init() { providers.add(0, generator); } } - - registrate - .registerEventListeners(ModList.get().getModContainerById(location.getNamespace()) - .filter(FMLModContainer.class::isInstance) - .map(FMLModContainer.class::cast) - .map(FMLModContainer::getEventBus) - .orElse(FMLJavaModLoadingContext.get().getModEventBus())); }); WorldGenLayers.registerAll(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index c7f94f160fa..0bfb28de312 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -39,7 +39,7 @@ public static void init() { // register fluids for materials REGISTRATE.creativeModeTab(() -> GTCreativeModeTabs.MATERIAL_FLUID); - for (var material : GTRegistries.MATERIALS.getAllMaterials()) { + for (var material : GTRegistries.MATERIALS.values()) { var fluidProperty = material.getProperty(PropertyKey.FLUID); if (fluidProperty != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java index 8bb3e4b655f..4c21ff2b8a5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -58,7 +58,7 @@ public static void generateMaterialBlocks() { for (TagPrefix tagPrefix : TagPrefix.values()) { if (!TagPrefix.ORES.containsKey(tagPrefix) && tagPrefix.doGenerateBlock()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (tagPrefix.doGenerateBlock(material)) { registerMaterialBlock(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); @@ -91,7 +91,7 @@ private static void registerMaterialBlock(TagPrefix tagPrefix, Material material // Material Ore Blocks public static void generateOreBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Ore Blocks..."); - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (allowOreBlock(material)) { registerOreBlock(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } @@ -139,7 +139,7 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) // Material Ore Indicator Piles public static void generateOreIndicators() { GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks..."); - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (allowOreIndicator(material)) { registerOreIndicator(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } @@ -175,7 +175,7 @@ private static void registerOreIndicator(Material material, GTRegistrate registr public static void generateCableBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Cable/Wire Blocks..."); for (Insulation insulation : Insulation.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (allowCableBlock(material, insulation)) { registerCableBlock(material, insulation, GTRegistrate.createIgnoringListenerErrors(material.getModid())); @@ -216,7 +216,7 @@ private static void registerCableBlock(Material material, Insulation insulation, public static void generateFluidPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks..."); for (var fluidPipeType : FluidPipeType.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (allowFluidPipeBlock(material, fluidPipeType)) { registerFluidPipeBlock(material, fluidPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); @@ -262,7 +262,7 @@ private static void registerFluidPipeBlock(Material material, FluidPipeType flui public static void generateItemPipeBlocks() { GTCEu.LOGGER.debug("Generating GTCEu Item Pipe Blocks..."); for (var itemPipeType : ItemPipeType.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (allowItemPipeBlock(material, itemPipeType)) { registerItemPipeBlock(material, itemPipeType, GTRegistrate.createIgnoringListenerErrors(material.getModid())); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java index 2058314a912..ff9e9cc4c2b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialItems.java @@ -70,7 +70,7 @@ public static void generateMaterialItems() { REGISTRATE.creativeModeTab(() -> MATERIAL_ITEM); for (var tagPrefix : TagPrefix.values()) { if (tagPrefix.doGenerateItem()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (tagPrefix.doGenerateItem(material)) { generateMaterialItem(tagPrefix, material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); @@ -100,7 +100,7 @@ private static void generateMaterialItem(TagPrefix tagPrefix, Material material, public static void generateTools() { REGISTRATE.creativeModeTab(() -> TOOL); for (GTToolType toolType : GTToolType.getTypes().values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (material.hasProperty(PropertyKey.TOOL)) { var property = material.getProperty(PropertyKey.TOOL); if (property.hasType(toolType)) { @@ -130,7 +130,7 @@ private static void generateTool(Material material, GTToolType toolType, GTRegis public static void generateArmors() { REGISTRATE.creativeModeTab(() -> TOOL); for (ArmorItem.Type type : ArmorItem.Type.values()) { - for (Material material : GTRegistries.MATERIALS.getAllMaterials()) { + for (Material material : GTRegistries.MATERIALS.values()) { if (material.hasProperty(PropertyKey.ARMOR)) { generateArmor(material, type, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } From 3aaf50ac3e15e49070ffefa37caf758f47f920ba Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 2 May 2026 10:00:54 +1000 Subject: [PATCH 9/9] lang generator --- .../gtceu/api/registry/registrate/GTRegistrate.java | 1 - .../java/com/gregtechceu/gtceu/common/CommonProxy.java | 2 -- .../gtceu/data/lang/MaterialLangGenerator.java | 10 +++++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java index 752aaa87425..13461e0b085 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTRegistrate.java @@ -114,7 +114,6 @@ public static GTRegistrate createIgnoringListenerErrors(String modId) { } private static GTRegistrate innerCreate(String modId, boolean registerEvents, boolean requireValidEventBus) { - var existing = EXISTING_REGISTRATES.get(modId); if (existing != null) return existing; var registrate = new GTRegistrate(modId); diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 69b9a20e67a..3f05df69dae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -69,12 +69,10 @@ import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModLoader; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.fml.javafmlmod.FMLModContainer; import net.minecraftforge.registries.RegisterEvent; import com.google.common.collect.Multimaps; diff --git a/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java b/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java index 9eeffd3943c..1de6153cdbb 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java +++ b/src/main/java/com/gregtechceu/gtceu/data/lang/MaterialLangGenerator.java @@ -9,10 +9,10 @@ public class MaterialLangGenerator { public static void generate(RegistrateLangProvider provider, String modId) { - GTRegistries.MATERIALS.values().stream() - .filter(mat -> mat.getModid().equals(modId)) - .forEach(material -> { - provider.add(material.getUnlocalizedName(), toEnglishName(material.getName())); - }); + for (var material : GTRegistries.MATERIALS) { + if (material.getModid().equals(modId)) { + provider.add(material.getUnlocalizedName(), toEnglishName(material.getName())); + } + } } }