From 5bdfe0e4c605ee1e5afb0c09b14a1ff6898f6b46 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 23 Jun 2026 16:23:13 +1000 Subject: [PATCH 01/33] more registry stuff --- .../gtceu/api/registry/GTRegistries.java | 1 + .../gregtechceu/gtceu/common/CommonProxy.java | 54 ++++++++++++------- .../gtceu/common/data/GTAttachmentTypes.java | 8 ++- .../gtceu/common/data/GTCommandArguments.java | 9 ++-- .../gtceu/common/data/GTFeatures.java | 4 +- .../gtceu/common/data/GTMobEffects.java | 9 ++-- .../gtceu/common/data/GTParticleTypes.java | 9 ++-- .../common/data/GTRecipeSerializers.java | 7 ++- .../common/data/GTValueProviderTypes.java | 4 +- .../common/data/item/GTDataComponents.java | 7 ++- .../common/item/armor/GTArmorMaterials.java | 7 ++- .../gtceu/data/recipe/GTIngredientTypes.java | 11 +++- 12 files changed, 88 insertions(+), 42 deletions(-) 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 524fc0dd3b8..8212878bd5e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -33,6 +33,7 @@ import net.minecraft.resources.ResourceLocation; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.IEventBus; +import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.registries.IdMappingEvent; import net.neoforged.neoforge.registries.RegisterEvent; diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index b4e6acc28b5..0253a7ea0ae 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -142,19 +142,19 @@ public static void init(final IEventBus modBus) { } modBus.register(CommonProxy.class); - // MUI stuff - GuiManager.registerFactory(MachineUIFactory.INSTANCE); - GuiManager.registerFactory(CoverUIFactory.INSTANCE); - - GTGuiTheme.registerThemes(); // Initialize the model generator before any content is loaded so machine models can use the generated data GregTechDatagen.initPre(); GTRegistries.init(modBus); - REGISTRATE.registerEventListeners(modBus); - GTCreativeModeTabs.init(); - GTAttachmentTypes.ATTACHMENT_TYPES.register(modBus); + + registerDeferredRegistries(modBus); + + // MUI stuff + GuiManager.registerFactory(MachineUIFactory.INSTANCE); + GuiManager.registerFactory(CoverUIFactory.INSTANCE); + GTGuiTheme.registerThemes(); + FusionReactorMachine.registerFusionTier(GTValues.LuV, "MKI"); FusionReactorMachine.registerFusionTier(GTValues.ZPM, "MKII"); @@ -163,6 +163,31 @@ public static void init(final IEventBus modBus) { AddonFinder.getAddonList().forEach(IGTAddon::gtInitComplete); } + // Attaches the deferred registries that hold GT content to the mod bus. + public static void registerDeferredRegistries(IEventBus modBus) { + + // Neoforge and MC registries + + GTDataComponents.init(modBus); + GTArmorMaterials.init(modBus); + GTAttachmentTypes.init(modBus); + GTIngredientTypes.init(modBus); + GTRecipeSerializers.init(modBus); + + GTCommandArguments.init(modBus); + GTMobEffects.init(modBus); + GTParticleTypes.init(modBus); + GTFeatures.init(modBus); + GTValueProviderTypes.init(modBus); + + // GT registries + + // Registrate is a wrapped for deferred registries, so it should be initialised here. + REGISTRATE.registerEventListeners(modBus); + + GTCreativeModeTabs.init(); + } + // Only register everything once. private static boolean didRunRegistration = false; @@ -205,8 +230,6 @@ public static void onRegister(RegisterEvent event) { GTFoods.init(); GTToolTiers.init(); GTToolBehaviors.init(); - GTDataComponents.DATA_COMPONENTS.register(modBus); - GTArmorMaterials.ARMOR_MATERIALS.register(modBus); GTItems.init(); GTMachineUtils.init(); @@ -214,18 +237,9 @@ public static void onRegister(RegisterEvent event) { GTMachines.init(); GTEntityTypes.init(); - GTIngredientTypes.ITEM_INGREDIENT_TYPES.register(modBus); - GTIngredientTypes.FLUID_INGREDIENT_TYPES.register(modBus); - GTRecipeSerializers.RECIPE_SERIALIZERS.register(modBus); - - GTCommandArguments.COMMAND_ARGUMENT_TYPES.register(modBus); - GTMobEffects.MOB_EFFECTS.register(modBus); - GTParticleTypes.PARTICLE_TYPES.register(modBus); - WorldGenLayers.init(); GregTechDatagen.initPost(); - GTValueProviderTypes.init(modBus); - GTFeatures.register(modBus); + WorldGenLayers.registerAll(); VeinGenerators.registerAddonGenerators(); IndicatorGenerators.registerAddonGenerators(); WaypointManager.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java index 5f48d47966e..e9df806ee2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.common.capability.MedicalConditionTracker; import net.minecraft.world.entity.player.Player; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.attachment.AttachmentType; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -11,9 +12,14 @@ public class GTAttachmentTypes { - public static final DeferredRegister> ATTACHMENT_TYPES = DeferredRegister.create( + private static final DeferredRegister> ATTACHMENT_TYPES = DeferredRegister.create( NeoForgeRegistries.ATTACHMENT_TYPES, GTCEu.MOD_ID); + public static void init(IEventBus bus) { + ATTACHMENT_TYPES.register(bus); + } + + public static final DeferredHolder, AttachmentType> MEDICAL_CONDITION_TRACKER = ATTACHMENT_TYPES .register("hazard_tracker", () -> AttachmentType.serializable(holder -> { if (holder instanceof Player player) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java index d9b19367c9a..764f2557897 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java @@ -16,9 +16,13 @@ @SuppressWarnings("unused") public class GTCommandArguments { - public static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister + private static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister .create(Registries.COMMAND_ARGUMENT_TYPE, GTCEu.MOD_ID); + public static void init(IEventBus modBus) { + COMMAND_ARGUMENT_TYPES.register(modBus); + } + private static final DeferredHolder, SingletonArgumentInfo> MEDICAL_CONDITION_ARGUMENT_TYPE = COMMAND_ARGUMENT_TYPES .register("medical_condition", () -> ArgumentTypeInfos.registerByClass(MedicalConditionArgument.class, @@ -29,7 +33,4 @@ private static > Class fixClassType(Class) type; } - public static void init(IEventBus modBus) { - COMMAND_ARGUMENT_TYPES.register(modBus); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java index 122fa19927d..6ad8db2b4a1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTFeatures.java @@ -16,7 +16,7 @@ public class GTFeatures { - public static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, + private static final DeferredRegister> FEATURES = DeferredRegister.create(Registries.FEATURE, GTCEu.MOD_ID); public static final DeferredHolder, StoneBlobFeature> STONE_BLOB = FEATURES.register( @@ -33,7 +33,7 @@ private static void init() { inst = RubberTreeChancePlacement.RUBBER_TREE_CHANCE_PLACEMENT; } - public static void register(IEventBus modEventBus) { + public static void init(IEventBus modEventBus) { init(); FEATURES.register(modEventBus); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java index 8ac0dca2a3a..83caa64086a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java @@ -12,13 +12,14 @@ public class GTMobEffects { - public static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, + private static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(Registries.MOB_EFFECT, GTCEu.MOD_ID); - public static final DeferredHolder WEAK_POISON = MOB_EFFECTS.register("weak_poison", - () -> new GTPoisonEffect(MobEffectCategory.HARMFUL, 0x6D7917)); - public static void init(IEventBus modBus) { MOB_EFFECTS.register(modBus); } + + public static final DeferredHolder WEAK_POISON = MOB_EFFECTS.register("weak_poison", + () -> new GTPoisonEffect(MobEffectCategory.HARMFUL, 0x6D7917)); + } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java index 199ef6a6e99..c1e28103364 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java @@ -17,9 +17,13 @@ public class GTParticleTypes { - public static final DeferredRegister> PARTICLE_TYPES = DeferredRegister + private static final DeferredRegister> PARTICLE_TYPES = DeferredRegister .create(Registries.PARTICLE_TYPE, GTCEu.MOD_ID); + public static void init(IEventBus modBus) { + PARTICLE_TYPES.register(modBus); + } + public static final DeferredHolder, ParticleType> HAZARD_PARTICLE = PARTICLE_TYPES .register("hazard", () -> new ParticleType<>(false) { @@ -36,7 +40,4 @@ public class GTParticleTypes { public static final DeferredHolder, SimpleParticleType> MUFFLER_PARTICLE = PARTICLE_TYPES .register("muffler", () -> new SimpleParticleType(false)); - public static void init(IEventBus modBus) { - PARTICLE_TYPES.register(modBus); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java index 11148edf857..5f9a543abd5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java @@ -6,14 +6,19 @@ import net.minecraft.core.registries.Registries; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; public class GTRecipeSerializers { - public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister + private static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister .create(Registries.RECIPE_SERIALIZER, GTCEu.MOD_ID); + public static void init(IEventBus bus) { + RECIPE_SERIALIZERS.register(bus); + } + public static final DeferredHolder, StrictShapedRecipe.Serializer> CRAFTING_SHAPED_STRICT = RECIPE_SERIALIZERS .register("crafting_shaped_strict", StrictShapedRecipe.Serializer::new); public static final DeferredHolder, ShapedEnergyTransferRecipe.Serializer> CRAFTING_SHAPED_ENERGY_TRANSFER = RECIPE_SERIALIZERS diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTValueProviderTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTValueProviderTypes.java index 9535df0c1d5..61562c5b5fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTValueProviderTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTValueProviderTypes.java @@ -15,10 +15,10 @@ public class GTValueProviderTypes { - public static final DeferredRegister> INT_PROVIDER_TYPE_REGISTER = DeferredRegister.create( + private static final DeferredRegister> INT_PROVIDER_TYPE_REGISTER = DeferredRegister.create( Registries.INT_PROVIDER_TYPE, GTCEu.MOD_ID); - public static final DeferredRegister> FLOAT_PROVIDER_TYPE_REGISTER = DeferredRegister.create( + private static final DeferredRegister> FLOAT_PROVIDER_TYPE_REGISTER = DeferredRegister.create( Registries.FLOAT_PROVIDER_TYPE, GTCEu.MOD_ID); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java index 3f764eed193..c73087d2578 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java @@ -23,6 +23,7 @@ import net.minecraft.util.Unit; import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.fluids.SimpleFluidContent; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -35,9 +36,13 @@ public class GTDataComponents { private static final StreamCodec UNIT_STREAM_CODEC = StreamCodec.unit(Unit.INSTANCE); - public static final DeferredRegister.DataComponents DATA_COMPONENTS = DeferredRegister + private static final DeferredRegister.DataComponents DATA_COMPONENTS = DeferredRegister .createDataComponents(Registries.DATA_COMPONENT_TYPE, GTCEu.MOD_ID); + public static void init(IEventBus bus) { + DATA_COMPONENTS.register(bus); + } + // Tool-related public static final DeferredHolder, DataComponentType> GT_TOOL = DATA_COMPONENTS .registerComponentType("gt_tool", diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorMaterials.java index bc7be737437..15e6c077c68 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorMaterials.java @@ -8,6 +8,7 @@ import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.crafting.Ingredient; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -16,9 +17,13 @@ public class GTArmorMaterials { - public static final DeferredRegister ARMOR_MATERIALS = DeferredRegister + private static final DeferredRegister ARMOR_MATERIALS = DeferredRegister .create(BuiltInRegistries.ARMOR_MATERIAL, GTCEu.MOD_ID); + public static void init(IEventBus bus) { + ARMOR_MATERIALS.register(bus); + } + public static final List BLANK_LAYERS = List.of(new ArmorMaterial.Layer(GTCEu.id("armor"))); public static final DeferredHolder GOGGLES = ARMOR_MATERIALS.register("goggles", diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java index 7594c4b27be..b4ff4b2b4b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.ingredient.*; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.common.crafting.IngredientType; import net.neoforged.neoforge.fluids.crafting.FluidIngredientType; import net.neoforged.neoforge.registries.DeferredHolder; @@ -11,11 +12,17 @@ public class GTIngredientTypes { - public static final DeferredRegister> ITEM_INGREDIENT_TYPES = DeferredRegister + private static final DeferredRegister> ITEM_INGREDIENT_TYPES = DeferredRegister .create(NeoForgeRegistries.INGREDIENT_TYPES, GTCEu.MOD_ID); - public static final DeferredRegister> FLUID_INGREDIENT_TYPES = DeferredRegister + private static final DeferredRegister> FLUID_INGREDIENT_TYPES = DeferredRegister .create(NeoForgeRegistries.FLUID_INGREDIENT_TYPES, GTCEu.MOD_ID); + public static void init(IEventBus bus) { + ITEM_INGREDIENT_TYPES.register(bus); + FLUID_INGREDIENT_TYPES.register(bus); + } + + public static final DeferredHolder, IngredientType> INT_CIRCUIT_INGREDIENT = ITEM_INGREDIENT_TYPES .register("circuit", () -> new IngredientType<>(IntCircuitIngredient.CODEC)); From 904abbc44d01e231162031edd35cc91bdda2bdc3 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Tue, 23 Jun 2026 18:11:37 +1000 Subject: [PATCH 02/33] move registry keys to seperate object --- .../capability/recipe/RecipeCapability.java | 2 +- .../api/data/worldgen/GTOreDefinition.java | 6 +- .../data/worldgen/WorldGeneratorUtils.java | 2 +- .../bedrockfluid/BedrockFluidDefinition.java | 2 +- .../BedrockFluidVeinSavedData.java | 4 +- .../bedrockfluid/FluidVeinWorldEntry.java | 4 +- .../bedrockore/BedrockOreDefinition.java | 2 +- .../bedrockore/BedrockOreVeinSavedData.java | 4 +- .../bedrockore/OreVeinWorldEntry.java | 4 +- .../item/datacomponents/ToolBehaviors.java | 2 +- .../api/multiblock/error/GTPatternErrors.java | 32 +++--- .../api/multiblock/error/PatternError.java | 2 +- .../gtceu/api/registry/GTRegistries.java | 101 ++++++++---------- .../gregtechceu/gtceu/common/CommonProxy.java | 11 +- .../gtceu/common/commands/GTCommands.java | 4 +- .../gtceu/common/data/GTBedrockFluids.java | 2 +- .../gtceu/common/data/GTOreVeins.java | 2 +- .../common/data/item/GTDataComponents.java | 2 +- .../gregtechceu/gtceu/core/MixinHelpers.java | 6 +- .../gtceu/data/DataGenerators.java | 4 +- .../data/loader/PostRegistryListener.java | 2 +- .../integration/kjs/GregTechKubeJSPlugin.java | 28 ++--- .../kjs/events/GTBedrockFluidVeinEventJS.java | 2 +- .../kjs/events/GTBedrockOreVeinEventJS.java | 2 +- .../kjs/events/GTOreVeinEventJS.java | 12 +-- .../orevein/GTBedrockFluidEmiCategory.java | 4 +- .../emi/orevein/GTBedrockOreEmiCategory.java | 4 +- .../emi/orevein/GTOreVeinEmiCategory.java | 4 +- .../orevein/GTBedrockFluidInfoCategory.java | 4 +- .../jei/orevein/GTBedrockOreInfoCategory.java | 4 +- .../jei/orevein/GTOreVeinInfoCategory.java | 4 +- .../widgets/OreVeinRecipeWidget.java | 6 +- 32 files changed, 137 insertions(+), 137 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index 65f162a7072..d923f92ede6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -194,7 +194,7 @@ public boolean isTickSlot(int index, IO io, GTRecipe recipe) { private static DataResult>> safeReference(Holder> value) { return value.getDelegate() instanceof Holder.Reference> reference ? DataResult.success(reference) : DataResult.error( - () -> "Unregistered holder in " + GTRegistries.RECIPE_CAPABILITY_REGISTRY + ": " + value); + () -> "Unregistered holder in " + GTRegistries.Keys.RECIPE_CAPABILITY + ": " + value); } /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index 754f332b7b2..98735141646 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -60,8 +60,8 @@ public class GTOreDefinition { Codec.list(IndicatorGenerator.DIRECT_CODEC).fieldOf("indicators").forGetter(ft -> ft.indicatorGenerators) ).apply(instance, GTOreDefinition::new)); - public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.ORE_VEIN_REGISTRY); - public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.holderRegistry(GTRegistries.ORE_VEIN_REGISTRY); + public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.Keys.ORE_VEIN); + public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.holderRegistry(GTRegistries.Keys.ORE_VEIN); // spotless:on private final InferredProperties inferredProperties = new InferredProperties(); @@ -185,7 +185,7 @@ public GTOreDefinition dimensions(Set> dimensions) { @HideFromJS public GTOreDefinition biomes(TagKey biomes) { if (biomeLookup == null) { - GTRegistries.builtinRegistry().registry(GTRegistries.ORE_VEIN_REGISTRY) + GTRegistries.builtinRegistry().registry(GTRegistries.Keys.ORE_VEIN) .map(reg -> reg.getKey(this)) .ifPresentOrElse(id -> { GTCEu.LOGGER.error("Tried to modify ore vein `{}`'s biomes after registry has been frozen!", diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java index d87824565aa..4ed763b8d91 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGeneratorUtils.java @@ -56,7 +56,7 @@ private static class WorldOreVeinCache { private final Map, List> biomeVeins = new Object2ObjectOpenHashMap<>(); public WorldOreVeinCache(ServerLevel level) { - this.worldVeins = level.registryAccess().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY).holders() + this.worldVeins = level.registryAccess().registryOrThrow(GTRegistries.Keys.ORE_VEIN).holders() .filter(vein -> !(vein.value().veinGenerator() instanceof NoopVeinGenerator)) .filter(entry -> entry.value().dimensionFilter().stream() .anyMatch(dim -> WorldGeneratorUtils.isSameDimension(dim, level.dimension()))) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java index ca1eeb50ec3..db8649e8afe 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidDefinition.java @@ -42,7 +42,7 @@ public class BedrockFluidDefinition { BiomeWeightModifier.CODEC.optionalFieldOf("weight_modifier", BiomeWeightModifier.EMPTY).forGetter(BedrockFluidDefinition::getBiomeWeightModifier), ResourceKey.codec(Registries.DIMENSION).listOf().fieldOf("dimension_filter").forGetter(ft -> new ArrayList<>(ft.dimensionFilter)) ).apply(instance, BedrockFluidDefinition::new)); - public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.BEDROCK_FLUID_REGISTRY); + public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.Keys.BEDROCK_FLUID); // spotless:on @Getter @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java index 782f9f45fb0..a5f70c3417d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/BedrockFluidVeinSavedData.java @@ -94,7 +94,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { if (totalWeight > 0) { int weight = Math.abs(query % totalWeight); var registry = serverLevel.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY) + .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID) .asHolderIdMap(); for (var holder : registry) { var fluidDefinition = holder.value(); @@ -143,7 +143,7 @@ public FluidVeinWorldEntry getFluidVeinWorldEntry(int chunkX, int chunkZ) { public int getTotalWeight(Holder biome) { return biomeWeights.computeIfAbsent(biome, b -> { int totalWeight = 0; - for (var definition : serverLevel.registryAccess().registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY)) { + for (var definition : serverLevel.registryAccess().registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID)) { if (!definition.canGenerate()) { continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java index 2af3ed774c4..ed08379b81f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java @@ -71,8 +71,8 @@ public static FluidVeinWorldEntry readFromNBT(@NotNull CompoundTag tag, HolderLo if (tag.contains("vein")) { ResourceLocation id = ResourceLocation.parse(tag.getString("vein")); info.setDefinition(GTMemoizer.memoize(() -> { - return provider.lookup(GTRegistries.BEDROCK_FLUID_REGISTRY) - .flatMap(reg -> reg.get(ResourceKey.create(GTRegistries.BEDROCK_FLUID_REGISTRY, id))) + return provider.lookup(GTRegistries.Keys.BEDROCK_FLUID) + .flatMap(reg -> reg.get(ResourceKey.create(GTRegistries.Keys.BEDROCK_FLUID, id))) .orElse(null); })); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java index 44c45c7d305..4f801f4c0b9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreDefinition.java @@ -43,7 +43,7 @@ public class BedrockOreDefinition { BiomeWeightModifier.CODEC.optionalFieldOf("weight_modifier", BiomeWeightModifier.EMPTY).forGetter(BedrockOreDefinition::biomeWeightModifier), ResourceKey.codec(Registries.DIMENSION).listOf().fieldOf("dimension_filter").forGetter(ft -> new ArrayList<>(ft.dimensionFilter)) ).apply(instance, BedrockOreDefinition::new)); - public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.BEDROCK_ORE_REGISTRY); + public static final Codec> CODEC = RegistryFixedCodec.create(GTRegistries.Keys.BEDROCK_ORE); // spotless:on @Getter @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java index 3b9cf107921..174a8c8738c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/BedrockOreVeinSavedData.java @@ -103,7 +103,7 @@ public OreVeinWorldEntry getOreVeinWorldEntry(int chunkX, int chunkZ) { if (totalWeight > 0) { int weight = Math.abs(query % totalWeight); var registry = serverLevel.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY) + .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE) .asHolderIdMap(); for (var holder : registry) { var oreDefinition = holder.value(); @@ -176,7 +176,7 @@ public void createVein(ChunkPos pos, @Nullable Holder hold public int getTotalWeight(Holder biome) { return biomeWeights.computeIfAbsent(biome, b -> { int totalWeight = 0; - for (var definition : serverLevel.registryAccess().registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY)) { + for (var definition : serverLevel.registryAccess().registryOrThrow(GTRegistries.Keys.BEDROCK_ORE)) { if (!definition.canGenerate()) { continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java index cc7b2b4812c..0e2b79b5bc9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockore/OreVeinWorldEntry.java @@ -61,8 +61,8 @@ public static OreVeinWorldEntry readFromNBT(CompoundTag tag, HolderLookup.Provid if (tag.contains("vein")) { ResourceLocation id = ResourceLocation.parse(tag.getString("vein")); - var maybeDef = provider.lookup(GTRegistries.BEDROCK_ORE_REGISTRY).get() - .get(ResourceKey.create(GTRegistries.BEDROCK_ORE_REGISTRY, id)); + var maybeDef = provider.lookup(GTRegistries.Keys.BEDROCK_ORE).get() + .get(ResourceKey.create(GTRegistries.Keys.BEDROCK_ORE, id)); maybeDef.ifPresent(info::setDefinition); } return info; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java b/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java index 7f04eac4091..bd488728923 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java @@ -31,7 +31,7 @@ public record ToolBehaviors(@Unmodifiable Map, IToolBehavior public static final StreamCodec, IToolBehavior>> MAP_STREAM_CODEC = StreamCodecUtils.dispatchMap( HashMap::new, - ByteBufCodecs.registry(GTRegistries.TOOL_BEHAVIOR_REGISTRY), + ByteBufCodecs.registry(GTRegistries.Keys.TOOL_BEHAVIOR), type -> (StreamCodec>) type.getStreamCodec()); public static final StreamCodec STREAM_CODEC = MAP_STREAM_CODEC .map(ToolBehaviors::new, ToolBehaviors::behaviors); diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java index 2998be39fd0..44c9d99d015 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java @@ -1,23 +1,29 @@ package com.gregtechceu.gtceu.api.multiblock.error; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; -import static com.gregtechceu.gtceu.api.registry.GTRegistries.PATTERN_ERRORS; - +@SuppressWarnings("unused") public class GTPatternErrors { - public static void register(PatternError.PatternErrorType patternErrorType) { - GTRegistries.register(PATTERN_ERRORS, patternErrorType.id(), patternErrorType); + private static final DeferredRegister PATTERN_ERRORS = DeferredRegister.create(GTRegistries.Keys.PATTERN_ERROR_TYPE, "gtceu"); + + public static DeferredHolder PLACEHOLDER_ERROR = register(PlaceholderError.TYPE); + public static DeferredHolder BLOCK_MATCHING_ERROR = register(BlockMatchingError.TYPE); + public static DeferredHolder PART_ABILITY_ERROR = register(PartAbilityError.TYPE); + public static DeferredHolder COIL_MATCHING_ERROR = register(CoilMatchingError.TYPE); + public static DeferredHolder FILTER_MATCHING_ERROR = register(FilterMatchingError.TYPE); + public static DeferredHolder PATTERN_STRING_ERROR = register(PatternStringError.TYPE); + public static DeferredHolder SINGLE_PREDICATE_ERROR = register(SinglePredicateError.TYPE); + public static DeferredHolder SIMPLE_PATTERN_ERROR = register(SimplePatternError.TYPE); + + private static DeferredHolder register(PatternError.PatternErrorType patternErrorType) { + return PATTERN_ERRORS.register(patternErrorType.id().getPath(), () -> patternErrorType); } - public static void init() { - register(PlaceholderError.TYPE); - register(BlockMatchingError.TYPE); - register(PartAbilityError.TYPE); - register(CoilMatchingError.TYPE); - register(FilterMatchingError.TYPE); - register(PatternStringError.TYPE); - register(SinglePredicateError.TYPE); - register(SimplePatternError.TYPE); + public static void init(IEventBus bus) { + PATTERN_ERRORS.register(bus); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/PatternError.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/PatternError.java index 24c3d5f5d68..b36aab9754e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/PatternError.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/PatternError.java @@ -18,7 +18,7 @@ public abstract class PatternError { - public static final Codec CODEC = GTRegistries.PATTERN_ERRORS.byNameCodec() + public static final Codec CODEC = GTRegistries.PATTERN_ERROR_TYPES.byNameCodec() .dispatch(PatternError::type, PatternErrorType::codec); @Getter 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 8212878bd5e..9cc0e075002 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -33,7 +33,6 @@ import net.minecraft.resources.ResourceLocation; import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.IEventBus; -import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.registries.IdMappingEvent; import net.neoforged.neoforge.registries.RegisterEvent; @@ -48,68 +47,62 @@ public final class GTRegistries { + public static final class Keys { + private Keys() {} + + // server (datapack) registries' keys + public static final ResourceKey> ORE_VEIN = makeRegistryKey(GTCEu.id("ore_vein")); + public static final ResourceKey> BEDROCK_FLUID = makeRegistryKey(GTCEu.id("bedrock_fluid")); + public static final ResourceKey> BEDROCK_ORE = makeRegistryKey(GTCEu.id("bedrock_ore")); + // static registries' keys + public static final ResourceKey> ELEMENT = makeRegistryKey(GTCEu.id("element")); + public static final ResourceKey> TAG_PREFIX = makeRegistryKey(GTCEu.id("tag_prefix")); + public static final ResourceKey> MATERIAL = makeRegistryKey(GTCEu.id("material")); + public static final ResourceKey> MACHINE = makeRegistryKey(GTCEu.id("machine")); + public static final ResourceKey> COVER = makeRegistryKey(GTCEu.id("cover")); + public static final ResourceKey> RECIPE_TYPE = makeRegistryKey(GTCEu.id("recipe_type")); + public static final ResourceKey> RECIPE_CATEGORY = makeRegistryKey(GTCEu.id("recipe_category")); + public static final ResourceKey>> RECIPE_CAPABILITY = makeRegistryKey(GTCEu.id("recipe_capability")); + public static final ResourceKey>> RECIPE_CONDITION = makeRegistryKey(GTCEu.id("recipe_condition")); + public static final ResourceKey> CHANCE_LOGIC = makeRegistryKey(GTCEu.id("chance_logic")); + public static final ResourceKey> PLACEHOLDER = makeRegistryKey(GTCEu.id("placeholder")); + public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); + public static final ResourceKey> SOUND = makeRegistryKey(GTCEu.id("sound")); + public static final ResourceKey> DIMENSION_MARKER = makeRegistryKey(GTCEu.id("dimension_marker")); + public static final ResourceKey> MEDICAL_CONDITION = makeRegistryKey(GTCEu.id("medical_condition")); + public static final ResourceKey> MATERIAL_ICON_SET = makeRegistryKey(GTCEu.id("material_icon_set")); + public static final ResourceKey> WORLD_GEN_LAYER = makeRegistryKey(GTCEu.id("world_gen_layer")); + public static final ResourceKey> PATTERN_ERROR_TYPE = makeRegistryKey(GTCEu.id("pattern_error_type")); + } + // spotless:off private static final LinkedHashMap> LOAD_ORDER = new LinkedHashMap<>(); - // server (datapack) registries' keys - public static final ResourceKey> ORE_VEIN_REGISTRY = makeRegistryKey(GTCEu.id("ore_vein")); - public static final ResourceKey> BEDROCK_FLUID_REGISTRY = makeRegistryKey(GTCEu.id("bedrock_fluid")); - public static final ResourceKey> BEDROCK_ORE_REGISTRY = makeRegistryKey(GTCEu.id("bedrock_ore")); - - // static registries' keys - public static final ResourceKey> ELEMENT_REGISTRY = makeRegistryKey(GTCEu.id("element")); - public static final ResourceKey> TAG_PREFIX_REGISTRY = makeRegistryKey(GTCEu.id("tag_prefix")); - public static final ResourceKey> MATERIAL_REGISTRY = makeRegistryKey(GTCEu.id("material")); - public static final ResourceKey> MACHINE_REGISTRY = makeRegistryKey(GTCEu.id("machine")); - public static final ResourceKey> COVER_REGISTRY = makeRegistryKey(GTCEu.id("cover")); - - public static final ResourceKey> RECIPE_TYPE_REGISTRY = makeRegistryKey(GTCEu.id("recipe_type")); - public static final ResourceKey> RECIPE_CATEGORY_REGISTRY = makeRegistryKey(GTCEu.id("recipe_category")); - public static final ResourceKey>> RECIPE_CAPABILITY_REGISTRY = makeRegistryKey(GTCEu.id("recipe_capability")); - public static final ResourceKey>> RECIPE_CONDITION_REGISTRY = makeRegistryKey(GTCEu.id("recipe_condition")); - public static final ResourceKey> CHANCE_LOGIC_REGISTRY = makeRegistryKey(GTCEu.id("chance_logic")); - public static final ResourceKey> PLACEHOLDER_REGISTRY = makeRegistryKey(GTCEu.id("placeholder")); - public static final ResourceKey>> TOOL_BEHAVIOR_REGISTRY = makeRegistryKey(GTCEu.id("tool_behavior")); - public static final ResourceKey> SOUND_REGISTRY = makeRegistryKey(GTCEu.id("sound")); - public static final ResourceKey> DIMENSION_MARKER_REGISTRY = makeRegistryKey(GTCEu.id("dimension_marker")); - public static final ResourceKey> MEDICAL_CONDITION_REGISTRY = makeRegistryKey(GTCEu.id("medical_condition")); - public static final ResourceKey> MATERIAL_ICON_SET_REGISTRY = makeRegistryKey(GTCEu.id("material_icon_set")); - public static final ResourceKey> PATTERN_ERROR_REGISTRY = makeRegistryKey(GTCEu.id("pattern_error")); - public static final ResourceKey> WORLD_GEN_LAYER_REGISTRY = makeRegistryKey(GTCEu.id("world_gen_layer")); - // GT Registries - - // Material related registries - - public static final Registry ELEMENTS = makeRegistry(ELEMENT_REGISTRY); + public static final Registry ELEMENTS = makeRegistry(Keys.ELEMENT); public static final MaterialRegistry MATERIALS = makeMaterialRegistry(); - public static final Registry TAG_PREFIXES = makeRegistry(TAG_PREFIX_REGISTRY); - public static final Registry MATERIAL_ICON_SETS = makeRegistry(MATERIAL_ICON_SET_REGISTRY); - - // Recipe related registries - - public static final Registry RECIPE_CATEGORIES = makeRegistry(RECIPE_CATEGORY_REGISTRY); - public static final Registry> RECIPE_CAPABILITIES = makeRegistry(RECIPE_CAPABILITY_REGISTRY); - public static final Registry> RECIPE_CONDITIONS = makeRegistry(RECIPE_CONDITION_REGISTRY); - public static final Registry CHANCE_LOGICS = makeRegistry(CHANCE_LOGIC_REGISTRY); - - // Other registries + public static final Registry TAG_PREFIXES = makeRegistry(Keys.TAG_PREFIX); - public static final Registry MACHINES = makeRegistry(MACHINE_REGISTRY); - public static final Registry COVERS = makeRegistry(COVER_REGISTRY); + public static final Registry SOUNDS = makeRegistry(Keys.SOUND, false); + public static final Registry CHANCE_LOGICS = makeRegistry(Keys.CHANCE_LOGIC); + public static final Registry> RECIPE_CAPABILITIES = makeRegistry(Keys.RECIPE_CAPABILITY); + public static final Registry> RECIPE_CONDITIONS = makeRegistry(Keys.RECIPE_CONDITION); + public static final Registry RECIPE_CATEGORIES = makeRegistry(Keys.RECIPE_CATEGORY); - public static final Registry WORLD_GEN_LAYERS = makeRegistry(WORLD_GEN_LAYER_REGISTRY); + public static final Registry MACHINES = makeRegistry(Keys.MACHINE); + public static final Registry COVERS = makeRegistry(Keys.COVER); - public static final Registry> TOOL_BEHAVIORS = makeRegistry(TOOL_BEHAVIOR_REGISTRY); - public static final Registry DIMENSION_MARKERS = makeRegistry(DIMENSION_MARKER_REGISTRY, false); - public static final Registry MEDICAL_CONDITIONS = makeRegistry(MEDICAL_CONDITION_REGISTRY); - public static final Registry PLACEHOLDERS = makeRegistry(PLACEHOLDER_REGISTRY); - public static final Registry PATTERN_ERRORS = makeRegistry(PATTERN_ERROR_REGISTRY); - public static final Registry SOUNDS = makeRegistry(SOUND_REGISTRY, false); + public static final Registry> TOOL_BEHAVIORS = makeRegistry(Keys.TOOL_BEHAVIOR); + public static final Registry DIMENSION_MARKERS = makeRegistry(Keys.DIMENSION_MARKER, false); + public static final Registry MEDICAL_CONDITIONS = makeRegistry(Keys.MEDICAL_CONDITION); + public static final Registry PLACEHOLDERS = makeRegistry(Keys.PLACEHOLDER); + public static final Registry MATERIAL_ICON_SETS = makeRegistry(Keys.MATERIAL_ICON_SET); + public static final Registry PATTERN_ERROR_TYPES = makeRegistry(Keys.PATTERN_ERROR_TYPE); + public static final Registry WORLD_GEN_LAYERS = makeRegistry(Keys.WORLD_GEN_LAYER); // spotless:on - public static ResourceKey> makeRegistryKey(ResourceLocation registryId) { + private static ResourceKey> makeRegistryKey(ResourceLocation registryId) { return ResourceKey.createRegistryKey(registryId); } @@ -126,8 +119,8 @@ public static MappedRegistry makeRegistry(ResourceKey> key, b } private static MaterialRegistry makeMaterialRegistry() { - MaterialRegistry registry = new MaterialRegistry(MATERIAL_REGISTRY); - LOAD_ORDER.put(MATERIAL_REGISTRY.location(), registry); + MaterialRegistry registry = new MaterialRegistry(Keys.MATERIAL); + LOAD_ORDER.put(Keys.MATERIAL.location(), registry); return registry; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 0253a7ea0ae..42d3ef95a33 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -182,6 +182,8 @@ public static void registerDeferredRegistries(IEventBus modBus) { // GT registries + GTPatternErrors.init(modBus); + // Registrate is a wrapped for deferred registries, so it should be initialised here. REGISTRATE.registerEventListeners(modBus); @@ -225,7 +227,6 @@ public static void onRegister(RegisterEvent event) { ChanceLogic.init(); GTRecipeTypes.init(); GTRecipeCategories.init(); - GTPatternErrors.init(); GTFoods.init(); GTToolTiers.init(); @@ -259,7 +260,7 @@ public static void initMaterials() { @SubscribeEvent(priority = EventPriority.LOW) public static void onRegisterLate(RegisterEvent event) { // Material event *should* happen before any of the others here - if (event.getRegistryKey() == GTRegistries.MATERIAL_REGISTRY) { + if (event.getRegistryKey() == GTRegistries.Keys.MATERIAL) { // 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 GTRegistries.MATERIALS.close(); @@ -321,11 +322,11 @@ public static void registerRegistries(NewRegistryEvent event) { @SubscribeEvent public static void registerDataPackRegistries(DataPackRegistryEvent.NewRegistry event) { - event.dataPackRegistry(GTRegistries.ORE_VEIN_REGISTRY, + event.dataPackRegistry(GTRegistries.Keys.ORE_VEIN, GTOreDefinition.DIRECT_CODEC, GTOreDefinition.DIRECT_CODEC); - event.dataPackRegistry(GTRegistries.BEDROCK_FLUID_REGISTRY, + event.dataPackRegistry(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidDefinition.DIRECT_CODEC, BedrockFluidDefinition.DIRECT_CODEC); - event.dataPackRegistry(GTRegistries.BEDROCK_ORE_REGISTRY, + event.dataPackRegistry(GTRegistries.Keys.BEDROCK_ORE, BedrockOreDefinition.DIRECT_CODEC, BedrockOreDefinition.DIRECT_CODEC); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java index 8bfe7c2251a..8f6cf3bbec1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java +++ b/src/main/java/com/gregtechceu/gtceu/common/commands/GTCommands.java @@ -69,7 +69,7 @@ public static void register(CommandDispatcher dispatcher, Co dispatcher.register(literal("gtceu") .then(literal("place_vein") .requires(ctx -> ctx.hasPermission(LEVEL_ADMINS)) - .then(argument("vein", ResourceKeyArgument.key(GTRegistries.ORE_VEIN_REGISTRY)) + .then(argument("vein", ResourceKeyArgument.key(GTRegistries.Keys.ORE_VEIN)) .executes(context -> { return GTCommands.placeVein(context, BlockPos.containing(context.getSource().getPosition())); }) @@ -277,7 +277,7 @@ private static int setActiveCape(CommandSourceStack source, ServerPlayer player, private static int placeVein(CommandContext context, BlockPos sourcePos) throws CommandSyntaxException { Holder.Reference vein = ResourceKeyArgumentAccessor.callResolveKey(context, "vein", - GTRegistries.ORE_VEIN_REGISTRY, ERROR_INVALID_VEIN); + GTRegistries.Keys.ORE_VEIN, ERROR_INVALID_VEIN); ResourceLocation id = vein.key().location(); ChunkPos chunkPos = new ChunkPos(sourcePos); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java index 0ea0cbcf0c7..82ddca038e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTBedrockFluids.java @@ -43,7 +43,7 @@ public class GTBedrockFluids { GTCEu.id("nether_natural_gas_deposit")); public static ResourceKey create(ResourceLocation id) { - var key = ResourceKey.create(GTRegistries.BEDROCK_FLUID_REGISTRY, id); + var key = ResourceKey.create(GTRegistries.Keys.BEDROCK_FLUID, id); ALL_KEYS.add(key); return key; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java index 6ef734a47e9..db7803fc5ab 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java @@ -126,7 +126,7 @@ public static void updateLargestVeinSize(Registry registry) { } public static ResourceKey create(ResourceLocation id) { - var key = ResourceKey.create(GTRegistries.ORE_VEIN_REGISTRY, id); + var key = ResourceKey.create(GTRegistries.Keys.ORE_VEIN, id); ALL_KEYS.add(key); return key; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java index c73087d2578..90b25e5757b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java @@ -79,7 +79,7 @@ public static void init(IEventBus bus) { public static final DeferredHolder, DataComponentType> ITEM_MATERIAL = DATA_COMPONENTS .registerComponentType("item_material", builder -> builder .persistent(GTRegistries.MATERIALS.byNameCodec()) - .networkSynchronized(ByteBufCodecs.registry(GTRegistries.MATERIAL_REGISTRY))); + .networkSynchronized(ByteBufCodecs.registry(GTRegistries.Keys.MATERIAL))); // Armor-related public static final DeferredHolder, DataComponentType> ARMOR_DATA = DATA_COMPONENTS diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index c1caef70756..5a87016da76 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -389,13 +389,13 @@ public static void postKJSVeinEvents(RegistryAccess.Frozen registries) { KJSCallWrapper.updateRegistryAccessContainer(registries); KJSCallWrapper.postEventWithRegistry(KJSCallWrapper::postOreVeinEvent, - registries.registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY)); + registries.registryOrThrow(GTRegistries.Keys.ORE_VEIN)); KJSCallWrapper.postEventWithRegistry(KJSCallWrapper::postBedrockFluidEvent, - registries.registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY)); + registries.registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID)); KJSCallWrapper.postEventWithRegistry(KJSCallWrapper::postBedrockOreEvent, - registries.registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY)); + registries.registryOrThrow(GTRegistries.Keys.BEDROCK_ORE)); } public static void addFluidTexture(Material material, FluidStorage.FluidEntry value) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java b/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java index e73bd5561c6..930a229ec9e 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java +++ b/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java @@ -44,8 +44,8 @@ packOutput, registries, new RegistrySetBuilder() .add(NeoForgeRegistries.Keys.BIOME_MODIFIERS, GTBiomeModifiers::bootstrap) .add(Registries.JUKEBOX_SONG, GTJukeboxSongs::bootstrap) .add(Registries.ENCHANTMENT_PROVIDER, GTEnchantmentProviders::bootstrap) - .add(GTRegistries.BEDROCK_FLUID_REGISTRY, GTBedrockFluids::bootstrap) - .add(GTRegistries.ORE_VEIN_REGISTRY, GTOreVeins::bootstrap), + .add(GTRegistries.Keys.BEDROCK_FLUID, GTBedrockFluids::bootstrap) + .add(GTRegistries.Keys.ORE_VEIN, GTOreVeins::bootstrap), set)); generator.addProvider(true, new DamageTypeTagsLoader(packOutput, provider.getRegistryProvider(), existingFileHelper)); diff --git a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java index 1656a707791..675930864bb 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java @@ -25,7 +25,7 @@ public class PostRegistryListener extends ContextAwareReloadListener implements private PostRegistryListener() {} protected void apply() { - var registry = GTRegistries.builtinRegistry().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = GTRegistries.builtinRegistry().registryOrThrow(GTRegistries.Keys.ORE_VEIN); buildVeinGenerators(registry); GTOreVeins.updateLargestVeinSize(registry); 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 f0b358d8713..f6e22201b38 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -123,20 +123,20 @@ public class GregTechKubeJSPlugin implements KubeJSPlugin { @Override public void registerBuilderTypes(BuilderTypeRegistry registry) { - registry.addDefault(GTRegistries.ELEMENT_REGISTRY, ElementBuilder.class, ElementBuilder::new); - registry.addDefault(GTRegistries.DIMENSION_MARKER_REGISTRY, DimensionMarkerBuilder.class, + registry.addDefault(GTRegistries.Keys.ELEMENT, ElementBuilder.class, ElementBuilder::new); + registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, DimensionMarkerBuilder::new); - registry.addDefault(GTRegistries.MATERIAL_REGISTRY, MaterialBuilderWrapper.class, MaterialBuilderWrapper::new); - registry.of(GTRegistries.TAG_PREFIX_REGISTRY, reg -> { + registry.addDefault(GTRegistries.Keys.MATERIAL, MaterialBuilderWrapper.class, MaterialBuilderWrapper::new); + registry.of(GTRegistries.Keys.TAG_PREFIX, reg -> { reg.addDefault(TagPrefixBuilder.class, TagPrefixBuilder::new); reg.add(GTCEu.id("ore"), OreTagPrefixBuilder.class, OreTagPrefixBuilder::new); }); - registry.addDefault(GTRegistries.RECIPE_TYPE_REGISTRY, GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); - registry.addDefault(GTRegistries.RECIPE_CATEGORY_REGISTRY, GTRecipeCategoryBuilder.class, + registry.addDefault(GTRegistries.Keys.RECIPE_TYPE, GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); + registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, GTRecipeCategoryBuilder::new); - registry.of(GTRegistries.MACHINE_REGISTRY, reg -> { + registry.of(GTRegistries.Keys.MACHINE, reg -> { reg.addDefault(KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, false))); @@ -161,18 +161,18 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { reg.add(GTCEu.id("coil"), CoilBlockBuilder.class, CoilBlockBuilder::new); }); - registry.addDefault(GTRegistries.ORE_VEIN_REGISTRY, OreVeinDefinitionBuilder.class, + registry.addDefault(GTRegistries.Keys.ORE_VEIN, OreVeinDefinitionBuilder.class, OreVeinDefinitionBuilder::new); - registry.addDefault(GTRegistries.BEDROCK_FLUID_REGISTRY, BedrockFluidBuilder.class, BedrockFluidBuilder::new); - registry.addDefault(GTRegistries.BEDROCK_ORE_REGISTRY, BedrockOreBuilder.class, BedrockOreBuilder::new); + registry.addDefault(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidBuilder.class, BedrockFluidBuilder::new); + registry.addDefault(GTRegistries.Keys.BEDROCK_ORE, BedrockOreBuilder.class, BedrockOreBuilder::new); } @Override public void registerServerRegistries(ServerRegistryRegistry registry) { - registry.register(GTRegistries.ORE_VEIN_REGISTRY, GTOreDefinition.DIRECT_CODEC, GTOreDefinition.class); - registry.register(GTRegistries.BEDROCK_FLUID_REGISTRY, + registry.register(GTRegistries.Keys.ORE_VEIN, GTOreDefinition.DIRECT_CODEC, GTOreDefinition.class); + registry.register(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidDefinition.DIRECT_CODEC, BedrockFluidDefinition.class); - registry.register(GTRegistries.BEDROCK_ORE_REGISTRY, + registry.register(GTRegistries.Keys.BEDROCK_ORE, BedrockOreDefinition.DIRECT_CODEC, BedrockOreDefinition.class); } @@ -183,7 +183,7 @@ public void registerEvents(EventGroupRegistry registry) { } public static void generateMachineBlockModels() { - RegistryObjectStorage.of(GTRegistries.MACHINE_REGISTRY).forEach(builder -> { + RegistryObjectStorage.of(GTRegistries.Keys.MACHINE).forEach(builder -> { if (builder instanceof IMachineBuilderKJS machineBuilder) { try { machineBuilder.generateMachineModels(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockFluidVeinEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockFluidVeinEventJS.java index 5f88334ceb8..2131cc4c470 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockFluidVeinEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockFluidVeinEventJS.java @@ -84,6 +84,6 @@ public void remove(Context cx, ResourceLocation id) { } public static ResourceKey createKey(ResourceLocation id) { - return ResourceKey.create(GTRegistries.BEDROCK_FLUID_REGISTRY, id); + return ResourceKey.create(GTRegistries.Keys.BEDROCK_FLUID, id); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockOreVeinEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockOreVeinEventJS.java index f321c024654..f2b8181615a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockOreVeinEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTBedrockOreVeinEventJS.java @@ -83,6 +83,6 @@ public void remove(Context cx, ResourceLocation id) { } public static ResourceKey createKey(ResourceLocation id) { - return ResourceKey.create(GTRegistries.BEDROCK_ORE_REGISTRY, id); + return ResourceKey.create(GTRegistries.Keys.BEDROCK_ORE, id); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTOreVeinEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTOreVeinEventJS.java index 8086e706271..0111655257c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTOreVeinEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTOreVeinEventJS.java @@ -49,7 +49,7 @@ private void register(ResourceLocation id, GTOreDefinition def) { public void modify(Context cx, ResourceLocation id, Consumer consumer) { RegistryAccessContainer registries = RegistryAccessContainer.of(cx); - var registry = registries.access().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = registries.access().registryOrThrow(GTRegistries.Keys.ORE_VEIN); var biomes = registries.access().lookupOrThrow(Registries.BIOME); var vein = registry.get(id); @@ -61,7 +61,7 @@ public void modify(Context cx, ResourceLocation id, Consumer co public void modifyAll(Context cx, BiConsumer consumer) { RegistryAccessContainer registries = RegistryAccessContainer.of(cx); - var registry = registries.access().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = registries.access().registryOrThrow(GTRegistries.Keys.ORE_VEIN); var biomes = registries.access().lookupOrThrow(Registries.BIOME); Set keys = registry.keySet(); @@ -75,13 +75,13 @@ public void modifyAll(Context cx, BiConsumer public void remove(Context cx, ResourceLocation id) { RegistryAccessContainer registries = RegistryAccessContainer.of(cx); - var registry = registries.access().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = registries.access().registryOrThrow(GTRegistries.Keys.ORE_VEIN); remove(cx, registry, id); } public void removeAll(Context cx) { RegistryAccessContainer registries = RegistryAccessContainer.of(cx); - var registry = registries.access().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = registries.access().registryOrThrow(GTRegistries.Keys.ORE_VEIN); Set keys = Set.copyOf(registry.keySet()); keys.forEach(key -> remove(cx, registry, key)); @@ -89,7 +89,7 @@ public void removeAll(Context cx) { public void removeAll(Context cx, BiPredicate predicate) { RegistryAccessContainer registries = RegistryAccessContainer.of(cx); - var registry = registries.access().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY); + var registry = registries.access().registryOrThrow(GTRegistries.Keys.ORE_VEIN); Set keys = Set.copyOf(registry.keySet()); keys.stream() @@ -111,6 +111,6 @@ private void remove(Context cx, Registry registry, ResourceLoca } public static ResourceKey createKey(ResourceLocation id) { - return ResourceKey.create(GTRegistries.ORE_VEIN_REGISTRY, id); + return ResourceKey.create(GTRegistries.Keys.ORE_VEIN, id); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockFluidEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockFluidEmiCategory.java index 09aa31ddddf..7f2a8e8f51f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockFluidEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockFluidEmiCategory.java @@ -30,7 +30,7 @@ public GTBedrockFluidEmiCategory() { public static void registerDisplays(EmiRegistry registry) { var fluids = Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY); + .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID); fluids.holders() .filter(fluid -> fluid.value().canGenerate()) .forEach(fluid -> registry.addRecipe(new GTBedrockFluid(fluid.value()))); @@ -51,7 +51,7 @@ public static class GTBedrockFluid extends ModularUIEmiRecipe { private final BedrockFluidDefinition fluid; public GTBedrockFluid(BedrockFluidDefinition fluid) { - super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY) + super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID) .getKey(fluid).withPrefix("/bedrock_fluid_diagram/"), () -> new OreVeinRecipeWidget(fluid)); this.fluid = fluid; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockOreEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockOreEmiCategory.java index adc9d317dd2..893b826e89c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockOreEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTBedrockOreEmiCategory.java @@ -32,7 +32,7 @@ public GTBedrockOreEmiCategory() { public static void registerDisplays(EmiRegistry registry) { var fluids = Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY); + .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE); fluids.holders() .filter(ore -> ore.value().canGenerate()) .forEach(ore -> registry.addRecipe(new GTBedrockOre(ore.value()))); @@ -53,7 +53,7 @@ public static class GTBedrockOre extends ModularUIEmiRecipe { private final BedrockOreDefinition bedrockOre; public GTBedrockOre(BedrockOreDefinition bedrockOre) { - super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY) + super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.Keys.BEDROCK_ORE) .getKey(bedrockOre).withPrefix("/bedrock_ore_diagram/"), () -> new OreVeinRecipeWidget(bedrockOre)); this.bedrockOre = bedrockOre; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTOreVeinEmiCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTOreVeinEmiCategory.java index 54f199527fd..e8a48fdb7ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTOreVeinEmiCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/emi/orevein/GTOreVeinEmiCategory.java @@ -30,7 +30,7 @@ public GTOreVeinEmiCategory() { public static void registerDisplays(EmiRegistry registry) { for (GTOreDefinition oreDefinition : Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY)) { + .registryOrThrow(GTRegistries.Keys.ORE_VEIN)) { registry.addRecipe(new GTEmiOreVein(oreDefinition)); } } @@ -51,7 +51,7 @@ public static class GTEmiOreVein extends ModularUIEmiRecipe { private final GTOreDefinition oreDefinition; public GTEmiOreVein(GTOreDefinition oreDefinition) { - super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY) + super(Minecraft.getInstance().level.registryAccess().registryOrThrow(GTRegistries.Keys.ORE_VEIN) .getKey(oreDefinition).withPrefix("/ore_vein_diagram/"), () -> new OreVeinRecipeWidget(oreDefinition)); this.oreDefinition = oreDefinition; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockFluidInfoCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockFluidInfoCategory.java index aa1fef3f8d6..8bff1372584 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockFluidInfoCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockFluidInfoCategory.java @@ -30,14 +30,14 @@ public class GTBedrockFluidInfoCategory extends public GTBedrockFluidInfoCategory(IJeiHelpers helpers) { super(v -> new OreVeinRecipeWidget(v.fluid), v -> Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY).getKey(v.fluid)); + .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID).getKey(v.fluid)); this.icon = helpers.getGuiHelper() .createDrawableItemStack(GTMaterials.Oil.getBucket().getDefaultInstance()); } public static void registerRecipes(IRecipeRegistration registry) { registry.addRecipes(RECIPE_TYPE, Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY).stream() + .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID).stream() .map(BedrockFluidInfoWrapper::new) .toList()); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockOreInfoCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockOreInfoCategory.java index 40d989fd995..9357b27db9f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockOreInfoCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTBedrockOreInfoCategory.java @@ -32,14 +32,14 @@ public class GTBedrockOreInfoCategory extends public GTBedrockOreInfoCategory(IJeiHelpers helpers) { super(v -> new OreVeinRecipeWidget(v.bedrockOre), v -> Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY).getKey(v.bedrockOre)); + .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE).getKey(v.bedrockOre)); this.icon = helpers.getGuiHelper() .createDrawableItemStack(Items.RAW_IRON.getDefaultInstance()); } public static void registerRecipes(IRecipeRegistration registry) { registry.addRecipes(RECIPE_TYPE, Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY) + .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE) .stream() .map(GTBedrockOreInfoWrapper::new) .toList()); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTOreVeinInfoCategory.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTOreVeinInfoCategory.java index dd45ecb4014..1c276d3be77 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTOreVeinInfoCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/jei/orevein/GTOreVeinInfoCategory.java @@ -37,7 +37,7 @@ public class GTOreVeinInfoCategory extends ModularUIRecipeCategory new OreVeinRecipeWidget(v.oreDefinition), v -> Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() - .registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY).getKey(v.oreDefinition)); + .registryOrThrow(GTRegistries.Keys.ORE_VEIN).getKey(v.oreDefinition)); this.icon = helpers.getGuiHelper() .createDrawableItemStack(ChemicalHelper.get(TagPrefix.rawOre, GTMaterials.Iron)); @@ -45,7 +45,7 @@ public GTOreVeinInfoCategory(IJeiHelpers helpers) { public static void registerRecipes(IRecipeRegistration registry) { registry.addRecipes(RECIPE_TYPE, Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY).stream() + .registryOrThrow(GTRegistries.Keys.ORE_VEIN).stream() .map(GTOreVeinInfoWrapper::new) .toList()); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java index 5fb394737b5..fab360d76df 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java @@ -184,19 +184,19 @@ public static DimensionMarker[] getDimensionMarkers(Set> dime public static String getOreName(GTOreDefinition oreDefinition) { ResourceLocation id = Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.ORE_VEIN_REGISTRY).getKey(oreDefinition); + .registryOrThrow(GTRegistries.Keys.ORE_VEIN).getKey(oreDefinition); return "gtceu.jei.ore_vein." + id.getPath(); } public static String getFluidName(BedrockFluidDefinition fluid) { ResourceLocation id = Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_FLUID_REGISTRY).getKey(fluid); + .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID).getKey(fluid); return "gtceu.jei.bedrock_fluid." + id.getPath(); } public static String getBedrockOreName(BedrockOreDefinition oreDefinition) { ResourceLocation id = Minecraft.getInstance().level.registryAccess() - .registryOrThrow(GTRegistries.BEDROCK_ORE_REGISTRY).getKey(oreDefinition); + .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE).getKey(oreDefinition); return "gtceu.jei.bedrock_ore." + id.getPath(); } From 7e70ac1e11dc39eb4c7b718690c5b17efe7983e6 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 26 Jun 2026 16:45:18 +1000 Subject: [PATCH 03/33] port forward some registration changes --- .../chemical/material/IMaterialRegistry.java | 89 ------------------- .../material/registry/MaterialRegistry.java | 41 ++------- .../gtceu/common/CommonEventListener.java | 50 ----------- .../gregtechceu/gtceu/common/CommonProxy.java | 66 +++++++------- .../gtceu/common/data/GTMachines.java | 4 +- .../gtceu/common/data/GTMaterialBlocks.java | 36 ++++---- 6 files changed, 56 insertions(+), 230 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java deleted file mode 100644 index c24b7f5828c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/IMaterialRegistry.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.gregtechceu.gtceu.api.data.chemical.material; - -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.core.mixins.MappedRegistryAccessor; - -import net.minecraft.resources.ResourceLocation; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.UnmodifiableView; - -import java.util.Collection; -import java.util.stream.Stream; - -@SuppressWarnings("BooleanMethodIsAlwaysInverted") -public interface IMaterialRegistry extends Iterable { - - /** - * @return all namespaces the registered materials use - */ - @UnmodifiableView - @NotNull - Collection getUsedNamespaces(); - - /** - * Register a material.
- * You must register any materials in a registration event - * with {@link net.neoforged.bus.api.EventPriority#HIGHEST priority=HIGHEST}, - * as anything else may be skipped if your mod is loaded after GT. - * - * @param material the material to register - * @return the same material. - */ - Material register(Material material); - - /** - * Get a material from a String in formats: - *
    - *
  • {@code "modid:registry_name"}
  • - *
  • {@code "registry_name"} - where modid is inferred to be {@link GTCEu#MOD_ID}
  • - *
- * Generally, you should use {@linkplain IMaterialRegistry#getMaterial(ResourceLocation)} instead. - * - * @param name the name of the material in the above format - * @return the material associated with the name - * @see IMaterialRegistry#getMaterial(ResourceLocation) - */ - default Material getMaterial(String name) { - return getMaterial(GTCEu.id(name)); - } - - /** - * Get a material from a ResourceLocation
- * 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 - * @see IMaterialRegistry#getMaterial(String) - */ - Material getMaterial(ResourceLocation name); - - ResourceLocation getKey(Material material); - - /** - * Set the fallback material for a namespace. - * This is only for manual fallback usage. - * - * @param modId the namespace to set the fallback for - * @param material the fallback material - */ - void setFallbackMaterial(@NotNull String modId, @NotNull Material material); - - /** - * This is only for manual fallback usage. - * - * @param modId the namespace to get the fallback for - * @return the fallback material, used for when another material does not exist - */ - @NotNull - Material getFallbackMaterial(@NotNull String modId); - - Stream stream(); - - /** - * - * @return {@code true} if this registry is frozen, {@code false} otherwise - * @see MappedRegistryAccessor#gtceu$isFrozen() - */ - boolean isFrozen(); -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/registry/MaterialRegistry.java index d2973b293eb..e4a72e9c52d 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,7 +1,6 @@ package com.gregtechceu.gtceu.api.data.chemical.material.registry; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.IMaterialRegistry; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.core.mixins.MappedRegistryAccessor; @@ -19,18 +18,15 @@ import java.util.*; import java.util.stream.Stream; -public final class MaterialRegistry extends MappedRegistry implements IMaterialRegistry { +public final class MaterialRegistry extends MappedRegistry { private final Set usedNamespaces = new HashSet<>(); - private final Map fallbackMaterials = new HashMap<>(); - private boolean isRegistryClosed = false; public MaterialRegistry(ResourceKey> key) { super(key, Lifecycle.stable()); } - @Override public @NotNull Set getUsedNamespaces() { return Collections.unmodifiableSet(usedNamespaces); } @@ -56,7 +52,10 @@ private Material register(ResourceLocation id, Material material) { return material; } - @Override + public Material getMaterial(String name) { + return getMaterial(GTCEu.id(name)); + } + public Material getMaterial(ResourceLocation name) { Material value = get(name); return value != null ? value : GTMaterials.NULL; @@ -80,36 +79,6 @@ public ResourceLocation getKey(Material material) { return super.register(id, key, value, registrationInfo); } - /** - * Set the fallback material for a namespace. - * This is only for manual fallback usage. - * - * @param modId the namespace to set the fallback for - * @param material the fallback material - */ - @Override - public void setFallbackMaterial(@NotNull String modId, @NotNull Material material) { - fallbackMaterials.put(modId, material); - } - - /** - * This is only for manual fallback usage. - * - * @param modId the namespace to get the fallback for - * @return the fallback material, used for when another material does not exist - */ - @Override - @NotNull - public Material getFallbackMaterial(@NotNull String modId) { - return fallbackMaterials.getOrDefault(modId, getDefaultFallback()); - } - - @NotNull - public Material getDefaultFallback() { - return fallbackMaterials.get(GTCEu.MOD_ID); - } - - @Override public boolean isFrozen() { return ((MappedRegistryAccessor) (Object) this).gtceu$isFrozen(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index 4ebf4e0fa29..41d9125e41e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -5,20 +5,12 @@ import com.gregtechceu.gtceu.api.capability.IElectricItem; import com.gregtechceu.gtceu.api.cosmetics.CapeRegistry; import com.gregtechceu.gtceu.api.cosmetics.event.RegisterGTCapesEvent; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent; -import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.AlloyBlastProperty; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; -import com.gregtechceu.gtceu.api.fluids.FluidBuilder; -import com.gregtechceu.gtceu.api.fluids.FluidState; -import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKeys; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; @@ -35,7 +27,6 @@ import com.gregtechceu.gtceu.common.cosmetics.GTCapes; import com.gregtechceu.gtceu.common.data.GTAttributeModifierIds; import com.gregtechceu.gtceu.common.data.GTItems; -import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.item.GTDataComponents; import com.gregtechceu.gtceu.common.item.armor.IJetpack; import com.gregtechceu.gtceu.common.item.armor.IStepAssist; @@ -50,7 +41,6 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.loader.PostRegistryListener; import com.gregtechceu.gtceu.data.recipe.CustomTags; -import com.gregtechceu.gtceu.data.recipe.misc.alloyblast.CustomAlloyBlastRecipeProducer; import com.gregtechceu.gtceu.integration.map.ClientCacheManager; import com.gregtechceu.gtceu.integration.map.WaypointManager; import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; @@ -104,8 +94,6 @@ import org.jetbrains.annotations.NotNull; -import java.util.List; - @EventBusSubscriber(modid = GTCEu.MOD_ID) public class CommonEventListener { @@ -552,42 +540,4 @@ public static void playerTickEvent(PlayerTickEvent.Pre event) { speedBoost, AttributeModifier.Operation.ADD_MULTIPLIED_BASE)); } } - - public static void addAlloyBlastProperties(PostMaterialEvent event) { - for (Material material : GTRegistries.MATERIALS) { - if (!material.hasFlag(MaterialFlags.DISABLE_ALLOY_PROPERTY)) { - addAlloyBlastProperty(material); - } - } - // Alloy Blast Overriding - GTMaterials.NiobiumNitride.getProperty(PropertyKey.ALLOY_BLAST) - .setRecipeProducer(new CustomAlloyBlastRecipeProducer(1, 11, -1)); - - GTMaterials.IndiumTinBariumTitaniumCuprate.getProperty(PropertyKey.ALLOY_BLAST) - .setRecipeProducer(new CustomAlloyBlastRecipeProducer(-1, -1, 16)); - } - - private static void addAlloyBlastProperty(@NotNull Material material) { - final List components = material.getMaterialComponents(); - // ignore materials which are not alloys - if (components.size() < 2) return; - - BlastProperty blastProperty = material.getProperty(PropertyKey.BLAST); - if (blastProperty == null) return; - - if (!material.hasProperty(PropertyKey.FLUID)) return; - - // if there are more than 2 fluid-only components in the material, do not generate a hot fluid - if (components.stream().filter(CommonEventListener::isMaterialStackFluidOnly).limit(3).count() > 2) { - return; - } - - material.setProperty(PropertyKey.ALLOY_BLAST, new AlloyBlastProperty()); - material.getProperty(PropertyKey.FLUID).getStorage().enqueueRegistration(FluidStorageKeys.MOLTEN, - new FluidBuilder().state(FluidState.LIQUID)); - } - - private static boolean isMaterialStackFluidOnly(@NotNull MaterialStack ms) { - return !ms.material().hasProperty(PropertyKey.DUST) && ms.material().hasProperty(PropertyKey.FLUID); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 42d3ef95a33..790bb4bf047 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 @@ public static void onRegister(RegisterEvent event) { GTElements.init(); MaterialIconSet.init(); MaterialIconType.init(); - initMaterials(); + GTMaterials.init(); GTMedicalConditions.init(); TagPrefix.init(); @@ -251,38 +251,56 @@ public static void onRegister(RegisterEvent event) { ChestGenHooks.init(); } - @ApiStatus.Internal - public static void initMaterials() { - GTCEu.LOGGER.info("Registering GTCEu Materials"); - GTMaterials.init(); - } - - @SubscribeEvent(priority = EventPriority.LOW) - public static void onRegisterLate(RegisterEvent event) { - // Material event *should* happen before any of the others here + // Fire post material events after all other material registry events. + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onRegisterLowest(RegisterEvent event) { if (event.getRegistryKey() == GTRegistries.Keys.MATERIAL) { // 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 + GTCEu.LOGGER.info("Firing material register late event"); GTRegistries.MATERIALS.close(); ModLoader.postEventWrapContainerInModOrder(new PostMaterialEvent()); if (GTCEu.Mods.isKubeJSLoaded()) { KJSEventWrapper.materialModification(); } - // --spacer-- - } else if (event.getRegistryKey() == Registries.BLOCK) { + + GTRegistries.MATERIALS.getUsedNamespaces().forEach(namespace -> { + // Force the material lang generator to be at index 0, so that addons' lang generators can override it. + var registrate = GTRegistrate.createIgnoringListenerErrors(namespace); + 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, namespace); + if (providers == null) { + accessor.getDatagens().put(ProviderType.LANG, generator); + } else { + providers.add(0, generator); + } + } + }); + } + } + + @SubscribeEvent(priority = EventPriority.LOW) + public static void onRegisterLate(RegisterEvent event) { + // Material event *should* happen before any of the others here + if (event.getRegistryKey() == Registries.BLOCK) { // Material Blocks REGISTRATE.creativeModeTab(GTCreativeModeTabs.MATERIAL_BLOCK); GTMaterialBlocks.generateMaterialBlocks(); // Compressed Blocks GTMaterialBlocks.generateOreBlocks(); // Ore Blocks GTMaterialBlocks.generateOreIndicators(); // Ore Indicators - GTMaterialBlocks.buildMaterialBlockTable(); // Material Pipes/Wires REGISTRATE.creativeModeTab(GTCreativeModeTabs.MATERIAL_PIPE); GTMaterialBlocks.generateCableBlocks(); // Cable & Wire Blocks GTMaterialBlocks.generateFluidPipeBlocks(); // Fluid Pipe Blocks GTMaterialBlocks.generateItemPipeBlocks(); // Item Pipe Blocks - // --spacer-- + + GTMaterialBlocks.finaliseMaterialBlocks(); } else if (event.getRegistryKey() == Registries.ITEM) { // Material Items & Tools GTMaterialItems.generateMaterialItems(); @@ -296,25 +314,6 @@ public static void onRegisterLate(RegisterEvent event) { } } - private static void postInitMaterials(Registry registry) { - // Register all material manager registries, for materials with mod ids. - GTRegistries.MATERIALS.getUsedNamespaces().forEach(namespace -> { - // Force the material lang generator to be at index 0, so that addons' lang generators can override it. - GTRegistrate registrate = GTRegistrate.createIgnoringListenerErrors(namespace); - AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registrate; - if (accessor.getDoDatagen().get()) { - List> providers = Multimaps.asMap(accessor.getDatagens()) - .get(ProviderType.LANG); - providers.addFirst( - (provider) -> MaterialLangGenerator.generate((RegistrateLangProvider) provider, namespace)); - } - - ModList.get().getModContainerById(namespace) - .map(ModContainer::getEventBus) - .ifPresent(registrate::registerEventListeners); - }); - } - @SubscribeEvent public static void registerRegistries(NewRegistryEvent event) { GTRegistries.getRegistries().forEach(event::register); @@ -332,7 +331,6 @@ public static void registerDataPackRegistries(DataPackRegistryEvent.NewRegistry @SubscribeEvent public static void modifyRegistries(ModifyRegistriesEvent event) { - GTRegistries.MATERIALS.addCallback((BakeCallback) CommonProxy::postInitMaterials); GTRegistries.MACHINES.addCallback((BakeCallback) GTMachines::bakeRenderStates); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 7d59ea5d4c1..98430d0d562 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -1214,9 +1214,7 @@ public static void init() { } public static void bakeRenderStates(Registry registry) { - Iterator iter = registry.iterator(); - while (iter.hasNext()) { - MachineDefinition machine = iter.next(); + for (MachineDefinition machine : registry) { for (MachineRenderState renderState : machine.getStateDefinition().getPossibleStates()) { MachineDefinition.RENDER_STATE_REGISTRY.add(renderState); } 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 a23d3ae855f..0253c00ddeb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -34,15 +34,15 @@ public class GTMaterialBlocks { // Reference Table Builders - static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable + private static ImmutableTable.Builder> MATERIAL_BLOCKS_BUILDER = ImmutableTable .builder(); - static ImmutableMap.Builder> SURFACE_ROCK_BLOCKS_BUILDER = ImmutableMap + private static ImmutableMap.Builder> SURFACE_ROCK_BLOCKS_BUILDER = ImmutableMap .builder(); - static ImmutableTable.Builder> CABLE_BLOCKS_BUILDER = ImmutableTable + private static ImmutableTable.Builder> CABLE_BLOCKS_BUILDER = ImmutableTable .builder(); - static ImmutableTable.Builder> FLUID_PIPE_BLOCKS_BUILDER = ImmutableTable + private static ImmutableTable.Builder> FLUID_PIPE_BLOCKS_BUILDER = ImmutableTable .builder(); - static ImmutableTable.Builder> ITEM_PIPE_BLOCKS_BUILDER = ImmutableTable + private static ImmutableTable.Builder> ITEM_PIPE_BLOCKS_BUILDER = ImmutableTable .builder(); // Reference Tables @@ -136,11 +136,6 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) } } - public static void buildMaterialBlockTable() { - MATERIAL_BLOCKS = MATERIAL_BLOCKS_BUILDER.build(); - MATERIAL_BLOCKS_BUILDER = null; - } - // Material Ore Indicator Piles public static void generateOreIndicators() { GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks..."); @@ -149,8 +144,6 @@ public static void generateOreIndicators() { registerOreIndicator(material, GTRegistrate.createIgnoringListenerErrors(material.getModid())); } } - SURFACE_ROCK_BLOCKS = SURFACE_ROCK_BLOCKS_BUILDER.build(); - SURFACE_ROCK_BLOCKS_BUILDER = null; GTCEu.LOGGER.debug("Generating GTCEu Surface Rock Indicator Blocks... Complete!"); } @@ -188,8 +181,6 @@ public static void generateCableBlocks() { } } } - CABLE_BLOCKS = CABLE_BLOCKS_BUILDER.build(); - CABLE_BLOCKS_BUILDER = null; GTCEu.LOGGER.debug("Generating GTCEu Cable/Wire Blocks... Complete!"); } @@ -230,8 +221,6 @@ public static void generateFluidPipeBlocks() { } } } - FLUID_PIPE_BLOCKS = FLUID_PIPE_BLOCKS_BUILDER.build(); - FLUID_PIPE_BLOCKS_BUILDER = null; GTCEu.LOGGER.debug("Generating GTCEu Fluid Pipe Blocks... Complete!"); } @@ -277,8 +266,6 @@ public static void generateItemPipeBlocks() { } } } - ITEM_PIPE_BLOCKS = ITEM_PIPE_BLOCKS_BUILDER.build(); - ITEM_PIPE_BLOCKS_BUILDER = null; GTCEu.LOGGER.debug("Generating GTCEu Item Pipe Blocks... Complete!"); } @@ -311,4 +298,17 @@ private static void registerItemPipeBlock(Material material, ItemPipeType itemPi .register(); ITEM_PIPE_BLOCKS_BUILDER.put(itemPipeType.getTagPrefix(), material, entry); } + + public static void finaliseMaterialBlocks() { + MATERIAL_BLOCKS = MATERIAL_BLOCKS_BUILDER.buildOrThrow(); + MATERIAL_BLOCKS_BUILDER = null; + SURFACE_ROCK_BLOCKS = SURFACE_ROCK_BLOCKS_BUILDER.buildOrThrow(); + SURFACE_ROCK_BLOCKS_BUILDER = null; + ITEM_PIPE_BLOCKS = ITEM_PIPE_BLOCKS_BUILDER.buildOrThrow(); + ITEM_PIPE_BLOCKS_BUILDER = null; + FLUID_PIPE_BLOCKS = FLUID_PIPE_BLOCKS_BUILDER.buildOrThrow(); + FLUID_PIPE_BLOCKS_BUILDER = null; + CABLE_BLOCKS = CABLE_BLOCKS_BUILDER.buildOrThrow(); + CABLE_BLOCKS_BUILDER = null; + } } From a3214bf66f79adb145619b3f4f49cb3f1bd2e383 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 26 Jun 2026 19:46:56 +1000 Subject: [PATCH 04/33] remove gt registry access --- .../capability/recipe/RecipeCapability.java | 4 ++- .../api/data/worldgen/GTOreDefinition.java | 8 ++--- .../bedrockfluid/FluidVeinWorldEntry.java | 2 +- .../api/machine/trait/recipe/RecipeLogic.java | 2 +- .../gtceu/api/recipe/RecipeCondition.java | 9 +++--- .../gtceu/api/registry/GTRegistries.java | 31 ------------------- .../gtceu/common/CommonEventListener.java | 1 - .../data/loader/PostRegistryListener.java | 4 ++- .../data/recipe/builder/GTRecipeBuilder.java | 5 +-- .../api/recipe/GTRecipeSerializerTest.java | 16 +++++----- 10 files changed, 27 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java index d923f92ede6..e7e5f3d31dc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java +++ b/src/main/java/com/gregtechceu/gtceu/api/capability/recipe/RecipeCapability.java @@ -13,6 +13,8 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.Tag; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -75,7 +77,7 @@ public static Codec> contentCodec(RecipeCapability capability) */ public T copyInner(T content) { RegistryFriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), - GTRegistries.builtinRegistry(), ConnectionType.NEOFORGE); + RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY), ConnectionType.NEOFORGE); serializer.toNetwork(buf, content); return serializer.fromNetwork(buf); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index 98735141646..a4518ec74b8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -7,10 +7,8 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.veins.*; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderSet; -import net.minecraft.core.RegistryCodecs; +import net.minecraft.core.*; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; @@ -185,7 +183,7 @@ public GTOreDefinition dimensions(Set> dimensions) { @HideFromJS public GTOreDefinition biomes(TagKey biomes) { if (biomeLookup == null) { - GTRegistries.builtinRegistry().registry(GTRegistries.Keys.ORE_VEIN) + RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY).registry(GTRegistries.Keys.ORE_VEIN) .map(reg -> reg.getKey(this)) .ifPresentOrElse(id -> { GTCEu.LOGGER.error("Tried to modify ore vein `{}`'s biomes after registry has been frozen!", diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java index ed08379b81f..3b62a63b418 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/bedrockfluid/FluidVeinWorldEntry.java @@ -72,7 +72,7 @@ public static FluidVeinWorldEntry readFromNBT(@NotNull CompoundTag tag, HolderLo ResourceLocation id = ResourceLocation.parse(tag.getString("vein")); info.setDefinition(GTMemoizer.memoize(() -> { return provider.lookup(GTRegistries.Keys.BEDROCK_FLUID) - .flatMap(reg -> reg.get(ResourceKey.create(GTRegistries.Keys.BEDROCK_FLUID, id))) + .flatMap(rg -> rg.get(ResourceKey.create(GTRegistries.Keys.BEDROCK_FLUID, id))) .orElse(null); })); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/recipe/RecipeLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/recipe/RecipeLogic.java index 1d6aae5a1af..ac292c07ac3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/recipe/RecipeLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/recipe/RecipeLogic.java @@ -723,7 +723,7 @@ public Tag serializeNBT(IdentityHashMap, Object2IntMap> v for (int i = 0; i < chanceTag.size(); ++i) { CompoundTag chanceKey = chanceTag.getCompound(i); var entry = cap.serializer.fromNbt(chanceKey.get("entry"), - GTRegistries.builtinRegistry()); + context.lookup()); int value = chanceKey.getInt("cached_chance"); // noinspection unchecked map.put(entry, value); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java index 3c24dcaffa4..714a2f8edd4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/RecipeCondition.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.recipe.gui.RecipeUIModifier; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import net.minecraft.core.HolderLookup; import net.minecraft.nbt.NbtAccounter; import net.minecraft.nbt.NbtOps; import net.minecraft.network.FriendlyByteBuf; @@ -76,13 +77,13 @@ public boolean check(@NotNull GTRecipe recipe, @NotNull RecipeLogic recipeLogic) public abstract T createTemplate(); @NotNull - public final JsonObject serialize() { - var ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); + public final JsonObject serialize(HolderLookup.Provider provider) { + var ops = RegistryOps.create(JsonOps.INSTANCE, provider); return CODEC.encodeStart(ops, this).getOrThrow().getAsJsonObject(); } - public static RecipeCondition deserialize(@NotNull JsonObject config) { - var ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); + public static RecipeCondition deserialize(HolderLookup.Provider provider, @NotNull JsonObject config) { + var ops = RegistryOps.create(JsonOps.INSTANCE, provider); return CODEC.decode(ops, config).getOrThrow().getFirst(); } 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 9cc0e075002..403eb8f8261 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -170,35 +170,4 @@ public static List getRegistrationOrder() { public static Collection> getRegistries() { return LOAD_ORDER.values(); } - - private static final RegistryAccess BLANK = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY); - private static RegistryAccess FROZEN = BLANK; - - /** - * You shouldn't call it, you should probably not even look at it just to be extra safe - * - * @param registryAccess the new value to set to the frozen registry access - */ - @ApiStatus.Internal - public static void updateFrozenRegistry(RegistryAccess registryAccess) { - FROZEN = registryAccess; - } - - public static RegistryAccess builtinRegistry() { - if (GTCEu.isClientThread()) { - return ClientHelpers.getClientRegistries(); - } - return FROZEN; - } - - private static class ClientHelpers { - - private static RegistryAccess getClientRegistries() { - if (Minecraft.getInstance().getConnection() != null) { - return Minecraft.getInstance().getConnection().registryAccess(); - } else { - return FROZEN; - } - } - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index 41d9125e41e..cac65ee2f2a 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -227,7 +227,6 @@ public static void registerCommand(RegisterCommandsEvent event) { @SubscribeEvent public static void registerReloadListeners(AddReloadListenerEvent event) { - GTRegistries.updateFrozenRegistry(event.getRegistryAccess()); event.addListener(PostRegistryListener.INSTANCE); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java index 675930864bb..606a6f21e91 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java @@ -7,6 +7,8 @@ import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.profiling.ProfilerFiller; @@ -25,7 +27,7 @@ public class PostRegistryListener extends ContextAwareReloadListener implements private PostRegistryListener() {} protected void apply() { - var registry = GTRegistries.builtinRegistry().registryOrThrow(GTRegistries.Keys.ORE_VEIN); + var registry = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY).registryOrThrow(GTRegistries.Keys.ORE_VEIN); buildVeinGenerators(registry); GTOreVeins.updateLargestVeinSize(registry); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 1cd8e58071f..42f5b3c46c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -30,6 +30,7 @@ import com.gregtechceu.gtceu.utils.ResearchManager; import com.gregtechceu.gtceu.utils.codec.CodecUtils; +import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeOutput; @@ -1466,8 +1467,8 @@ public GTRecipeBuilder setTempItemStacks(List stacks) { return this; } - public void toJson(JsonObject json) { - var ops = RegistryOps.create(JsonOps.INSTANCE, GTRegistries.builtinRegistry()); + public void toJson(HolderLookup.Provider provider, JsonObject json) { + var ops = RegistryOps.create(JsonOps.INSTANCE, provider); JsonObject serialized = CodecUtils.encodeMap(build(), GTRecipeSerializer.CODEC, ops) .getOrThrow().getAsJsonObject(); for (String key : serialized.keySet()) { diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java index d62064f5d13..04aee40ef78 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java @@ -50,7 +50,7 @@ public static void serializeTest(GameTestHelper helper) { TagKey lavaTag = TagKey.create(Registries.FLUID, ResourceLocation.fromNamespaceAndPath("c", "lava")); HolderSet waterSet = HolderSet.direct(Fluids.WATER.builtInRegistryHolder(), Fluids.FLOWING_WATER.builtInRegistryHolder()); - HolderSet lavaSet = GTRegistries.builtinRegistry() + HolderSet lavaSet = helper.getLevel().registryAccess() .registryOrThrow(Registries.FLUID) .getOrCreateTag(lavaTag); List> fluidSetIn = List.of(waterSet, lavaSet); @@ -60,7 +60,7 @@ public static void serializeTest(GameTestHelper helper) { TagKey oreTag = TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath("c", "ores")); HolderSet blockSet = HolderSet.direct(Blocks.DIAMOND_BLOCK.builtInRegistryHolder(), Blocks.GOLD_BLOCK.builtInRegistryHolder()); - HolderSet oreSet = GTRegistries.builtinRegistry() + HolderSet oreSet = helper.getLevel().registryAccess() .registryOrThrow(Registries.BLOCK) .getOrCreateTag(oreTag); List> blockSetIn = List.of(blockSet, oreSet); @@ -114,7 +114,7 @@ public static void testSerializingFluidCondition(GameTestHelper helper) { TagKey lavaTag = TagKey.create(Registries.FLUID, ResourceLocation.fromNamespaceAndPath("c", "lava")); HolderSet waterSet = HolderSet.direct(Fluids.WATER.builtInRegistryHolder(), Fluids.FLOWING_WATER.builtInRegistryHolder()); - HolderSet lavaSet = GTRegistries.builtinRegistry() + HolderSet lavaSet = helper.getLevel().registryAccess() .registryOrThrow(Registries.FLUID) .getOrCreateTag(lavaTag); List> fluidSetIn = List.of(waterSet, lavaSet); @@ -123,8 +123,8 @@ public static void testSerializingFluidCondition(GameTestHelper helper) { helper.assertTrue(equalHolderSetLists(condition.getOrInitFluids(null), fluidSetIn), "AdjacentFluidCondition did not deserialize properly"); - JsonObject jsonConfig = condition.serialize(); - AdjacentFluidCondition newCondition = (AdjacentFluidCondition) AdjacentFluidCondition.deserialize(jsonConfig); + JsonObject jsonConfig = condition.serialize(helper.getLevel().registryAccess()); + AdjacentFluidCondition newCondition = (AdjacentFluidCondition) AdjacentFluidCondition.deserialize(helper.getLevel().registryAccess(), jsonConfig); helper.assertTrue(equalHolderSetLists(newCondition.getOrInitFluids(null), fluidSetIn), "AdjacentFluidCondition did not deserialize properly"); @@ -140,7 +140,7 @@ public static void testSerializingBlockCondition(GameTestHelper helper) { TagKey oreTag = TagKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath("c", "ores")); HolderSet blockSet = HolderSet.direct(Blocks.DIAMOND_BLOCK.builtInRegistryHolder(), Blocks.GOLD_BLOCK.builtInRegistryHolder()); - HolderSet oreSet = GTRegistries.builtinRegistry() + HolderSet oreSet = helper.getLevel().registryAccess() .registryOrThrow(Registries.BLOCK) .getOrCreateTag(oreTag); List> blockSetIn = List.of(blockSet, oreSet); @@ -149,8 +149,8 @@ public static void testSerializingBlockCondition(GameTestHelper helper) { helper.assertTrue(equalHolderSetLists(condition.getOrInitBlocks(null), blockSetIn), "AdjacentBlockCondition did not deserialize properly"); - JsonObject jsonConfig = condition.serialize(); - AdjacentBlockCondition newCondition = (AdjacentBlockCondition) AdjacentBlockCondition.deserialize(jsonConfig); + JsonObject jsonConfig = condition.serialize(helper.getLevel().registryAccess()); + AdjacentBlockCondition newCondition = (AdjacentBlockCondition) AdjacentBlockCondition.deserialize(helper.getLevel().registryAccess(), jsonConfig); helper.assertTrue(equalHolderSetLists(newCondition.getOrInitBlocks(null), blockSetIn), "AdjacentBlockCondition did not deserialize properly"); From a8d9cf1221a05eb1e1702027dd75651931859e0d Mon Sep 17 00:00:00 2001 From: Gustavo Date: Mon, 29 Jun 2026 13:43:47 +1000 Subject: [PATCH 05/33] organise --- .../gtceu/api/registry/GTRegistries.java | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) 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 403eb8f8261..cf52ae66f71 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -24,11 +24,8 @@ import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import net.minecraft.client.Minecraft; import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.neoforged.bus.api.EventPriority; @@ -40,39 +37,49 @@ import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.UnmodifiableView; import java.util.*; public final class GTRegistries { + // spotless:off public static final class Keys { private Keys() {} - // server (datapack) registries' keys - public static final ResourceKey> ORE_VEIN = makeRegistryKey(GTCEu.id("ore_vein")); - public static final ResourceKey> BEDROCK_FLUID = makeRegistryKey(GTCEu.id("bedrock_fluid")); - public static final ResourceKey> BEDROCK_ORE = makeRegistryKey(GTCEu.id("bedrock_ore")); - // static registries' keys + // Material related registries + public static final ResourceKey> MATERIAL = makeRegistryKey(GTCEu.id("material")); public static final ResourceKey> ELEMENT = makeRegistryKey(GTCEu.id("element")); public static final ResourceKey> TAG_PREFIX = makeRegistryKey(GTCEu.id("tag_prefix")); - public static final ResourceKey> MATERIAL = makeRegistryKey(GTCEu.id("material")); - public static final ResourceKey> MACHINE = makeRegistryKey(GTCEu.id("machine")); - public static final ResourceKey> COVER = makeRegistryKey(GTCEu.id("cover")); + public static final ResourceKey> MATERIAL_ICON_SET = makeRegistryKey(GTCEu.id("material_icon_set")); + + // Recipe related registries + public static final ResourceKey> RECIPE_TYPE = makeRegistryKey(GTCEu.id("recipe_type")); public static final ResourceKey> RECIPE_CATEGORY = makeRegistryKey(GTCEu.id("recipe_category")); public static final ResourceKey>> RECIPE_CAPABILITY = makeRegistryKey(GTCEu.id("recipe_capability")); public static final ResourceKey>> RECIPE_CONDITION = makeRegistryKey(GTCEu.id("recipe_condition")); public static final ResourceKey> CHANCE_LOGIC = makeRegistryKey(GTCEu.id("chance_logic")); - public static final ResourceKey> PLACEHOLDER = makeRegistryKey(GTCEu.id("placeholder")); - public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); + + // Datapack registries + + public static final ResourceKey> BEDROCK_FLUID = makeRegistryKey(GTCEu.id("bedrock_fluid")); + public static final ResourceKey> BEDROCK_ORE = makeRegistryKey(GTCEu.id("bedrock_ore")); + public static final ResourceKey> ORE_VEIN = makeRegistryKey(GTCEu.id("ore_vein")); + + // Other registries + + public static final ResourceKey> COVER = makeRegistryKey(GTCEu.id("cover")); + public static final ResourceKey> MACHINE = makeRegistryKey(GTCEu.id("machine")); + public static final ResourceKey> SOUND = makeRegistryKey(GTCEu.id("sound")); + public static final ResourceKey> DIMENSION_MARKER = makeRegistryKey(GTCEu.id("dimension_marker")); public static final ResourceKey> MEDICAL_CONDITION = makeRegistryKey(GTCEu.id("medical_condition")); - public static final ResourceKey> MATERIAL_ICON_SET = makeRegistryKey(GTCEu.id("material_icon_set")); public static final ResourceKey> WORLD_GEN_LAYER = makeRegistryKey(GTCEu.id("world_gen_layer")); public static final ResourceKey> PATTERN_ERROR_TYPE = makeRegistryKey(GTCEu.id("pattern_error_type")); + public static final ResourceKey> PLACEHOLDER = makeRegistryKey(GTCEu.id("placeholder")); + public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); } // spotless:off From 465fb7418002060fdbea40673ae48005495af980 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 16 Jul 2026 21:39:19 +1000 Subject: [PATCH 06/33] reorganise a few things --- .../gtceu/api/registry/GTRegistries.java | 14 ++-- .../gregtechceu/gtceu/common/CommonProxy.java | 69 +++++++------------ .../core/mixins/neoforge/GameDataMixin.java | 4 +- 3 files changed, 31 insertions(+), 56 deletions(-) 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 cf52ae66f71..46f01ad00bc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -43,6 +43,8 @@ public final class GTRegistries { + private static final LinkedHashMap> REGISTRIES = new LinkedHashMap<>(); + // spotless:off public static final class Keys { private Keys() {} @@ -83,7 +85,6 @@ private Keys() {} } // spotless:off - private static final LinkedHashMap> LOAD_ORDER = new LinkedHashMap<>(); // GT Registries public static final Registry ELEMENTS = makeRegistry(Keys.ELEMENT); @@ -121,13 +122,13 @@ public static MappedRegistry makeRegistry(ResourceKey> key, b MappedRegistry registry = (MappedRegistry) new RegistryBuilder<>(key) .sync(sync) .create(); - LOAD_ORDER.put(key.location(), registry); + REGISTRIES.put(key.location(), registry); return registry; } private static MaterialRegistry makeMaterialRegistry() { MaterialRegistry registry = new MaterialRegistry(Keys.MATERIAL); - LOAD_ORDER.put(Keys.MATERIAL.location(), registry); + REGISTRIES.put(Keys.MATERIAL.location(), registry); return registry; } @@ -168,13 +169,8 @@ public static void init(IEventBus eventBus) { NeoForge.EVENT_BUS.addListener(GTRegistries::onFreeze); } - @UnmodifiableView - public static List getRegistrationOrder() { - return List.copyOf(LOAD_ORDER.keySet()); - } - @UnmodifiableView public static Collection> getRegistries() { - return LOAD_ORDER.values(); + return REGISTRIES.values(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 790bb4bf047..b702a9b56ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -9,7 +9,6 @@ import com.gregtechceu.gtceu.api.capability.compat.EUToFEProvider; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; 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.PostMaterialEvent; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; @@ -75,7 +74,6 @@ import com.gregtechceu.gtceu.integration.map.WaypointManager; import com.gregtechceu.gtceu.utils.input.SyncedKeyMappings; -import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.server.packs.PackType; @@ -90,8 +88,6 @@ import net.neoforged.bus.api.EventPriority; import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.ModContainer; -import net.neoforged.fml.ModList; import net.neoforged.fml.ModLoader; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; import net.neoforged.fml.event.lifecycle.FMLLoadCompleteEvent; @@ -120,7 +116,6 @@ import com.tterrag.registrate.providers.RegistrateProvider; import com.tterrag.registrate.util.nullness.NonNullConsumer; import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import org.jetbrains.annotations.ApiStatus; import java.util.Arrays; import java.util.List; @@ -147,26 +142,7 @@ public static void init(final IEventBus modBus) { GregTechDatagen.initPre(); GTRegistries.init(modBus); - - registerDeferredRegistries(modBus); - - // MUI stuff - GuiManager.registerFactory(MachineUIFactory.INSTANCE); - GuiManager.registerFactory(CoverUIFactory.INSTANCE); - GTGuiTheme.registerThemes(); - - - FusionReactorMachine.registerFusionTier(GTValues.LuV, "MKI"); - FusionReactorMachine.registerFusionTier(GTValues.ZPM, "MKII"); - FusionReactorMachine.registerFusionTier(GTValues.UV, "MKIII"); - - AddonFinder.getAddonList().forEach(IGTAddon::gtInitComplete); - } - - // Attaches the deferred registries that hold GT content to the mod bus. - public static void registerDeferredRegistries(IEventBus modBus) { - - // Neoforge and MC registries + REGISTRATE.registerEventListeners(modBus); GTDataComponents.init(modBus); GTArmorMaterials.init(modBus); @@ -180,25 +156,9 @@ public static void registerDeferredRegistries(IEventBus modBus) { GTFeatures.init(modBus); GTValueProviderTypes.init(modBus); - // GT registries - GTPatternErrors.init(modBus); - // Registrate is a wrapped for deferred registries, so it should be initialised here. - REGISTRATE.registerEventListeners(modBus); - GTCreativeModeTabs.init(); - } - - // Only register everything once. - private static boolean didRunRegistration = false; - - @SubscribeEvent - public static void onRegister(RegisterEvent event) { - if (didRunRegistration) { - return; - } - didRunRegistration = true; GTElements.init(); MaterialIconSet.init(); @@ -249,11 +209,24 @@ public static void onRegister(RegisterEvent event) { SyncedKeyMappings.init(); MachineOwner.init(); ChestGenHooks.init(); + + + // MUI stuff + GuiManager.registerFactory(MachineUIFactory.INSTANCE); + GuiManager.registerFactory(CoverUIFactory.INSTANCE); + GTGuiTheme.registerThemes(); + + + FusionReactorMachine.registerFusionTier(GTValues.LuV, "MKI"); + FusionReactorMachine.registerFusionTier(GTValues.ZPM, "MKII"); + FusionReactorMachine.registerFusionTier(GTValues.UV, "MKIII"); + + AddonFinder.getAddonList().forEach(IGTAddon::gtInitComplete); } // Fire post material events after all other material registry events. @SubscribeEvent(priority = EventPriority.LOWEST) - public void onRegisterLowest(RegisterEvent event) { + public static void onRegisterLowest(RegisterEvent event) { if (event.getRegistryKey() == GTRegistries.Keys.MATERIAL) { // 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 @@ -285,9 +258,10 @@ public void onRegisterLowest(RegisterEvent event) { } @SubscribeEvent(priority = EventPriority.LOW) - public static void onRegisterLate(RegisterEvent event) { - // Material event *should* happen before any of the others here + public static void registerMaterialContent(RegisterEvent event) { if (event.getRegistryKey() == Registries.BLOCK) { + GTCEu.LOGGER.info("Generating material blocks..."); + // Material Blocks REGISTRATE.creativeModeTab(GTCreativeModeTabs.MATERIAL_BLOCK); GTMaterialBlocks.generateMaterialBlocks(); // Compressed Blocks @@ -301,14 +275,17 @@ public static void onRegisterLate(RegisterEvent event) { GTMaterialBlocks.generateItemPipeBlocks(); // Item Pipe Blocks GTMaterialBlocks.finaliseMaterialBlocks(); + } else if (event.getRegistryKey() == Registries.ITEM) { + GTCEu.LOGGER.info("Generating material items..."); + // Material Items & Tools GTMaterialItems.generateMaterialItems(); GTMaterialItems.generateTools(); GTMaterialItems.generateArmors(); - // --spacer-- + } else if (event.getRegistryKey() == Registries.FLUID) { - GTFluids.registerMaterialFluids(); + GTFluids.init(); } else if (event.getRegistryKey() == Registries.BLOCK_ENTITY_TYPE) { GTBlockEntities.init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java index a080dafe282..74826671a93 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java @@ -1,7 +1,9 @@ package com.gregtechceu.gtceu.core.mixins.neoforge; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.registries.GameData; @@ -17,7 +19,7 @@ public class GameDataMixin { @ModifyExpressionValue(method = "getRegistrationOrder", at = @At(value = "NEW", target = "java/util/LinkedHashSet")) private static LinkedHashSet gtceu$injectGTRegistriesFirst(LinkedHashSet ordered) { - ordered.addAll(GTRegistries.getRegistrationOrder()); + ordered.addAll(BuiltInRegistries.REGISTRY.keySet().stream().filter(r -> r.getNamespace().equals(GTCEu.MOD_ID)).sorted(ResourceLocation::compareNamespaced).toList()); return ordered; } } From a592d9cfab865fd8b4fa24ed2b5c4b6ca978cf8c Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 16 Jul 2026 21:48:29 +1000 Subject: [PATCH 07/33] store world gen layers in a proper registry --- .../api/data/worldgen/WorldGenLayers.java | 25 ++++++++----------- .../gregtechceu/gtceu/common/CommonProxy.java | 2 +- .../integration/kjs/GTCEuStartupEvents.java | 1 - .../integration/kjs/GregTechKubeJSPlugin.java | 2 ++ .../kjs/builders/WorldGenLayerBuilder.java | 9 ++++--- .../kjs/events/WorldGenLayerEventJS.java | 21 ---------------- 6 files changed, 18 insertions(+), 42 deletions(-) delete mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/events/WorldGenLayerEventJS.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index b6cc054cdf9..5e03c1ac474 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -1,17 +1,25 @@ package com.gregtechceu.gtceu.api.data.worldgen; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.integration.kjs.GTCEuStartupEvents; -import com.gregtechceu.gtceu.integration.kjs.events.WorldGenLayerEventJS; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; import java.util.Set; public class WorldGenLayers { + private static final DeferredRegister WORLD_GEN_LAYERS = DeferredRegister + .create(GTRegistries.Keys.WORLD_GEN_LAYER, GTCEu.MOD_ID); + + public static void init(IEventBus modBus) { + WORLD_GEN_LAYERS.register(modBus); + } + public static final SimpleWorldGenLayer STONE = new SimpleWorldGenLayer( GTCEu.id("stone"), () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), Set.of(Level.OVERWORLD)); @@ -27,17 +35,4 @@ public class WorldGenLayers { public static final SimpleWorldGenLayer ENDSTONE = new SimpleWorldGenLayer( GTCEu.id("endstone"), () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, Set.of(Level.END)); - - public static void init() { - if (GTCEu.Mods.isKubeJSLoaded()) { - KJSCallWrapper.postEvent(); - } - } - - private static final class KJSCallWrapper { - - private static void postEvent() { - GTCEuStartupEvents.WORLD_GEN_LAYERS.post(new WorldGenLayerEventJS()); - } - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index b702a9b56ca..d80ebddc2c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -200,7 +200,7 @@ public static void init(final IEventBus modBus) { GTEntityTypes.init(); GregTechDatagen.initPost(); - WorldGenLayers.registerAll(); + WorldGenLayers.init(); VeinGenerators.registerAddonGenerators(); IndicatorGenerators.registerAddonGenerators(); WaypointManager.init(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java index 5d1437ebf68..0d593a9155f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java @@ -15,7 +15,6 @@ public interface GTCEuStartupEvents { EventGroup GROUP = EventGroup.of("GTCEuStartupEvents"); EventHandler MATERIAL_ICON_INFO = GROUP.startup("materialIconInfo", () -> MaterialIconInfoEventJS.class); - EventHandler WORLD_GEN_LAYERS = GROUP.startup("worldGenLayers", () -> WorldGenLayerEventJS.class); TargetedEventHandler>> REGISTRY = GROUP.startup("registry", () -> GTRegistryKubeEvent.class) .requiredTarget(EventTargetType.REGISTRY); 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 f6e22201b38..065f87bea77 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -79,6 +79,7 @@ import com.gregtechceu.gtceu.integration.kjs.builders.ElementBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.GTRecipeCategoryBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.GTRecipeTypeBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.WorldGenLayerBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.block.ActiveBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.block.CoilBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.machine.*; @@ -165,6 +166,7 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { OreVeinDefinitionBuilder::new); registry.addDefault(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidBuilder.class, BedrockFluidBuilder::new); registry.addDefault(GTRegistries.Keys.BEDROCK_ORE, BedrockOreBuilder.class, BedrockOreBuilder::new); + registry.addDefault(GTRegistries.Keys.WORLD_GEN_LAYER, WorldGenLayerBuilder.class, WorldGenLayerBuilder::new); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java index 711de780191..065f0f4e886 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.IWorldGenLayer; import com.gregtechceu.gtceu.api.data.worldgen.SimpleWorldGenLayer; +import dev.latvian.mods.kubejs.registry.BuilderBase; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; @@ -16,17 +17,17 @@ import java.util.Set; @Accessors(fluent = true, chain = true) -public class WorldGenLayerBuilder { +public class WorldGenLayerBuilder extends BuilderBase { - public transient ResourceLocation id; public transient List targets = new ObjectArrayList<>(); public transient List> dimensions = new ObjectArrayList<>(); public WorldGenLayerBuilder(ResourceLocation id) { - this.id = id; + super(id); } - public SimpleWorldGenLayer build() { + @Override + public IWorldGenLayer createObject() { return new SimpleWorldGenLayer( this.id, () -> new AnyMatchRuleTest(targets.stream().map(IWorldGenLayer.RuleTestSupplier::get).toList()), diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/WorldGenLayerEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/WorldGenLayerEventJS.java deleted file mode 100644 index bb55f1e873c..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/WorldGenLayerEventJS.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.gregtechceu.gtceu.integration.kjs.events; - -import com.gregtechceu.gtceu.api.data.worldgen.SimpleWorldGenLayer; -import com.gregtechceu.gtceu.integration.kjs.builders.WorldGenLayerBuilder; - -import net.minecraft.resources.ResourceLocation; - -import dev.latvian.mods.kubejs.event.KubeEvent; -import dev.latvian.mods.kubejs.typings.Info; - -import java.util.function.Consumer; - -public class WorldGenLayerEventJS implements KubeEvent { - - @Info("Create a new material icon set with the default parent.") - public SimpleWorldGenLayer create(ResourceLocation id, Consumer consumer) { - WorldGenLayerBuilder builder = new WorldGenLayerBuilder(id); - consumer.accept(builder); - return builder.build(); - } -} From ead68b55817827ea2408ad5a481b2ef4e98fd5da Mon Sep 17 00:00:00 2001 From: Gustavo Date: Thu, 16 Jul 2026 21:48:48 +1000 Subject: [PATCH 08/33] a --- src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index d80ebddc2c7..4d518197b16 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -200,7 +200,7 @@ public static void init(final IEventBus modBus) { GTEntityTypes.init(); GregTechDatagen.initPost(); - WorldGenLayers.init(); + WorldGenLayers.init(modBus); VeinGenerators.registerAddonGenerators(); IndicatorGenerators.registerAddonGenerators(); WaypointManager.init(); From 75f29fc9022ae9dda00f02c18bc15fd52eac1ce6 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 00:00:33 +1000 Subject: [PATCH 09/33] add more registration methods to registrate (WIP) --- .../gregtechceu/gtceu/api/addon/IGTAddon.java | 17 --- .../chemical/material/MarkerMaterial.java | 3 +- .../api/data/chemical/material/Material.java | 11 +- .../gtceu/api/registry/GTRegistries.java | 4 +- .../api/registry/registrate/GTRegistrate.java | 120 +++++++++++++++++- .../gregtechceu/gtceu/common/CommonProxy.java | 9 +- 6 files changed, 130 insertions(+), 34 deletions(-) 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 1158d2a5419..067785e5419 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java +++ b/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java @@ -17,23 +17,6 @@ public interface IGTAddon { */ GTRegistrate getRegistrate(); - /** - * This runs after GTCEu has set up it's content. Set up GT loading-dependent (but NOT ones dependent on - * - * @apiNote DO NOT REGISTER ANY OF YOUR OWN CONTENT HERE, AS IF YOU DO, IT'LL REGISTER AS IF GTCEu REGISTERED IT - * AND YOUR DATAGEN AND EVENTS WILL NOT WORK AS EXPECTED, IF AT ALL. - */ - void gtInitComplete(); - - /** - * Call init on your custom IWorldGenLayer class(es) here - * - * @deprecated Subscribe to the {@code GTCEuAPI.RegisterEvent} register event - * instead - */ - @Deprecated(forRemoval = true, since = "8.0.0") - default void registerWorldgenLayers() {} - /** * Call init on your custom VeinGenerator class(es) here */ diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java index 1c3b773d05f..944920565b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.data.chemical.material; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import net.minecraft.resources.ResourceLocation; /** @@ -21,7 +22,7 @@ public MarkerMaterial(ResourceLocation resourceLocation) { } @Override - protected void registerMaterial() {} + protected void registerMaterial(GTRegistrate registrate) {} @Override public void verifyMaterial() {} 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 7f6a8f5fd15..76854757d55 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 @@ -15,6 +15,7 @@ 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.GTRegistrate; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTMedicalConditions; import com.gregtechceu.gtceu.integration.kjs.helpers.MaterialStackWrapper; @@ -145,8 +146,8 @@ protected Material(ResourceLocation resourceLocation) { flags = new MaterialFlags(); } - protected void registerMaterial() { - GTRegistries.MATERIALS.register(this); + protected void registerMaterial(GTRegistrate registrate) { + registrate.generic(GTRegistries.Keys.MATERIAL, () -> this).register(); } public String getName() { @@ -581,6 +582,7 @@ public int hashCode() { @RemapPrefixForJS("kjs$") public static class Builder { + private final GTRegistrate registrate; private final MaterialInfo materialInfo; private final MaterialProperties properties; private final MaterialFlags flags; @@ -613,7 +615,8 @@ public static class Builder { * "material." for the Translation Key. * @since GTCEu 2.0.0 */ - public Builder(ResourceLocation resourceLocation) { + public Builder(GTRegistrate registrate, ResourceLocation resourceLocation) { + this.registrate = registrate; String name = resourceLocation.getPath(); if (name.charAt(name.length() - 1) == '_') throw new IllegalArgumentException("Material name cannot end with a '_'!"); @@ -1876,7 +1879,7 @@ public Material buildAndRegister() { mat.setFormula(formula, formatFormula); } materialInfo.verifyInfo(properties, averageRGB); - mat.registerMaterial(); + mat.registerMaterial(registrate); if (ignoredTagPrefixes != null) { ignoredTagPrefixes.forEach(p -> p.setIgnored(mat)); } 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 46f01ad00bc..abfbd30606d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -43,7 +43,9 @@ public final class GTRegistries { - private static final LinkedHashMap> REGISTRIES = new LinkedHashMap<>(); + private static final HashMap> REGISTRIES = new HashMap<>(); + + private GTRegistries() {} // spotless:off public static final class Keys { 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 af05ee3671c..5465b5f1e81 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 @@ -2,22 +2,38 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.block.OreBlock; +import com.gregtechceu.gtceu.api.data.chemical.Element; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; +import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.data.worldgen.IWorldGenLayer; +import com.gregtechceu.gtceu.api.data.worldgen.SimpleWorldGenLayer; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import net.neoforged.bus.api.EventPriority; @@ -50,6 +66,8 @@ import java.util.function.Function; import java.util.function.Supplier; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.Conditions.hasOreProperty; + public class GTRegistrate extends AbstractRegistrate { private static final Map EXISTING_REGISTRATES = new Object2ObjectOpenHashMap<>(); @@ -198,12 +216,108 @@ protected

NoConfigBuilder createCreativ blockEntityFactory); } + // Recipe types + + public GTRecipeType recipeType(String name, String group, RecipeType... proxyRecipes) { + var recipeType = new GTRecipeType(GTCEu.id(name), group, proxyRecipes); + this.generic(name, GTRegistries.Keys.RECIPE_TYPE, () -> recipeType).build(); + return recipeType; + } + + // Recipe categories + + public GTRecipeCategory recipeCategory(String categoryName, GTRecipeType recipeType) { + var category = new GTRecipeCategory(makeResourceLocation(categoryName), recipeType); + this.generic(categoryName, GTRegistries.Keys.RECIPE_CATEGORY, () -> category).build(); + return category; + } + + // Tag prefixes + + public TagPrefix tagPrefix(String name) { + return tagPrefix(name, false); + } + + public TagPrefix tagPrefix(String name, boolean invertedName) { + var tagPrefix = new TagPrefix(makeResourceLocation(name), invertedName); + this.generic(name.toLowerCase(), GTRegistries.Keys.TAG_PREFIX, () -> tagPrefix).register(); + return tagPrefix; + } + + public TagPrefix oreTagPrefix(String name, TagKey miningToolTag) { + return tagPrefix(name) + .defaultTagPath("ores/%s") + .prefixOnlyTagPath("ores_in_ground/%s") + .unformattedTagPath("ores") + .materialIconType(MaterialIconType.ore) + .miningToolTag(miningToolTag) + .unificationEnabled(true) + .blockConstructor(OreBlock::new) + .generationCondition(hasOreProperty); + } + + // Materials + + public Material.Builder material(String name) { + return new Material.Builder(this, makeResourceLocation(name)); + } + + // Elements + + public Element element(String name, long protons, long neutrons, long halfLifeSeconds, @Nullable String decayTo, + String symbol, boolean isIsotope) { + var element = new Element(protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); + this.generic(name.toLowerCase(), GTRegistries.Keys.ELEMENT, () -> element).register(); + return element; + } + + public Element element(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, + String symbol, + boolean isIsotope) { + return element(name, protons, neutrons, halfLifeSeconds, decayTo, symbol, isIsotope); + } + + // Material icon sets + + public MaterialIconSet materialIconSet(String id) { + return materialIconSet(id, MaterialIconSet.DULL); + } + + public MaterialIconSet materialIconSet(String id, MaterialIconSet parent) { + return materialIconSet(id, parent, false); + } + + public MaterialIconSet materialIconSet(String id, @Nullable MaterialIconSet parent, boolean isRoot) { + var iconSet = new MaterialIconSet(makeResourceLocation(id), parent, isRoot); + this.generic(id, GTRegistries.Keys.MATERIAL_ICON_SET, () -> iconSet).build(); + return iconSet; + } + + // Medical conditions + + public MedicalCondition medicalCondition(String name, int color, + int maxProgression, MedicalCondition.IdleProgressionType progressionType, + float progressionRate, + boolean canBePermanent, Symptom.ConfiguredSymptom... symptoms) { + var medicalCondition = new MedicalCondition(makeResourceLocation(name), color, maxProgression, progressionType, + progressionRate, canBePermanent, symptoms); + this.generic(name, GTRegistries.Keys.MEDICAL_CONDITION, () -> medicalCondition).register(); + return medicalCondition; + } + + // Sounds + public SoundEntryBuilder sound(String name) { - return new SoundEntryBuilder(GTCEu.id(name)); + return new SoundEntryBuilder(makeResourceLocation(name)); } - public SoundEntryBuilder sound(ResourceLocation name) { - return new SoundEntryBuilder(name); + // World gen layers + + public SimpleWorldGenLayer simpleWorldGenLayer(String id, IWorldGenLayer.RuleTestSupplier target, + Set> levels) { + var worldGenLayer = new SimpleWorldGenLayer(makeResourceLocation(id), target, levels); + this.generic(id, GTRegistries.Keys.WORLD_GEN_LAYER, () -> worldGenLayer).build(); + return worldGenLayer; } // Blocks diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 4d518197b16..562a52f8745 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -126,10 +126,7 @@ public class CommonProxy { - private static IEventBus modBus; - public static void init(final IEventBus modBus) { - CommonProxy.modBus = modBus; if (GTCEu.Mods.isKubeJSLoaded()) { // initialize this before the class's static listeners // so KubeJS materials are registered before the material registry is closed. @@ -216,12 +213,9 @@ public static void init(final IEventBus modBus) { GuiManager.registerFactory(CoverUIFactory.INSTANCE); GTGuiTheme.registerThemes(); - FusionReactorMachine.registerFusionTier(GTValues.LuV, "MKI"); FusionReactorMachine.registerFusionTier(GTValues.ZPM, "MKII"); FusionReactorMachine.registerFusionTier(GTValues.UV, "MKIII"); - - AddonFinder.getAddonList().forEach(IGTAddon::gtInitComplete); } // Fire post material events after all other material registry events. @@ -242,7 +236,6 @@ public static void onRegisterLowest(RegisterEvent event) { var registrate = GTRegistrate.createIgnoringListenerErrors(namespace); AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registrate; if (accessor.getDoDatagen().get()) { - // noinspection UnstableApiUsage List> providers = Multimaps.asMap(accessor.getDatagens()) .get(ProviderType.LANG); NonNullConsumer generator = (provider) -> MaterialLangGenerator @@ -250,7 +243,7 @@ public static void onRegisterLowest(RegisterEvent event) { if (providers == null) { accessor.getDatagens().put(ProviderType.LANG, generator); } else { - providers.add(0, generator); + providers.addFirst(generator); } } }); From 2e6c66b140dfb9d11b4d703cb66c597dc9f6eb11 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 01:33:47 +1000 Subject: [PATCH 10/33] make all registration deferred --- .../gtceu/api/cover/CoverDefinition.java | 5 + .../gtceu/api/data/DimensionMarker.java | 9 +- .../chemical/material/MarkerMaterial.java | 1 + .../material/info/MaterialIconSet.java | 111 +- .../material/stack/MaterialEntry.java | 6 +- .../gtceu/api/data/tag/TagPrefix.java | 343 +-- .../gtceu/api/data/tag/TagType.java | 4 +- .../data/worldgen/SimpleWorldGenLayer.java | 4 - .../api/data/worldgen/WorldGenLayers.java | 4 + .../worldgen/modifier/BiomePlacement.java | 14 +- .../worldgen/modifier/DimensionFilter.java | 7 +- .../worldgen/modifier/FrequencyModifier.java | 7 +- .../modifier/GTPlacementModifiers.java | 30 + .../gregtechceu/gtceu/api/item/IGTTool.java | 3 +- .../component/prospector/ProspectorMode.java | 3 +- .../item/datacomponents/ToolBehaviors.java | 9 + .../api/multiblock/error/GTPatternErrors.java | 28 +- .../api/placeholder/PlaceholderHandler.java | 4 - .../gtceu/api/recipe/GTRecipeType.java | 8 +- .../api/recipe/category/GTRecipeCategory.java | 7 - .../api/recipe/chance/logic/ChanceLogic.java | 38 +- .../gtceu/api/registry/GTRegistries.java | 46 +- .../registry/registrate/MachineBuilder.java | 4 +- .../registrate/SoundEntryBuilder.java | 5 +- .../renderer/block/OreBlockRenderer.java | 6 +- .../gtceu/common/CommonEventListener.java | 4 - .../gregtechceu/gtceu/common/CommonProxy.java | 32 +- .../gtceu/common/data/GCYMRecipeTypes.java | 4 +- .../gtceu/common/data/GTAttachmentTypes.java | 1 - .../gtceu/common/data/GTCommandArguments.java | 1 - .../gtceu/common/data/GTCovers.java | 147 +- .../gtceu/common/data/GTDimensionMarkers.java | 45 +- .../gtceu/common/data/GTElements.java | 347 ++- .../gtceu/common/data/GTMachines.java | 1 - .../gtceu/common/data/GTMaterialBlocks.java | 2 +- .../gtceu/common/data/GTMaterials.java | 1 + .../common/data/GTMedicalConditions.java | 79 +- .../gtceu/common/data/GTMobEffects.java | 1 - .../gtceu/common/data/GTParticleTypes.java | 1 - .../gtceu/common/data/GTPlaceholders.java | 2275 +++++++++-------- .../common/data/GTRecipeCapabilities.java | 20 +- .../gtceu/common/data/GTRecipeCategories.java | 38 +- .../gtceu/common/data/GTRecipeConditions.java | 73 +- .../gtceu/common/data/GTRecipeTypes.java | 226 +- .../gtceu/common/data/GTSoundEntries.java | 24 +- .../gtceu/common/data/GTToolBehaviors.java | 77 +- .../common/data/machines/GTMachineUtils.java | 2 - .../data/materials/ElementMaterials.java | 261 +- .../data/materials/FirstDegreeMaterials.java | 434 ++-- .../common/data/materials/GCYMMaterials.java | 27 +- .../data/materials/HigherDegreeMaterials.java | 47 +- .../materials/OrganicChemistryMaterials.java | 161 +- .../data/materials/SecondDegreeMaterials.java | 135 +- .../UnknownCompositionMaterials.java | 275 +- .../item/behavior/CoverPlaceBehavior.java | 12 +- .../tool/behavior/AOEConfigUIBehavior.java | 2 +- .../tool/behavior/BlockRotatingBehavior.java | 2 +- .../tool/behavior/DisableShieldBehavior.java | 2 +- .../tool/behavior/EntityDamageBehavior.java | 2 +- .../item/tool/behavior/GrassPathBehavior.java | 2 +- .../tool/behavior/HarvestCropsBehavior.java | 2 +- .../tool/behavior/HarvestIceBehavior.java | 2 +- .../item/tool/behavior/HoeGroundBehavior.java | 2 +- .../item/tool/behavior/LogStripBehavior.java | 2 +- .../item/tool/behavior/PlungerBehavior.java | 2 +- .../tool/behavior/ProspectingBehavior.java | 2 +- .../tool/behavior/RotateRailBehavior.java | 2 +- .../item/tool/behavior/ScrapeBehavior.java | 2 +- .../tool/behavior/ToolModeSwitchBehavior.java | 2 +- .../tool/behavior/TorchPlaceBehavior.java | 2 +- .../tool/behavior/TreeFellingBehavior.java | 2 +- .../item/tool/behavior/WaxOffBehavior.java | 2 +- .../machine/trait/BedrockOreMinerLogic.java | 4 +- .../condition/AdjacentBlockCondition.java | 2 +- .../condition/AdjacentFluidCondition.java | 2 +- .../recipe/condition/BiomeCondition.java | 2 +- .../recipe/condition/BiomeTagCondition.java | 2 +- .../recipe/condition/CleanroomCondition.java | 2 +- .../recipe/condition/DaytimeCondition.java | 2 +- .../recipe/condition/DimensionCondition.java | 9 +- .../recipe/condition/EUToStartCondition.java | 2 +- .../EnvironmentalHazardCondition.java | 2 +- .../recipe/condition/FTBQuestCondition.java | 2 +- .../condition/HeraclesQuestCondition.java | 2 +- .../recipe/condition/PositionYCondition.java | 2 +- .../recipe/condition/RainingCondition.java | 2 +- .../recipe/condition/ResearchCondition.java | 2 +- .../recipe/condition/ThunderCondition.java | 2 +- .../recipe/condition/VentCondition.java | 2 +- .../modifier/RubberTreeChancePlacement.java | 7 +- .../core/mixins/neoforge/GameDataMixin.java | 4 +- .../data/loader/PostRegistryListener.java | 3 +- .../gtceu/data/loot/ChestGenHooks.java | 17 +- .../gtceu/data/recipe/GTIngredientTypes.java | 1 - .../data/recipe/builder/GTRecipeBuilder.java | 1 - .../generated/MaterialRecipeHandler.java | 12 +- .../recipe/generated/OreRecipeHandler.java | 4 +- .../recipe/generated/PartsRecipeHandler.java | 2 +- .../recipe/generated/PipeRecipeHandler.java | 2 +- .../generated/PolarizingRecipeHandler.java | 2 +- .../generated/WireCombiningHandler.java | 2 +- .../recipe/generated/WireRecipeHandler.java | 4 +- .../integration/ae2/GTAEPlaceholders.java | 299 ++- .../cctweaked/CCTweakedPlugin.java | 10 +- .../create/GTCreateIntegration.java | 34 +- .../integration/kjs/GregTechKubeJSPlugin.java | 12 +- .../kjs/builders/ElementBuilder.java | 3 +- .../kjs/builders/GTRecipeCategoryBuilder.java | 4 +- .../kjs/builders/GTRecipeTypeBuilder.java | 2 +- .../kjs/builders/WorldGenLayerBuilder.java | 2 +- .../material/MaterialBuilderWrapper.java | 3 +- .../material/MaterialIconSetBuilder.java | 25 + .../OreTagPrefixBuilder.java | 14 +- .../TagPrefixBuilder.java | 6 +- .../kjs/builders/prefix/package-info.java | 9 - .../worldgen/DimensionMarkerBuilder.java | 4 +- .../kjs/events/MaterialIconInfoEventJS.java | 10 +- .../widgets/OreVeinRecipeWidget.java | 7 +- .../api/recipe/GTRecipeSerializerTest.java | 7 +- .../gtceu/gametest/util/TestUtils.java | 5 +- 120 files changed, 3065 insertions(+), 2988 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/GTPlacementModifiers.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialIconSetBuilder.java rename src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/{prefix => material}/OreTagPrefixBuilder.java (75%) rename src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/{prefix => material}/TagPrefixBuilder.java (97%) delete mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/package-info.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java index 4e7a847ddd2..7dc5c1c8b49 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/CoverDefinition.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.ICoverable; import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.SimpleCoverRenderer; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; @@ -30,6 +31,10 @@ public interface TieredCoverBehaviourProvider { @Getter private final @Nullable Supplier coverRenderer; + public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator) { + this(id, behaviorCreator, () -> () -> new SimpleCoverRenderer(id.withPath("block/cover/" + id.getPath()))); + } + public CoverDefinition(ResourceLocation id, CoverBehaviourProvider behaviorCreator, Supplier> coverRenderer) { this.behaviorCreator = behaviorCreator; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/DimensionMarker.java b/src/main/java/com/gregtechceu/gtceu/api/data/DimensionMarker.java index 5093ebd7363..2e834ddcff1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/DimensionMarker.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/DimensionMarker.java @@ -5,9 +5,11 @@ import net.minecraft.core.component.DataComponents; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.Level; import lombok.Getter; import org.jetbrains.annotations.Nullable; @@ -18,6 +20,9 @@ public class DimensionMarker { public static final int MAX_TIER = 99; + @Getter + public final ResourceKey dimension; + @Getter public final int tier; // not only used to represent dimension tier, but also for sorting @@ -26,7 +31,9 @@ public class DimensionMarker { private final MemoizedSupplier iconSupplier; - public DimensionMarker(int tier, Supplier supplier, @Nullable Component overrideName) { + public DimensionMarker(ResourceKey dim, int tier, Supplier supplier, + @Nullable Component overrideName) { + this.dimension = dim; this.tier = tier; this.overrideName = overrideName; this.iconSupplier = GTMemoizer.memoize(() -> getStack(supplier.get().asItem())); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java index 944920565b2..33a91fa378b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/MarkerMaterial.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.data.chemical.material; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; + import net.minecraft.resources.ResourceLocation; /** diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconSet.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconSet.java index 541214f4bb9..3e996077a9a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconSet.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialIconSet.java @@ -8,32 +8,34 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; + public class MaterialIconSet { - public static final MaterialIconSet DULL = new MaterialIconSet(GTCEu.id("dull"), null, true); - public static final MaterialIconSet METALLIC = new MaterialIconSet(GTCEu.id("metallic")); - public static final MaterialIconSet MAGNETIC = new MaterialIconSet(GTCEu.id("magnetic"), METALLIC); - public static final MaterialIconSet SHINY = new MaterialIconSet(GTCEu.id("shiny"), METALLIC); - public static final MaterialIconSet BRIGHT = new MaterialIconSet(GTCEu.id("bright"), SHINY); - public static final MaterialIconSet DIAMOND = new MaterialIconSet(GTCEu.id("diamond"), SHINY); - public static final MaterialIconSet EMERALD = new MaterialIconSet(GTCEu.id("emerald"), DIAMOND); - public static final MaterialIconSet GEM_HORIZONTAL = new MaterialIconSet(GTCEu.id("gem_horizontal"), EMERALD); - public static final MaterialIconSet GEM_VERTICAL = new MaterialIconSet(GTCEu.id("gem_vertical"), EMERALD); - public static final MaterialIconSet RUBY = new MaterialIconSet(GTCEu.id("ruby"), EMERALD); - public static final MaterialIconSet OPAL = new MaterialIconSet(GTCEu.id("opal"), RUBY); - public static final MaterialIconSet GLASS = new MaterialIconSet(GTCEu.id("glass"), RUBY); - public static final MaterialIconSet NETHERSTAR = new MaterialIconSet(GTCEu.id("netherstar"), GLASS); - public static final MaterialIconSet FINE = new MaterialIconSet(GTCEu.id("fine")); - public static final MaterialIconSet SAND = new MaterialIconSet(GTCEu.id("sand"), FINE); - public static final MaterialIconSet WOOD = new MaterialIconSet(GTCEu.id("wood"), FINE); - public static final MaterialIconSet ROUGH = new MaterialIconSet(GTCEu.id("rough"), FINE); - public static final MaterialIconSet FLINT = new MaterialIconSet(GTCEu.id("flint"), ROUGH); - public static final MaterialIconSet LIGNITE = new MaterialIconSet(GTCEu.id("lignite"), ROUGH); - public static final MaterialIconSet QUARTZ = new MaterialIconSet(GTCEu.id("quartz"), ROUGH); - public static final MaterialIconSet CERTUS = new MaterialIconSet(GTCEu.id("certus"), QUARTZ); - public static final MaterialIconSet LAPIS = new MaterialIconSet(GTCEu.id("lapis"), QUARTZ); - public static final MaterialIconSet FLUID = new MaterialIconSet(GTCEu.id("fluid")); - public static final MaterialIconSet RADIOACTIVE = new MaterialIconSet(GTCEu.id("radioactive"), METALLIC); + public static final MaterialIconSet DULL = REGISTRATE.materialIconSet("dull", null, true); + public static final MaterialIconSet METALLIC = REGISTRATE.materialIconSet("metallic"); + public static final MaterialIconSet MAGNETIC = REGISTRATE.materialIconSet("magnetic", METALLIC); + public static final MaterialIconSet SHINY = REGISTRATE.materialIconSet("shiny", METALLIC); + public static final MaterialIconSet BRIGHT = REGISTRATE.materialIconSet("bright", SHINY); + public static final MaterialIconSet DIAMOND = REGISTRATE.materialIconSet("diamond", SHINY); + public static final MaterialIconSet EMERALD = REGISTRATE.materialIconSet("emerald", DIAMOND); + public static final MaterialIconSet GEM_HORIZONTAL = REGISTRATE.materialIconSet("gem_horizontal", EMERALD); + public static final MaterialIconSet GEM_VERTICAL = REGISTRATE.materialIconSet("gem_vertical", EMERALD); + public static final MaterialIconSet RUBY = REGISTRATE.materialIconSet("ruby", EMERALD); + public static final MaterialIconSet OPAL = REGISTRATE.materialIconSet("opal", RUBY); + public static final MaterialIconSet GLASS = REGISTRATE.materialIconSet("glass", RUBY); + public static final MaterialIconSet NETHERSTAR = REGISTRATE.materialIconSet("netherstar", GLASS); + public static final MaterialIconSet FINE = REGISTRATE.materialIconSet("fine"); + public static final MaterialIconSet SAND = REGISTRATE.materialIconSet("sand", FINE); + public static final MaterialIconSet WOOD = REGISTRATE.materialIconSet("wood", FINE); + public static final MaterialIconSet ROUGH = REGISTRATE.materialIconSet("rough", FINE); + public static final MaterialIconSet FLINT = REGISTRATE.materialIconSet("flint", ROUGH); + public static final MaterialIconSet LIGNITE = REGISTRATE.materialIconSet("lignite", ROUGH); + public static final MaterialIconSet QUARTZ = REGISTRATE.materialIconSet("quartz", ROUGH); + public static final MaterialIconSet CERTUS = REGISTRATE.materialIconSet("certus", QUARTZ); + public static final MaterialIconSet LAPIS = REGISTRATE.materialIconSet("lapis", QUARTZ); + public static final MaterialIconSet FLUID = REGISTRATE.materialIconSet("fluid"); + public static final MaterialIconSet RADIOACTIVE = REGISTRATE.materialIconSet("radioactive", METALLIC); // Implementation ----------------------------------------------------------------------------------------------- @@ -48,59 +50,12 @@ public class MaterialIconSet { @Nullable public final MaterialIconSet parentIconset; - /** - * Create a new MaterialIconSet whose parent is {@link MaterialIconSet#DULL} - * - * @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation)} instead - * @param name the name of the iconset - */ - @Deprecated(since = "8.0.0") - public MaterialIconSet(@NotNull String name) { - this(name, MaterialIconSet.DULL); - } - - /** - * Create a new MaterialIconSet whose parent is one of your choosing - * - * @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation, MaterialIconSet)} instead - * @param name the name of the iconset - * @param parentIconset the parent iconset - */ - @Deprecated(since = "8.0.0") - public MaterialIconSet(@NotNull String name, @NotNull MaterialIconSet parentIconset) { - this(name, parentIconset, false); - } - - /** - * Create a new MaterialIconSet which is a root - * - * @deprecated Use {@link MaterialIconSet#MaterialIconSet(ResourceLocation, MaterialIconSet, boolean)} instead - * @param name the name of the iconset - * @param parentIconset the parent iconset, should be null if this should be a root iconset - * @param isRootIconset true if this should be a root iconset, otherwise false - */ - @Deprecated(since = "8.0.0") - public MaterialIconSet(@NotNull String name, @Nullable MaterialIconSet parentIconset, boolean isRootIconset) { - this(GTCEu.id(name), parentIconset, isRootIconset); - } - - /** - * Create a new MaterialIconSet whose parent is {@link MaterialIconSet#DULL} - * - * @param id the id of the iconset - */ public MaterialIconSet(@NotNull ResourceLocation id) { - this(id, MaterialIconSet.DULL); + this(id, null); } - /** - * Create a new MaterialIconSet whose parent is one of your choosing - * - * @param id the id of the iconset - * @param parentIconset the parent iconset - */ - public MaterialIconSet(@NotNull ResourceLocation id, @NotNull MaterialIconSet parentIconset) { - this(id, parentIconset, false); + public MaterialIconSet(@NotNull ResourceLocation id, @Nullable MaterialIconSet parentIconset) { + this(id, parentIconset, parentIconset == null); } /** @@ -120,8 +75,14 @@ public MaterialIconSet(@NotNull ResourceLocation id, @Nullable MaterialIconSet p this.name = id.getPath(); this.isRootIconset = isRootIconset; this.parentIconset = parentIconset; + } - GTRegistries.register(GTRegistries.MATERIAL_ICON_SETS, this.id, this); + /** + * @deprecated Use {@code GTRegistries.MATERIAL_ICON_SETS.get()} + */ + @Deprecated(since = "8.0.0") + public static MaterialIconSet getByName(@NotNull String name) { + return GTRegistries.MATERIAL_ICON_SETS.get(GTCEu.id(name)); } public String getName() { diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java index b851ca8b3bf..61b9d6a00de 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/stack/MaterialEntry.java @@ -3,9 +3,11 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.google.common.base.Preconditions; +import net.minecraft.resources.ResourceLocation; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -56,7 +58,7 @@ public String toString() { } var tags = tagPrefix.getItemTags(material); if (tags.isEmpty()) { - return tagPrefix.name + "/" + material.getName(); + return tagPrefix.getName() + "/" + material.getName(); } return tags.getFirst().location().toString(); } @@ -70,7 +72,7 @@ public String toString() { var values = str.split(":", 2); if (values.length > 1) { - var prefix = TagPrefix.get(values[0]); + var prefix = GTRegistries.TAG_PREFIXES.get(ResourceLocation.parse(values[0])); if (prefix == null) throw new IllegalArgumentException("Invalid TagPrefix: " + values[0]); cached = new MaterialEntry(prefix, GTMaterials.get(values[1])); PARSE_CACHE.put(str, cached); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index 6e92758909c..e5a619b4b82 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.block.MaterialBlock; -import com.gregtechceu.gtceu.api.block.OreBlock; 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; @@ -14,7 +13,6 @@ import com.gregtechceu.gtceu.api.item.MaterialBlockItem; 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.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialItems; @@ -58,11 +56,10 @@ import java.util.*; import java.util.function.*; -import java.util.stream.Collectors; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.Conditions.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; -@SuppressWarnings("unused") @Accessors(chain = true, fluent = true) public class TagPrefix { @@ -70,63 +67,56 @@ public class TagPrefix { public static void init() {} - /** - * @deprecated Use {@code GTRegistries.TAG_PREFIXES.get(name)} - */ - @Deprecated(since = "8.0.0") - public static TagPrefix get(String name) { - return GTRegistries.TAG_PREFIXES.get(GTCEu.id(name)); - } - public boolean isEmpty() { return this == NULL_PREFIX; } - public static final TagPrefix NULL_PREFIX = new TagPrefix(GTCEu.id("null")); + public static final TagPrefix NULL_PREFIX = REGISTRATE.tagPrefix("null"); - public static final TagPrefix ore = oreTagPrefix(GTCEu.id("stone"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix ore = REGISTRATE.oreTagPrefix("stone", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("%s Ore") .registerOre( Blocks.STONE::defaultBlockState, () -> GTMaterials.Stone, BlockBehaviour.Properties.of() .mapColor(MapColor.STONE).requiresCorrectToolForDrops().strength(3.0F, 3.0F), ResourceLocation.withDefaultNamespace("block/stone"), false, false, true); - public static final TagPrefix oreGranite = oreTagPrefix(GTCEu.id("granite"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreGranite = REGISTRATE.oreTagPrefix("granite", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Granite %s Ore") .registerOre( Blocks.GRANITE::defaultBlockState, () -> GTMaterials.Granite, BlockBehaviour.Properties.of() .mapColor(MapColor.DIRT).requiresCorrectToolForDrops().strength(3.0F, 3.0F), ResourceLocation.withDefaultNamespace("block/granite")); - public static final TagPrefix oreDiorite = oreTagPrefix(GTCEu.id("diorite"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreDiorite = REGISTRATE.oreTagPrefix("diorite", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Diorite %s Ore") .registerOre( Blocks.DIORITE::defaultBlockState, () -> GTMaterials.Diorite, BlockBehaviour.Properties.of() .mapColor(MapColor.QUARTZ).requiresCorrectToolForDrops().strength(3.0F, 3.0F), ResourceLocation.withDefaultNamespace("block/diorite")); - public static final TagPrefix oreAndesite = oreTagPrefix(GTCEu.id("andesite"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreAndesite = REGISTRATE.oreTagPrefix("andesite", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Andesite %s Ore") .registerOre( Blocks.ANDESITE::defaultBlockState, () -> GTMaterials.Andesite, BlockBehaviour.Properties.of() .mapColor(MapColor.DIRT).requiresCorrectToolForDrops().strength(3.0F, 3.0F), ResourceLocation.withDefaultNamespace("block/andesite")); - public static final TagPrefix oreRedGranite = oreTagPrefix("red_granite", BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreRedGranite = REGISTRATE + .oreTagPrefix("red_granite", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Red Granite %s Ore") .registerOre(() -> GTBlocks.RED_GRANITE.getDefaultState(), () -> GTMaterials.RedGranite, BlockBehaviour.Properties.of().mapColor(MapColor.TERRACOTTA_RED).requiresCorrectToolForDrops() .strength(3.0F, 3.0F), GTCEu.id("block/red_granite")); - public static final TagPrefix oreMarble = oreTagPrefix(GTCEu.id("marble"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreMarble = REGISTRATE.oreTagPrefix("marble", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Marble %s Ore") .registerOre( () -> GTBlocks.MARBLE.getDefaultState(), () -> GTMaterials.Marble, BlockBehaviour.Properties.of() .mapColor(MapColor.QUARTZ).requiresCorrectToolForDrops().strength(3.0F, 3.0F), GTCEu.id("block/marble")); - public static final TagPrefix oreDeepslate = oreTagPrefix(GTCEu.id("deepslate"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreDeepslate = REGISTRATE.oreTagPrefix("deepslate", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Deepslate %s Ore") .registerOre( Blocks.DEEPSLATE::defaultBlockState, () -> GTMaterials.Deepslate, BlockBehaviour.Properties.of() @@ -134,7 +124,7 @@ public boolean isEmpty() { .sound(SoundType.DEEPSLATE), ResourceLocation.withDefaultNamespace("block/deepslate"), false, false, true); - public static final TagPrefix oreTuff = oreTagPrefix(GTCEu.id("tuff"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreTuff = REGISTRATE.oreTagPrefix("tuff", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Tuff %s Ore") .registerOre( Blocks.TUFF::defaultBlockState, () -> GTMaterials.Tuff, BlockBehaviour.Properties.of() @@ -142,28 +132,28 @@ public boolean isEmpty() { .sound(SoundType.TUFF), ResourceLocation.withDefaultNamespace("block/tuff")); - public static final TagPrefix oreSand = oreTagPrefix(GTCEu.id("sand"), BlockTags.MINEABLE_WITH_SHOVEL) + public static final TagPrefix oreSand = REGISTRATE.oreTagPrefix("sand", BlockTags.MINEABLE_WITH_SHOVEL) .langValue("Sand %s Ore") .registerOre(Blocks.SAND::defaultBlockState, () -> GTMaterials.SiliconDioxide, BlockBehaviour.Properties.of().mapColor(MapColor.SAND).instrument(NoteBlockInstrument.SNARE) .strength(0.5F).sound(SoundType.SAND), ResourceLocation.withDefaultNamespace("block/sand"), false, true, false); - public static final TagPrefix oreRedSand = oreTagPrefix(GTCEu.id("redSand"), BlockTags.MINEABLE_WITH_SHOVEL) + public static final TagPrefix oreRedSand = REGISTRATE.oreTagPrefix("red_sand", BlockTags.MINEABLE_WITH_SHOVEL) .langValue("Red Sand %s Ore") .registerOre(Blocks.RED_SAND::defaultBlockState, () -> GTMaterials.SiliconDioxide, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_ORANGE).instrument(NoteBlockInstrument.SNARE) .strength(0.5F).sound(SoundType.SAND), ResourceLocation.withDefaultNamespace("block/red_sand"), false, true, false); - public static final TagPrefix oreGravel = oreTagPrefix(GTCEu.id("gravel"), BlockTags.MINEABLE_WITH_SHOVEL) + public static final TagPrefix oreGravel = REGISTRATE.oreTagPrefix("gravel", BlockTags.MINEABLE_WITH_SHOVEL) .langValue("Gravel %s Ore") .registerOre(Blocks.GRAVEL::defaultBlockState, () -> GTMaterials.Flint, BlockBehaviour.Properties.of().mapColor(MapColor.STONE).instrument(NoteBlockInstrument.SNARE) .strength(0.6F).sound(SoundType.GRAVEL), ResourceLocation.withDefaultNamespace("block/gravel"), false, true, false); - public static final TagPrefix oreBasalt = oreTagPrefix(GTCEu.id("basalt"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreBasalt = REGISTRATE.oreTagPrefix("basalt", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Basalt %s Ore") .registerOre(Blocks.BASALT::defaultBlockState, () -> GTMaterials.Basalt, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_BLACK) @@ -171,14 +161,14 @@ public boolean isEmpty() { .sound(SoundType.BASALT), ResourceLocation.withDefaultNamespace("block/basalt"), true); - public static final TagPrefix oreNetherrack = oreTagPrefix(GTCEu.id("netherrack"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreNetherrack = REGISTRATE.oreTagPrefix("netherrack", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Nether %s Ore") .registerOre(Blocks.NETHERRACK::defaultBlockState, () -> GTMaterials.Netherrack, BlockBehaviour.Properties.of().mapColor(MapColor.NETHER).instrument(NoteBlockInstrument.BASEDRUM) .requiresCorrectToolForDrops().strength(3.0F, 3.0F).sound(SoundType.NETHER_ORE), ResourceLocation.withDefaultNamespace("block/netherrack"), true, false, true); - public static final TagPrefix oreBlackstone = oreTagPrefix(GTCEu.id("blackstone"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreBlackstone = REGISTRATE.oreTagPrefix("blackstone", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("Blackstone %s Ore") .registerOre(Blocks.BLACKSTONE::defaultBlockState, () -> GTMaterials.Blackstone, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_BLACK) @@ -186,14 +176,14 @@ public boolean isEmpty() { .strength(3.0F, 3.0F), ResourceLocation.withDefaultNamespace("block/blackstone"), true, false, false); - public static final TagPrefix oreEndstone = oreTagPrefix(GTCEu.id("endstone"), BlockTags.MINEABLE_WITH_PICKAXE) + public static final TagPrefix oreEndstone = REGISTRATE.oreTagPrefix("endstone", BlockTags.MINEABLE_WITH_PICKAXE) .langValue("End %s Ore") .registerOre(Blocks.END_STONE::defaultBlockState, () -> GTMaterials.Endstone, BlockBehaviour.Properties.of().mapColor(MapColor.SAND).instrument(NoteBlockInstrument.BASEDRUM) .requiresCorrectToolForDrops().strength(4.5F, 9.0F), ResourceLocation.withDefaultNamespace("block/end_stone"), true, false, true); - public static final TagPrefix rawOre = new TagPrefix(GTCEu.id("raw"), true) + public static final TagPrefix rawOre = REGISTRATE.tagPrefix("raw", true) .idPattern("raw_%s") .defaultTagPath("raw_materials/%s") .unformattedTagPath("raw_materials") @@ -203,7 +193,7 @@ public boolean isEmpty() { .generateItem(true) .generationCondition(hasOreProperty); - public static final TagPrefix rawOreBlock = new TagPrefix(GTCEu.id("rawOreBlock")) + public static final TagPrefix rawOreBlock = REGISTRATE.tagPrefix("raw_ore_block") .idPattern("raw_%s_block") .defaultTagPath("storage_blocks/raw_%s") .unformattedTagPath("storage_blocks") @@ -214,7 +204,7 @@ public boolean isEmpty() { .generateBlock(true) .generationCondition(hasOreProperty); - public static final TagPrefix crushedRefined = new TagPrefix(GTCEu.id("refinedOre")) + public static final TagPrefix crushedRefined = REGISTRATE.tagPrefix("refined_ore") .idPattern("refined_%s_ore") .defaultTagPath("refined_ores/%s") .defaultTagPath("refined_ores") @@ -224,7 +214,7 @@ public boolean isEmpty() { .generateItem(true) .generationCondition(hasOreProperty); - public static final TagPrefix crushedPurified = new TagPrefix(GTCEu.id("purifiedOre")) + public static final TagPrefix crushedPurified = REGISTRATE.tagPrefix("purified_ore") .idPattern("purified_%s_ore") .defaultTagPath("purified_ores/%s") .defaultTagPath("purified_ores") @@ -235,7 +225,7 @@ public boolean isEmpty() { .generateItem(true) .generationCondition(hasOreProperty); - public static final TagPrefix crushed = new TagPrefix(GTCEu.id("crushedOre")) + public static final TagPrefix crushed = REGISTRATE.tagPrefix("crushed_ore") .idPattern("crushed_%s_ore") .defaultTagPath("crushed_ores/%s") .unformattedTagPath("crushed_ores") @@ -247,7 +237,7 @@ public boolean isEmpty() { .tooltip((mat, tooltips) -> tooltips.add(Component.translatable("metaitem.crushed.tooltip.purify"))); // A hot Ingot, which has to be cooled down by a Vacuum Freezer. - public static final TagPrefix ingotHot = new TagPrefix(GTCEu.id("hotIngot")) + public static final TagPrefix ingotHot = REGISTRATE.tagPrefix("hot_ingot") .idPattern("hot_%s_ingot") .defaultTagPath("hot_ingots/%s") .unformattedTagPath("hot_ingots") @@ -260,7 +250,7 @@ public boolean isEmpty() { hasBlastProperty.and(mat -> mat.getProperty(PropertyKey.BLAST).getBlastTemperature() > 1750)); // A regular Ingot. - public static final TagPrefix ingot = new TagPrefix(GTCEu.id("ingot")) + public static final TagPrefix ingot = REGISTRATE.tagPrefix("ingot") .defaultTagPath("ingots/%s") .unformattedTagPath("ingots") .materialAmount(GTValues.M) @@ -271,7 +261,7 @@ public boolean isEmpty() { .generationCondition(hasIngotProperty); // A regular Gem worth one Dust. - public static final TagPrefix gem = new TagPrefix(GTCEu.id("gem")) + public static final TagPrefix gem = REGISTRATE.tagPrefix("gem") .defaultTagPath("gems/%s") .unformattedTagPath("gems") .langValue("%s") @@ -283,7 +273,7 @@ public boolean isEmpty() { .generationCondition(hasGemProperty); // A regular Gem worth one small Dust. - public static final TagPrefix gemChipped = new TagPrefix(GTCEu.id("chippedGem")) + public static final TagPrefix gemChipped = REGISTRATE.tagPrefix("chipped_gem") .idPattern("chipped_%s_gem") .defaultTagPath("chipped_gems/%s") .unformattedTagPath("chipped_gems") @@ -296,7 +286,7 @@ public boolean isEmpty() { .generationCondition(hasGemProperty.and(unused -> ConfigHolder.INSTANCE.recipes.generateLowQualityGems)); // A regular Gem worth two small Dusts. - public static final TagPrefix gemFlawed = new TagPrefix(GTCEu.id("flawedGem")) + public static final TagPrefix gemFlawed = REGISTRATE.tagPrefix("flawed_gem") .idPattern("flawed_%s_gem") .defaultTagPath("flawed_gems/%s") .unformattedTagPath("flawed_gems") @@ -309,7 +299,7 @@ public boolean isEmpty() { .generationCondition(hasGemProperty.and(unused -> ConfigHolder.INSTANCE.recipes.generateLowQualityGems)); // A regular Gem worth two Dusts. - public static final TagPrefix gemFlawless = new TagPrefix(GTCEu.id("flawlessGem")) + public static final TagPrefix gemFlawless = REGISTRATE.tagPrefix("flawless_gem") .idPattern("flawless_%s_gem") .defaultTagPath("flawless_gems/%s") .unformattedTagPath("flawless_gems") @@ -323,7 +313,7 @@ public boolean isEmpty() { .generationCondition(hasGemProperty); // A regular Gem worth four Dusts. - public static final TagPrefix gemExquisite = new TagPrefix(GTCEu.id("exquisiteGem")) + public static final TagPrefix gemExquisite = REGISTRATE.tagPrefix("exquisite_gem") .idPattern("exquisite_%s_gem") .defaultTagPath("exquisite_gems/%s") .unformattedTagPath("exquisite_gems") @@ -337,7 +327,7 @@ public boolean isEmpty() { .generationCondition(hasGemProperty); // 1/4th of a Dust. - public static final TagPrefix dustSmall = new TagPrefix(GTCEu.id("smallDust")) + public static final TagPrefix dustSmall = REGISTRATE.tagPrefix("small_dust") .idPattern("small_%s_dust") .defaultTagPath("small_dusts/%s") .unformattedTagPath("small_dusts") @@ -349,7 +339,7 @@ public boolean isEmpty() { .generationCondition(hasDustProperty); // 1/9th of a Dust. - public static final TagPrefix dustTiny = new TagPrefix(GTCEu.id("tinyDust")) + public static final TagPrefix dustTiny = REGISTRATE.tagPrefix("tiny_dust") .idPattern("tiny_%s_dust") .defaultTagPath("tiny_dusts/%s") .unformattedTagPath("tiny_dusts") @@ -361,7 +351,7 @@ public boolean isEmpty() { .generationCondition(hasDustProperty); // Dust with impurities. 1 Unit of Main Material and 1/9 - 1/4 Unit of secondary Material - public static final TagPrefix dustImpure = new TagPrefix(GTCEu.id("impureDust")) + public static final TagPrefix dustImpure = REGISTRATE.tagPrefix("impure_dust") .idPattern("impure_%s_dust") .defaultTagPath("impure_dusts/%s") .unformattedTagPath("impure_dusts") @@ -374,7 +364,7 @@ public boolean isEmpty() { .tooltip((mat, tooltips) -> tooltips.add(Component.translatable("metaitem.dust.tooltip.purify"))); // Pure Dust worth of one Ingot or Gem. - public static final TagPrefix dustPure = new TagPrefix(GTCEu.id("pureDust")) + public static final TagPrefix dustPure = REGISTRATE.tagPrefix("pure_dust") .idPattern("pure_%s_dust") .defaultTagPath("pure_dusts/%s") .unformattedTagPath("pure_dusts") @@ -386,7 +376,7 @@ public boolean isEmpty() { .generationCondition(hasOreProperty) .tooltip((mat, tooltips) -> tooltips.add(Component.translatable("metaitem.dust.tooltip.purify"))); - public static final TagPrefix dust = new TagPrefix(GTCEu.id("dust")) + public static final TagPrefix dust = REGISTRATE.tagPrefix("dust") .defaultTagPath("dusts/%s") .unformattedTagPath("dusts") .materialAmount(GTValues.M) @@ -397,7 +387,7 @@ public boolean isEmpty() { .generationCondition(hasDustProperty); // A Nugget. - public static final TagPrefix nugget = new TagPrefix(GTCEu.id("nugget")) + public static final TagPrefix nugget = REGISTRATE.tagPrefix("nugget") .defaultTagPath("nuggets/%s") .unformattedTagPath("nuggets") .materialAmount(GTValues.M / 9) @@ -408,7 +398,7 @@ public boolean isEmpty() { .generationCondition(hasIngotProperty); // 9 Plates combined in one Item. - public static final TagPrefix plateDense = new TagPrefix(GTCEu.id("densePlate")) + public static final TagPrefix plateDense = REGISTRATE.tagPrefix("dense_plate") .idPattern("dense_%s_plate") .defaultTagPath("dense_plates/%s") .unformattedTagPath("dense_plates") @@ -422,7 +412,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_DENSE)); // 2 Plates combined in one Item - public static final TagPrefix plateDouble = new TagPrefix(GTCEu.id("doublePlate")) + public static final TagPrefix plateDouble = REGISTRATE.tagPrefix("double_plate") .idPattern("double_%s_plate") .defaultTagPath("double_plates/%s") .unformattedTagPath("double_plates") @@ -437,7 +427,7 @@ public boolean isEmpty() { .and(mat -> mat.hasFlag(MaterialFlags.GENERATE_PLATE) && !mat.hasFlag(MaterialFlags.NO_SMASHING))); // Regular Plate made of one Ingot/Dust. - public static final TagPrefix plate = new TagPrefix(GTCEu.id("plate")) + public static final TagPrefix plate = REGISTRATE.tagPrefix("plate") .defaultTagPath("plates/%s") .unformattedTagPath("plates") .materialAmount(GTValues.M) @@ -448,7 +438,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_PLATE)); // Round made of 1 Nugget - public static final TagPrefix round = new TagPrefix(GTCEu.id("round")) + public static final TagPrefix round = REGISTRATE.tagPrefix("round") .defaultTagPath("rounds/%s") .unformattedTagPath("rounds") .materialAmount(GTValues.M / 9) @@ -459,7 +449,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_ROUND)); // Foil made of 1/4 Ingot/Dust. - public static final TagPrefix foil = new TagPrefix(GTCEu.id("foil")) + public static final TagPrefix foil = REGISTRATE.tagPrefix("foil") .defaultTagPath("foils/%s") .unformattedTagPath("foils") .materialAmount(GTValues.M / 4) @@ -470,7 +460,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_FOIL)); // Stick made of an Ingot. - public static final TagPrefix rodLong = new TagPrefix(GTCEu.id("longRod")) + public static final TagPrefix rodLong = REGISTRATE.tagPrefix("long_rod") .idPattern("long_%s_rod") .defaultTagPath("rods/long/%s") .unformattedTagPath("rods/long") @@ -483,7 +473,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_LONG_ROD)); // Stick made of half an Ingot. - public static final TagPrefix rod = new TagPrefix(GTCEu.id("rod")) + public static final TagPrefix rod = REGISTRATE.tagPrefix("rod") .defaultTagPath("rods/%s") .unformattedTagPath("rods") .langValue("%s Rod") @@ -495,7 +485,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_ROD)); // consisting out of 1/8 Ingot or 1/4 Stick. - public static final TagPrefix bolt = new TagPrefix(GTCEu.id("bolt")) + public static final TagPrefix bolt = REGISTRATE.tagPrefix("bolt") .defaultTagPath("bolts/%s") .unformattedTagPath("bolts") .materialAmount(GTValues.M / 8) @@ -506,7 +496,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_BOLT_SCREW)); // consisting out of 1/9 Ingot. - public static final TagPrefix screw = new TagPrefix(GTCEu.id("screw")) + public static final TagPrefix screw = REGISTRATE.tagPrefix("screw") .defaultTagPath("screws/%s") .unformattedTagPath("screws") .materialAmount(GTValues.M / 9) @@ -517,7 +507,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_BOLT_SCREW)); // consisting out of 1/2 Stick. - public static final TagPrefix ring = new TagPrefix(GTCEu.id("ring")) + public static final TagPrefix ring = REGISTRATE.tagPrefix("ring") .defaultTagPath("rings/%s") .unformattedTagPath("rings") .materialAmount(GTValues.M / 4) @@ -528,7 +518,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_RING)); // consisting out of 1 Fine Wire. - public static final TagPrefix springSmall = new TagPrefix(GTCEu.id("smallSpring")) + public static final TagPrefix springSmall = REGISTRATE.tagPrefix("small_spring") .idPattern("small_%s_spring") .defaultTagPath("small_springs/%s") .unformattedTagPath("small_springs") @@ -542,7 +532,7 @@ public boolean isEmpty() { mat -> mat.hasFlag(MaterialFlags.GENERATE_SPRING_SMALL) && !mat.hasFlag(MaterialFlags.NO_SMASHING)); // consisting out of 2 Sticks. - public static final TagPrefix spring = new TagPrefix(GTCEu.id("spring")) + public static final TagPrefix spring = REGISTRATE.tagPrefix("spring") .defaultTagPath("springs/%s") .unformattedTagPath("springs") .materialAmount(GTValues.M) @@ -554,7 +544,7 @@ public boolean isEmpty() { mat -> mat.hasFlag(MaterialFlags.GENERATE_SPRING) && !mat.hasFlag(MaterialFlags.NO_SMASHING)); // consisting out of 1/8 Ingot or 1/4 Wire. - public static final TagPrefix wireFine = new TagPrefix(GTCEu.id("fineWire")) + public static final TagPrefix wireFine = REGISTRATE.tagPrefix("fine_wire") .idPattern("fine_%s_wire") .defaultTagPath("fine_wires/%s") .unformattedTagPath("fine_wires") @@ -567,7 +557,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_FINE_WIRE)); // consisting out of 4 Plates, 1 Ring and 1 Screw. - public static final TagPrefix rotor = new TagPrefix(GTCEu.id("rotor")) + public static final TagPrefix rotor = REGISTRATE.tagPrefix("rotor") .defaultTagPath("rotors/%s") .unformattedTagPath("rotors") .materialAmount(GTValues.M * 4) @@ -579,7 +569,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_ROTOR)); // Consisting of 1 Plate. - public static final TagPrefix gearSmall = new TagPrefix(GTCEu.id("smallGear")) + public static final TagPrefix gearSmall = REGISTRATE.tagPrefix("small_gear") .idPattern("small_%s_gear") .defaultTagPath("small_gears/%s") .unformattedTagPath("small_gears") @@ -592,7 +582,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_SMALL_GEAR)); // Consisting of 4 Plates. - public static final TagPrefix gear = new TagPrefix(GTCEu.id("gear")) + public static final TagPrefix gear = REGISTRATE.tagPrefix("gear") .defaultTagPath("gears/%s") .unformattedTagPath("gears") .materialAmount(GTValues.M * 4) @@ -604,7 +594,7 @@ public boolean isEmpty() { .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_GEAR)); // 3/4 of a Plate or Gem used to shape a Lens. Normally only used on Transparent Materials. - public static final TagPrefix lens = new TagPrefix(GTCEu.id("lens")) + public static final TagPrefix lens = REGISTRATE.tagPrefix("lens") .defaultTagPath("lenses/%s") .unformattedTagPath("lenses") .materialAmount((GTValues.M * 3) / 4) @@ -614,13 +604,13 @@ public boolean isEmpty() { .generateItem(true) .generationCondition(mat -> mat.hasFlag(MaterialFlags.GENERATE_LENS)); - public static final TagPrefix dye = new TagPrefix(GTCEu.id("dye")) + public static final TagPrefix dye = REGISTRATE.tagPrefix("dye") .defaultTagPath("dyes/%s") .unformattedTagPath("dyes") .materialAmount(-1); // made of 4 Ingots. - public static final TagPrefix toolHeadBuzzSaw = new TagPrefix(GTCEu.id("buzzSawBlade")) + public static final TagPrefix toolHeadBuzzSaw = REGISTRATE.tagPrefix("buzz_saw_blade") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Buzzsaw Blade") .materialAmount(GTValues.M * 4) @@ -633,7 +623,7 @@ public boolean isEmpty() { .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.BUZZSAW_LV))); // made of 1 Ingots. - public static final TagPrefix toolHeadScrewdriver = new TagPrefix(GTCEu.id("screwdriverTip")) + public static final TagPrefix toolHeadScrewdriver = REGISTRATE.tagPrefix("screwdriver_tip") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Screwdriver Tip") .materialAmount(GTValues.M) @@ -646,7 +636,7 @@ public boolean isEmpty() { .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.SCREWDRIVER_LV))); // made of 4 Ingots. - public static final TagPrefix toolHeadDrill = new TagPrefix(GTCEu.id("drillHead")) + public static final TagPrefix toolHeadDrill = REGISTRATE.tagPrefix("drill_head") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Drill Head") .materialAmount(GTValues.M * 4) @@ -659,7 +649,7 @@ public boolean isEmpty() { .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.DRILL_LV))); // made of 2 Ingots. - public static final TagPrefix toolHeadChainsaw = new TagPrefix(GTCEu.id("chainsawHead")) + public static final TagPrefix toolHeadChainsaw = REGISTRATE.tagPrefix("chainsaw_head") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Chainsaw Head") .materialAmount(GTValues.M * 2) @@ -672,7 +662,7 @@ public boolean isEmpty() { .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.CHAINSAW_LV))); // made of 4 Ingots. - public static final TagPrefix toolHeadWrench = new TagPrefix(GTCEu.id("wrenchTip")) + public static final TagPrefix toolHeadWrench = REGISTRATE.tagPrefix("wrench_tip") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Wrench Tip") .materialAmount(GTValues.M * 4) @@ -684,7 +674,7 @@ public boolean isEmpty() { .generationCondition(hasNoCraftingToolProperty.and(mat -> mat.hasFlag(MaterialFlags.GENERATE_PLATE)) .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.WRENCH_LV))); - public static final TagPrefix toolHeadWireCutter = new TagPrefix(GTCEu.id("wireCutterHead")) + public static final TagPrefix toolHeadWireCutter = REGISTRATE.tagPrefix("wire_cutter_head") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Wire Cutter Head") .materialAmount(GTValues.M * 4) @@ -697,7 +687,7 @@ public boolean isEmpty() { .and(mat -> mat.getProperty(PropertyKey.TOOL).hasType(GTToolType.WIRE_CUTTER_LV))); // made of 5 Ingots. - public static final TagPrefix turbineBlade = new TagPrefix(GTCEu.id("turbineBlade")) + public static final TagPrefix turbineBlade = REGISTRATE.tagPrefix("turbine_blade") .itemTable(() -> GTMaterialItems.MATERIAL_ITEMS) .langValue("%s Turbine Blade") .materialAmount(GTValues.M * 10) @@ -710,7 +700,7 @@ public boolean isEmpty() { !m.hasProperty(PropertyKey.GEM))); // Storage Block consisting out of 9 Ingots/Gems/Dusts. - public static final TagPrefix block = new TagPrefix(GTCEu.id("block")) + public static final TagPrefix block = REGISTRATE.tagPrefix("block") .defaultTagPath("storage_blocks/%s") .unformattedTagPath("storage_blocks") .langValue("Block of %s") @@ -723,24 +713,24 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix log = new TagPrefix(GTCEu.id("log")) + public static final TagPrefix log = REGISTRATE.tagPrefix("log") .unformattedTagPath("logs", true); - public static final TagPrefix planks = new TagPrefix(GTCEu.id("planks")) + public static final TagPrefix planks = REGISTRATE.tagPrefix("planks") .unformattedTagPath("planks", true); - public static final TagPrefix slab = new TagPrefix(GTCEu.id("slab")) + public static final TagPrefix slab = REGISTRATE.tagPrefix("slab") .unformattedTagPath("slabs", true); - public static final TagPrefix stairs = new TagPrefix(GTCEu.id("stairs")) + public static final TagPrefix stairs = REGISTRATE.tagPrefix("stairs") .unformattedTagPath("stairs", true); - public static final TagPrefix fence = new TagPrefix(GTCEu.id("fence")) + public static final TagPrefix fence = REGISTRATE.tagPrefix("fence") .unformattedTagPath("fences"); - public static final TagPrefix fenceGate = new TagPrefix(GTCEu.id("fenceGate")) + public static final TagPrefix fenceGate = REGISTRATE.tagPrefix("fence_gate") .unformattedTagPath("fence_gates"); - public static final TagPrefix door = new TagPrefix(GTCEu.id("door")) + public static final TagPrefix door = REGISTRATE.tagPrefix("door") .unformattedTagPath("doors", true); // Prefix to determine which kind of Rock this is. // Also has a base tag path of only the material, for things like obsidian etc. - public static final TagPrefix rock = new TagPrefix(GTCEu.id("rock")) + public static final TagPrefix rock = REGISTRATE.tagPrefix("rock") .defaultTagPath("%s") .langValue("%s") .miningToolTag(BlockTags.MINEABLE_WITH_PICKAXE) @@ -748,7 +738,7 @@ public boolean isEmpty() { .generateBlock(true) // generate a block but not really, for TagPrefix#setIgnoredBlock .generationCondition((material) -> false); - public static final TagPrefix frameGt = new TagPrefix(GTCEu.id("frame")) + public static final TagPrefix frameGt = REGISTRATE.tagPrefix("frame") .defaultTagPath("frames/%s") .unformattedTagPath("frames") .langValue("%s Frame") @@ -763,35 +753,35 @@ public boolean isEmpty() { material.hasFlag(MaterialFlags.GENERATE_FRAME)); // Pipes - public static final TagPrefix pipeTinyFluid = new TagPrefix(GTCEu.id("pipeTinyFluid")) + public static final TagPrefix pipeTinyFluid = REGISTRATE.tagPrefix("pipe_tiny_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Tiny %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M / 2) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeSmallFluid = new TagPrefix(GTCEu.id("pipeSmallFluid")) + public static final TagPrefix pipeSmallFluid = REGISTRATE.tagPrefix("pipe_small_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Small %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeNormalFluid = new TagPrefix(GTCEu.id("pipeNormalFluid")) + public static final TagPrefix pipeNormalFluid = REGISTRATE.tagPrefix("pipe_normal_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Normal %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M * 3) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeLargeFluid = new TagPrefix(GTCEu.id("pipeLargeFluid")) + public static final TagPrefix pipeLargeFluid = REGISTRATE.tagPrefix("pipe_large_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Large %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M * 6) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeHugeFluid = new TagPrefix(GTCEu.id("pipeHugeFluid")) + public static final TagPrefix pipeHugeFluid = REGISTRATE.tagPrefix("pipe_huge_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Huge %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) @@ -799,14 +789,14 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeQuadrupleFluid = new TagPrefix(GTCEu.id("pipeQuadrupleFluid")) + public static final TagPrefix pipeQuadrupleFluid = REGISTRATE.tagPrefix("pipe_quadruple_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Quadruple %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M * 4) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeNonupleFluid = new TagPrefix(GTCEu.id("pipeNonupleFluid")) + public static final TagPrefix pipeNonupleFluid = REGISTRATE.tagPrefix("pipe_nonuple_fluid") .itemTable(() -> GTMaterialBlocks.FLUID_PIPE_BLOCKS) .langValue("Nonuple %s Fluid Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) @@ -814,28 +804,28 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeSmallItem = new TagPrefix(GTCEu.id("pipeSmallItem")) + public static final TagPrefix pipeSmallItem = REGISTRATE.tagPrefix("pipe_small_item") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS) .langValue("Small %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeNormalItem = new TagPrefix(GTCEu.id("pipeNormalItem")) + public static final TagPrefix pipeNormalItem = REGISTRATE.tagPrefix("pipe_normal_item") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS) .langValue("Normal %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M * 3) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeLargeItem = new TagPrefix(GTCEu.id("pipeLargeItem")) + public static final TagPrefix pipeLargeItem = REGISTRATE.tagPrefix("pipe_large_item") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS) .langValue("Large %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M * 6) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeHugeItem = new TagPrefix(GTCEu.id("pipeHugeItem")) + public static final TagPrefix pipeHugeItem = REGISTRATE.tagPrefix("pipe_huge_item") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS) .langValue("Huge %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) @@ -843,31 +833,31 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeSmallRestrictive = new TagPrefix(GTCEu.id("pipeSmallRestrictive")) + public static final TagPrefix pipeSmallRestrictive = REGISTRATE.tagPrefix("pipe_small_restrictive") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS) .langValue("Small Restrictive %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH) .materialAmount(GTValues.M) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeNormalRestrictive = new TagPrefix(GTCEu.id("pipeNormalRestrictive")) + public static final TagPrefix pipeNormalRestrictive = REGISTRATE.tagPrefix("pipe_normal_restrictive") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS).langValue("Normal Restrictive %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH).materialAmount(GTValues.M * 3) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeLargeRestrictive = new TagPrefix(GTCEu.id("pipeLargeRestrictive")) + public static final TagPrefix pipeLargeRestrictive = REGISTRATE.tagPrefix("pipe_large_restrictive") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS).langValue("Large Restrictive %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH).materialAmount(GTValues.M * 6) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix pipeHugeRestrictive = new TagPrefix(GTCEu.id("pipeHugeRestrictive")) + public static final TagPrefix pipeHugeRestrictive = REGISTRATE.tagPrefix("pipe_huge_restrictive") .itemTable(() -> GTMaterialBlocks.ITEM_PIPE_BLOCKS).langValue("Huge Restrictive %s Item Pipe") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WRENCH).materialAmount(GTValues.M * 12) .unificationEnabled(true) .enableRecycling(); // Wires and cables - public static final TagPrefix wireGtHex = new TagPrefix(GTCEu.id("wireGtHex")) + public static final TagPrefix wireGtHex = REGISTRATE.tagPrefix("wire_gt_hex") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("16x %s Wire") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -875,7 +865,7 @@ public boolean isEmpty() { .materialIconType(MaterialIconType.wire) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix wireGtOctal = new TagPrefix(GTCEu.id("wireGtOctal")) + public static final TagPrefix wireGtOctal = REGISTRATE.tagPrefix("wire_gt_octal") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("8x %s Wire") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -883,7 +873,7 @@ public boolean isEmpty() { .materialIconType(MaterialIconType.wire) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix wireGtQuadruple = new TagPrefix(GTCEu.id("wireGtQuadruple")) + public static final TagPrefix wireGtQuadruple = REGISTRATE.tagPrefix("wire_gt_quadruple") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("4x %s Wire") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -891,7 +881,7 @@ public boolean isEmpty() { .materialIconType(MaterialIconType.wire) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix wireGtDouble = new TagPrefix(GTCEu.id("wireGtDouble")) + public static final TagPrefix wireGtDouble = REGISTRATE.tagPrefix("wire_gt_double") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("2x %s Wire") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -899,7 +889,7 @@ public boolean isEmpty() { .materialIconType(MaterialIconType.wire) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix wireGtSingle = new TagPrefix(GTCEu.id("wireGtSingle")) + public static final TagPrefix wireGtSingle = REGISTRATE.tagPrefix("wire_gt_single") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("1x %s Wire") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -908,34 +898,34 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix cableGtHex = new TagPrefix(GTCEu.id("cableGtHex")) + public static final TagPrefix cableGtHex = REGISTRATE.tagPrefix("cable_gt_hex") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("16x %s Cable") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .materialAmount(GTValues.M * 8) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix cableGtOctal = new TagPrefix(GTCEu.id("cableGtOctal")) + public static final TagPrefix cableGtOctal = REGISTRATE.tagPrefix("cable_gt_octal") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("8x %s Cable") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .materialAmount(GTValues.M * 4) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix cableGtQuadruple = new TagPrefix(GTCEu.id("cableGtQuadruple")) + public static final TagPrefix cableGtQuadruple = REGISTRATE.tagPrefix("cable_gt_quadruple") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS).langValue("4x %s Cable") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .materialAmount(GTValues.M * 2) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix cableGtDouble = new TagPrefix(GTCEu.id("cableGtDouble")) + public static final TagPrefix cableGtDouble = REGISTRATE.tagPrefix("cable_gt_double") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("2x %s Cable") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) .materialAmount(GTValues.M) .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix cableGtSingle = new TagPrefix(GTCEu.id("cableGtSingle")) + public static final TagPrefix cableGtSingle = REGISTRATE.tagPrefix("cable_gt_single") .itemTable(() -> GTMaterialBlocks.CABLE_BLOCKS) .langValue("1x %s Cable") .miningToolTag(CustomTags.MINEABLE_WITH_CONFIG_VALID_PICKAXE_WIRE_CUTTER) @@ -943,7 +933,7 @@ public boolean isEmpty() { .unificationEnabled(true) .enableRecycling(); - public static final TagPrefix surfaceRock = new TagPrefix(GTCEu.id("surfaceRock")) + public static final TagPrefix surfaceRock = REGISTRATE.tagPrefix("surface_rock") .langValue("%s Surface Rock") .defaultTagPath("surface_rocks/%s") .unformattedTagPath("surface_rocks") @@ -972,8 +962,6 @@ public record BlockProperties(Supplier> renderType, @Getter public final ResourceLocation id; - @Getter - public final String name; @Getter @Setter private String idPattern; @@ -1030,7 +1018,7 @@ public record BlockProperties(Supplier> renderType, @Setter private BiConsumer> tooltip; - private final Map>> ignoredMaterials = new HashMap<>(); + private final Map>> ignoredMaterials = new HashMap<>(); private final Object2FloatMap materialAmounts = new Object2FloatOpenHashMap<>(); @Getter @@ -1043,49 +1031,19 @@ public record BlockProperties(Supplier> renderType, @Getter protected final Set> miningToolTag = new HashSet<>(); - /** - * @deprecated Use {@link TagPrefix#TagPrefix(ResourceLocation)} - */ - @Deprecated(since = "8.0.0") - public TagPrefix(String name) { - this(name, false); - } - - /** - * @deprecated Use {@link TagPrefix#TagPrefix(ResourceLocation, boolean)} - */ - @Deprecated(since = "8.0.0") - public TagPrefix(String name, boolean invertedName) { - this(GTCEu.id(name), invertedName); - } - public TagPrefix(ResourceLocation id) { this(id, false); } public TagPrefix(ResourceLocation id, boolean invertedName) { this.id = id; - this.name = id.getPath(); - this.idPattern = "%s_" + getLowerCaseName(); + this.idPattern = "%s_" + id.getPath(); this.invertedName = invertedName; - this.langValue = "%s " + FormattingUtil.toEnglishName(getLowerCaseName()); - GTRegistries.register(GTRegistries.TAG_PREFIXES, id, this); + this.langValue = "%s " + FormattingUtil.toEnglishName(id.getPath()); } - public static TagPrefix oreTagPrefix(String name, TagKey miningToolTag) { - return oreTagPrefix(GTCEu.id(name), miningToolTag); - } - - public static TagPrefix oreTagPrefix(ResourceLocation id, TagKey miningToolTag) { - return new TagPrefix(id) - .defaultTagPath("ores/%s") - .prefixOnlyTagPath("ores_in_ground/%s") - .unformattedTagPath("ores") - .materialIconType(MaterialIconType.ore) - .miningToolTag(miningToolTag) - .unificationEnabled(true) - .blockConstructor(OreBlock::new) - .generationCondition(hasOreProperty); + public String getName() { + return id.getPath(); } public void addSecondaryMaterial(MaterialStack secondaryMaterial) { @@ -1182,32 +1140,15 @@ public long getMaterialAmount(@NotNull Material material) { return (long) (GTValues.M * materialAmounts.getFloat(material)); } - /** - * @deprecated Use {@code GTRegistries.TAG_PREFIXES.get(name)} - */ - @Deprecated(since = "8.0.0") - public static TagPrefix getPrefix(String prefixName) { - return getPrefix(prefixName, null); - } - - /** - * @deprecated Use {@code GTRegistries.TAG_PREFIXES.getOrDefault(prefixName, replacement)} - */ - @Deprecated(since = "8.0.0") - public static TagPrefix getPrefix(String prefixName, @Nullable TagPrefix replacement) { - return GTRegistries.TAG_PREFIXES.getOptional(GTCEu.id(prefixName)).orElse(replacement); - } - - @Unmodifiable - public List> getItemParentTags() { + public @Unmodifiable List> getItemParentTags() { return tags.stream() .filter(TagType::isParentTag) .map(type -> type.getTag(this, GTMaterials.NULL)) + .filter(Objects::nonNull) .toList(); } - @Unmodifiable - public List> getItemTags(@NotNull Material mat) { + public @Unmodifiable List> getItemTags(@NotNull Material mat) { return tags.stream() .filter(type -> !type.isParentTag()) .map(type -> type.getTag(this, mat)) @@ -1215,27 +1156,25 @@ public List> getItemTags(@NotNull Material mat) { .toList(); } - @Unmodifiable - public List> getAllItemTags(@NotNull Material mat) { + public @Unmodifiable List> getAllItemTags(@NotNull Material mat) { return tags.stream() .map(type -> type.getTag(this, mat)) .filter(Objects::nonNull) .toList(); } - @Unmodifiable - public List> getBlockTags(@NotNull Material mat) { + public @Unmodifiable List> getBlockTags(@NotNull Material mat) { return tags.stream() .filter(type -> !type.isParentTag()) .map(type -> type.getTag(this, mat)) + .filter(Objects::nonNull) .map(itemTagKey -> TagKey.create(Registries.BLOCK, itemTagKey.location())) .toList(); } - @Unmodifiable - public List> getAllBlockTags(@NotNull Material mat) { - return tags.stream() - .map(type -> type.getTag(this, mat)) + public @Unmodifiable List> getAllBlockTags(@NotNull Material mat) { + return tags.stream().map(type -> type.getTag(this, mat)) + .filter(Objects::nonNull) .map(itemTagKey -> TagKey.create(Registries.BLOCK, itemTagKey.location())) .toList(); } @@ -1279,12 +1218,8 @@ public MaterialIconType getMaterialIconType(Material material) { return materialIconType; } - public String getLowerCaseName() { - return FormattingUtil.toLowerCaseUnderscore(this.name); - } - public String getUnlocalizedName() { - return "tagprefix." + getLowerCaseName(); + return "tagprefix." + getName(); } public MutableComponent getLocalizedName(Material material) { @@ -1298,7 +1233,7 @@ public String getUnlocalizedName(Material material) { return matSpecificKey; } if (material.hasProperty(PropertyKey.POLYMER)) { - String localizationKey = String.format("tagprefix.polymer.%s", getLowerCaseName()); + String localizationKey = String.format("tagprefix.polymer.%s", getName()); // Not every polymer tag prefix gets a special name if (Language.getInstance().has(localizationKey)) { return localizationKey; @@ -1317,8 +1252,8 @@ public final void setIgnored(Material material, Supplier... setIgnored(material, Arrays.asList(items)); } - public void setIgnored(Material material, Collection> items) { - ignoredMaterials.computeIfAbsent(material, m -> new HashSet<>()).addAll(items); + public final void setIgnored(Material material, Collection> items) { + ignoredMaterials.put(material, items); if (!items.isEmpty()) { ItemMaterialData.registerMaterialEntries(items, this, material); } @@ -1326,31 +1261,31 @@ public void setIgnored(Material material, Collection> collection = new ArrayList<>(items.length); if (this.doGenerateBlock()) { - this.setIgnoredBlock(material, Arrays.stream(items) - .filter(Block.class::isInstance) - .map(Block.class::cast) - .toArray(Block[]::new)); - // also add possible item-only entries - this.setIgnored(material, Arrays.stream(items) - .filter(item -> !(item instanceof Block)) - .map(item -> (Supplier) () -> item) - .collect(Collectors.toSet())); + for (var item : items) { + if (item instanceof Block b) { + collection.add(GTMemoizer.memoizeBlockSupplier(() -> b)); + } + } } else { - this.setIgnored(material, Arrays.stream(items) - .map(item -> (Supplier) () -> item) - .collect(Collectors.toSet())); + for (var item : items) { + collection.add(() -> item); + } } + setIgnored(material, collection); } public void setIgnoredBlock(Material material, Block... blocks) { - this.setIgnored(material, Arrays.stream(blocks) - .map(block -> GTMemoizer.memoizeBlockSupplier(() -> block)) - .collect(Collectors.toSet())); + Collection> collection = new ArrayList<>(blocks.length); + for (var block : blocks) { + collection.add(GTMemoizer.memoizeBlockSupplier(() -> block)); + } + setIgnored(material, collection); } public void setIgnored(Material material) { - ignoredMaterials.computeIfAbsent(material, m -> new HashSet<>()); + this.ignoredMaterials.put(material, List.of()); } public void removeIgnored(Material material) { @@ -1358,7 +1293,7 @@ public void removeIgnored(Material material) { } public @Unmodifiable Map>> getIgnored() { - return Collections.unmodifiableMap(ignoredMaterials); + return Map.copyOf(ignoredMaterials); } public boolean isAmountModified(Material material) { @@ -1374,25 +1309,17 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TagPrefix tagPrefix = (TagPrefix) o; - return name.equals(tagPrefix.name); + return id.equals(tagPrefix.id); } @Override public int hashCode() { - return name.hashCode(); - } - - /** - * @deprecated Use {@code GTRegistries.TAG_PREFIXES.values()} - */ - @Deprecated(since = "8.0.0") - public static Collection values() { - return GTRegistries.TAG_PREFIXES.stream().toList(); + return id.hashCode(); } @Override public String toString() { - return name; + return id.toString(); } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java index 8e066038a58..6e671636d60 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagType.java @@ -47,7 +47,7 @@ public static TagType withDefaultFormatter(String tagPath, boolean isVanilla) { public static TagType withPrefixFormatter(String tagPath) { TagType type = new TagType(tagPath); type.formatter = Util.memoize((prefix, mat) -> TagUtil.createItemTag( - type.tagPath.formatted(prefix.getLowerCaseName(), mat.getName()))); + type.tagPath.formatted(prefix.getName(), mat.getName()))); return type; } @@ -58,7 +58,7 @@ public static TagType withPrefixFormatter(String tagPath) { public static TagType withPrefixOnlyFormatter(String tagPath) { TagType type = new TagType(tagPath); type.formatter = Util.memoize((prefix, mat) -> TagUtil - .createItemTag(type.tagPath.formatted(prefix.getLowerCaseName()))); + .createItemTag(type.tagPath.formatted(prefix.getName()))); type.isParentTag = true; return type; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/SimpleWorldGenLayer.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/SimpleWorldGenLayer.java index a027b9ad61a..de258a9856a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/SimpleWorldGenLayer.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/SimpleWorldGenLayer.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.api.data.worldgen; -import com.gregtechceu.gtceu.api.registry.GTRegistries; - import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; @@ -25,8 +23,6 @@ public SimpleWorldGenLayer(ResourceLocation id, IWorldGenLayer.RuleTestSupplier this.id = id; this.target = target; this.levels = levels; - - GTRegistries.register(GTRegistries.WORLD_GEN_LAYERS, id, this); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index 5e03c1ac474..b5112916c29 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -18,6 +18,10 @@ public class WorldGenLayers { public static void init(IEventBus modBus) { WORLD_GEN_LAYERS.register(modBus); + WORLD_GEN_LAYERS.register("stone", () -> STONE); + WORLD_GEN_LAYERS.register("deepslate", () -> DEEPSLATE); + WORLD_GEN_LAYERS.register("netherrack", () -> NETHERRACK); + WORLD_GEN_LAYERS.register("endstone", () -> ENDSTONE); } public static final SimpleWorldGenLayer STONE = new SimpleWorldGenLayer( diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java index b7c7382b2b0..b4871552799 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java @@ -2,14 +2,15 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.worldgen.BiomeWeightModifier; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.util.RandomSource; import net.minecraft.world.level.levelgen.placement.PlacementContext; import net.minecraft.world.level.levelgen.placement.PlacementModifier; import net.minecraft.world.level.levelgen.placement.PlacementModifierType; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; import com.mojang.serialization.MapCodec; @@ -18,8 +19,7 @@ public class BiomePlacement extends PlacementModifier { - public static final PlacementModifierType BIOME_PLACEMENT = GTRegistries.register( - BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, GTCEu.id("biome_placement"), () -> BiomePlacement.CODEC); + public static final PlacementModifierType BIOME_PLACEMENT = () -> BiomePlacement.CODEC; public static final MapCodec CODEC = BiomeWeightModifier.CODEC.listOf().fieldOf("modifiers") .xmap(BiomePlacement::new, placement -> placement.modifiers); @@ -43,6 +43,12 @@ public Stream getPositions(PlacementContext context, RandomSource rand return positions; } + public static void init(IEventBus modBus) { + var register = DeferredRegister.create(Registries.PLACEMENT_MODIFIER_TYPE, GTCEu.MOD_ID); + register.register(modBus); + register.register("biome_placement", () -> BIOME_PLACEMENT); + } + @Override public PlacementModifierType type() { return BIOME_PLACEMENT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/DimensionFilter.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/DimensionFilter.java index d524eb10cc1..eb1aceab63a 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/DimensionFilter.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/DimensionFilter.java @@ -1,12 +1,8 @@ package com.gregtechceu.gtceu.api.data.worldgen.modifier; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; - import net.minecraft.core.BlockPos; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.util.RandomSource; import net.minecraft.world.level.dimension.DimensionType; @@ -19,8 +15,7 @@ public class DimensionFilter extends PlacementFilter { - public static final PlacementModifierType DIMENSION_FILTER = GTRegistries - .register(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, GTCEu.id("dimension"), () -> DimensionFilter.CODEC); + public static final PlacementModifierType DIMENSION_FILTER = () -> DimensionFilter.CODEC; public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( RegistryCodecs.homogeneousList(Registries.DIMENSION_TYPE).fieldOf("dimension_id") diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java index b67ee0bec32..294e5575495 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/FrequencyModifier.java @@ -1,10 +1,6 @@ package com.gregtechceu.gtceu.api.data.worldgen.modifier; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; - import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.ExtraCodecs; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; @@ -18,8 +14,7 @@ public class FrequencyModifier extends PlacementModifier { - public static final PlacementModifierType FREQUENCY_MODIFIER = GTRegistries - .register(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, GTCEu.id("frequency"), () -> FrequencyModifier.CODEC); + public static final PlacementModifierType FREQUENCY_MODIFIER = () -> FrequencyModifier.CODEC; public static final MapCodec CODEC = ExtraCodecs.POSITIVE_FLOAT.fieldOf("chance") .xmap(FrequencyModifier::new, (modifier) -> modifier.frequency); diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/GTPlacementModifiers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/GTPlacementModifiers.java new file mode 100644 index 00000000000..4c8a9a45343 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/GTPlacementModifiers.java @@ -0,0 +1,30 @@ +package com.gregtechceu.gtceu.api.data.worldgen.modifier; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.common.worldgen.modifier.RubberTreeChancePlacement; + +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import net.minecraft.world.level.levelgen.placement.PlacementModifierType; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; + +public class GTPlacementModifiers { + + public static final DeferredRegister> PLACEMENT_MODIFIER = DeferredRegister + .create(Registries.PLACEMENT_MODIFIER_TYPE, GTCEu.MOD_ID); + + public static PlacementModifierType register(String name, + PlacementModifierType value) { + PLACEMENT_MODIFIER.register(name, () -> (PlacementModifierType) value); + return value; + } + + public static void init(IEventBus modBus) { + PLACEMENT_MODIFIER.register(modBus); + register("frequency", () -> FrequencyModifier.CODEC); + register("dimension", () -> DimensionFilter.CODEC); + register("biome_placement", () -> BiomePlacement.CODEC); + register("rubber_tree_chance", () -> RubberTreeChancePlacement.CODEC); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java index ccd1fadee73..a5ea8948471 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -23,6 +23,7 @@ import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTToolBehaviors; import com.gregtechceu.gtceu.common.data.item.GTDataComponents; +import com.gregtechceu.gtceu.common.item.tool.behavior.TreeFellingBehavior; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import com.gregtechceu.gtceu.utils.FormattingUtil; @@ -283,7 +284,7 @@ default int getTotalHarvestLevel() { return; } if (!areaOfEffectBlockBreakRoutine(stack, serverPlayer, pos)) { - var behavior = getBehaviorsComponent(stack).getBehavior(GTToolBehaviors.TREE_FELLING); + TreeFellingBehavior behavior = getBehaviorsComponent(stack).getBehavior(GTToolBehaviors.TREE_FELLING); if (behavior != null && behavior.isEnabled() && state.is(BlockTags.LOGS)) { TreeFellingHelper.fellTree(stack, player.level(), state, pos, player); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/component/prospector/ProspectorMode.java b/src/main/java/com/gregtechceu/gtceu/api/item/component/prospector/ProspectorMode.java index 86ed2011706..e8aa10e7073 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/component/prospector/ProspectorMode.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/component/prospector/ProspectorMode.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.item.component.prospector; +import com.gregtechceu.gtceu.GTCEu; 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; @@ -335,7 +336,7 @@ public int getItemColor(BedrockOreInfo item) { public IDrawable getItemIcon(BedrockOreInfo item) { Material material = item.material; ItemStack stack = GTUtil.getFirstNonEmpty( - ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), material), + ChemicalHelper.get(GTRegistries.TAG_PREFIXES.get(ResourceLocation.parse(GTCEu.appendIdString(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix))), material), ChemicalHelper.get(TagPrefix.crushed, material), ChemicalHelper.get(TagPrefix.gem, material), ChemicalHelper.get(TagPrefix.ore, material), diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java b/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java index bd488728923..932b9697e83 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/datacomponents/ToolBehaviors.java @@ -5,6 +5,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.codec.StreamCodecUtils; +import net.minecraft.core.Holder; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -45,10 +46,18 @@ public boolean hasBehavior(ToolBehaviorType type) { return behaviors.containsKey(type); } + public boolean hasBehavior(Holder> holder) { + return hasBehavior(holder.value()); + } + public > @Nullable T getBehavior(ToolBehaviorType type) { return (T) this.behaviors.get(type); } + public > @Nullable T getBehavior(Holder> holder) { + return (T) getBehavior(holder.value()); + } + public ToolBehaviors withBehavior(IToolBehavior behavior) { Map, IToolBehavior> behaviors = new HashMap<>(this.behaviors); behaviors.put(behavior.getType(), behavior); diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java index 44c9d99d015..49b3a511d77 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.api.multiblock.error; import com.gregtechceu.gtceu.api.registry.GTRegistries; + import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -8,16 +9,25 @@ @SuppressWarnings("unused") public class GTPatternErrors { - private static final DeferredRegister PATTERN_ERRORS = DeferredRegister.create(GTRegistries.Keys.PATTERN_ERROR_TYPE, "gtceu"); + private static final DeferredRegister PATTERN_ERRORS = DeferredRegister + .create(GTRegistries.Keys.PATTERN_ERROR_TYPE, "gtceu"); - public static DeferredHolder PLACEHOLDER_ERROR = register(PlaceholderError.TYPE); - public static DeferredHolder BLOCK_MATCHING_ERROR = register(BlockMatchingError.TYPE); - public static DeferredHolder PART_ABILITY_ERROR = register(PartAbilityError.TYPE); - public static DeferredHolder COIL_MATCHING_ERROR = register(CoilMatchingError.TYPE); - public static DeferredHolder FILTER_MATCHING_ERROR = register(FilterMatchingError.TYPE); - public static DeferredHolder PATTERN_STRING_ERROR = register(PatternStringError.TYPE); - public static DeferredHolder SINGLE_PREDICATE_ERROR = register(SinglePredicateError.TYPE); - public static DeferredHolder SIMPLE_PATTERN_ERROR = register(SimplePatternError.TYPE); + public static DeferredHolder PLACEHOLDER_ERROR = register( + PlaceholderError.TYPE); + public static DeferredHolder BLOCK_MATCHING_ERROR = register( + BlockMatchingError.TYPE); + public static DeferredHolder PART_ABILITY_ERROR = register( + PartAbilityError.TYPE); + public static DeferredHolder COIL_MATCHING_ERROR = register( + CoilMatchingError.TYPE); + public static DeferredHolder FILTER_MATCHING_ERROR = register( + FilterMatchingError.TYPE); + public static DeferredHolder PATTERN_STRING_ERROR = register( + PatternStringError.TYPE); + public static DeferredHolder SINGLE_PREDICATE_ERROR = register( + SinglePredicateError.TYPE); + public static DeferredHolder SIMPLE_PATTERN_ERROR = register( + SimplePatternError.TYPE); private static DeferredHolder register(PatternError.PatternErrorType patternErrorType) { return PATTERN_ERRORS.register(patternErrorType.id().getPath(), () -> patternErrorType); diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java index f75ebb222f0..48e5be7d8b6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java @@ -65,10 +65,6 @@ private static final class RendererHolder { public static final Map renderers = new HashMap<>(); } - public static void addPlaceholder(Placeholder placeholder) { - GTRegistries.register(GTRegistries.PLACEHOLDERS, placeholder.getId(), placeholder); - } - @OnlyIn(Dist.CLIENT) public static void addRenderer(String id, IPlaceholderRenderer renderer) { RendererHolder.renderers.put(id, renderer); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index db990d0abbb..7fefd514adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -6,12 +6,14 @@ import com.gregtechceu.gtceu.api.recipe.gui.GTRecipeTypeUILayout; import com.gregtechceu.gtceu.api.recipe.lookup.RecipeAdditionHandler; import com.gregtechceu.gtceu.api.recipe.lookup.RecipeDB; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.sound.SoundEntry; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -97,9 +99,13 @@ public class GTRecipeType implements RecipeType { private GTRecipeTypeUILayout uiLayout; public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { + var registrate = GTRegistrate.createIgnoringListenerErrors(registryName.getNamespace()); + registrate.generic(registryName.getPath(), Registries.RECIPE_TYPE, () -> this).build(); + registrate.generic(registryName.getPath(), Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).build(); + this.registryName = registryName; this.group = group; - this.category = GTRecipeCategory.registerDefault(this); + this.category = registrate.recipeCategory(registryName.getPath(), this); recipeBuilder = new GTRecipeBuilder(registryName, this); // must be linked to stop json contents from shuffling Map, List>> map = new Object2ObjectLinkedOpenHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/category/GTRecipeCategory.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/category/GTRecipeCategory.java index 6b5729f827f..a5d5064a775 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/category/GTRecipeCategory.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/category/GTRecipeCategory.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.integration.recipeviewer.CategoryIcon; @@ -51,12 +50,6 @@ public GTRecipeCategory(@NotNull ResourceLocation registryKey, @NotNull GTRecipe this.languageKey = registryKey.toLanguageKey("recipe_category"); } - public static GTRecipeCategory registerDefault(@NotNull GTRecipeType recipeType) { - GTRecipeCategory category = new GTRecipeCategory(recipeType); - GTRegistries.register(GTRegistries.RECIPE_CATEGORIES, category.registryKey, category); - return category; - } - public CategoryIcon getIcon() { if (icon == null) { if (recipeType.getIconSupplier() != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java index 5c2bf29fc55..739880a2f21 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/chance/logic/ChanceLogic.java @@ -8,13 +8,13 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Unmodifiable; @@ -28,10 +28,23 @@ */ public abstract class ChanceLogic { + private static final DeferredRegister CHANCE_LOGIC = DeferredRegister + .create(GTRegistries.Keys.CHANCE_LOGIC, GTCEu.MOD_ID); + + public static void init(IEventBus modBus) { + CHANCE_LOGIC.register(modBus); + + CHANCE_LOGIC.register("or", () -> OR); + CHANCE_LOGIC.register("and", () -> AND); + CHANCE_LOGIC.register("first", () -> FIRST); + CHANCE_LOGIC.register("xor", () -> XOR); + CHANCE_LOGIC.register("none", () -> NONE); + } + /** * Chanced Output Logic where any ingredients succeeding their roll will be produced */ - public static final ChanceLogic OR = new ChanceLogic("or") { + public static final ChanceLogic OR = new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -76,7 +89,7 @@ public String toString() { /** * Chanced Output Logic where all ingredients must succeed their roll in order for any to be produced */ - public static final ChanceLogic AND = new ChanceLogic("and") { + public static final ChanceLogic AND = new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -115,7 +128,7 @@ public String toString() { * Deprecated following the rewrite of XOR */ @Deprecated - public static final ChanceLogic FIRST = new ChanceLogic("first") { + public static final ChanceLogic FIRST = new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -154,7 +167,7 @@ public String toString() { /** * Chanced Output Logic where only one of the ingredients will be output, in a manner weighted to the input chances */ - public static final ChanceLogic XOR = new ChanceLogic("xor") { + public static final ChanceLogic XOR = new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -250,7 +263,7 @@ public String toString() { /** * Chanced Output Logic where nothing is produced */ - public static final ChanceLogic NONE = new ChanceLogic("none") { + public static final ChanceLogic NONE = new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -270,13 +283,7 @@ public String toString() { } }; - public ChanceLogic(ResourceLocation id) { - GTRegistries.register(GTRegistries.CHANCE_LOGICS, id, this); - } - - private ChanceLogic(String id) { - this(GTCEu.id(id)); - } + public ChanceLogic() {} /** * @param entry the entry to get the complete chance for @@ -353,7 +360,4 @@ static void updateCachedChance(Object ingredient, @Nullable Object2IntMap cac @NotNull public abstract Component getTranslation(); - - @ApiStatus.Internal - public static void init() {} } 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 abfbd30606d..2b7141774ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -28,15 +28,8 @@ import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; -import net.neoforged.bus.api.EventPriority; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.registries.IdMappingEvent; -import net.neoforged.neoforge.registries.RegisterEvent; import net.neoforged.neoforge.registries.RegistryBuilder; -import com.google.common.collect.HashBasedTable; -import com.google.common.collect.Table; import org.jetbrains.annotations.UnmodifiableView; import java.util.*; @@ -134,45 +127,10 @@ private static MaterialRegistry makeMaterialRegistry() { return registry; } - private static final Table, ResourceLocation, Object> TO_REGISTER = HashBasedTable.create(); - private static boolean isFrozen = true; - - public static T register(Registry registry, ResourceLocation name, T value) { - if (!isFrozen) { - Registry.register(registry, name, value); - } else { - TO_REGISTER.put(registry, name, value); - } - return value; - } - - // ignore the generics and hope the registered objects are still correctly typed :3 - @SuppressWarnings({ "rawtypes", "unchecked" }) - private static void actuallyRegister(RegisterEvent event) { - for (Registry reg : TO_REGISTER.rowKeySet()) { - event.register(reg.key(), helper -> { - TO_REGISTER.row(reg).forEach(helper::register); - }); - } - TO_REGISTER.clear(); - } - - private static void onUnfreeze(RegisterEvent event) { - isFrozen = false; - } - - private static void onFreeze(IdMappingEvent event) { - isFrozen = event.isFrozen(); - } - - public static void init(IEventBus eventBus) { - eventBus.addListener(EventPriority.HIGHEST, GTRegistries::onUnfreeze); - eventBus.addListener(EventPriority.LOW, GTRegistries::actuallyRegister); - NeoForge.EVENT_BUS.addListener(GTRegistries::onFreeze); - } - @UnmodifiableView public static Collection> getRegistries() { return REGISTRIES.values(); } + + public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index d168010d5c2..5cfbac9ddf5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -711,7 +711,9 @@ public DEFINITION register() { definition.setDefaultPaintingColor(paintingColor); definition.setRenderXEIPreview(renderMultiblockXEIPreview); definition.setRenderWorldPreview(renderMultiblockWorldPreview); - GTRegistries.register(GTRegistries.MACHINES, definition.getId(), definition); + + this.registrate.generic(definition.getId().getPath(), GTRegistries.Keys.MACHINE, () -> definition).register(); + return definition; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java index 39a709fbee2..c925a93a33e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java @@ -7,6 +7,8 @@ import com.gregtechceu.gtceu.api.sound.SoundEntry; import com.gregtechceu.gtceu.api.sound.WrappedSoundEntry; +import net.minecraft.core.MappedRegistry; +import net.minecraft.core.Registry; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; @@ -115,7 +117,8 @@ public SoundEntry build() { SoundEntry entry = wrappedEvents.isEmpty() ? new CustomSoundEntry(id, variants, subtitle, category, attenuationDistance) : new WrappedSoundEntry(id, subtitle, wrappedEvents, category, attenuationDistance); - GTRegistries.register(GTRegistries.SOUNDS, entry.getId(), entry); + ((MappedRegistry) GTRegistries.SOUNDS).unfreeze(); + Registry.register(GTRegistries.SOUNDS, entry.getId(), entry); return entry; } } diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java index 0e11390bfa2..3b8df7f0b02 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/block/OreBlockRenderer.java @@ -71,7 +71,7 @@ public static void reinitModels() { ResourceLocation blockId = BuiltInRegistries.BLOCK.getKey(model.block); ResourceLocation modelId = iconSet.id.withPath(ORE_MODEL_NAME_FORMAT - .formatted(iconSet.getName(), tagPrefix.name, iconType.name())); + .formatted(iconSet.getName(), tagPrefix.getName(), iconType.name())); GTDynamicResourcePack.addBlockState(blockId, BlockModelGenerators.createSimpleBlock(model.block, modelId)); GTDynamicResourcePack.addItemModel(BuiltInRegistries.ITEM.getKey(model.block.asItem()), @@ -90,7 +90,7 @@ protected static void copyOreModelWithBaseStone(TagPrefix tagPrefix, TagPrefix.O original = TEMPLATE_MODEL_CACHE.apply(iconType, iconSet); } catch (RuntimeException e) { GTCEu.LOGGER.error("Could not load template block model for ore type {}, icon type '{}', icon set '{}'", - tagPrefix.name, iconType.name(), iconSet.id, e); + tagPrefix.getName(), iconType.name(), iconSet.id, e); return; } if (original == NULL_ELEMENT_MARKER) { @@ -107,7 +107,7 @@ protected static void copyOreModelWithBaseStone(TagPrefix tagPrefix, TagPrefix.O GTDynamicResourcePack.addBlockModel( iconSet.id - .withPath(ORE_MODEL_NAME_FORMAT.formatted(iconSet.getName(), tagPrefix.name, iconType.name())), + .withPath(ORE_MODEL_NAME_FORMAT.formatted(iconSet.getName(), tagPrefix.getName(), iconType.name())), newJson); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java index cac65ee2f2a..1e110593d74 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonEventListener.java @@ -8,14 +8,12 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; -import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.armor.ArmorComponentItem; import com.gregtechceu.gtceu.api.item.tool.ToolHelper; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.TooltipsHandler; import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.common.capability.LocalizedHazardSavedData; @@ -92,8 +90,6 @@ import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.network.PacketDistributor; -import org.jetbrains.annotations.NotNull; - @EventBusSubscriber(modid = GTCEu.MOD_ID) public class CommonEventListener { diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 562a52f8745..b2fefb9f081 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -2,8 +2,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.addon.AddonFinder; -import com.gregtechceu.gtceu.api.addon.IGTAddon; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.capability.GTCapability; import com.gregtechceu.gtceu.api.capability.compat.EUToFEProvider; @@ -19,6 +17,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.bedrockore.BedrockOreDefinition; import com.gregtechceu.gtceu.api.data.worldgen.generator.IndicatorGenerators; import com.gregtechceu.gtceu.api.data.worldgen.generator.VeinGenerators; +import com.gregtechceu.gtceu.api.data.worldgen.modifier.GTPlacementModifiers; import com.gregtechceu.gtceu.api.item.IComponentItem; import com.gregtechceu.gtceu.api.item.IGTTool; import com.gregtechceu.gtceu.api.item.MetaMachineItem; @@ -45,7 +44,6 @@ import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.item.*; -import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.data.materials.GTFoods; import com.gregtechceu.gtceu.common.fluid.potion.BottleItemFluidHandler; import com.gregtechceu.gtceu.common.fluid.potion.PotionItemFluidHandler; @@ -134,11 +132,10 @@ public static void init(final IEventBus modBus) { } modBus.register(CommonProxy.class); - // Initialize the model generator before any content is loaded so machine models can use the generated data GregTechDatagen.initPre(); - GTRegistries.init(modBus); + GTRegistries.init(); REGISTRATE.registerEventListeners(modBus); GTDataComponents.init(modBus); @@ -151,6 +148,7 @@ public static void init(final IEventBus modBus) { GTMobEffects.init(modBus); GTParticleTypes.init(modBus); GTFeatures.init(modBus); + GTPlacementModifiers.init(modBus); GTValueProviderTypes.init(modBus); GTPatternErrors.init(modBus); @@ -166,32 +164,30 @@ public static void init(final IEventBus modBus) { GTSoundEntries.init(); GTDamageTypes.init(); - GTPlaceholders.init(); + GTPlaceholders.init(modBus); if (ConfigHolder.INSTANCE.compat.createCompat && GTCEu.Mods.isCreateLoaded()) { - GTCreateIntegration.init(); + GTCreateIntegration.init(modBus); } - GTCovers.init(); GTCreativeModeTabs.init(); GTBlocks.init(); GTFluids.init(); - GTDimensionMarkers.init(); - GTRecipeCapabilities.init(); - GTRecipeConditions.init(); - ChanceLogic.init(); + GTDimensionMarkers.init(modBus); + GTRecipeCapabilities.init(modBus); + GTRecipeConditions.init(modBus); + ChanceLogic.init(modBus); GTRecipeTypes.init(); GTRecipeCategories.init(); GTFoods.init(); GTToolTiers.init(); - GTToolBehaviors.init(); + GTToolBehaviors.init(modBus); GTItems.init(); - GTMachineUtils.init(); - GTCovers.init(); + GTCovers.init(modBus); GTMachines.init(); GTEntityTypes.init(); @@ -205,8 +201,7 @@ public static void init(final IEventBus modBus) { CustomBlockRotations.init(); SyncedKeyMappings.init(); MachineOwner.init(); - ChestGenHooks.init(); - + ChestGenHooks.init(modBus); // MUI stuff GuiManager.registerFactory(MachineUIFactory.INSTANCE); @@ -236,7 +231,8 @@ public static void onRegisterLowest(RegisterEvent event) { var registrate = GTRegistrate.createIgnoringListenerErrors(namespace); AbstractRegistrateAccessor accessor = (AbstractRegistrateAccessor) registrate; if (accessor.getDoDatagen().get()) { - List> providers = Multimaps.asMap(accessor.getDatagens()) + List> providers = Multimaps + .asMap(accessor.getDatagens()) .get(ProviderType.LANG); NonNullConsumer generator = (provider) -> MaterialLangGenerator .generate((RegistrateLangProvider) provider, namespace); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java index f0920a4f129..decf829da6b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GCYMRecipeTypes.java @@ -4,16 +4,16 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.common.recipe.gui.GTRecipeUIModifiers; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.MULTIBLOCK; -import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.register; public class GCYMRecipeTypes { ////////////////////////////////////// // ******* Multiblock *******// ////////////////////////////////////// - public final static GTRecipeType ALLOY_BLAST_RECIPES = register("alloy_blast_smelter", MULTIBLOCK) + public final static GTRecipeType ALLOY_BLAST_RECIPES = GTRegistration.REGISTRATE.recipeType("alloy_blast_smelter", MULTIBLOCK) .setMaxIOSize(9, 0, 3, 1) .setEUIO(IO.IN) .UI(builder -> builder diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java index e9df806ee2e..0ca5c508b1b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTAttachmentTypes.java @@ -19,7 +19,6 @@ public static void init(IEventBus bus) { ATTACHMENT_TYPES.register(bus); } - public static final DeferredHolder, AttachmentType> MEDICAL_CONDITION_TRACKER = ATTACHMENT_TYPES .register("hazard_tracker", () -> AttachmentType.serializable(holder -> { if (holder instanceof Player player) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java index 764f2557897..b918c5b28d5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java @@ -32,5 +32,4 @@ public static void init(IEventBus modBus) { private static > Class fixClassType(Class type) { return (Class) type; } - } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java index 5ba309c829b..9df757fbd8f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -16,7 +16,9 @@ import com.gregtechceu.gtceu.common.cover.voiding.FluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.ItemVoidingCover; -import net.minecraft.resources.ResourceLocation; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; @@ -31,23 +33,33 @@ public class GTCovers { public static final int[] ALL_TIERS_WITH_ULV = GTValues.tiersBetween(GTValues.ULV, GTCEuAPI.isHighTier() ? GTValues.OpV : GTValues.UV); - public final static CoverDefinition FACADE = register("facade", FacadeCover::new, - () -> () -> FacadeCoverRenderer.INSTANCE); + private static final DeferredRegister COVER = DeferredRegister.create(GTRegistries.Keys.COVER, + GTCEu.MOD_ID); - public final static CoverDefinition ITEM_FILTER = register("item_filter", ItemFilterCover::new); - public final static CoverDefinition FLUID_FILTER = register("fluid_filter", FluidFilterCover::new); + public final static DeferredHolder FACADE = register("facade", FacadeCover::new, + () -> () -> FacadeCoverRenderer.INSTANCE); - public final static CoverDefinition INFINITE_WATER = register("infinite_water", InfiniteWaterCover::new); - public final static CoverDefinition ENDER_FLUID_LINK = register("ender_fluid_link", EnderFluidLinkCover::new); - public final static CoverDefinition ENDER_ITEM_LINK = register("ender_item_link", EnderItemLinkCover::new); - public final static CoverDefinition ENDER_REDSTONE_LINK = register("ender_redstone_link", + public final static DeferredHolder ITEM_FILTER = register("item_filter", + ItemFilterCover::new); + public final static DeferredHolder FLUID_FILTER = register("fluid_filter", + FluidFilterCover::new); + + public final static DeferredHolder INFINITE_WATER = register("infinite_water", + InfiniteWaterCover::new); + public final static DeferredHolder ENDER_FLUID_LINK = register("ender_fluid_link", + EnderFluidLinkCover::new); + public final static DeferredHolder ENDER_ITEM_LINK = register("ender_item_link", + EnderItemLinkCover::new); + public final static DeferredHolder ENDER_REDSTONE_LINK = register( + "ender_redstone_link", EnderRedstoneLinkCover::new); - public final static CoverDefinition SHUTTER = register("shutter", ShutterCover::new); - public final static CoverDefinition COVER_STORAGE = register("storage", StorageCover::new); - public final static CoverDefinition WIRELESS_TRANSMITTER = register("wireless_transmitter", - WirelessTransmitterCover::new); + public final static DeferredHolder SHUTTER = register("shutter", + ShutterCover::new); + public final static DeferredHolder COVER_STORAGE = register("storage", + StorageCover::new); - public final static CoverDefinition[] CONVEYORS = registerTiered("conveyor", ConveyorCover::new, + public final static DeferredHolder[] CONVEYORS = registerTiered("conveyor", + ConveyorCover::new, () -> tier -> new IOCoverRenderer( GTCEu.id("block/cover/conveyor"), null, @@ -55,7 +67,8 @@ public class GTCovers { GTCEu.id("block/cover/conveyor_inverted_emissive")), ALL_TIERS); - public final static CoverDefinition[] ROBOT_ARMS = registerTiered("robot_arm", RobotArmCover::new, + public final static DeferredHolder[] ROBOT_ARMS = registerTiered("robot_arm", + RobotArmCover::new, () -> tier -> new IOCoverRenderer( GTCEu.id("block/cover/arm"), null, @@ -63,85 +76,99 @@ public class GTCovers { GTCEu.id("block/cover/arm_inverted_emissive")), ALL_TIERS); - public final static CoverDefinition[] PUMPS = registerTiered("pump", PumpCover::new, + public final static DeferredHolder[] PUMPS = registerTiered("pump", + PumpCover::new, () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] FLUID_REGULATORS = registerTiered("fluid_regulator", FluidRegulatorCover::new, + public final static DeferredHolder[] FLUID_REGULATORS = registerTiered( + "fluid_regulator", + FluidRegulatorCover::new, () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition COMPUTER_MONITOR = register("computer_monitor", ComputerMonitorCover::new); + public final static DeferredHolder COMPUTER_MONITOR = register("computer_monitor", + ComputerMonitorCover::new); - public final static CoverDefinition MACHINE_CONTROLLER = register("machine_controller", + public final static DeferredHolder MACHINE_CONTROLLER = register( + "machine_controller", MachineControllerCover::new); + public final static DeferredHolder WIRELESS_TRANSMITTER = register( + "wireless_transmitter", + WirelessTransmitterCover::new, + () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/wireless_transmitter"))); // Voiding - public final static CoverDefinition ITEM_VOIDING = register("item_voiding", ItemVoidingCover::new); - public final static CoverDefinition ITEM_VOIDING_ADVANCED = register("item_voiding_advanced", + public final static DeferredHolder ITEM_VOIDING = register("item_voiding", + ItemVoidingCover::new); + public final static DeferredHolder ITEM_VOIDING_ADVANCED = register( + "item_voiding_advanced", AdvancedItemVoidingCover::new); - public final static CoverDefinition FLUID_VOIDING = register("fluid_voiding", FluidVoidingCover::new); - public final static CoverDefinition FLUID_VOIDING_ADVANCED = register("fluid_voiding_advanced", + public final static DeferredHolder FLUID_VOIDING = register("fluid_voiding", + FluidVoidingCover::new); + public final static DeferredHolder FLUID_VOIDING_ADVANCED = register( + "fluid_voiding_advanced", AdvancedFluidVoidingCover::new); // Detectors - public final static CoverDefinition ACTIVITY_DETECTOR = register("activity_detector", ActivityDetectorCover::new); - public final static CoverDefinition ACTIVITY_DETECTOR_ADVANCED = register("activity_detector_advanced", + public final static DeferredHolder ACTIVITY_DETECTOR = register( + "activity_detector", + ActivityDetectorCover::new); + public final static DeferredHolder ACTIVITY_DETECTOR_ADVANCED = register( + "activity_detector_advanced", AdvancedActivityDetectorCover::new); - public final static CoverDefinition FLUID_DETECTOR = register("fluid_detector", FluidDetectorCover::new); - public final static CoverDefinition FLUID_DETECTOR_ADVANCED = register("fluid_detector_advanced", + public final static DeferredHolder FLUID_DETECTOR = register("fluid_detector", + FluidDetectorCover::new); + public final static DeferredHolder FLUID_DETECTOR_ADVANCED = register( + "fluid_detector_advanced", AdvancedFluidDetectorCover::new); - public final static CoverDefinition ITEM_DETECTOR = register("item_detector", ItemDetectorCover::new); - public final static CoverDefinition ITEM_DETECTOR_ADVANCED = register("item_detector_advanced", + public final static DeferredHolder ITEM_DETECTOR = register("item_detector", + ItemDetectorCover::new); + public final static DeferredHolder ITEM_DETECTOR_ADVANCED = register( + "item_detector_advanced", AdvancedItemDetectorCover::new); - public final static CoverDefinition ENERGY_DETECTOR = register("energy_detector", EnergyDetectorCover::new); - public final static CoverDefinition ENERGY_DETECTOR_ADVANCED = register("energy_detector_advanced", + public final static DeferredHolder ENERGY_DETECTOR = register("energy_detector", + EnergyDetectorCover::new); + public final static DeferredHolder ENERGY_DETECTOR_ADVANCED = register( + "energy_detector_advanced", AdvancedEnergyDetectorCover::new); - public final static CoverDefinition MAINTENANCE_DETECTOR = register("maintenance_detector", + public final static DeferredHolder MAINTENANCE_DETECTOR = register( + "maintenance_detector", MaintenanceDetectorCover::new); // Solar Panels - public final static CoverDefinition SOLAR_PANEL_BASIC = register("solar_panel", CoverSolarPanel::new); - public final static CoverDefinition[] SOLAR_PANEL = registerTiered("solar_panel", CoverSolarPanel::new, + public final static DeferredHolder SOLAR_PANEL_BASIC = register("solar_panel", + CoverSolarPanel::new); + public final static DeferredHolder[] SOLAR_PANEL = registerTiered("solar_panel", + CoverSolarPanel::new, () -> tier -> new SimpleCoverRenderer(GTCEu.id("block/cover/solar_panel")), ALL_TIERS_WITH_ULV); /////////////////////////////////////////////// // *********** UTIL METHODS ***********// /////////////////////////////////////////////// - private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator) { - return register(id, behaviorCreator, () -> () -> new SimpleCoverRenderer(GTCEu.id("block/cover/" + id))); - } - - private static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator, - Supplier> coverRenderer) { - return register(GTCEu.id(id), behaviorCreator, coverRenderer); + private static DeferredHolder register(String id, + CoverDefinition.CoverBehaviourProvider behaviorCreator) { + return COVER.register(id, () -> new CoverDefinition(GTCEu.id(id), behaviorCreator)); } - public static CoverDefinition register(ResourceLocation id, CoverDefinition.CoverBehaviourProvider behaviorCreator, - Supplier> coverRenderer) { - var definition = new CoverDefinition(id, behaviorCreator, coverRenderer); - GTRegistries.register(GTRegistries.COVERS, definition.getId(), definition); - return definition; + private static DeferredHolder register(String id, + CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + return COVER.register(id, () -> new CoverDefinition(GTCEu.id(id), behaviorCreator, coverRenderer)); } - private static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - Supplier> coverRenderer, - int... tiers) { + @SuppressWarnings("unchecked") + private static DeferredHolder[] registerTiered(String id, + CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer, + int... tiers) { return Arrays.stream(tiers).mapToObj(tier -> { var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier), () -> () -> coverRenderer.get().apply(tier)); - }).toArray(CoverDefinition[]::new); + }).toArray(DeferredHolder[]::new); } - private static CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - int... tiers) { - return Arrays.stream(tiers).mapToObj(tier -> { - var name = id + "." + GTValues.VN[tier].toLowerCase(Locale.ROOT); - return register(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier)); - }).toArray(CoverDefinition[]::new); + public static void init(IEventBus modBus) { + COVER.register(modBus); } - - public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java index 8bb6da55f37..7628276d070 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java @@ -2,20 +2,16 @@ import com.gregtechceu.gtceu.api.data.DimensionMarker; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.common.recipe.condition.DimensionCondition; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; -import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import com.tterrag.registrate.util.entry.BlockEntry; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Supplier; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @@ -23,31 +19,28 @@ public class GTDimensionMarkers { static { - REGISTRATE.resetCreativeModeTab(); + REGISTRATE.creativeModeTab(() -> null); } + private static final DeferredRegister DIMENSION_MARKER = DeferredRegister + .create(GTRegistries.Keys.DIMENSION_MARKER, "gtceu"); + public static final BlockEntry OVERWORLD_MARKER = createMarker("overworld"); public static final BlockEntry NETHER_MARKER = createMarker("the_nether"); public static final BlockEntry END_MARKER = createMarker("the_end"); - public static final DimensionMarker OVERWORLD = createAndRegister(Level.OVERWORLD, 0, - () -> OVERWORLD_MARKER, null); - public static final DimensionMarker NETHER = createAndRegister(Level.NETHER, 0, - () -> NETHER_MARKER, null); - public static final DimensionMarker END = createAndRegister(Level.END, 0, - () -> END_MARKER, null); + public static final DeferredHolder OVERWORLD = DIMENSION_MARKER.register( + "overworld", + () -> new DimensionMarker(Level.OVERWORLD, 0, + () -> OVERWORLD_MARKER, null)); - public static DimensionMarker createAndRegister(ResourceKey dimension, int tier, Supplier supplier, - @Nullable Component overrideName) { - if (overrideName == null) { - // if a special name hasn't been set, use the dimension's 'translated' name as a default - overrideName = DimensionCondition.getDimensionName(dimension); - } + public static final DeferredHolder NETHER = DIMENSION_MARKER.register("nether", + () -> new DimensionMarker(Level.NETHER, 0, + () -> NETHER_MARKER, null)); - DimensionMarker marker = new DimensionMarker(tier, supplier, overrideName); - GTRegistries.register(GTRegistries.DIMENSION_MARKERS, dimension.location(), marker); - return marker; - } + public static final DeferredHolder END = DIMENSION_MARKER.register("end", + () -> new DimensionMarker(Level.END, 0, + () -> END_MARKER, null)); private static BlockEntry createMarker(String name) { return REGISTRATE.block("%s_marker".formatted(name), Block::new) @@ -65,5 +58,7 @@ private static BlockEntry createMarker(String name) { .register(); } - public static void init() {} + public static void init(IEventBus bus) { + DIMENSION_MARKER.register(bus); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java index c4ad0dfbc8b..466438da7db 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java @@ -1,233 +1,206 @@ package com.gregtechceu.gtceu.common.data; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.Element; -import com.gregtechceu.gtceu.api.registry.GTRegistries; -import net.minecraft.resources.ResourceLocation; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; +@SuppressWarnings("unused") public class GTElements { - public static final Element H = createAndRegister(GTCEu.id("Hydrogen"), 1, 0, -1, null, "Hydrogen", "H", false); - public static final Element D = createAndRegister(GTCEu.id("Deuterium"), 1, 1, -1, "H", "Deuterium", "D", true); - public static final Element T = createAndRegister(GTCEu.id("Tritium"), 1, 2, -1, "D", "Tritium", "T", true); - public static final Element He = createAndRegister(GTCEu.id("Helium"), 2, 2, -1, null, "Helium", "He", false); - public static final Element He3 = createAndRegister(GTCEu.id("Helium-3"), 2, 1, -1, "H&D", "Helium-3", "He-3", + public static final Element H = REGISTRATE.element("Hydrogen", 1, 0, -1, null, "H", false); + public static final Element D = REGISTRATE.element("Deuterium", 1, 1, -1, "H", "D", true); + public static final Element T = REGISTRATE.element("Tritium", 1, 2, -1, "D", "T", true); + public static final Element He = REGISTRATE.element("Helium", 2, 2, -1, null, "He", false); + public static final Element He3 = REGISTRATE.element("Helium-3", 2, 1, -1, "H&D", "He-3", true); - public static final Element Li = createAndRegister(GTCEu.id("Lithium"), 3, 4, -1, null, "Lithium", "Li", false); - public static final Element Be = createAndRegister(GTCEu.id("Beryllium"), 4, 5, -1, null, "Beryllium", "Be", false); - public static final Element B = createAndRegister(GTCEu.id("Boron"), 5, 5, -1, null, "Boron", "B", false); - public static final Element C = createAndRegister(GTCEu.id("Carbon"), 6, 6, -1, null, "Carbon", "C", false); - public static final Element N = createAndRegister(GTCEu.id("Nitrogen"), 7, 7, -1, null, "Nitrogen", "N", false); - public static final Element O = createAndRegister(GTCEu.id("Oxygen"), 8, 8, -1, null, "Oxygen", "O", false); - public static final Element F = createAndRegister(GTCEu.id("Fluorine"), 9, 9, -1, null, "Fluorine", "F", false); - public static final Element Ne = createAndRegister(GTCEu.id("Neon"), 10, 10, -1, null, "Neon", "Ne", false); - public static final Element Na = createAndRegister(GTCEu.id("Sodium"), 11, 11, -1, null, "Sodium", "Na", false); - public static final Element Mg = createAndRegister(GTCEu.id("Magnesium"), 12, 12, -1, null, "Magnesium", "Mg", - false); - public static final Element Al = createAndRegister(GTCEu.id("Aluminium"), 13, 13, -1, null, "Aluminium", "Al", - false); - public static final Element Si = createAndRegister(GTCEu.id("Silicon"), 14, 14, -1, null, "Silicon", "Si", false); - public static final Element P = createAndRegister(GTCEu.id("Phosphorus"), 15, 15, -1, null, "Phosphorus", "P", - false); - public static final Element S = createAndRegister(GTCEu.id("Sulfur"), 16, 16, -1, null, "Sulfur", "S", false); - public static final Element Cl = createAndRegister(GTCEu.id("Chlorine"), 17, 18, -1, null, "Chlorine", "Cl", false); - public static final Element Ar = createAndRegister(GTCEu.id("Argon"), 18, 22, -1, null, "Argon", "Ar", false); - public static final Element K = createAndRegister(GTCEu.id("Potassium"), 19, 20, -1, null, "Potassium", "K", false); - public static final Element Ca = createAndRegister(GTCEu.id("Calcium"), 20, 20, -1, null, "Calcium", "Ca", false); - public static final Element Sc = createAndRegister(GTCEu.id("Scandium"), 21, 24, -1, null, "Scandium", "Sc", false); - public static final Element Ti = createAndRegister(GTCEu.id("Titanium"), 22, 26, -1, null, "Titanium", "Ti", false); - public static final Element V = createAndRegister(GTCEu.id("Vanadium"), 23, 28, -1, null, "Vanadium", "V", false); - public static final Element Cr = createAndRegister(GTCEu.id("Chrome"), 24, 28, -1, null, "Chrome", "Cr", false); - public static final Element Mn = createAndRegister(GTCEu.id("Manganese"), 25, 30, -1, null, "Manganese", "Mn", - false); - public static final Element Fe = createAndRegister(GTCEu.id("Iron"), 26, 30, -1, null, "Iron", "Fe", false); - public static final Element Co = createAndRegister(GTCEu.id("Cobalt"), 27, 32, -1, null, "Cobalt", "Co", false); - public static final Element Ni = createAndRegister(GTCEu.id("Nickel"), 28, 30, -1, null, "Nickel", "Ni", false); - public static final Element Cu = createAndRegister(GTCEu.id("Copper"), 29, 34, -1, null, "Copper", "Cu", false); - public static final Element Zn = createAndRegister(GTCEu.id("Zinc"), 30, 35, -1, null, "Zinc", "Zn", false); - public static final Element Ga = createAndRegister(GTCEu.id("Gallium"), 31, 39, -1, null, "Gallium", "Ga", false); - public static final Element Ge = createAndRegister(GTCEu.id("Germanium"), 32, 40, -1, null, "Germanium", "Ge", - false); - public static final Element As = createAndRegister(GTCEu.id("Arsenic"), 33, 42, -1, null, "Arsenic", "As", false); - public static final Element Se = createAndRegister(GTCEu.id("Selenium"), 34, 45, -1, null, "Selenium", "Se", false); - public static final Element Br = createAndRegister(GTCEu.id("Bromine"), 35, 45, -1, null, "Bromine", "Br", false); - public static final Element Kr = createAndRegister(GTCEu.id("Krypton"), 36, 48, -1, null, "Krypton", "Kr", false); - public static final Element Rb = createAndRegister(GTCEu.id("Rubidium"), 37, 48, -1, null, "Rubidium", "Rb", false); - public static final Element Sr = createAndRegister(GTCEu.id("Strontium"), 38, 49, -1, null, "Strontium", "Sr", - false); - public static final Element Y = createAndRegister(GTCEu.id("Yttrium"), 39, 50, -1, null, "Yttrium", "Y", false); - public static final Element Zr = createAndRegister(GTCEu.id("Zirconium"), 40, 51, -1, null, "Zirconium", "Zr", - false); - public static final Element Nb = createAndRegister(GTCEu.id("Niobium"), 41, 53, -1, null, "Niobium", "Nb", false); - public static final Element Mo = createAndRegister(GTCEu.id("Molybdenum"), 42, 53, -1, null, "Molybdenum", "Mo", - false); - public static final Element Tc = createAndRegister(GTCEu.id("Technetium"), 43, 55, -1, null, "Technetium", "Tc", - false); - public static final Element Ru = createAndRegister(GTCEu.id("Ruthenium"), 44, 57, -1, null, "Ruthenium", "Ru", - false); - public static final Element Rh = createAndRegister(GTCEu.id("Rhodium"), 45, 58, -1, null, "Rhodium", "Rh", false); - public static final Element Pd = createAndRegister(GTCEu.id("Palladium"), 46, 60, -1, null, "Palladium", "Pd", - false); - public static final Element Ag = createAndRegister(GTCEu.id("Silver"), 47, 60, -1, null, "Silver", "Ag", false); - public static final Element Cd = createAndRegister(GTCEu.id("Cadmium"), 48, 64, -1, null, "Cadmium", "Cd", false); - public static final Element In = createAndRegister(GTCEu.id("Indium"), 49, 65, -1, null, "Indium", "In", false); - public static final Element Sn = createAndRegister(GTCEu.id("Tin"), 50, 68, -1, null, "Tin", "Sn", false); - public static final Element Sb = createAndRegister(GTCEu.id("Antimony"), 51, 70, -1, null, "Antimony", "Sb", false); - public static final Element Te = createAndRegister(GTCEu.id("Tellurium"), 52, 75, -1, null, "Tellurium", "Te", - false); - public static final Element I = createAndRegister(GTCEu.id("Iodine"), 53, 74, -1, null, "Iodine", "I", false); - public static final Element Xe = createAndRegister(GTCEu.id("Xenon"), 54, 77, -1, null, "Xenon", "Xe", false); - public static final Element Cs = createAndRegister(GTCEu.id("Caesium"), 55, 77, -1, null, "Caesium", "Cs", false); - public static final Element Ba = createAndRegister(GTCEu.id("Barium"), 56, 81, -1, null, "Barium", "Ba", false); - public static final Element La = createAndRegister(GTCEu.id("Lanthanum"), 57, 81, -1, null, "Lanthanum", "La", - false); - public static final Element Ce = createAndRegister(GTCEu.id("Cerium"), 58, 82, -1, null, "Cerium", "Ce", false); - public static final Element Pr = createAndRegister(GTCEu.id("Praseodymium"), 59, 81, -1, null, "Praseodymium", "Pr", - false); - public static final Element Nd = createAndRegister(GTCEu.id("Neodymium"), 60, 84, -1, null, "Neodymium", "Nd", - false); - public static final Element Pm = createAndRegister(GTCEu.id("Promethium"), 61, 83, -1, null, "Promethium", "Pm", - false); - public static final Element Sm = createAndRegister(GTCEu.id("Samarium"), 62, 88, -1, null, "Samarium", "Sm", false); - public static final Element Eu = createAndRegister(GTCEu.id("Europium"), 63, 88, -1, null, "Europium", "Eu", false); - public static final Element Gd = createAndRegister(GTCEu.id("Gadolinium"), 64, 93, -1, null, "Gadolinium", "Gd", - false); - public static final Element Tb = createAndRegister(GTCEu.id("Terbium"), 65, 93, -1, null, "Terbium", "Tb", false); - public static final Element Dy = createAndRegister(GTCEu.id("Dysprosium"), 66, 96, -1, null, "Dysprosium", "Dy", - false); - public static final Element Ho = createAndRegister(GTCEu.id("Holmium"), 67, 97, -1, null, "Holmium", "Ho", false); - public static final Element Er = createAndRegister(GTCEu.id("Erbium"), 68, 99, -1, null, "Erbium", "Er", false); - public static final Element Tm = createAndRegister(GTCEu.id("Thulium"), 69, 99, -1, null, "Thulium", "Tm", false); - public static final Element Yb = createAndRegister(GTCEu.id("Ytterbium"), 70, 103, -1, null, "Ytterbium", "Yb", - false); - public static final Element Lu = createAndRegister(GTCEu.id("Lutetium"), 71, 103, -1, null, "Lutetium", "Lu", - false); - public static final Element Hf = createAndRegister(GTCEu.id("Hafnium"), 72, 106, -1, null, "Hafnium", "Hf", false); - public static final Element Ta = createAndRegister(GTCEu.id("Tantalum"), 73, 107, -1, null, "Tantalum", "Ta", - false); - public static final Element W = createAndRegister(GTCEu.id("Tungsten"), 74, 109, -1, null, "Tungsten", "W", false); - public static final Element Re = createAndRegister(GTCEu.id("Rhenium"), 75, 111, -1, null, "Rhenium", "Re", false); - public static final Element Os = createAndRegister(GTCEu.id("Osmium"), 76, 114, -1, null, "Osmium", "Os", false); - public static final Element Ir = createAndRegister(GTCEu.id("Iridium"), 77, 115, -1, null, "Iridium", "Ir", false); - public static final Element Pt = createAndRegister(GTCEu.id("Platinum"), 78, 117, -1, null, "Platinum", "Pt", - false); - public static final Element Au = createAndRegister(GTCEu.id("Gold"), 79, 117, -1, null, "Gold", "Au", false); - public static final Element Hg = createAndRegister(GTCEu.id("Mercury"), 80, 120, -1, null, "Mercury", "Hg", false); - public static final Element Tl = createAndRegister(GTCEu.id("Thallium"), 81, 123, -1, null, "Thallium", "Tl", - false); - public static final Element Pb = createAndRegister(GTCEu.id("Lead"), 82, 125, -1, null, "Lead", "Pb", false); - public static final Element Bi = createAndRegister(GTCEu.id("Bismuth"), 83, 125, -1, null, "Bismuth", "Bi", false); - public static final Element Po = createAndRegister(GTCEu.id("Polonium"), 84, 124, -1, null, "Polonium", "Po", + public static final Element Li = REGISTRATE.element("Lithium", 3, 4, -1, null, "Li", false); + public static final Element Be = REGISTRATE.element("Beryllium", 4, 5, -1, null, "Be", false); + public static final Element B = REGISTRATE.element("Boron", 5, 5, -1, null, "B", false); + public static final Element C = REGISTRATE.element("Carbon", 6, 6, -1, null, "C", false); + public static final Element N = REGISTRATE.element("Nitrogen", 7, 7, -1, null, "N", false); + public static final Element O = REGISTRATE.element("Oxygen", 8, 8, -1, null, "O", false); + public static final Element F = REGISTRATE.element("Fluorine", 9, 9, -1, null, "F", false); + public static final Element Ne = REGISTRATE.element("Neon", 10, 10, -1, null, "Ne", false); + public static final Element Na = REGISTRATE.element("Sodium", 11, 11, -1, null, "Na", false); + public static final Element Mg = REGISTRATE.element("Magnesium", 12, 12, -1, null, "Mg", + false); + public static final Element Al = REGISTRATE.element("Aluminium", 13, 13, -1, null, "Al", + false); + public static final Element Si = REGISTRATE.element("Silicon", 14, 14, -1, null, "Si", false); + public static final Element P = REGISTRATE.element("Phosphorus", 15, 15, -1, null, "P", + false); + public static final Element S = REGISTRATE.element("Sulfur", 16, 16, -1, null, "S", false); + public static final Element Cl = REGISTRATE.element("Chlorine", 17, 18, -1, null, "Cl", false); + public static final Element Ar = REGISTRATE.element("Argon", 18, 22, -1, null, "Ar", false); + public static final Element K = REGISTRATE.element("Potassium", 19, 20, -1, null, "K", false); + public static final Element Ca = REGISTRATE.element("Calcium", 20, 20, -1, null, "Ca", false); + public static final Element Sc = REGISTRATE.element("Scandium", 21, 24, -1, null, "Sc", false); + public static final Element Ti = REGISTRATE.element("Titanium", 22, 26, -1, null, "Ti", false); + public static final Element V = REGISTRATE.element("Vanadium", 23, 28, -1, null, "V", false); + public static final Element Cr = REGISTRATE.element("Chrome", 24, 28, -1, null, "Cr", false); + public static final Element Mn = REGISTRATE.element("Manganese", 25, 30, -1, null, "Mn", + false); + public static final Element Fe = REGISTRATE.element("Iron", 26, 30, -1, null, "Fe", false); + public static final Element Co = REGISTRATE.element("Cobalt", 27, 32, -1, null, "Co", false); + public static final Element Ni = REGISTRATE.element("Nickel", 28, 30, -1, null, "Ni", false); + public static final Element Cu = REGISTRATE.element("Copper", 29, 34, -1, null, "Cu", false); + public static final Element Zn = REGISTRATE.element("Zinc", 30, 35, -1, null, "Zn", false); + public static final Element Ga = REGISTRATE.element("Gallium", 31, 39, -1, null, "Ga", false); + public static final Element Ge = REGISTRATE.element("Germanium", 32, 40, -1, null, "Ge", + false); + public static final Element As = REGISTRATE.element("Arsenic", 33, 42, -1, null, "As", false); + public static final Element Se = REGISTRATE.element("Selenium", 34, 45, -1, null, "Se", false); + public static final Element Br = REGISTRATE.element("Bromine", 35, 45, -1, null, "Br", false); + public static final Element Kr = REGISTRATE.element("Krypton", 36, 48, -1, null, "Kr", false); + public static final Element Rb = REGISTRATE.element("Rubidium", 37, 48, -1, null, "Rb", false); + public static final Element Sr = REGISTRATE.element("Strontium", 38, 49, -1, null, "Sr", + false); + public static final Element Y = REGISTRATE.element("Yttrium", 39, 50, -1, null, "Y", false); + public static final Element Zr = REGISTRATE.element("Zirconium", 40, 51, -1, null, "Zr", + false); + public static final Element Nb = REGISTRATE.element("Niobium", 41, 53, -1, null, "Nb", false); + public static final Element Mo = REGISTRATE.element("Molybdenum", 42, 53, -1, null, "Mo", + false); + public static final Element Tc = REGISTRATE.element("Technetium", 43, 55, -1, null, "Tc", + false); + public static final Element Ru = REGISTRATE.element("Ruthenium", 44, 57, -1, null, "Ru", + false); + public static final Element Rh = REGISTRATE.element("Rhodium", 45, 58, -1, null, "Rh", false); + public static final Element Pd = REGISTRATE.element("Palladium", 46, 60, -1, null, "Pd", + false); + public static final Element Ag = REGISTRATE.element("Silver", 47, 60, -1, null, "Ag", false); + public static final Element Cd = REGISTRATE.element("Cadmium", 48, 64, -1, null, "Cd", false); + public static final Element In = REGISTRATE.element("Indium", 49, 65, -1, null, "In", false); + public static final Element Sn = REGISTRATE.element("Tin", 50, 68, -1, null, "Sn", false); + public static final Element Sb = REGISTRATE.element("Antimony", 51, 70, -1, null, "Sb", false); + public static final Element Te = REGISTRATE.element("Tellurium", 52, 75, -1, null, "Te", + false); + public static final Element I = REGISTRATE.element("Iodine", 53, 74, -1, null, "I", false); + public static final Element Xe = REGISTRATE.element("Xenon", 54, 77, -1, null, "Xe", false); + public static final Element Cs = REGISTRATE.element("Caesium", 55, 77, -1, null, "Cs", false); + public static final Element Ba = REGISTRATE.element("Barium", 56, 81, -1, null, "Ba", false); + public static final Element La = REGISTRATE.element("Lanthanum", 57, 81, -1, null, "La", + false); + public static final Element Ce = REGISTRATE.element("Cerium", 58, 82, -1, null, "Ce", false); + public static final Element Pr = REGISTRATE.element("Praseodymium", 59, 81, -1, null, "Pr", + false); + public static final Element Nd = REGISTRATE.element("Neodymium", 60, 84, -1, null, "Nd", + false); + public static final Element Pm = REGISTRATE.element("Promethium", 61, 83, -1, null, "Pm", + false); + public static final Element Sm = REGISTRATE.element("Samarium", 62, 88, -1, null, "Sm", false); + public static final Element Eu = REGISTRATE.element("Europium", 63, 88, -1, null, "Eu", false); + public static final Element Gd = REGISTRATE.element("Gadolinium", 64, 93, -1, null, "Gd", + false); + public static final Element Tb = REGISTRATE.element("Terbium", 65, 93, -1, null, "Tb", false); + public static final Element Dy = REGISTRATE.element("Dysprosium", 66, 96, -1, null, "Dy", + false); + public static final Element Ho = REGISTRATE.element("Holmium", 67, 97, -1, null, "Ho", false); + public static final Element Er = REGISTRATE.element("Erbium", 68, 99, -1, null, "Er", false); + public static final Element Tm = REGISTRATE.element("Thulium", 69, 99, -1, null, "Tm", false); + public static final Element Yb = REGISTRATE.element("Ytterbium", 70, 103, -1, null, "Yb", + false); + public static final Element Lu = REGISTRATE.element("Lutetium", 71, 103, -1, null, "Lu", + false); + public static final Element Hf = REGISTRATE.element("Hafnium", 72, 106, -1, null, "Hf", false); + public static final Element Ta = REGISTRATE.element("Tantalum", 73, 107, -1, null, "Ta", + false); + public static final Element W = REGISTRATE.element("Tungsten", 74, 109, -1, null, "W", false); + public static final Element Re = REGISTRATE.element("Rhenium", 75, 111, -1, null, "Re", false); + public static final Element Os = REGISTRATE.element("Osmium", 76, 114, -1, null, "Os", false); + public static final Element Ir = REGISTRATE.element("Iridium", 77, 115, -1, null, "Ir", false); + public static final Element Pt = REGISTRATE.element("Platinum", 78, 117, -1, null, "Pt", + false); + public static final Element Au = REGISTRATE.element("Gold", 79, 117, -1, null, "Au", false); + public static final Element Hg = REGISTRATE.element("Mercury", 80, 120, -1, null, "Hg", false); + public static final Element Tl = REGISTRATE.element("Thallium", 81, 123, -1, null, "Tl", + false); + public static final Element Pb = REGISTRATE.element("Lead", 82, 125, -1, null, "Pb", false); + public static final Element Bi = REGISTRATE.element("Bismuth", 83, 125, -1, null, "Bi", false); + public static final Element Po = REGISTRATE.element("Polonium", 84, 124, -1, null, "Po", false); - public static final Element At = createAndRegister(GTCEu.id("Astatine"), 85, 124, -1, null, "Astatine", "At", + public static final Element At = REGISTRATE.element("Astatine", 85, 124, -1, null, "At", false); - public static final Element Rn = createAndRegister(GTCEu.id("Radon"), 86, 134, -1, null, "Radon", "Rn", false); - public static final Element Fr = createAndRegister(GTCEu.id("Francium"), 87, 134, -1, null, "Francium", "Fr", + public static final Element Rn = REGISTRATE.element("Radon", 86, 134, -1, null, "Rn", false); + public static final Element Fr = REGISTRATE.element("Francium", 87, 134, -1, null, "Fr", false); - public static final Element Ra = createAndRegister(GTCEu.id("Radium"), 88, 136, -1, null, "Radium", "Ra", false); - public static final Element Ac = createAndRegister(GTCEu.id("Actinium"), 89, 136, -1, null, "Actinium", "Ac", + public static final Element Ra = REGISTRATE.element("Radium", 88, 136, -1, null, "Ra", false); + public static final Element Ac = REGISTRATE.element("Actinium", 89, 136, -1, null, "Ac", false); - public static final Element Th = createAndRegister(GTCEu.id("Thorium"), 90, 140, -1, null, "Thorium", "Th", false); - public static final Element Pa = createAndRegister(GTCEu.id("Protactinium"), 91, 138, -1, null, "Protactinium", + public static final Element Th = REGISTRATE.element("Thorium", 90, 140, -1, null, "Th", false); + public static final Element Pa = REGISTRATE.element("Protactinium", 91, 138, -1, null, "Pa", false); - public static final Element U = createAndRegister(GTCEu.id("Uranium"), 92, 146, -1, null, "Uranium", "U", false); - public static final Element U238 = createAndRegister(GTCEu.id("Uranium-238"), 92, 146, -1, null, "Uranium-238", + public static final Element U = REGISTRATE.element("Uranium", 92, 146, -1, null, "U", false); + public static final Element U238 = REGISTRATE.element("Uranium-238", 92, 146, -1, null, "U-238", false); - public static final Element U235 = createAndRegister(GTCEu.id("Uranium-235"), 92, 143, -1, null, "Uranium-235", + public static final Element U235 = REGISTRATE.element("Uranium-235", 92, 143, -1, null, "U-235", true); - public static final Element Np = createAndRegister(GTCEu.id("Neptunium"), 93, 144, -1, null, "Neptunium", "Np", + public static final Element Np = REGISTRATE.element("Neptunium", 93, 144, -1, null, "Np", false); - public static final Element Pu = createAndRegister(GTCEu.id("Plutonium"), 94, 152, -1, null, "Plutonium", "Pu", + public static final Element Pu = REGISTRATE.element("Plutonium", 94, 152, -1, null, "Pu", false); - public static final Element Pu239 = createAndRegister(GTCEu.id("Plutonium-239"), 94, 145, -1, null, "Plutonium-239", + public static final Element Pu239 = REGISTRATE.element("Plutonium-239", 94, 145, -1, null, "Pu-239", false); - public static final Element Pu241 = createAndRegister(GTCEu.id("Plutonium-241"), 94, 149, -1, null, "Plutonium-241", + public static final Element Pu241 = REGISTRATE.element("Plutonium-241", 94, 149, -1, null, "Pu-241", true); - public static final Element Am = createAndRegister(GTCEu.id("Americium"), 95, 150, -1, null, "Americium", "Am", + public static final Element Am = REGISTRATE.element("Americium", 95, 150, -1, null, "Am", false); - public static final Element Cm = createAndRegister(GTCEu.id("Curium"), 96, 153, -1, null, "Curium", "Cm", false); - public static final Element Bk = createAndRegister(GTCEu.id("Berkelium"), 97, 152, -1, null, "Berkelium", "Bk", + public static final Element Cm = REGISTRATE.element("Curium", 96, 153, -1, null, "Cm", false); + public static final Element Bk = REGISTRATE.element("Berkelium", 97, 152, -1, null, "Bk", false); - public static final Element Cf = createAndRegister(GTCEu.id("Californium"), 98, 153, -1, null, "Californium", "Cf", + public static final Element Cf = REGISTRATE.element("Californium", 98, 153, -1, null, "Cf", false); - public static final Element Es = createAndRegister(GTCEu.id("Einsteinium"), 99, 153, -1, null, "Einsteinium", "Es", + public static final Element Es = REGISTRATE.element("Einsteinium", 99, 153, -1, null, "Es", false); - public static final Element Fm = createAndRegister(GTCEu.id("Fermium"), 100, 157, -1, null, "Fermium", "Fm", false); - public static final Element Md = createAndRegister(GTCEu.id("Mendelevium"), 101, 157, -1, null, "Mendelevium", "Md", + public static final Element Fm = REGISTRATE.element("Fermium", 100, 157, -1, null, "Fm", false); + public static final Element Md = REGISTRATE.element("Mendelevium", 101, 157, -1, null, "Md", false); - public static final Element No = createAndRegister(GTCEu.id("Nobelium"), 102, 157, -1, null, "Nobelium", "No", + public static final Element No = REGISTRATE.element("Nobelium", 102, 157, -1, null, "No", false); - public static final Element Lr = createAndRegister(GTCEu.id("Lawrencium"), 103, 159, -1, null, "Lawrencium", "Lr", + public static final Element Lr = REGISTRATE.element("Lawrencium", 103, 159, -1, null, "Lr", false); - public static final Element Rf = createAndRegister(GTCEu.id("Rutherfordium"), 104, 161, -1, null, "Rutherfordium", + public static final Element Rf = REGISTRATE.element("Rutherfordium", 104, 161, -1, null, "Rf", false); - public static final Element Db = createAndRegister(GTCEu.id("Dubnium"), 105, 163, -1, null, "Dubnium", "Db", false); - public static final Element Sg = createAndRegister(GTCEu.id("Seaborgium"), 106, 165, -1, null, "Seaborgium", "Sg", + public static final Element Db = REGISTRATE.element("Dubnium", 105, 163, -1, null, "Db", false); + public static final Element Sg = REGISTRATE.element("Seaborgium", 106, 165, -1, null, "Sg", false); - public static final Element Bh = createAndRegister(GTCEu.id("Bohrium"), 107, 163, -1, null, "Bohrium", "Bh", false); - public static final Element Hs = createAndRegister(GTCEu.id("Hassium"), 108, 169, -1, null, "Hassium", "Hs", false); - public static final Element Mt = createAndRegister(GTCEu.id("Meitnerium"), 109, 167, -1, null, "Meitnerium", "Mt", + public static final Element Bh = REGISTRATE.element("Bohrium", 107, 163, -1, null, "Bh", false); + public static final Element Hs = REGISTRATE.element("Hassium", 108, 169, -1, null, "Hs", false); + public static final Element Mt = REGISTRATE.element("Meitnerium", 109, 167, -1, null, "Mt", false); - public static final Element Ds = createAndRegister(GTCEu.id("Darmstadtium"), 110, 171, -1, null, "Darmstadtium", + public static final Element Ds = REGISTRATE.element("Darmstadtium", 110, 171, -1, null, "Ds", false); - public static final Element Rg = createAndRegister(GTCEu.id("Roentgenium"), 111, 169, -1, null, "Roentgenium", "Rg", + public static final Element Rg = REGISTRATE.element("Roentgenium", 111, 169, -1, null, "Rg", false); - public static final Element Cn = createAndRegister(GTCEu.id("Copernicium"), 112, 173, -1, null, "Copernicium", "Cn", + public static final Element Cn = REGISTRATE.element("Copernicium", 112, 173, -1, null, "Cn", false); - public static final Element Nh = createAndRegister(GTCEu.id("Nihonium"), 113, 171, -1, null, "Nihonium", "Nh", + public static final Element Nh = REGISTRATE.element("Nihonium", 113, 171, -1, null, "Nh", false); - public static final Element Fl = createAndRegister(GTCEu.id("Flerovium"), 114, 175, -1, null, "Flerovium", "Fl", + public static final Element Fl = REGISTRATE.element("Flerovium", 114, 175, -1, null, "Fl", false); - public static final Element Mc = createAndRegister(GTCEu.id("Moscovium"), 115, 173, -1, null, "Moscovium", "Mc", + public static final Element Mc = REGISTRATE.element("Moscovium", 115, 173, -1, null, "Mc", false); - public static final Element Lv = createAndRegister(GTCEu.id("Livermorium"), 116, 177, -1, null, "Livermorium", "Lv", + public static final Element Lv = REGISTRATE.element("Livermorium", 116, 177, -1, null, "Lv", false); - public static final Element Ts = createAndRegister(GTCEu.id("Tennessine"), 117, 177, -1, null, "Tennessine", "Ts", + public static final Element Ts = REGISTRATE.element("Tennessine", 117, 177, -1, null, "Ts", false); - public static final Element Og = createAndRegister(GTCEu.id("Oganesson"), 118, 176, -1, null, "Oganesson", "Og", + public static final Element Og = REGISTRATE.element("Oganesson", 118, 176, -1, null, "Og", false); - public static final Element Tr = createAndRegister(GTCEu.id("Tritanium"), 119, 178, -1, null, "Tritanium", "Tr", + public static final Element Tr = REGISTRATE.element("Tritanium", 119, 178, -1, null, "Tr", false); - public static final Element Dr = createAndRegister(GTCEu.id("Duranium"), 120, 180, -1, null, "Duranium", "Dr", + public static final Element Dr = REGISTRATE.element("Duranium", 120, 180, -1, null, "Dr", false); - public static final Element Ke = createAndRegister(GTCEu.id("Trinium"), 125, 198, -1, null, "Trinium", "Ke", false); - public static final Element Nq = createAndRegister(GTCEu.id("Naquadah"), 174, 352, 140, null, "Naquadah", "Nq", + public static final Element Ke = REGISTRATE.element("Trinium", 125, 198, -1, null, "Ke", false); + public static final Element Nq = REGISTRATE.element("Naquadah", 174, 352, 140, null, "Nq", true); - public static final Element Nq1 = createAndRegister(GTCEu.id("NaquadahEnriched"), 174, 354, 140, null, - "NaquadahEnriched", "Nq+", true); - public static final Element Nq2 = createAndRegister(GTCEu.id("Naquadria"), 174, 348, 140, null, "Naquadria", "*Nq*", + public static final Element Nq1 = REGISTRATE.element("NaquadahEnriched", 174, 354, 140, null, + "Nq+", true); + public static final Element Nq2 = REGISTRATE.element("Naquadria", 174, 348, 140, null, "*Nq*", true); - public static final Element Nt = createAndRegister(GTCEu.id("Neutronium"), 0, 1000, -1, null, "Neutronium", "Nt", + public static final Element Nt = REGISTRATE.element("Neutronium", 0, 1000, -1, null, "Nt", false); - public static final Element Sp = createAndRegister(GTCEu.id("Space"), 1, 0, -1, null, "Space", "Sp", false); - public static final Element Ma = createAndRegister(GTCEu.id("Magic"), 1, 0, -1, null, "Magic", "Ma", false); - - /** - * @deprecated Use - * {@link GTElements#createAndRegister(ResourceLocation, long, long, long, String, String, String, boolean)} - */ - @Deprecated - public static Element createAndRegister(long protons, long neutrons, long halfLifeSeconds, String decayTo, - String name, String symbol, boolean isIsotope) { - return createAndRegister(GTCEu.id(name), protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); - } - - public static Element createAndRegister(ResourceLocation id, long protons, long neutrons, long halfLifeSeconds, - String decayTo, - String name, String symbol, boolean isIsotope) { - Element element = new Element(protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); - GTRegistries.register(GTRegistries.ELEMENTS, GTCEu.id(name), element); - return element; - } + public static final Element Sp = REGISTRATE.element("Space", 1, 0, -1, null, "Sp", false); + public static final Element Ma = REGISTRATE.element("Magic", 1, 0, -1, null, "Ma", false); public static void init() {} - - /** - * @deprecated Use {@code GTRegistries.ELEMENTS.get(name)} instead - */ - @Deprecated(since = "8.0.0") - public static Element get(String name) { - return GTRegistries.ELEMENTS.get(GTCEu.id(name)); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 98430d0d562..afd19c95554 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -52,7 +52,6 @@ import com.google.common.math.IntMath; import it.unimi.dsi.fastutil.Pair; -import java.util.Iterator; import java.util.List; import java.util.function.BiConsumer; 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 0253c00ddeb..9c643b28139 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterialBlocks.java @@ -110,7 +110,7 @@ private static void registerOreBlock(Material material, GTRegistrate registrate) final TagPrefix.OreType oreType = ore.getValue(); String typePrefix = ""; if (oreTag != TagPrefix.ore) { - typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.name) + "_"; + typePrefix = FormattingUtil.toLowerCaseUnderscore(oreTag.getName()) + "_"; } var entry = registrate.block("%s%s_ore".formatted(typePrefix, material.getName()), properties -> oreTag.blockConstructor().create(properties, oreTag, material)) 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 562f56adf94..6df3f78715d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -539,6 +539,7 @@ private static void excludeAllGemsButNormal(Material material) { public static Material VanadiumGallium; public static Material WroughtIron; public static Material Wulfenite; + public static Material Limonite; public static Material YellowLimonite; public static Material YttriumBariumCuprate; public static Material NetherQuartz; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java index 75d4f2ce3b8..b74c6ab6609 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java @@ -1,57 +1,60 @@ package com.gregtechceu.gtceu.common.data; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; -import com.gregtechceu.gtceu.api.registry.GTRegistries; - -import net.minecraft.resources.ResourceLocation; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.dust; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GTMedicalConditions { // General Conditions - public static final MedicalCondition NONE = register("none", 0xffffff, 0, + public static final MedicalCondition NONE = REGISTRATE.medicalCondition("none", 0xffffff, 0, MedicalCondition.IdleProgressionType.NONE, 0, false); + // takes 5 minutes of having burn-causing items in the player's inventory for them to get the weakness effect // heals 2 seconds' worth of progression every second when not holding those items - public static final MedicalCondition CHEMICAL_BURNS = register("chemical_burns", 0xbc305a, 300, + public static final MedicalCondition CHEMICAL_BURNS = REGISTRATE.medicalCondition("chemical_burns", 0xbc305a, 300, MedicalCondition.IdleProgressionType.HEAL, 2, false, new Symptom.ConfiguredSymptom(Symptom.WEAKNESS)) .setRecipeModifier(builder -> builder .outputFluids(DilutedHydrochloricAcid.getFluid(500)) .outputFluids(DilutedSulfuricAcid.getFluid(750))); + // takes 5 minutes of having poisonous items in the player's inventory for them to get the weakness effect // at 10 minutes, they get a weaker version of the poison effect // heals 2 seconds' worth of progression every second when not holding those items - public static final MedicalCondition POISON = register("poison", 0xA36300, 600, + public static final MedicalCondition POISON = REGISTRATE.medicalCondition("poison", 0xA36300, 600, MedicalCondition.IdleProgressionType.HEAL, 2, true, new Symptom.ConfiguredSymptom(Symptom.WEAK_POISONING), new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)) .setRecipeModifier(builder -> builder .outputFluids(SulfurTrioxide.getFluid(1000))); + // having weakly poisonous items in the player's inventory gives them the weak poison effect // the effect ramps up in 6 "stages", getting progressively worse every stage. It caps out at Weak Poison 10. // does NOT heal automatically - public static final MedicalCondition WEAK_POISON = register("weak_poison", 0x6D7917, 1800, + public static final MedicalCondition WEAK_POISON = REGISTRATE.medicalCondition("weak_poison", 0x6D7917, 1800, MedicalCondition.IdleProgressionType.NONE, 0, false, new Symptom.ConfiguredSymptom(Symptom.WEAK_POISONING, 6, 1800)) .setRecipeModifier(builder -> builder .outputFluids(NitricOxide.getFluid(1000))); + // takes 2.5 minutes of having irritating items in the player's inventory for them to get the weakness effect // at 5 minutes, they begin getting random damage every so often // heals 5 seconds' worth of progression every second when not holding those items - public static final MedicalCondition IRRITANT = register("irritant", 0x02512f, 600, + public static final MedicalCondition IRRITANT = REGISTRATE.medicalCondition("irritant", 0x02512f, 600, MedicalCondition.IdleProgressionType.HEAL, 5, false, new Symptom.ConfiguredSymptom(Symptom.RANDOM_DAMAGE), new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)) .setRecipeModifier(builder -> builder .outputItems(dust, DarkAsh, 4)); + // takes 5 minutes of having nauseating items in the player's inventory for them to get the nausea effect // heals 5 seconds' worth of progression every second when not holding those items - public static final MedicalCondition NAUSEA = register("nausea", 0x1D4A00, 600, + public static final MedicalCondition NAUSEA = REGISTRATE.medicalCondition("nausea", + 0x1D4A00, 600, MedicalCondition.IdleProgressionType.HEAL, 5, false, new Symptom.ConfiguredSymptom(Symptom.NAUSEA, 1, 420, 600)) .setRecipeModifier(builder -> builder @@ -75,7 +78,8 @@ public class GTMedicalConditions { * This condition does NOT heal automatically. You can use {@linkplain GTItems#RAD_AWAY_PILL * rad-away pills} to heal it. */ - public static final MedicalCondition CARCINOGEN = register("carcinogen", 0x0f570f, 36000, + public static final MedicalCondition CARCINOGEN = REGISTRATE.medicalCondition("carcinogen", + 0x0f570f, 36000, MedicalCondition.IdleProgressionType.NONE, 0, true, new Symptom.ConfiguredSymptom(Symptom.DEATH), new Symptom.ConfiguredSymptom(Symptom.HEALTH_DEBUFF, 10800, 21600), @@ -86,15 +90,13 @@ public class GTMedicalConditions { new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 3600, 14400)); // Material specific Conditions - public static final MedicalCondition ASBESTOSIS = register("asbestosis", 0xe3e3e3, 5000, + public static final MedicalCondition ASBESTOSIS = REGISTRATE.medicalCondition("asbestosis", 0xe3e3e3, 5000, MedicalCondition.IdleProgressionType.HEAL, 1, true, - // new Symptom.ConfiguredSymptom(Symptom.HEALTH_DEBUFF, 3000, 5000), - // new Symptom.ConfiguredSymptom(Symptom.AIR_SUPPLY_DEBUFF, 1500, 3500), - // new Symptom.ConfiguredSymptom(Symptom.HUNGER, 500, 4000), new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 1200, 5000)) .setRecipeModifier(builder -> builder .outputItems(dust, Asbestos, 4)); - public static final MedicalCondition ARSENICOSIS = register("arsenicosis", 0xbd4b15, 1000, + + public static final MedicalCondition ARSENICOSIS = REGISTRATE.medicalCondition("arsenicosis", 0xbd4b15, 1000, MedicalCondition.IdleProgressionType.HEAL, 1, true, new Symptom.ConfiguredSymptom(Symptom.WITHER), new Symptom.ConfiguredSymptom(Symptom.NAUSEA), @@ -103,41 +105,24 @@ public class GTMedicalConditions { // new Symptom.ConfiguredSymptom(Symptom.HUNGER, 2, .2f)) .setRecipeModifier(builder -> builder .outputItems(dust, Arsenic, 4)); - public static final MedicalCondition METHANOL_POISONING = register("methanol_poisoning", 0xaa8800, 600, - MedicalCondition.IdleProgressionType.HEAL, .5f, true, - new Symptom.ConfiguredSymptom(Symptom.POISONING), - new Symptom.ConfiguredSymptom(Symptom.BLINDNESS, 2, 450, 600), - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 300, 600), - new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 1, 150, 600)) + + public static final MedicalCondition METHANOL_POISONING = REGISTRATE + .medicalCondition("methanol_poisoning", 0xaa8800, 600, + MedicalCondition.IdleProgressionType.HEAL, .5f, true, + new Symptom.ConfiguredSymptom(Symptom.POISONING), + new Symptom.ConfiguredSymptom(Symptom.BLINDNESS, 2, 450, 600), + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 300, 600), + new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 1, 150, 600)) .setRecipeModifier(builder -> builder .outputFluids(Methanol.getFluid(1000))); - public static final MedicalCondition CARBON_MONOXIDE_POISONING = register("carbon_monoxide_poisoning", - 0x041525, 2000, MedicalCondition.IdleProgressionType.HEAL, 1, true, - new Symptom.ConfiguredSymptom(Symptom.DEATH), + + public static final MedicalCondition CARBON_MONOXIDE_POISONING = REGISTRATE.medicalCondition( + "carbon_monoxide_poisoning", + 0x041525, 2000, + MedicalCondition.IdleProgressionType.HEAL, 1, true, new Symptom.ConfiguredSymptom(Symptom.DEATH), new Symptom.ConfiguredSymptom(Symptom.NAUSEA), new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 2, 1500, 2000), - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 500, 2000)) - .setRecipeModifier(builder -> builder - .outputFluids(CarbonMonoxide.getFluid(1000))); - - public static MedicalCondition register(ResourceLocation id, int color, - int maxProgression, MedicalCondition.IdleProgressionType progressionType, - float progressionRate, boolean canBePermanent, - Symptom.ConfiguredSymptom... symptoms) { - var condition = new MedicalCondition(id, color, maxProgression, - progressionType, progressionRate, canBePermanent, symptoms); - GTRegistries.register(GTRegistries.MEDICAL_CONDITIONS, id, condition); - return condition; - } - - // internal variant of the above that skips having to write `register(GTCEu.id(...` - private static MedicalCondition register(String id, int color, - int maxProgression, MedicalCondition.IdleProgressionType progressionType, - float progressionRate, boolean canBePermanent, - Symptom.ConfiguredSymptom... symptoms) { - return register(GTCEu.id(id), color, maxProgression, progressionType, progressionRate, canBePermanent, - symptoms); - } + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 500, 2000)); public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java index 83caa64086a..34a216773ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java @@ -21,5 +21,4 @@ public static void init(IEventBus modBus) { public static final DeferredHolder WEAK_POISON = MOB_EFFECTS.register("weak_poison", () -> new GTPoisonEffect(MobEffectCategory.HARMFUL, 0x6D7917)); - } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java index c1e28103364..09a94815ca8 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java @@ -39,5 +39,4 @@ public static void init(IEventBus modBus) { }); public static final DeferredHolder, SimpleParticleType> MUFFLER_PARTICLE = PARTICLE_TYPES .register("muffler", () -> new SimpleParticleType(false)); - } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java index 730683e3abb..4a106c21850 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.misc.virtualregistry.VirtualEnderRegistry; import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.renderer.placeholder.ModulePlaceholderRenderer; import com.gregtechceu.gtceu.client.renderer.placeholder.QuadPlaceholderRenderer; import com.gregtechceu.gtceu.client.renderer.placeholder.RectPlaceholderRenderer; @@ -51,9 +52,12 @@ import net.minecraft.world.phys.Vec3; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import net.neoforged.neoforge.items.IItemHandler; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import com.tterrag.registrate.util.RegistrateDistExecutor; import org.jetbrains.annotations.NotNull; @@ -63,1162 +67,1255 @@ public class GTPlaceholders { - public static int countItems(String id, @Nullable IItemHandler itemHandler) { - if (itemHandler == null) return 0; - int cnt = 0; - for (int i = 0; i < itemHandler.getSlots(); i++) { - ItemStack itemStack = itemHandler.getStackInSlot(i); - String itemId = "%s:%s".formatted(itemStack.getItem().getCreatorModId(itemStack), - itemStack.getItem().toString()); - if (itemId.equals(id)) cnt += itemStack.getCount(); + private static final DeferredRegister PLACEHOLDERS = DeferredRegister + .create(GTRegistries.Keys.PLACEHOLDER, GTCEu.MOD_ID); + + public static void init(IEventBus modBus) { + RegistrateDistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> GTPlaceholders::initRenderers); + PLACEHOLDERS.register(modBus); + + if (GTCEu.Mods.isAE2Loaded()) { + GTAEPlaceholders.init(modBus); + } + + if (GTCEu.Mods.isCCTweakedLoaded()) { + CCTweakedPlugin.initPlaceholders(modBus); } - return cnt; } - public static int countFluids(@Nullable String id, @Nullable IFluidHandler fluidHandler) { - if (fluidHandler == null) return 0; - int cnt = 0; - for (int i = 0; i < fluidHandler.getTanks(); i++) { - FluidStack fluidStack = fluidHandler.getFluidInTank(i); - String fluidId = Objects.requireNonNull(BuiltInRegistries.FLUID.getKey(fluidStack.getFluid())).toString(); - if (id == null || fluidId.equals(id)) cnt += fluidStack.getAmount(); - } - return cnt; - } + public static final DeferredHolder ENERGY = PLACEHOLDERS.register("energy", + () -> new Placeholder("energy") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { + return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().stored().longValue()); + } + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static final DeferredHolder ENERGY_CAPACITY = PLACEHOLDERS.register( + "energy_capacity", + () -> new Placeholder("energyCapacity") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { + return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().capacity().longValue()); + } + IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); + return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static final DeferredHolder CALCULATION = PLACEHOLDERS.register("calc", + () -> new Placeholder("calc") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + String expression = args.stream().map(MultiLineComponent::toString).reduce("", (a, b) -> a + b); + ParseResult result = GTMath.parseExpression(expression, 0, true); + if (result.isFailure()) + throw new PlaceholderException(result.getError().toString()); + return MultiLineComponent.literal(result.getResult().getNumberValue().toString()); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static final DeferredHolder ITEM_COUNT = PLACEHOLDERS.register("item_count", + () -> new Placeholder("itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.pos() == null) throw new NoTargetException(); + IItemHandler itemHandler = GTCapabilityHelper.getItemHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) { + return MultiLineComponent.literal(countItems((ItemFilter) null, itemHandler)); + } + if (args.size() == 1) { + return MultiLineComponent.literal(countItems( + GTStringUtils.componentsToString(args.getFirst()), itemHandler)); + } + if (GTStringUtils.equals(args.getFirst(), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + if (ctx.itemStackHandler() == null) + throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + try { + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), + itemHandler)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } + } + throw new InvalidArgsException(); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder FLUID_COUNT = PLACEHOLDERS.register("fluid_count", + () -> new Placeholder("fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.pos() == null) throw new NoTargetException(); + IFluidHandler fluidHandler = GTCapabilityHelper.getFluidHandler(ctx.level(), ctx.pos(), ctx.side()); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, fluidHandler)); + if (args.size() == 1) + return MultiLineComponent + .literal(countFluids(GTStringUtils.componentsToString(args.getFirst()), fluidHandler)); + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.empty(); // unreachable + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder IF = PLACEHOLDERS.register("if", + () -> new Placeholder("if") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + if (GTStringUtils.toDouble(args.get(0)) != 0) { + return new MultiLineComponent(args.get(1)).setIgnoreSpaces(true); + } else if (args.size() > 2) { + return new MultiLineComponent(args.get(2)).setIgnoreSpaces(true); + } else return MultiLineComponent.empty(); + } catch (NumberFormatException e) { + if (args.size() > 2 && args.get(0).equalsString("")) + return args.get(2).setIgnoreSpaces(true); + return args.get(1).setIgnoreSpaces(true); + } + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder COLOR = PLACEHOLDERS.register("color", + () -> new Placeholder("color") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + ChatFormatting color = ChatFormatting.getByName(GTStringUtils.componentsToString(args.getFirst())); + if (color == null) throw new InvalidArgsException(); + return new MultiLineComponent(args.get(1).stream().map(c -> c.withStyle(color)).toList()); + } + }); + + public static DeferredHolder UNDERLINE = PLACEHOLDERS.register("underline", + () -> new Placeholder("underline") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.UNDERLINE)).toList()); + } + }); + + public static DeferredHolder STRIKE = PLACEHOLDERS.register("strike", + () -> new Placeholder("strike") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.STRIKETHROUGH)).toList()); + } + }); + + public static DeferredHolder OBF = PLACEHOLDERS.register("obf", + () -> new Placeholder("obf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return new MultiLineComponent( + args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.OBFUSCATED)).toList()); + } + }); + + public static DeferredHolder RANDOM = PLACEHOLDERS.register("random", + () -> new Placeholder("random") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + return MultiLineComponent.literal(GTValues.RNG.nextIntBetweenInclusive( + PlaceholderUtils.toInt(args.getFirst()), PlaceholderUtils.toInt(args.get(1)))); + } + }); + + public static DeferredHolder REPEAT = PLACEHOLDERS.register("repeat", + () -> new Placeholder("repeat") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + int count = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("n", 0, 50000, count); + MultiLineComponent arg = MultiLineComponent.empty(); + for (int i = 1; i < args.size(); i++) { + arg.append(args.get(i)); + if (i != args.size() - 1) arg.append(" "); + } + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < count; i++) out.append(arg); + return out.setIgnoreSpaces(true); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder BLOCK = PLACEHOLDERS.register("block", + () -> new Placeholder("block") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal("â–ˆ"); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder TICK = PLACEHOLDERS.register("tick", + () -> new Placeholder("tick") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(ctx.level().getGameTime()); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder SELECT = PLACEHOLDERS.register("select", + () -> new Placeholder("select") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkArgs(args, i + 1, true); + return new MultiLineComponent(args.get(i + 1)).setIgnoreSpaces(true); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder REDSTONE = PLACEHOLDERS.register("redstone", + () -> ConfigHolder.INSTANCE.compat.createCompat && GTCEu.Mods.isCreateLoaded() ? + GTCreateIntegration.getCreateRedstonePlaceholder() : new Placeholder("redstone") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + if (GTStringUtils.equals(args.get(0), "get")) { + Direction direction = Direction.byName(GTStringUtils.componentsToString(args.get(1))); + if (direction == null) + throw new InvalidArgsException(); + return MultiLineComponent.literal(ctx.level() + .getSignal(ctx.pos().relative(direction), direction)); + } else if (GTStringUtils.equals(args.get(0), "set")) { + int power = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("redstone power", 0, 15, power); + if (ctx.cover() == null) throw new NotSupportedException(); + ctx.cover().setRedstoneSignalOutput(power); + return MultiLineComponent.empty(); + } + throw new InvalidArgsException(); + } + }); + + public static DeferredHolder PREVIOUS_TEXT = PLACEHOLDERS.register("previous_text", + () -> new Placeholder("previousText") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int i = PlaceholderUtils.toInt(args.getFirst()); + if (ctx.previousText() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("line", 1, ctx.previousText().size(), i); + return MultiLineComponent.of(ctx.previousText().get(i - 1)).setIgnoreSpaces(true); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder PROGRESS = PLACEHOLDERS.register("progress", + () -> new Placeholder("progress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getProgress()); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder MAX_PROGRESS = PLACEHOLDERS.register("max_progress", + () -> new Placeholder("maxProgress") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.getMaxProgress()); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder MAINTENANCE = PLACEHOLDERS.register("maintenance", + () -> new Placeholder("maintenance") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + MetaMachine machine = MetaMachine.getMachine(ctx.level(), ctx.pos()); + if (machine instanceof MaintenanceHatchPartMachine maint) + return MultiLineComponent.literal(maint.hasMaintenanceProblems() ? 1 : 0); + throw new NotSupportedException(); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder ACTIVE = PLACEHOLDERS.register("active", + () -> new Placeholder("active") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), + ctx.pos(), ctx.side()); + if (workable == null) throw new NotSupportedException(); + return MultiLineComponent.literal(workable.isActive() ? 1 : 0); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder VOLTAGE = PLACEHOLDERS.register("voltage", + () -> new Placeholder("voltage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageVoltage()); + } + throw new NotSupportedException(); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder AMPERAGE = PLACEHOLDERS.register("amperage", + () -> new Placeholder("amperage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 0); + if (ctx.pos() == null) throw new NoTargetException(); + if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { + return MultiLineComponent.literal(cable.getAverageAmperage()); + } + throw new NotSupportedException(); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder COUNT = PLACEHOLDERS.register("count", + () -> new Placeholder("count") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + String arg1 = GTStringUtils.componentsToString(args.getFirst()); + int cnt = -1; + for (List arg : args) { + if (GTStringUtils.equals(arg, arg1)) cnt++; + } + return MultiLineComponent.literal(cnt); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder DATA = PLACEHOLDERS.register("data", + () -> new Placeholder("data") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + try { + int slot = PlaceholderUtils.toInt(args.get(1)); + slot = Math.max(slot, 1); + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 0, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack; + if (slot == 0) { + if (ctx.monitorGroup() == null) throw new NotSupportedException(); + if (ctx.monitorGroup().getTargetRaw() == null) throw new NoTargetException(); + IMonitorComponent component = GTCapabilityHelper.getMonitorComponent(ctx.level(), + ctx.monitorGroup().getTargetRaw(), null); + if (component != null && component.getDataItems() != null) { + stack = component.getDataItems().getStackInSlot(ctx.monitorGroup().getDataSlot()); + } else throw new NotSupportedException(); + } else stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + int capacity = -1; + DataItem component = stack.get(GTDataComponents.DATA_ITEM); + if (component != null) capacity = component.capacity(); + if (capacity == -1) throw new MissingItemException("any data item", slot); + PlaceholderUtils.checkRange("index", 0, capacity - 1, PlaceholderUtils.toInt(args.get(2))); + + FormatStringList immutableData = stack.get(GTDataComponents.COMPUTER_MONITOR_DATA); + if (immutableData == null) { + throw new MissingItemException("any data item", slot); + } + FormatStringList.Mutable monitorData = immutableData.mutable(); + while (monitorData.size() <= PlaceholderUtils.toInt(args.get(2))) { + monitorData.add(""); + } + + int p = stack.getOrDefault(GTDataComponents.COMPUTER_MONITOR_P, 0); + if (GTStringUtils.equals(args.get(2), "")) { + args.set(2, MultiLineComponent.literal(p)); + } + if (GTStringUtils.equals(args.getFirst(), "get")) { + return MultiLineComponent.literal( + monitorData.get(PlaceholderUtils.toInt(args.get(2)) % capacity)) + .setIgnoreSpaces(true); + } else if (args.getFirst().equalsString("set")) { + monitorData.set(PlaceholderUtils.toInt(args.get(2)) % capacity, args.get(3).toString()); + stack.set(GTDataComponents.COMPUTER_MONITOR_DATA, monitorData.toImmutable()); + return MultiLineComponent.empty(); + } else if (args.getFirst().equalsString("setp")) { + stack.set(GTDataComponents.COMPUTER_MONITOR_P, + PlaceholderUtils.toInt(args.get(3)) % capacity); + return MultiLineComponent.empty(); + } else if (args.getFirst().equalsString("inc")) { + stack.set(GTDataComponents.COMPUTER_MONITOR_P, (p + 1) % capacity); + return MultiLineComponent.empty(); + } else if (args.getFirst().equalsString("dec")) { + stack.set(GTDataComponents.COMPUTER_MONITOR_P, p == 0 ? capacity - 1 : p - 1); + return MultiLineComponent.empty(); + } else { + throw new InvalidArgsException(); + } + } catch (IndexOutOfBoundsException e) { + throw new InvalidArgsException(); + } + } + }); + + public static DeferredHolder COMBINE = PLACEHOLDERS.register("combine", + () -> new Placeholder("combine") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < args.size(); i++) { + out.append(args.get(i)); + if (i != args.size() - 1) out.append(" "); + } + return out.setIgnoreSpaces(true); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder NBT = PLACEHOLDERS.register("nbt", + () -> new Placeholder("nbt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1, true); + int slot = GTStringUtils.toInt(args.getFirst()); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + return MultiLineComponent + .literal(ctx.itemStackHandler().getStackInSlot(slot - 1).getComponents().toString()); + } + + @Override + public boolean isView() { + return true; + } + }); + + public static DeferredHolder TO_CHARS = PLACEHOLDERS.register("to_chars", + () -> new Placeholder("toChars") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (args.getFirst().isEmpty()) return MultiLineComponent.empty(); + StringBuilder out = new StringBuilder(); + for (char c : GTStringUtils.componentsToString(args.getFirst()).toCharArray()) + out.append(c).append(' '); + return MultiLineComponent.literal(out.substring(0, out.length() - 2)); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder TO_ASCII = PLACEHOLDERS.register("to_ascii", + () -> new Placeholder("toAscii") { - public static int countItems(@Nullable ItemFilter filter, @Nullable IItemHandler itemHandler) { - if (itemHandler == null) - return -1; - int cnt = 0; - for (int i = 0; i < itemHandler.getSlots(); i++) { - if (filter == null || filter.test(itemHandler.getStackInSlot(i))) - cnt += itemHandler.getStackInSlot(i).getCount(); - } - return cnt; - } + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + String arg = args.getFirst().toString(); + if (arg.length() != 1) throw new InvalidArgsException(); + return MultiLineComponent.literal((int) arg.toCharArray()[0]); + } - public static void init() { - RegistrateDistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> GTPlaceholders::initRenderers); - PlaceholderHandler.addPlaceholder(new Placeholder("energy") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { - return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().stored().longValue()); - } - IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); - return MultiLineComponent.literal(energy != null ? energy.getEnergyStored() : 0); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("energyCapacity") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof IEnergyInfoProvider energyInfoProvider) { - return MultiLineComponent.literal(energyInfoProvider.getEnergyInfo().capacity().longValue()); - } - IEnergyContainer energy = GTCapabilityHelper.getEnergyContainer(ctx.level(), ctx.pos(), ctx.side()); - return MultiLineComponent.literal(energy != null ? energy.getEnergyCapacity() : 0); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("calc") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - String expression = args.stream().map(MultiLineComponent::toString).reduce("", (a, b) -> a + b); - ParseResult result = GTMath.parseExpression(expression, 0, true); - if (result.isFailure()) - throw new PlaceholderException(result.getError().toString()); - return MultiLineComponent.literal(result.getResult().getNumberValue().toString()); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("itemCount") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.pos() == null) throw new NoTargetException(); - IItemHandler itemHandler = GTCapabilityHelper.getItemHandler(ctx.level(), ctx.pos(), ctx.side()); - if (args.isEmpty()) { - return MultiLineComponent.literal(countItems((ItemFilter) null, itemHandler)); - } - if (args.size() == 1) { - return MultiLineComponent.literal(countItems( - GTStringUtils.componentsToString(args.getFirst()), itemHandler)); - } - if (GTStringUtils.equals(args.getFirst(), "filter")) { - int slot = PlaceholderUtils.toInt(args.get(1)); - if (ctx.itemStackHandler() == null) - throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - try { - return MultiLineComponent.literal(countItems( - ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), itemHandler)); - } catch (NullPointerException e) { - throw new MissingItemException("filter", slot); - } + @Override + public boolean isPure() { + return true; } - throw new InvalidArgsException(); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("fluidCount") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.pos() == null) throw new NoTargetException(); - IFluidHandler fluidHandler = GTCapabilityHelper.getFluidHandler(ctx.level(), ctx.pos(), ctx.side()); - if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, fluidHandler)); - if (args.size() == 1) - return MultiLineComponent - .literal(countFluids(GTStringUtils.componentsToString(args.getFirst()), fluidHandler)); - PlaceholderUtils.checkArgs(args, 1); - return MultiLineComponent.empty(); // unreachable - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("if") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2, true); - try { - if (GTStringUtils.toDouble(args.get(0)) != 0) { - return new MultiLineComponent(args.get(1)).setIgnoreSpaces(true); - } else if (args.size() > 2) { - return new MultiLineComponent(args.get(2)).setIgnoreSpaces(true); - } else return MultiLineComponent.empty(); - } catch (NumberFormatException e) { - if (args.size() > 2 && args.get(0).equalsString("")) - return args.get(2).setIgnoreSpaces(true); - return args.get(1).setIgnoreSpaces(true); - } - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("color") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2); - ChatFormatting color = ChatFormatting.getByName(GTStringUtils.componentsToString(args.getFirst())); - if (color == null) throw new InvalidArgsException(); - return new MultiLineComponent(args.get(1).stream().map(c -> c.withStyle(color)).toList()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("underline") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - return new MultiLineComponent( - args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.UNDERLINE)).toList()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("strike") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - return new MultiLineComponent( - args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.STRIKETHROUGH)).toList()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("obf") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - return new MultiLineComponent( - args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.OBFUSCATED)).toList()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("random") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2); - return MultiLineComponent.literal(GTValues.RNG.nextIntBetweenInclusive( - PlaceholderUtils.toInt(args.getFirst()), PlaceholderUtils.toInt(args.get(1)))); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("repeat") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1, true); - int count = PlaceholderUtils.toInt(args.get(0)); - PlaceholderUtils.checkRange("n", 0, 50000, count); - MultiLineComponent arg = MultiLineComponent.empty(); - for (int i = 1; i < args.size(); i++) { - arg.append(args.get(i)); - if (i != args.size() - 1) arg.append(" "); - } - MultiLineComponent out = MultiLineComponent.empty(); - for (int i = 0; i < count; i++) out.append(arg); - return out.setIgnoreSpaces(true); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("block") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - return MultiLineComponent.literal("â–ˆ"); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("tick") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - return MultiLineComponent.literal(ctx.level().getGameTime()); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("select") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1, true); - int i = PlaceholderUtils.toInt(args.get(0)); - PlaceholderUtils.checkArgs(args, i + 1, true); - return new MultiLineComponent(args.get(i + 1)).setIgnoreSpaces(true); - } - - @Override - public boolean isPure() { - return true; - } - }); - - if (!GTCEu.Mods.isCreateLoaded() || !ConfigHolder.INSTANCE.compat.createCompat) { - PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { + }); + + public static DeferredHolder FROM_ASCII = PLACEHOLDERS.register("from_ascii", + () -> new Placeholder("fromAscii") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + return MultiLineComponent.literal((char) PlaceholderUtils.toInt(args.get(0))).setIgnoreSpaces(true); + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder SUBLIST = PLACEHOLDERS.register("sublist", + () -> new Placeholder("subList") { @Override public MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException { PlaceholderUtils.checkArgs(args, 2, true); - if (GTStringUtils.equals(args.getFirst(), "get")) { - Direction direction = Direction.byName(GTStringUtils.componentsToString(args.get(1))); - if (direction == null) - throw new InvalidArgsException(); - return MultiLineComponent.literal(ctx.level() - .getSignal(ctx.pos().relative(direction), direction)); - } else if (GTStringUtils.equals(args.get(0), "set")) { - int power = PlaceholderUtils.toInt(args.get(1)); - PlaceholderUtils.checkRange("redstone power", 0, 15, power); - if (ctx.cover() == null) throw new NotSupportedException(); - ctx.cover().setRedstoneSignalOutput(power); - return MultiLineComponent.empty(); - } - throw new InvalidArgsException(); + int l = PlaceholderUtils.toInt(args.getFirst()); + int r = PlaceholderUtils.toInt(args.get(1)); + PlaceholderUtils.checkRange("start index", 0, args.size(), l); + PlaceholderUtils.checkRange("end index", 0, args.size(), r); + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = l; i < r - 1; i++) out.append(args.get(i)).append(' '); + out.append(args.get(r - 1)); + out.setIgnoreSpaces(true); + return out; + } + + @Override + public boolean isPure() { + return true; } }); - } - PlaceholderHandler.addPlaceholder(new Placeholder("previousText") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - int i = PlaceholderUtils.toInt(args.getFirst()); - if (ctx.previousText() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("line", 1, ctx.previousText().size(), i); - return MultiLineComponent.of(ctx.previousText().get(i - 1)).setIgnoreSpaces(true); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("progress") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), - ctx.pos(), ctx.side()); - if (workable == null) throw new NotSupportedException(); - return MultiLineComponent.literal(workable.getProgress()); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("maxProgress") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), - ctx.pos(), ctx.side()); - if (workable == null) throw new NotSupportedException(); - return MultiLineComponent.literal(workable.getMaxProgress()); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("maintenance") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - MetaMachine machine = MetaMachine.getMachine(ctx.level(), ctx.pos()); - if (machine instanceof MaintenanceHatchPartMachine maint) - return MultiLineComponent.literal(maint.hasMaintenanceProblems() ? 1 : 0); - throw new NotSupportedException(); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("active") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - IWorkable workable = GTCapabilityHelper.getWorkable(ctx.level(), - ctx.pos(), ctx.side()); - if (workable == null) throw new NotSupportedException(); - return MultiLineComponent.literal(workable.isActive() ? 1 : 0); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("voltage") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { - return MultiLineComponent.literal(cable.getAverageVoltage()); - } - throw new NotSupportedException(); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("amperage") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 0); - if (ctx.pos() == null) throw new NoTargetException(); - if (ctx.level().getBlockEntity(ctx.pos()) instanceof CableBlockEntity cable) { - return MultiLineComponent.literal(cable.getAverageAmperage()); - } - throw new NotSupportedException(); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("count") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1, true); - String arg1 = GTStringUtils.componentsToString(args.getFirst()); - int cnt = -1; - for (List arg : args) { - if (GTStringUtils.equals(arg, arg1)) cnt++; - } - return MultiLineComponent.literal(cnt); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("data") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2, true); - try { - int slot = PlaceholderUtils.toInt(args.get(1)); - slot = Math.max(slot, 1); + public static DeferredHolder CMP = PLACEHOLDERS.register("cmp", + () -> new Placeholder("cmp") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 3); + double a = PlaceholderUtils.toDouble(args.getFirst()); + double b = PlaceholderUtils.toDouble(args.get(2)); + return switch (args.get(1).toString()) { + case ">" -> MultiLineComponent.literal(a > b ? 1 : 0); + case "<" -> MultiLineComponent.literal(a < b ? 1 : 0); + case ">=" -> MultiLineComponent.literal(a >= b ? 1 : 0); + case "<=" -> MultiLineComponent.literal(a <= b ? 1 : 0); + case "==" -> MultiLineComponent.literal(a == b ? 1 : 0); + case "!=" -> MultiLineComponent.literal(a != b ? 1 : 0); + default -> throw new InvalidArgsException(); + }; + } + + @Override + public boolean isPure() { + return true; + } + }); + + public static DeferredHolder BF = PLACEHOLDERS.register("bf", + () -> new Placeholder("bf") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int slot = PlaceholderUtils.toInt(args.getFirst()); PlaceholderUtils.checkRange("slot index", 1, 8, slot); if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 0, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack; - if (slot == 0) { - if (ctx.monitorGroup() == null) throw new NotSupportedException(); - if (ctx.monitorGroup().getTargetRaw() == null) throw new NoTargetException(); - IMonitorComponent component = GTCapabilityHelper.getMonitorComponent(ctx.level(), - ctx.monitorGroup().getTargetRaw(), null); - if (component != null && component.getDataItems() != null) { - stack = component.getDataItems().getStackInSlot(ctx.monitorGroup().getDataSlot()); - } else throw new NotSupportedException(); - } else stack = ctx.itemStackHandler().getStackInSlot(slot - 1); - int capacity = -1; - DataItem component = stack.get(GTDataComponents.DATA_ITEM); - if (component != null) capacity = component.capacity(); - if (capacity == -1) throw new MissingItemException("any data item", slot); - PlaceholderUtils.checkRange("index", 0, capacity - 1, PlaceholderUtils.toInt(args.get(2))); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); FormatStringList immutableData = stack.get(GTDataComponents.COMPUTER_MONITOR_DATA); if (immutableData == null) { throw new MissingItemException("any data item", slot); } FormatStringList.Mutable monitorData = immutableData.mutable(); - while (monitorData.size() <= PlaceholderUtils.toInt(args.get(2))) { - monitorData.add(""); - } - int p = stack.getOrDefault(GTDataComponents.COMPUTER_MONITOR_P, 0); - if (GTStringUtils.equals(args.get(2), "")) { - args.set(2, MultiLineComponent.literal(p)); + int operationsLeft = 5000; + int p = 0, start = 0, cnt = 0, num = 0; + String rawCode = args.get(1).toString().replaceAll("[^+\\-><\\[\\]]", ""); + StringBuilder codeBuilder = new StringBuilder(); + // optimize BF code ("[----[+++]-<<-]" -> "[4-[3+]1-2<1-]") + @Nullable + Character cur = null; + for (char i : rawCode.toCharArray()) { + if (cur != null) { + if (cur == i) cnt++; + else { + codeBuilder.append(cnt).append(cur); + cur = null; + cnt = 0; + } + } + if (cur == null) { + if (List.of('+', '-', '<', '>').contains(i)) { + cur = i; + cnt = 1; + } else codeBuilder.append(i); + } } - if (GTStringUtils.equals(args.getFirst(), "get")) { - return MultiLineComponent.literal( - monitorData.get(PlaceholderUtils.toInt(args.get(2)) % capacity)).setIgnoreSpaces(true); - } else if (args.getFirst().equalsString("set")) { - monitorData.set(PlaceholderUtils.toInt(args.get(2)) % capacity, args.get(3).toString()); - stack.set(GTDataComponents.COMPUTER_MONITOR_DATA, monitorData.toImmutable()); - return MultiLineComponent.empty(); - } else if (args.getFirst().equalsString("setp")) { - stack.set(GTDataComponents.COMPUTER_MONITOR_P, PlaceholderUtils.toInt(args.get(3)) % capacity); - return MultiLineComponent.empty(); - } else if (args.getFirst().equalsString("inc")) { - stack.set(GTDataComponents.COMPUTER_MONITOR_P, (p + 1) % capacity); - return MultiLineComponent.empty(); - } else if (args.getFirst().equalsString("dec")) { - stack.set(GTDataComponents.COMPUTER_MONITOR_P, p == 0 ? capacity - 1 : p - 1); - return MultiLineComponent.empty(); - } else { - throw new InvalidArgsException(); + if (cur != null) codeBuilder.append(cnt).append(cur); + String code = codeBuilder.toString(); + Stack loops = new Stack<>(); + if (!getData(ctx).getBoolean("completed")) { + p = getData(ctx).getInt("pointer"); + start = getData(ctx).getInt("index"); + num = getData(ctx).getInt("num"); } - } catch (IndexOutOfBoundsException e) { - throw new InvalidArgsException(); - } - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("combine") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, List args) { - MultiLineComponent out = MultiLineComponent.empty(); - for (int i = 0; i < args.size(); i++) { - out.append(args.get(i)); - if (i != args.size() - 1) out.append(" "); - } - return out.setIgnoreSpaces(true); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("nbt") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1, true); - int slot = GTStringUtils.toInt(args.getFirst()); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - return MultiLineComponent - .literal(ctx.itemStackHandler().getStackInSlot(slot - 1).getComponents().toString()); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("toChars") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - if (args.getFirst().isEmpty()) return MultiLineComponent.empty(); - StringBuilder out = new StringBuilder(); - for (char c : GTStringUtils.componentsToString(args.getFirst()).toCharArray()) - out.append(c).append(' '); - return MultiLineComponent.literal(out.substring(0, out.length() - 2)); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("toAscii") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - String arg = args.getFirst().toString(); - if (arg.length() != 1) throw new InvalidArgsException(); - return MultiLineComponent.literal((int) arg.toCharArray()[0]); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("fromAscii") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - return MultiLineComponent.literal((char) PlaceholderUtils.toInt(args.get(0))).setIgnoreSpaces(true); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("subList") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2, true); - int l = PlaceholderUtils.toInt(args.getFirst()); - int r = PlaceholderUtils.toInt(args.get(1)); - PlaceholderUtils.checkRange("start index", 0, args.size(), l); - PlaceholderUtils.checkRange("end index", 0, args.size(), r); - MultiLineComponent out = MultiLineComponent.empty(); - for (int i = l; i < r - 1; i++) out.append(args.get(i)).append(' '); - out.append(args.get(r - 1)); - out.setIgnoreSpaces(true); - return out; - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("cmp") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 3); - double a = PlaceholderUtils.toDouble(args.getFirst()); - double b = PlaceholderUtils.toDouble(args.get(2)); - return switch (args.get(1).toString()) { - case ">" -> MultiLineComponent.literal(a > b ? 1 : 0); - case "<" -> MultiLineComponent.literal(a < b ? 1 : 0); - case ">=" -> MultiLineComponent.literal(a >= b ? 1 : 0); - case "<=" -> MultiLineComponent.literal(a <= b ? 1 : 0); - case "==" -> MultiLineComponent.literal(a == b ? 1 : 0); - case "!=" -> MultiLineComponent.literal(a != b ? 1 : 0); - default -> throw new InvalidArgsException(); - }; - } - - @Override - public boolean isPure() { - return true; - } - }); - - PlaceholderHandler.addPlaceholder(new Placeholder("bf") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2); - int slot = PlaceholderUtils.toInt(args.getFirst()); - PlaceholderUtils.checkRange("slot index", 1, 8, slot); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); - FormatStringList immutableData = stack.get(GTDataComponents.COMPUTER_MONITOR_DATA); - if (immutableData == null) { - throw new MissingItemException("any data item", slot); - } - FormatStringList.Mutable monitorData = immutableData.mutable(); - - int operationsLeft = 5000; - int p = 0, start = 0, cnt = 0, num = 0; - String rawCode = args.get(1).toString().replaceAll("[^+\\-><\\[\\]]", ""); - StringBuilder codeBuilder = new StringBuilder(); - // optimize BF code ("[----[+++]-<<-]" -> "[4-[3+]1-2<1-]") - @Nullable - Character cur = null; - for (char i : rawCode.toCharArray()) { - if (cur != null) { - if (cur == i) cnt++; - else { - codeBuilder.append(cnt).append(cur); - cur = null; - cnt = 0; + getData(ctx).putBoolean("completed", true); + for (int i = 0; i < code.length(); i++) { + if (operationsLeft <= 0) { + getData(ctx).putBoolean("completed", false); + getData(ctx).putInt("pointer", p); + getData(ctx).putInt("index", i); + getData(ctx).putInt("num", num); + break; } + while (monitorData.size() <= p) { + monitorData.add("0"); + } + if (monitorData.get(p).isEmpty()) { + monitorData.set(i, "0"); + } + try { + switch (code.charAt(i)) { + case '+' -> monitorData.set(p, + String.valueOf((Integer.parseInt(monitorData.get(p)) + num) % 256)); + case '-' -> { + int tmp = Integer.parseInt(monitorData.get(p)) - num; + if (tmp < 0) tmp = (256 - ((-tmp) % 256)) % 256; + monitorData.set(p, String.valueOf(tmp)); + } + case '>' -> p += num; + case '<' -> p -= num; + case '[' -> loops.push(i); + case ']' -> { + if (Integer.parseInt(monitorData.get(p)) == 0) { + loops.pop(); + } else { + i = loops.peek(); + } + } + default -> throw new PlaceholderException(Component + .translatable("gtceu.computer_monitor_cover.error.bf_invalid", i).getString()); + } + } catch (Exception e) { + + } + if (Character.isDigit(code.charAt(i))) { + num = num * 10 + code.charAt(i) - '0'; + } else num = 0; + operationsLeft--; } - if (cur == null) { - if (List.of('+', '-', '<', '>').contains(i)) { - cur = i; - cnt = 1; - } else codeBuilder.append(i); - } + return MultiLineComponent.empty(); } - if (cur != null) codeBuilder.append(cnt).append(cur); - String code = codeBuilder.toString(); - Stack loops = new Stack<>(); - if (!getData(ctx).getBoolean("completed")) { - p = getData(ctx).getInt("pointer"); - start = getData(ctx).getInt("index"); - num = getData(ctx).getInt("num"); - } - getData(ctx).putBoolean("completed", true); - for (int i = 0; i < code.length(); i++) { - if (operationsLeft <= 0) { - getData(ctx).putBoolean("completed", false); - getData(ctx).putInt("pointer", p); - getData(ctx).putInt("index", i); - getData(ctx).putInt("num", num); - break; - } - while (monitorData.size() <= p) { - monitorData.add("0"); + }); + + public static DeferredHolder CMD = PLACEHOLDERS.register("cmd", + () -> new Placeholder("cmd") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + int slot = PlaceholderUtils.toInt(args.getFirst()); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + + BindingData bindingData = stack.get(GTDataComponents.BINDING_DATA); + if (bindingData == null) { + throw new MissingItemException("any data item bound to player", slot); } - if (monitorData.get(p).isEmpty()) { - monitorData.set(i, "0"); + + Component displayName = bindingData.getBoundPlayerName(ctx.level()); + if (displayName == null) { + displayName = Component.translatable("gtceu.tooltip.player_name.placeholder_processor"); } - try { - switch (code.charAt(i)) { - case '+' -> monitorData.set(p, - String.valueOf((Integer.parseInt(monitorData.get(p)) + num) % 256)); - case '-' -> { - int tmp = Integer.parseInt(monitorData.get(p)) - num; - if (tmp < 0) tmp = (256 - ((-tmp) % 256)) % 256; - monitorData.set(p, String.valueOf(tmp)); - } - case '>' -> p += num; - case '<' -> p -= num; - case '[' -> loops.push(i); - case ']' -> { - if (Integer.parseInt(monitorData.get(p)) == 0) { - loops.pop(); - } else { - i = loops.peek(); - } - } - default -> throw new PlaceholderException(Component - .translatable("gtceu.computer_monitor_cover.error.bf_invalid", i).getString()); - } - } catch (Exception e) { + if (!(ctx.level() instanceof ServerLevel serverLevel)) { + throw new NotSupportedException(); } - if (Character.isDigit(code.charAt(i))) { - num = num * 10 + code.charAt(i) - '0'; - } else num = 0; - operationsLeft--; - } - return MultiLineComponent.empty(); - } - }); + MinecraftServer server = serverLevel.getServer(); + Player player = ctx.level().getPlayerByUUID(bindingData.uuid()); + + MultiLineComponent output = MultiLineComponent.empty(); + CommandSource customSource = new CommandSource() { + + @Override + public void sendSystemMessage(@NotNull Component message) { + output.append(List.of(message)).appendNewline(); + } - PlaceholderHandler.addPlaceholder(new Placeholder("cmd") { + @Override + public boolean acceptsSuccess() { + return true; + } - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - int slot = PlaceholderUtils.toInt(args.getFirst()); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + @Override + public boolean acceptsFailure() { + return true; + } - BindingData bindingData = stack.get(GTDataComponents.BINDING_DATA); - if (bindingData == null) { - throw new MissingItemException("any data item bound to player", slot); + @Override + public boolean shouldInformAdmins() { + return false; + } + }; + + CommandSourceStack source = new CommandSourceStack( + customSource, + ctx.pos() == null ? Vec3.ZERO : ctx.pos().getCenter(), + Vec2.ZERO, + serverLevel, + bindingData.permissionLevel(), + displayName.getString(), + displayName, + server, + player); + server.getCommands().performPrefixedCommand(source, args.get(1).toString()); + return output; } + }); + public static DeferredHolder TM = PLACEHOLDERS.register("tm", + () -> new Placeholder("tm") { - Component displayName = bindingData.getBoundPlayerName(ctx.level()); - if (displayName == null) { - displayName = Component.translatable("gtceu.tooltip.player_name.placeholder_processor"); + @Override + public MultiLineComponent apply(PlaceholderContext ctx, List args) { + return MultiLineComponent.literal("â„¢"); } - if (!(ctx.level() instanceof ServerLevel serverLevel)) { - throw new NotSupportedException(); + @Override + public boolean isPure() { + return true; } - MinecraftServer server = serverLevel.getServer(); - Player player = ctx.level().getPlayerByUUID(bindingData.uuid()); + }); - MultiLineComponent output = MultiLineComponent.empty(); - CommandSource customSource = new CommandSource() { + public static DeferredHolder FORMAT_INT = PLACEHOLDERS.register("format_int", + () -> new Placeholder("formatInt") { - @Override - public void sendSystemMessage(@NotNull Component message) { - output.append(List.of(message)).appendNewline(); + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + long n = PlaceholderUtils.toLong(args.getFirst()); + Map suffixes = Map.of( + 1L, "", + 1000L, "K", + 1000000L, "M", + 1000000000L, "B", + 1000000000000L, "T"); + long max = 1; + for (long i : suffixes.keySet()) { + if (n >= i && max < i) max = i; } + return MultiLineComponent.literal(String.format(Locale.ROOT, "%.2f%s", + ((double) n) / max, suffixes.get(max))); + } - @Override - public boolean acceptsSuccess() { - return true; - } + @Override + public boolean isPure() { + return true; + } + }); - @Override - public boolean acceptsFailure() { - return true; - } + public static DeferredHolder CLICK = PLACEHOLDERS.register("click", + () -> new Placeholder("click") { - @Override - public boolean shouldInformAdmins() { - return false; - } - }; - - CommandSourceStack source = new CommandSourceStack( - customSource, - ctx.pos() == null ? Vec3.ZERO : ctx.pos().getCenter(), - Vec2.ZERO, - serverLevel, - bindingData.permissionLevel(), - displayName.getString(), - displayName, - server, - player); - server.getCommands().performPrefixedCommand(source, args.get(1).toString()); - return output; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("tm") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, List args) { - return MultiLineComponent.literal("â„¢"); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("formatInt") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - long n = PlaceholderUtils.toLong(args.getFirst()); - Map suffixes = Map.of( - 1L, "", - 1000L, "K", - 1000000L, "M", - 1000000000L, "B", - 1000000000000L, "T"); - long max = 1; - for (long i : suffixes.keySet()) { - if (n >= i && max < i) max = i; - } - return MultiLineComponent.literal(String.format(Locale.ROOT, "%.2f%s", - ((double) n) / max, suffixes.get(max))); - } - - @Override - public boolean isPure() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("click") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.pos() == null) throw new NoTargetException(); - if (!(MetaMachine.getMachine(ctx.level(), ctx.pos()) instanceof AdvancedMonitorPartMachine monitor)) - throw new NotSupportedException(); - monitor.resetClicked(); - if (args.isEmpty()) return MultiLineComponent.literal(monitor.isClicked() ? 1 : 0); - PlaceholderUtils.checkArgs(args, 1); - if (args.get(0).equalsString("x")) return MultiLineComponent.literal(monitor.getClickPosX()); - if (args.get(0).equalsString("y")) return MultiLineComponent.literal(monitor.getClickPosY()); - throw new InvalidArgsException(); - } - - @Override - public boolean isView() { - return true; - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ender") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2, true); - String type = args.get(0).toString(); - String channel = args.get(1).toString(); - UUID owner = null; - if (args.size() > 2 && !args.get(2).toString().isEmpty()) { - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - int slot = PlaceholderUtils.toInt(args.get(2)); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.pos() == null) throw new NoTargetException(); + if (!(MetaMachine.getMachine(ctx.level(), ctx.pos()) instanceof AdvancedMonitorPartMachine monitor)) + throw new NotSupportedException(); + monitor.resetClicked(); + if (args.isEmpty()) return MultiLineComponent.literal(monitor.isClicked() ? 1 : 0); + PlaceholderUtils.checkArgs(args, 1); + if (args.get(0).equalsString("x")) return MultiLineComponent.literal(monitor.getClickPosX()); + if (args.get(0).equalsString("y")) return MultiLineComponent.literal(monitor.getClickPosY()); + throw new InvalidArgsException(); + } - if (stack.has(GTDataComponents.BINDING_DATA)) { - owner = stack.get(GTDataComponents.BINDING_DATA).uuid(); - } + @Override + public boolean isView() { + return true; } - VirtualEnderRegistry ender = VirtualEnderRegistry.get((ServerLevel) ctx.level()); - switch (type) { - case "redstone" -> { - if (!ender.hasEntry(owner, EntryTypes.ENDER_REDSTONE, channel)) - return MultiLineComponent.literal(0); - if (args.size() > 4) { - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - int slot = PlaceholderUtils.toInt(args.get(3)); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); - UUID uuid; - if (stack.has(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID)) { - uuid = stack.get(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID); - } else { - uuid = UUID.randomUUID(); - stack.set(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID, uuid); - } - int power = PlaceholderUtils.toInt(args.get(4)); - PlaceholderUtils.checkRange("redstone signal", 0, 15, power); - // ender.getEntry(owner, EntryTypes.ENDER_REDSTONE, channel).setSignal(uuid, power); - return MultiLineComponent.empty(); + }); + + public static DeferredHolder ENDER = PLACEHOLDERS.register("ender", + () -> new Placeholder("ender") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2, true); + String type = args.get(0).toString(); + String channel = args.get(1).toString(); + UUID owner = null; + if (args.size() > 2 && !args.get(2).toString().isEmpty()) { + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + int slot = PlaceholderUtils.toInt(args.get(2)); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + + if (stack.has(GTDataComponents.BINDING_DATA)) { + owner = stack.get(GTDataComponents.BINDING_DATA).uuid(); } - return MultiLineComponent - .literal(ender.getEntry(owner, EntryTypes.ENDER_REDSTONE, channel).getSignal()); } - case "item" -> { - channel = "EILink#" + channel; - if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) - return MultiLineComponent.literal(0); - IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); - int count = 0; - for (int i = 0; i < items.getSlots(); i++) count += items.getStackInSlot(i).getCount(); - return MultiLineComponent.literal(count); - } - case "itemId" -> { - channel = "EILink#" + channel; - if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) - return MultiLineComponent.literal(ItemStack.EMPTY.toString()); - IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); - if (items.getSlots() == 0) return MultiLineComponent.literal(ItemStack.EMPTY.toString()); - return MultiLineComponent.literal(items.getStackInSlot(0).toString()); - } - case "itemPull" -> { - channel = "EILink#" + channel; - if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + VirtualEnderRegistry ender = VirtualEnderRegistry.get((ServerLevel) ctx.level()); + switch (type) { + case "redstone" -> { + if (!ender.hasEntry(owner, EntryTypes.ENDER_REDSTONE, channel)) + return MultiLineComponent.literal(0); + if (args.size() > 4) { + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + int slot = PlaceholderUtils.toInt(args.get(3)); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot - 1); + UUID uuid; + if (stack.has(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID)) { + uuid = stack.get(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID); + } else { + uuid = UUID.randomUUID(); + stack.set(GTDataComponents.ENDER_REDSTONE_LINK_TRANSMITTER_UUID, uuid); + } + int power = PlaceholderUtils.toInt(args.get(4)); + PlaceholderUtils.checkRange("redstone signal", 0, 15, power); + // ender.getEntry(owner, EntryTypes.ENDER_REDSTONE, channel).setSignal(uuid, power); + return MultiLineComponent.empty(); + } + return MultiLineComponent + .literal(ender.getEntry(owner, EntryTypes.ENDER_REDSTONE, channel).getSignal()); + } + case "item" -> { + channel = "EILink#" + channel; + if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + return MultiLineComponent.literal(0); + IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); + int count = 0; + for (int i = 0; i < items.getSlots(); i++) count += items.getStackInSlot(i).getCount(); + return MultiLineComponent.literal(count); + } + case "itemId" -> { + channel = "EILink#" + channel; + if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + return MultiLineComponent.literal(ItemStack.EMPTY.toString()); + IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); + if (items.getSlots() == 0) return MultiLineComponent.literal(ItemStack.EMPTY.toString()); + return MultiLineComponent.literal(items.getStackInSlot(0).toString()); + } + case "itemPull" -> { + channel = "EILink#" + channel; + if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + return MultiLineComponent.empty(); + IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); + if (ctx.itemStackHandler() != null) + GTTransferUtils.transferItemsFiltered(items, ctx.itemStackHandler(), stack -> true, 1); + else throw new NotSupportedException(); return MultiLineComponent.empty(); - IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); - if (ctx.itemStackHandler() != null) - GTTransferUtils.transferItemsFiltered(items, ctx.itemStackHandler(), stack -> true, 1); - else throw new NotSupportedException(); - return MultiLineComponent.empty(); - } - case "itemPush" -> { - channel = "EILink#" + channel; - if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + } + case "itemPush" -> { + channel = "EILink#" + channel; + if (!ender.hasEntry(owner, EntryTypes.ENDER_ITEM, channel)) + return MultiLineComponent.empty(); + IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); + if (ctx.itemStackHandler() != null) + GTTransferUtils.transferItemsFiltered(ctx.itemStackHandler(), items, stack -> true, 1); + else throw new NotSupportedException(); return MultiLineComponent.empty(); - IItemHandler items = ender.getEntry(owner, EntryTypes.ENDER_ITEM, channel).getHandler(); - if (ctx.itemStackHandler() != null) - GTTransferUtils.transferItemsFiltered(ctx.itemStackHandler(), items, stack -> true, 1); - else throw new NotSupportedException(); - return MultiLineComponent.empty(); + } + case "fluid" -> { + channel = "EFLink#" + channel; + if (!ender.hasEntry(owner, EntryTypes.ENDER_FLUID, channel)) + return MultiLineComponent.literal(0); + return MultiLineComponent.literal( + ender.getEntry(owner, EntryTypes.ENDER_FLUID, channel).getFluidTank() + .getFluidAmount()); + } + default -> throw new InvalidArgsException(); } - case "fluid" -> { - channel = "EFLink#" + channel; - if (!ender.hasEntry(owner, EntryTypes.ENDER_FLUID, channel)) - return MultiLineComponent.literal(0); - return MultiLineComponent.literal( - ender.getEntry(owner, EntryTypes.ENDER_FLUID, channel).getFluidTank().getFluidAmount()); + } + }); + + public static DeferredHolder EVAL = PLACEHOLDERS.register("eval", + () -> new Placeholder("eval") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) { + MultiLineComponent out = MultiLineComponent.empty(); + for (int i = 0; i < args.size(); i++) { + out.append(args.get(i)); + if (i != args.size() - 1) out.append(" "); } - default -> throw new InvalidArgsException(); - } - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("eval") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) { - MultiLineComponent out = MultiLineComponent.empty(); - for (int i = 0; i < args.size(); i++) { - out.append(args.get(i)); - if (i != args.size() - 1) out.append(" "); - } - return PlaceholderHandler.processPlaceholders(out.toString(), ctx); - } - }); - - PlaceholderHandler.addPlaceholder(new Placeholder("module") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 3); - int slot = PlaceholderUtils.toInt(args.get(0)); - double x = PlaceholderUtils.toDouble(args.get(1)); - double y = PlaceholderUtils.toDouble(args.get(2)); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot); - if (stack.getItem() instanceof IComponentItem componentItem) { - for (IItemComponent component : componentItem.getComponents()) { - if (component instanceof IMonitorModuleItem module) module.tickInPlaceholder(stack, ctx); + return PlaceholderHandler.processPlaceholders(out.toString(), ctx); + } + }); + + public static DeferredHolder MODULE = PLACEHOLDERS.register("module", + () -> new Placeholder("module") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 3); + int slot = PlaceholderUtils.toInt(args.get(0)); + double x = PlaceholderUtils.toDouble(args.get(1)); + double y = PlaceholderUtils.toDouble(args.get(2)); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot); + if (stack.getItem() instanceof IComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof IMonitorModuleItem module) module.tickInPlaceholder(stack, ctx); + } } + return MultiLineComponent.empty().addGraphics(new GraphicsComponent( + x, y, x, y, + "module", + (CompoundTag) stack.save(ctx.level().registryAccess()))); } - return MultiLineComponent.empty().addGraphics(new GraphicsComponent( - x, y, x, y, - "module", - (CompoundTag) stack.save(ctx.level().registryAccess()))); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("setImage") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 2); - int slot = PlaceholderUtils.toInt(args.get(0)); - String url = args.get(1).toString(); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot); - if (stack.getItem() instanceof IComponentItem componentItem) { - for (IItemComponent component : componentItem.getComponents()) { - if (component instanceof ImageModuleBehaviour module) { - module.setUrl(stack, url); + }); + + public static DeferredHolder SET_IMAGE = PLACEHOLDERS.register("set_image", + () -> new Placeholder("setImage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 2); + int slot = PlaceholderUtils.toInt(args.get(0)); + String url = args.get(1).toString(); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + ItemStack stack = ctx.itemStackHandler().getStackInSlot(slot); + if (stack.getItem() instanceof IComponentItem componentItem) { + for (IItemComponent component : componentItem.getComponents()) { + if (component instanceof ImageModuleBehaviour module) { + module.setUrl(stack, url); + } } } + return MultiLineComponent.empty(); + } + }); + + public static DeferredHolder RECT = PLACEHOLDERS.register("rect", + () -> new Placeholder("rect") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 5); + double x = PlaceholderUtils.toDouble(args.get(0)); + double y = PlaceholderUtils.toDouble(args.get(1)); + double width = PlaceholderUtils.toDouble(args.get(2)); + double height = PlaceholderUtils.toDouble(args.get(3)); + if (x < 0) x = 0; + if (y < 0) y = 0; + CompoundTag renderData = new CompoundTag(); + renderData.putDouble("x", x); + renderData.putDouble("y", y); + renderData.putDouble("width", width); + renderData.putDouble("height", height); + renderData.putInt("color", 0xFF000000 | PlaceholderUtils.toInt(args.get(4))); + return MultiLineComponent.empty().addGraphics(new GraphicsComponent( + x, y, x + width, y + height, + "rect", + renderData)); + } + }); + + public static DeferredHolder QUAD = PLACEHOLDERS.register("quad", + () -> new Placeholder("quad") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 12); + CompoundTag renderData = new CompoundTag(); + float x1 = PlaceholderUtils.toFloat(args.get(0)); + float y1 = PlaceholderUtils.toFloat(args.get(1)); + float x2 = PlaceholderUtils.toFloat(args.get(2)); + float y2 = PlaceholderUtils.toFloat(args.get(3)); + float x3 = PlaceholderUtils.toFloat(args.get(4)); + float y3 = PlaceholderUtils.toFloat(args.get(5)); + float x4 = PlaceholderUtils.toFloat(args.get(6)); + float y4 = PlaceholderUtils.toFloat(args.get(7)); + renderData.putFloat("x1", 0); + renderData.putFloat("y1", 0); + renderData.putFloat("x2", x2 - x1); + renderData.putFloat("y2", y2 - y1); + renderData.putFloat("x3", x3 - x1); + renderData.putFloat("y3", y3 - y1); + renderData.putFloat("x4", x4 - x1); + renderData.putFloat("y4", y4 - y1); + renderData.putInt("color1", 0xFF000000 + PlaceholderUtils.toInt(args.get(8))); + renderData.putInt("color2", 0xFF000000 + PlaceholderUtils.toInt(args.get(9))); + renderData.putInt("color3", 0xFF000000 + PlaceholderUtils.toInt(args.get(10))); + renderData.putInt("color4", 0xFF000000 + PlaceholderUtils.toInt(args.get(11))); + return MultiLineComponent.empty().addGraphics(new GraphicsComponent( + GTMath.min(x1, x2, x3, x4), GTMath.min(y1, y2, y3, y4), GTMath.max(x1, x2, x3, x4), + GTMath.max(y1, y2, y3, y4), + "quad", + renderData)); + } + }); + + public static DeferredHolder ITEM = PLACEHOLDERS.register("item", + () -> new Placeholder("item") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + int slot = PlaceholderUtils.toInt(args.get(0)); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); + return MultiLineComponent.literal(ctx.itemStackHandler().getStackInSlot(slot - 1).toString()); } - return MultiLineComponent.empty(); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("rect") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 5); - double x = PlaceholderUtils.toDouble(args.get(0)); - double y = PlaceholderUtils.toDouble(args.get(1)); - double width = PlaceholderUtils.toDouble(args.get(2)); - double height = PlaceholderUtils.toDouble(args.get(3)); - if (x < 0) x = 0; - if (y < 0) y = 0; - CompoundTag renderData = new CompoundTag(); - renderData.putDouble("x", x); - renderData.putDouble("y", y); - renderData.putDouble("width", width); - renderData.putDouble("height", height); - renderData.putInt("color", 0xFF000000 | PlaceholderUtils.toInt(args.get(4))); - return MultiLineComponent.empty().addGraphics(new GraphicsComponent( - x, y, x + width, y + height, - "rect", - renderData)); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("quad") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 12); - CompoundTag renderData = new CompoundTag(); - float x1 = PlaceholderUtils.toFloat(args.get(0)); - float y1 = PlaceholderUtils.toFloat(args.get(1)); - float x2 = PlaceholderUtils.toFloat(args.get(2)); - float y2 = PlaceholderUtils.toFloat(args.get(3)); - float x3 = PlaceholderUtils.toFloat(args.get(4)); - float y3 = PlaceholderUtils.toFloat(args.get(5)); - float x4 = PlaceholderUtils.toFloat(args.get(6)); - float y4 = PlaceholderUtils.toFloat(args.get(7)); - renderData.putFloat("x1", 0); - renderData.putFloat("y1", 0); - renderData.putFloat("x2", x2 - x1); - renderData.putFloat("y2", y2 - y1); - renderData.putFloat("x3", x3 - x1); - renderData.putFloat("y3", y3 - y1); - renderData.putFloat("x4", x4 - x1); - renderData.putFloat("y4", y4 - y1); - renderData.putInt("color1", 0xFF000000 + PlaceholderUtils.toInt(args.get(8))); - renderData.putInt("color2", 0xFF000000 + PlaceholderUtils.toInt(args.get(9))); - renderData.putInt("color3", 0xFF000000 + PlaceholderUtils.toInt(args.get(10))); - renderData.putInt("color4", 0xFF000000 + PlaceholderUtils.toInt(args.get(11))); - return MultiLineComponent.empty().addGraphics(new GraphicsComponent( - GTMath.min(x1, x2, x3, x4), GTMath.min(y1, y2, y3, y4), GTMath.max(x1, x2, x3, x4), - GTMath.max(y1, y2, y3, y4), - "quad", - renderData)); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("item") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - int slot = PlaceholderUtils.toInt(args.get(0)); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, ctx.itemStackHandler().getSlots(), slot); - return MultiLineComponent.literal(ctx.itemStackHandler().getStackInSlot(slot - 1).toString()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("blockNbt") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.pos() == null) throw new NoTargetException(); - BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); - if (blockEntity == null) return MultiLineComponent.empty(); - Tag tag = blockEntity.saveWithFullMetadata(ctx.level().registryAccess()); - if (tag instanceof CompoundTag compoundTag && compoundTag.contains("cover")) { - CompoundTag coverTag = compoundTag.getCompound("cover"); - if (coverTag.contains(ctx.side().getName())) { - CompoundTag cover = coverTag.getCompound(ctx.side().getName()).getCompound("payload") - .getCompound("d"); - cover.putString("text", "[REMOVED]"); + }); + + public static DeferredHolder BLOCK_NBT = PLACEHOLDERS.register("block_nbt", + () -> new Placeholder("blockNbt") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.pos() == null) throw new NoTargetException(); + BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); + if (blockEntity == null) return MultiLineComponent.empty(); + Tag tag = blockEntity.saveWithFullMetadata(ctx.level().registryAccess()); + if (tag instanceof CompoundTag compoundTag && compoundTag.contains("cover")) { + CompoundTag coverTag = compoundTag.getCompound("cover"); + if (coverTag.contains(ctx.side().getName())) { + CompoundTag cover = coverTag.getCompound(ctx.side().getName()).getCompound("payload") + .getCompound("d"); + cover.putString("text", "[REMOVED]"); + } + } + for (MultiLineComponent arg : args) { + if (!(tag instanceof CompoundTag compoundTag)) return MultiLineComponent.empty(); + tag = compoundTag.get(arg.toString()); } + return tag == null ? MultiLineComponent.empty() : MultiLineComponent.literal(tag.toString()); } - for (MultiLineComponent arg : args) { - if (!(tag instanceof CompoundTag compoundTag)) return MultiLineComponent.empty(); - tag = compoundTag.get(arg.toString()); - } - return tag == null ? MultiLineComponent.empty() : MultiLineComponent.literal(tag.toString()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("setTargetSlot") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.monitorGroup() == null) throw new NotSupportedException(); - PlaceholderUtils.checkArgs(args, 1); - int slot = PlaceholderUtils.toInt(args.get(0)); - BlockPos dataHatchPos = ctx.monitorGroup().getTargetRaw(); - if (dataHatchPos == null) throw new NotSupportedException(); - IMonitorComponent dataHatch = GTCapabilityHelper.getMonitorComponent(ctx.level(), dataHatchPos, null); - if (dataHatch == null || dataHatch.getDataItems() == null) throw new NotSupportedException(); - PlaceholderUtils.checkRange("slot index", 1, dataHatch.getDataItems().getSlots(), slot); - ctx.monitorGroup().setDataSlot(slot - 1); - ctx.side(ctx.monitorGroup().getTargetCoverSide()); - ctx.pos(ctx.monitorGroup().getTarget(ctx.level())); - return MultiLineComponent.empty(); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("targetSlot") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - if (ctx.monitorGroup() == null) throw new NotSupportedException(); - return MultiLineComponent.literal(ctx.monitorGroup().getDataSlot() + 1); - } - }); + }); - if (GTCEu.Mods.isAE2Loaded()) { - GTAEPlaceholders.init(); + public static DeferredHolder SET_TARGET_SLOT = PLACEHOLDERS.register("set_target_slot", + () -> new Placeholder("setTargetSlot") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.monitorGroup() == null) throw new NotSupportedException(); + PlaceholderUtils.checkArgs(args, 1); + int slot = PlaceholderUtils.toInt(args.get(0)); + BlockPos dataHatchPos = ctx.monitorGroup().getTargetRaw(); + if (dataHatchPos == null) throw new NotSupportedException(); + IMonitorComponent dataHatch = GTCapabilityHelper.getMonitorComponent(ctx.level(), dataHatchPos, + null); + if (dataHatch == null || dataHatch.getDataItems() == null) throw new NotSupportedException(); + PlaceholderUtils.checkRange("slot index", 1, dataHatch.getDataItems().getSlots(), slot); + ctx.monitorGroup().setDataSlot(slot - 1); + ctx.side(ctx.monitorGroup().getTargetCoverSide()); + ctx.pos(ctx.monitorGroup().getTarget(ctx.level())); + return MultiLineComponent.empty(); + } + }); + + public static DeferredHolder TARGET_SLOT = PLACEHOLDERS.register("target_slot", + () -> new Placeholder("targetSlot") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + if (ctx.monitorGroup() == null) throw new NotSupportedException(); + return MultiLineComponent.literal(ctx.monitorGroup().getDataSlot() + 1); + } + }); + + public static int countItems(String id, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + ItemStack itemStack = itemHandler.getStackInSlot(i); + String itemId = "%s:%s".formatted(itemStack.getItem().getCreatorModId(itemStack), + itemStack.getItem().toString()); + if (itemId.equals(id)) cnt += itemStack.getCount(); } + return cnt; + } - if (GTCEu.Mods.isCCTweakedLoaded()) { - CCTweakedPlugin.initPlaceholders(); + public static int countFluids(@Nullable String id, @Nullable IFluidHandler fluidHandler) { + if (fluidHandler == null) return 0; + int cnt = 0; + for (int i = 0; i < fluidHandler.getTanks(); i++) { + FluidStack fluidStack = fluidHandler.getFluidInTank(i); + String fluidId = Objects.requireNonNull(BuiltInRegistries.FLUID.getKey(fluidStack.getFluid())).toString(); + if (id == null || fluidId.equals(id)) cnt += fluidStack.getAmount(); } + return cnt; + } - if (ConfigHolder.INSTANCE.compat.createCompat && GTCEu.Mods.isCreateLoaded()) { - GTCreateIntegration.initPlaceholders(); + public static int countItems(@Nullable ItemFilter filter, @Nullable IItemHandler itemHandler) { + if (itemHandler == null) + return -1; + int cnt = 0; + for (int i = 0; i < itemHandler.getSlots(); i++) { + if (filter == null || filter.test(itemHandler.getStackInSlot(i))) + cnt += itemHandler.getStackInSlot(i).getCount(); } + return cnt; } @OnlyIn(Dist.CLIENT) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java index 0297fae9d24..2c991999ef9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java @@ -1,26 +1,34 @@ package com.gregtechceu.gtceu.common.data; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.common.crafting.SizedIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; +import net.neoforged.neoforge.registries.DeferredRegister; public class GTRecipeCapabilities { + private static final DeferredRegister> RECIPE_CAPABILITY = DeferredRegister + .create(GTRegistries.Keys.RECIPE_CAPABILITY, GTCEu.MOD_ID); + public final static RecipeCapability ITEM = ItemRecipeCapability.CAP; public final static RecipeCapability FLUID = FluidRecipeCapability.CAP; public final static RecipeCapability BLOCK_STATE = BlockStateRecipeCapability.CAP; public final static RecipeCapability EU = EURecipeCapability.CAP; public final static RecipeCapability CWU = CWURecipeCapability.CAP; - public static void init() { - GTRegistries.register(GTRegistries.RECIPE_CAPABILITIES, ITEM.id, ITEM); - GTRegistries.register(GTRegistries.RECIPE_CAPABILITIES, FLUID.id, FLUID); - GTRegistries.register(GTRegistries.RECIPE_CAPABILITIES, BLOCK_STATE.id, BLOCK_STATE); - GTRegistries.register(GTRegistries.RECIPE_CAPABILITIES, EU.id, EU); - GTRegistries.register(GTRegistries.RECIPE_CAPABILITIES, CWU.id, CWU); + public static void init(IEventBus modBus) { + RECIPE_CAPABILITY.register(modBus); + + RECIPE_CAPABILITY.register(ITEM.id.getPath(), () -> ITEM); + RECIPE_CAPABILITY.register(FLUID.id.getPath(), () -> FLUID); + RECIPE_CAPABILITY.register(BLOCK_STATE.id.getPath(), () -> BLOCK_STATE); + RECIPE_CAPABILITY.register(EU.id.getPath(), () -> EU); + RECIPE_CAPABILITY.register(CWU.id.getPath(), () -> CWU); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java index 46b421db458..81e1c448d4c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCategories.java @@ -1,45 +1,37 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.integration.recipeviewer.CategoryIcon; -import net.minecraft.resources.ResourceLocation; - -import org.jetbrains.annotations.NotNull; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GTRecipeCategories { - public static final GTRecipeCategory ORE_CRUSHING = register("ore_crushing", GTRecipeTypes.MACERATOR_RECIPES); - public static final GTRecipeCategory ORE_FORGING = register("ore_forging", GTRecipeTypes.FORGE_HAMMER_RECIPES); - public static final GTRecipeCategory ORE_BATHING = register("ore_bathing", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory CHEM_DYES = register("chem_dyes", GTRecipeTypes.CHEMICAL_BATH_RECIPES); - public static final GTRecipeCategory INGOT_MOLDING = register("ingot_molding", GTRecipeTypes.ALLOY_SMELTER_RECIPES); - - public static final GTRecipeCategory ARC_FURNACE_RECYCLING = register("arc_furnace_recycling", + public static final GTRecipeCategory ORE_CRUSHING = REGISTRATE.recipeCategory("ore_crushing", + GTRecipeTypes.MACERATOR_RECIPES); + public static final GTRecipeCategory ORE_FORGING = REGISTRATE.recipeCategory("ore_forging", + GTRecipeTypes.FORGE_HAMMER_RECIPES); + public static final GTRecipeCategory ORE_BATHING = REGISTRATE.recipeCategory("ore_bathing", + GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory CHEM_DYES = REGISTRATE.recipeCategory("chem_dyes", + GTRecipeTypes.CHEMICAL_BATH_RECIPES); + public static final GTRecipeCategory INGOT_MOLDING = REGISTRATE.recipeCategory("ingot_molding", + GTRecipeTypes.ALLOY_SMELTER_RECIPES); + + public static final GTRecipeCategory ARC_FURNACE_RECYCLING = REGISTRATE.recipeCategory("arc_furnace_recycling", GTRecipeTypes.ARC_FURNACE_RECIPES) .setIcon(new CategoryIcon(GTCEu.id("textures/gui/icon/category/arc_furnace_recycling.png"))); - public static final GTRecipeCategory MACERATOR_RECYCLING = register("macerator_recycling", + public static final GTRecipeCategory MACERATOR_RECYCLING = REGISTRATE.recipeCategory("macerator_recycling", GTRecipeTypes.MACERATOR_RECIPES) .setIcon(new CategoryIcon(GTCEu.id("textures/gui/icon/category/macerator_recycling.png"))); - public static final GTRecipeCategory EXTRACTOR_RECYCLING = register("extractor_recycling", + public static final GTRecipeCategory EXTRACTOR_RECYCLING = REGISTRATE.recipeCategory("extractor_recycling", GTRecipeTypes.EXTRACTOR_RECIPES) .setIcon(new CategoryIcon(GTCEu.id("textures/gui/icon/category/extractor_recycling.png"))); - public static GTRecipeCategory register(ResourceLocation id, @NotNull GTRecipeType recipeType) { - GTRecipeCategory category = new GTRecipeCategory(id, recipeType); - GTRegistries.register(GTRegistries.RECIPE_CATEGORIES, category.registryKey, category); - return category; - } - - private static GTRecipeCategory register(String categoryName, @NotNull GTRecipeType recipeType) { - return register(GTCEu.id(categoryName), recipeType); - } - public static void init() {} public static GTRecipeCategory get(String name) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java index 7e85576b713..e97032ce047 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java @@ -1,53 +1,66 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.recipe.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.recipe.condition.*; -import com.mojang.serialization.MapCodec; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; public final class GTRecipeConditions { private GTRecipeConditions() {} + private static final DeferredRegister> RECIPE_CONDITION = DeferredRegister + .create(GTRegistries.Keys.RECIPE_CONDITION, GTCEu.MOD_ID); + // spotless:off - public static final RecipeConditionType BIOME = register("biome", BiomeCondition::new, BiomeCondition.CODEC); - public static final RecipeConditionType DIMENSION = register("dimension", DimensionCondition::new, DimensionCondition.CODEC); - public static final RecipeConditionType BIOME_TAG = register("biome_tag", BiomeTagCondition::new, BiomeTagCondition.CODEC); - public static final RecipeConditionType POSITION_Y = register("pos_y", PositionYCondition::new, PositionYCondition.CODEC); - public static final RecipeConditionType RAINING = register("rain", RainingCondition::new, RainingCondition.CODEC); - public static final RecipeConditionType ADJACENT_FLUID = register("adjacent_fluid", AdjacentFluidCondition::new, AdjacentFluidCondition.CODEC); - public static final RecipeConditionType ADJACENT_BLOCK = register("adjacent_block", AdjacentBlockCondition::new, AdjacentBlockCondition.CODEC); - public static final RecipeConditionType THUNDER = register("thunder", ThunderCondition::new, ThunderCondition.CODEC); - public static final RecipeConditionType VENT = register("steam_vent", VentCondition::new, VentCondition.CODEC); - public static final RecipeConditionType CLEANROOM = register("cleanroom", CleanroomCondition::new, CleanroomCondition.CODEC); - public static final RecipeConditionType EU_TO_START = register("eu_to_start", EUToStartCondition::new, EUToStartCondition.CODEC); - public static final RecipeConditionType RESEARCH = register("research", ResearchCondition::new, ResearchCondition.CODEC); - public static final RecipeConditionType ENVIRONMENTAL_HAZARD = register("environmental_hazard", EnvironmentalHazardCondition::new, EnvironmentalHazardCondition.CODEC); - public static final RecipeConditionType DAYTIME = register("daytime", DaytimeCondition::new, DaytimeCondition.CODEC); - public static RecipeConditionType FTB_QUEST; -// public static RecipeConditionType GAMESTAGE; - public static RecipeConditionType HERACLES_QUEST; + public static final DeferredHolder, RecipeConditionType> BIOME = + RECIPE_CONDITION.register("biome", () -> new RecipeConditionType<>(BiomeCondition::new, BiomeCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> DIMENSION = + RECIPE_CONDITION.register("dimension", () -> new RecipeConditionType<>(DimensionCondition::new, DimensionCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> BIOME_TAG = + RECIPE_CONDITION.register("biome_tag", () -> new RecipeConditionType<>(BiomeTagCondition::new, BiomeTagCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> POSITION_Y = + RECIPE_CONDITION.register("pos_y", () -> new RecipeConditionType<>(PositionYCondition::new, PositionYCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> RAINING = + RECIPE_CONDITION.register("rain", () -> new RecipeConditionType<>(RainingCondition::new, RainingCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> ADJACENT_FLUID = + RECIPE_CONDITION.register("adjacent_fluid", () -> new RecipeConditionType<>(AdjacentFluidCondition::new, AdjacentFluidCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> ADJACENT_BLOCK = + RECIPE_CONDITION.register("adjacent_block", () -> new RecipeConditionType<>(AdjacentBlockCondition::new, AdjacentBlockCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> THUNDER = + RECIPE_CONDITION.register("thunder", () -> new RecipeConditionType<>(ThunderCondition::new, ThunderCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> VENT = + RECIPE_CONDITION.register("steam_vent", () -> new RecipeConditionType<>(VentCondition::new, VentCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> CLEANROOM = + RECIPE_CONDITION.register("cleanroom", () -> new RecipeConditionType<>(CleanroomCondition::new, CleanroomCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> EU_TO_START = + RECIPE_CONDITION.register("eu_to_start", () -> new RecipeConditionType<>(EUToStartCondition::new, EUToStartCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> RESEARCH = + RECIPE_CONDITION.register("research", () -> new RecipeConditionType<>(ResearchCondition::new, ResearchCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> + ENVIRONMENTAL_HAZARD = RECIPE_CONDITION.register("environmental_hazard", () -> new RecipeConditionType<>(EnvironmentalHazardCondition::new, EnvironmentalHazardCondition.CODEC)); + public static final DeferredHolder, RecipeConditionType> DAYTIME = + RECIPE_CONDITION.register("daytime", () -> new RecipeConditionType<>(DaytimeCondition::new, DaytimeCondition.CODEC)); + public static DeferredHolder, RecipeConditionType> FTB_QUEST; +// public static DeferredHolder, RecipeConditionType> GAMESTAGE; + public static DeferredHolder, RecipeConditionType> HERACLES_QUEST; - public static void init() { + public static void init(IEventBus modBus) { + RECIPE_CONDITION.register(modBus); + if (GTCEu.Mods.isFTBQuestsLoaded()) { - FTB_QUEST = register("ftb_quest", FTBQuestCondition::new, FTBQuestCondition.CODEC); + FTB_QUEST = RECIPE_CONDITION.register("ftb_quest", () -> new RecipeConditionType<>(FTBQuestCondition::new, FTBQuestCondition.CODEC)); } // if (GTCEu.Mods.isGameStagesLoaded()) { - // GAMESTAGE = register("game_stage", GameStageCondition::new, GameStageCondition.CODEC); + // GAMESTAGE = RECIPE_CONDITION.register("game_stage", () -> new RecipeConditionType<>(GameStageCondition::new, GameStageCondition.CODEC)); // } if (GTCEu.Mods.isHeraclesLoaded()) { - HERACLES_QUEST = register("heracles_quest", HeraclesQuestCondition::new, HeraclesQuestCondition.CODEC); + HERACLES_QUEST = RECIPE_CONDITION.register("heracles_quest", () -> new RecipeConditionType<>(HeraclesQuestCondition::new, HeraclesQuestCondition.CODEC)); } } // spotless:on - - private static > RecipeConditionType register(String name, - RecipeConditionType.ConditionFactory factory, - MapCodec codec) { - return GTRegistries.register(GTRegistries.RECIPE_CONDITIONS, GTCEu.id(name), - new RecipeConditionType<>(factory, codec)); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 42cab6039d7..b427418f1a1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.gui.GTRecipeTypeUILayout; import com.gregtechceu.gtceu.api.recipe.gui.RecipeUIModifier; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.sound.ExistingSoundEntry; import com.gregtechceu.gtceu.common.machine.multiblock.electric.FusionReactorMachine; import com.gregtechceu.gtceu.common.machine.trait.customlogic.*; @@ -21,8 +20,9 @@ import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ResearchManager; +import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.registries.Registries; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; @@ -35,11 +35,13 @@ import brachy.modularui.drawable.progress.ProgressDrawable; import brachy.modularui.widgets.ProgressWidget; import brachy.modularui.widgets.layout.Flow; -import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; + +@SuppressWarnings("deprecation") public class GTRecipeTypes { public static final String STEAM = "steam"; @@ -51,7 +53,7 @@ public class GTRecipeTypes { ////////////////////////////////////// // ********* Steam **********// ////////////////////////////////////// - public final static GTRecipeType STEAM_BOILER_RECIPES = register("steam_boiler", STEAM) + public final static GTRecipeType STEAM_BOILER_RECIPES = REGISTRATE.recipeType("steam_boiler", STEAM) .setMaxIOSize(1, 0, 1, 1) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_BOILER_FUEL_STEEL)) .onRecipeBuild((builder, provider) -> { @@ -61,28 +63,29 @@ public class GTRecipeTypes { GTRecipeTypes.LARGE_BOILER_RECIPES.copyFrom(builder).duration(duration).save(provider); } }) - .addCustomRecipeLogic(SmallBoilerLogic.INSTANCE) .setMaxTooltips(1) .setSound(GTSoundEntries.FURNACE); ////////////////////////////////////// // ********* Common *********// ////////////////////////////////////// - public final static GTRecipeType FURNACE_RECIPES = register("electric_furnace", ELECTRIC, RecipeType.SMELTING) + public final static GTRecipeType FURNACE_RECIPES = REGISTRATE + .recipeType("electric_furnace", ELECTRIC, RecipeType.SMELTING) .setMaxIOSize(1, 1, 0, 0).setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(4)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.FURNACE_OVERLAY_1)) .setSound(GTSoundEntries.FURNACE); - public final static GTRecipeType ALLOY_SMELTER_RECIPES = register("alloy_smelter", ELECTRIC) + public final static GTRecipeType ALLOY_SMELTER_RECIPES = REGISTRATE.recipeType("alloy_smelter", ELECTRIC) .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.FURNACE_OVERLAY_1)) .setIconSupplier(() -> GTMachines.ALLOY_SMELTER[GTValues.LV].asStack()) .setSound(GTSoundEntries.FURNACE); - public final static GTRecipeType ARC_FURNACE_RECIPES = register("arc_furnace", ELECTRIC).setMaxIOSize(1, 9, 1, 1) + public final static GTRecipeType ARC_FURNACE_RECIPES = REGISTRATE.recipeType("arc_furnace", ELECTRIC) + .setMaxIOSize(1, 9, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setMachineLayoutGridBuilder(ItemRecipeCapability.CAP, IO.OUT, @@ -105,26 +108,29 @@ public class GTRecipeTypes { }) .addCustomRecipeLogic(ArcFurnaceLogic.INSTANCE); - public final static GTRecipeType ASSEMBLER_RECIPES = register("assembler", ELECTRIC).setMaxIOSize(9, 1, 1, 0) + public final static GTRecipeType ASSEMBLER_RECIPES = REGISTRATE.recipeType("assembler", ELECTRIC) + .setMaxIOSize(9, 1, 1, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ASSEMBLER)) .setSound(GTSoundEntries.ASSEMBLER); - public final static GTRecipeType AUTOCLAVE_RECIPES = register("autoclave", ELECTRIC).setMaxIOSize(2, 2, 1, 1) + public final static GTRecipeType AUTOCLAVE_RECIPES = REGISTRATE.recipeType("autoclave", ELECTRIC) + .setMaxIOSize(2, 2, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_CRYSTALLIZATION) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.DUST_OVERLAY) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.CRYSTAL_OVERLAY)) .setSound(GTSoundEntries.FURNACE); - public final static GTRecipeType BENDER_RECIPES = register("bender", ELECTRIC).setMaxIOSize(2, 1, 0, 0) + public final static GTRecipeType BENDER_RECIPES = REGISTRATE.recipeType("bender", ELECTRIC).setMaxIOSize(2, 1, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_BENDING) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.BENDER_OVERLAY) .setItemSlotOverlay(IO.IN, 1, GTGuiTextures.INT_CIRCUIT_OVERLAY)) .setSound(GTSoundEntries.MOTOR); - public final static GTRecipeType BREWING_RECIPES = register("brewery", ELECTRIC).setMaxIOSize(1, 0, 1, 1) + public final static GTRecipeType BREWING_RECIPES = REGISTRATE.recipeType("brewery", ELECTRIC) + .setMaxIOSize(1, 0, 1, 1) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(128).EUt(4)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW_MULTIPLE) @@ -132,7 +138,8 @@ public class GTRecipeTypes { .addCustomRecipeLogic(BreweryLogic.INSTANCE) .setSound(GTSoundEntries.CHEMICAL); - public final static GTRecipeType MACERATOR_RECIPES = register("macerator", ELECTRIC).setMaxIOSize(1, 4, 0, 0) + public final static GTRecipeType MACERATOR_RECIPES = REGISTRATE.recipeType("macerator", ELECTRIC) + .setMaxIOSize(1, 4, 0, 0) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(150).EUt(2)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_MACERATE) @@ -161,7 +168,7 @@ public class GTRecipeTypes { .addCustomRecipeLogic(MaceratorLogic.INSTANCE) .setSound(GTSoundEntries.MACERATOR); - public final static GTRecipeType CANNER_RECIPES = register("canner", ELECTRIC).setMaxIOSize(2, 2, 1, 1) + public final static GTRecipeType CANNER_RECIPES = REGISTRATE.recipeType("canner", ELECTRIC).setMaxIOSize(2, 2, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_CANNER) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.CANNER_OVERLAY) @@ -172,7 +179,8 @@ public class GTRecipeTypes { .addCustomRecipeLogic(CannerLogic.INSTANCE) .setSound(GTSoundEntries.BATH); - public final static GTRecipeType CENTRIFUGE_RECIPES = register("centrifuge", ELECTRIC).setMaxIOSize(2, 6, 1, 6) + public final static GTRecipeType CENTRIFUGE_RECIPES = REGISTRATE.recipeType("centrifuge", ELECTRIC) + .setMaxIOSize(2, 6, 1, 6) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(5)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_EXTRACT) @@ -181,22 +189,25 @@ public class GTRecipeTypes { .setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.CENTRIFUGE_OVERLAY)) .setSound(GTSoundEntries.CENTRIFUGE); - public final static GTRecipeType CHEMICAL_BATH_RECIPES = register("chemical_bath", ELECTRIC) + public final static GTRecipeType CHEMICAL_BATH_RECIPES = REGISTRATE.recipeType("chemical_bath", ELECTRIC) .setMaxIOSize(1, 6, 1, 1).setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(GTValues.VA[GTValues.LV])) .UI(builder -> builder - .setProgressBarSupplier((l, v, m) -> new CircularProgressDrawable() - .emptyTexture(GTGuiTextures.PROGRESS_BATH[0]) - .filledTexture(GTGuiTextures.PROGRESS_BATH[1]) - .clockwise() - .asWidget() - .value(v)) + .setProgressBarSupplier((l, v, m) -> { + return new CircularProgressDrawable() + .emptyTexture(GTGuiTextures.PROGRESS_BATH[0]) + .filledTexture(GTGuiTextures.PROGRESS_BATH[1]) + .clockwise() + .asWidget() + .value(v); + }) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.BREWER_OVERLAY) .setItemSlotsOverlay(IO.OUT, 0, 5, GTGuiTextures.DUST_OVERLAY) .setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.CENTRIFUGE_OVERLAY)) .setSound(GTSoundEntries.BATH); - public final static GTRecipeType CHEMICAL_RECIPES = register("chemical_reactor", ELECTRIC).setMaxIOSize(2, 2, 3, 2) + public final static GTRecipeType CHEMICAL_RECIPES = REGISTRATE.recipeType("chemical_reactor", ELECTRIC) + .setMaxIOSize(2, 2, 3, 2) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(GTValues.VA[GTValues.LV])) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW_MULTIPLE) @@ -210,7 +221,8 @@ public class GTRecipeTypes { .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder) .save(provider)); - public final static GTRecipeType COMPRESSOR_RECIPES = register("compressor", ELECTRIC).setMaxIOSize(1, 1, 0, 0) + public final static GTRecipeType COMPRESSOR_RECIPES = REGISTRATE.recipeType("compressor", ELECTRIC) + .setMaxIOSize(1, 1, 0, 0) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(200).EUt(2)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_COMPRESS) @@ -218,7 +230,7 @@ public class GTRecipeTypes { .setIconSupplier(() -> GTMachines.COMPRESSOR[GTValues.LV].asStack()) .setSound(GTSoundEntries.COMPRESSOR); - public final static GTRecipeType CUTTER_RECIPES = register("cutter", ELECTRIC).setMaxIOSize(1, 2, 1, 0) + public final static GTRecipeType CUTTER_RECIPES = REGISTRATE.recipeType("cutter", ELECTRIC).setMaxIOSize(1, 2, 1, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_CUTTER) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.SAWBLADE_OVERLAY) @@ -249,7 +261,8 @@ public class GTRecipeTypes { } }); - public final static GTRecipeType DISTILLERY_RECIPES = register("distillery", ELECTRIC).setMaxIOSize(1, 1, 1, 1) + public final static GTRecipeType DISTILLERY_RECIPES = REGISTRATE.recipeType("distillery", ELECTRIC) + .setMaxIOSize(1, 1, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW_MULTIPLE) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.INT_CIRCUIT_OVERLAY) @@ -263,7 +276,8 @@ public class GTRecipeTypes { // .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSound(GTSoundEntries.BOILER); - public final static GTRecipeType ELECTROLYZER_RECIPES = register("electrolyzer", ELECTRIC).setMaxIOSize(2, 6, 1, 6) + public final static GTRecipeType ELECTROLYZER_RECIPES = REGISTRATE.recipeType("electrolyzer", ELECTRIC) + .setMaxIOSize(2, 6, 1, 6) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_EXTRACT) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.LIGHTNING_OVERLAY_1) @@ -271,21 +285,24 @@ public class GTRecipeTypes { .setFluidSlotsOverlay(IO.IN, 0, 5, GTGuiTextures.LIGHTNING_OVERLAY_2)) .setSound(GTSoundEntries.ELECTROLYZER); - public final static GTRecipeType ELECTROMAGNETIC_SEPARATOR_RECIPES = register("electromagnetic_separator", ELECTRIC) + public final static GTRecipeType ELECTROMAGNETIC_SEPARATOR_RECIPES = REGISTRATE + .recipeType("electromagnetic_separator", ELECTRIC) .setMaxIOSize(1, 3, 0, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_MAGNET) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.CRUSHED_ORE_OVERLAY) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.DUST_OVERLAY)) .setSound(GTSoundEntries.ARC); - public final static GTRecipeType EXTRACTOR_RECIPES = register("extractor", ELECTRIC).setMaxIOSize(1, 1, 0, 1) + public final static GTRecipeType EXTRACTOR_RECIPES = REGISTRATE.recipeType("extractor", ELECTRIC) + .setMaxIOSize(1, 1, 0, 1) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(400).EUt(2)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_EXTRACT) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.EXTRACTOR_OVERLAY)) .setIconSupplier(() -> GTMachines.EXTRACTOR[GTValues.LV].asStack()); - public final static GTRecipeType EXTRUDER_RECIPES = register("extruder", ELECTRIC).setMaxIOSize(2, 1, 0, 0) + public final static GTRecipeType EXTRUDER_RECIPES = REGISTRATE.recipeType("extruder", ELECTRIC) + .setMaxIOSize(2, 1, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_EXTRUDER) .setItemSlotOverlay(IO.IN, 1, GTGuiTextures.MOLD_OVERLAY)) @@ -293,7 +310,8 @@ public class GTRecipeTypes { // .setProgressBar(GuiTextures.PROGRESS_BAR_EXTRUDER, LEFT_TO_RIGHT) .setSound(GTSoundEntries.COMPRESSOR); - public final static GTRecipeType FERMENTING_RECIPES = register("fermenter", ELECTRIC).setMaxIOSize(1, 1, 1, 1) + public final static GTRecipeType FERMENTING_RECIPES = REGISTRATE.recipeType("fermenter", ELECTRIC) + .setMaxIOSize(1, 1, 1, 1) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(2)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) @@ -304,7 +322,8 @@ public class GTRecipeTypes { // .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.CHEMICAL); - public final static GTRecipeType FLUID_HEATER_RECIPES = register("fluid_heater", ELECTRIC).setMaxIOSize(1, 0, 1, 1) + public final static GTRecipeType FLUID_HEATER_RECIPES = REGISTRATE.recipeType("fluid_heater", ELECTRIC) + .setMaxIOSize(1, 0, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.INT_CIRCUIT_OVERLAY) @@ -316,7 +335,7 @@ public class GTRecipeTypes { // .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) .setSound(GTSoundEntries.BOILER); - public final static GTRecipeType FLUID_SOLIDFICATION_RECIPES = register("fluid_solidifier", ELECTRIC) + public final static GTRecipeType FLUID_SOLIDFICATION_RECIPES = REGISTRATE.recipeType("fluid_solidifier", ELECTRIC) .setMaxIOSize(1, 1, 1, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.SOLIDIFIER_OVERLAY)) @@ -340,7 +359,8 @@ public class GTRecipeTypes { .asWidget() .height(5)); - public final static GTRecipeType FORGE_HAMMER_RECIPES = register("forge_hammer", ELECTRIC).setMaxIOSize(1, 1, 0, 0) + public final static GTRecipeType FORGE_HAMMER_RECIPES = REGISTRATE.recipeType("forge_hammer", ELECTRIC) + .setMaxIOSize(1, 1, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_HAMMER) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.HAMMER_OVERLAY) @@ -348,13 +368,14 @@ public class GTRecipeTypes { .setIconSupplier(() -> GTMachines.FORGE_HAMMER[GTValues.LV].asStack()) .setSound(GTSoundEntries.FORGE_HAMMER); - public final static GTRecipeType FORMING_PRESS_RECIPES = register("forming_press", ELECTRIC) + public final static GTRecipeType FORMING_PRESS_RECIPES = REGISTRATE.recipeType("forming_press", ELECTRIC) .setMaxIOSize(6, 1, 0, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_COMPRESS)) .addCustomRecipeLogic(FormingPressLogic.INSTANCE) .setSound(GTSoundEntries.COMPRESSOR); - public final static GTRecipeType LATHE_RECIPES = register("lathe", ELECTRIC).setMaxIOSize(1, 2, 0, 0).setEUIO(IO.IN) + public final static GTRecipeType LATHE_RECIPES = REGISTRATE.recipeType("lathe", ELECTRIC).setMaxIOSize(1, 2, 0, 0) + .setEUIO(IO.IN) .UI(builder -> builder .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.PIPE_OVERLAY_1) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.PIPE_OVERLAY_2) @@ -368,33 +389,39 @@ public class GTRecipeTypes { .child(GTGuiTextures.PROGRESS_BAR_LATHE_BASE.asWidget().width(5)))) .setSound(GTSoundEntries.CUT); - public final static GTRecipeType MIXER_RECIPES = register("mixer", ELECTRIC).setMaxIOSize(6, 1, 2, 1).setEUIO(IO.IN) + public final static GTRecipeType MIXER_RECIPES = REGISTRATE.recipeType("mixer", ELECTRIC).setMaxIOSize(6, 1, 2, 1) + .setEUIO(IO.IN) .UI(builder -> builder - .setProgressBarSupplier((l, v, m) -> new CircularProgressDrawable() - .emptyTexture(GTGuiTextures.PROGRESS_MIXER[0]) - .filledTexture(GTGuiTextures.PROGRESS_MIXER[1]) - .clockwise() - .asWidget() - .value(v)) + .setProgressBarSupplier((l, v, m) -> { + return new CircularProgressDrawable() + .emptyTexture(GTGuiTextures.PROGRESS_MIXER[0]) + .filledTexture(GTGuiTextures.PROGRESS_MIXER[1]) + .clockwise() + .asWidget() + .value(v); + }) .setItemSlotsOverlay(IO.IN, 0, 5, GTGuiTextures.DUST_OVERLAY) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.DUST_OVERLAY)) .setSound(GTSoundEntries.MIXER); - public final static GTRecipeType ORE_WASHER_RECIPES = register("ore_washer", ELECTRIC).setMaxIOSize(2, 3, 1, 0) + public final static GTRecipeType ORE_WASHER_RECIPES = REGISTRATE.recipeType("ore_washer", ELECTRIC) + .setMaxIOSize(2, 3, 1, 0) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(400).EUt(16)) .UI(builder -> builder - .setProgressBarSupplier((l, v, m) -> new CircularProgressDrawable() - .emptyTexture(GTGuiTextures.PROGRESS_BATH[0]) - .filledTexture(GTGuiTextures.PROGRESS_BATH[1]) - .clockwise() - .asWidget() - .value(v)) + .setProgressBarSupplier((l, v, m) -> { + return new CircularProgressDrawable() + .emptyTexture(GTGuiTextures.PROGRESS_BATH[0]) + .filledTexture(GTGuiTextures.PROGRESS_BATH[1]) + .clockwise() + .asWidget() + .value(v); + }) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.CRUSHED_ORE_OVERLAY) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.DUST_OVERLAY)) .setSound(GTSoundEntries.BATH); - public final static GTRecipeType PACKER_RECIPES = register("packer", ELECTRIC).setMaxIOSize(2, 2, 0, 0) + public final static GTRecipeType PACKER_RECIPES = REGISTRATE.recipeType("packer", ELECTRIC).setMaxIOSize(2, 2, 0, 0) .setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(12).duration(10)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_PACKER) @@ -402,23 +429,24 @@ public class GTRecipeTypes { .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.BOX_OVERLAY)) .setSound(GTSoundEntries.ASSEMBLER); - public final static GTRecipeType POLARIZER_RECIPES = register("polarizer", ELECTRIC).setMaxIOSize(1, 1, 0, 0) + public final static GTRecipeType POLARIZER_RECIPES = REGISTRATE.recipeType("polarizer", ELECTRIC) + .setMaxIOSize(1, 1, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_MAGNET)) .setSound(GTSoundEntries.ARC); - public final static GTRecipeType LASER_ENGRAVER_RECIPES = register("laser_engraver", ELECTRIC) + public final static GTRecipeType LASER_ENGRAVER_RECIPES = REGISTRATE.recipeType("laser_engraver", ELECTRIC) .setMaxIOSize(2, 1, 0, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 1, GTGuiTextures.LENS_OVERLAY)) .setSound(GTSoundEntries.ELECTROLYZER); - public final static GTRecipeType SIFTER_RECIPES = register("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) + public final static GTRecipeType SIFTER_RECIPES = REGISTRATE.recipeType("sifter", ELECTRIC).setMaxIOSize(1, 6, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_SIFTER)) .setSound(new ExistingSoundEntry(SoundEvents.SAND_PLACE, SoundSource.BLOCKS)); - public final static GTRecipeType THERMAL_CENTRIFUGE_RECIPES = register("thermal_centrifuge", ELECTRIC) + public final static GTRecipeType THERMAL_CENTRIFUGE_RECIPES = REGISTRATE.recipeType("thermal_centrifuge", ELECTRIC) .setMaxIOSize(1, 3, 0, 0).setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(400).EUt(30)) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) @@ -426,13 +454,14 @@ public class GTRecipeTypes { .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.DUST_OVERLAY)) .setSound(GTSoundEntries.CENTRIFUGE); - public final static GTRecipeType WIREMILL_RECIPES = register("wiremill", ELECTRIC).setMaxIOSize(2, 1, 0, 0) + public final static GTRecipeType WIREMILL_RECIPES = REGISTRATE.recipeType("wiremill", ELECTRIC) + .setMaxIOSize(2, 1, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_WIREMILL) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.WIREMILL_OVERLAY)) .setSound(GTSoundEntries.MOTOR); - public final static GTRecipeType CIRCUIT_ASSEMBLER_RECIPES = register("circuit_assembler", ELECTRIC) + public final static GTRecipeType CIRCUIT_ASSEMBLER_RECIPES = REGISTRATE.recipeType("circuit_assembler", ELECTRIC) .setMaxIOSize(6, 1, 1, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_CIRCUIT_ASSEMBLER) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.CIRCUIT_OVERLAY)) @@ -454,19 +483,19 @@ public class GTRecipeTypes { } }); - public final static GTRecipeType GAS_COLLECTOR_RECIPES = register("gas_collector", ELECTRIC) + public final static GTRecipeType GAS_COLLECTOR_RECIPES = REGISTRATE.recipeType("gas_collector", ELECTRIC) .setMaxIOSize(1, 0, 0, 1).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_GAS_COLLECTOR) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.INT_CIRCUIT_OVERLAY) .setFluidSlotOverlay(IO.OUT, 0, GTGuiTextures.CENTRIFUGE_OVERLAY)) .setSound(GTSoundEntries.COOLING); - public final static GTRecipeType AIR_SCRUBBER_RECIPES = register("air_scrubber", ELECTRIC) + public final static GTRecipeType AIR_SCRUBBER_RECIPES = REGISTRATE.recipeType("air_scrubber", ELECTRIC) .setMaxIOSize(1, 3, 1, 3).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_GAS_COLLECTOR)) .setSound(GTSoundEntries.COOLING); - public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) + public static final GTRecipeType RESEARCH_STATION_RECIPES = REGISTRATE.recipeType("research_station", ELECTRIC) .setEUIO(IO.IN) .setMaxSize(IO.IN, GTRecipeCapabilities.CWU, 1) .setMaxIOSize(2, 1, 0, 0) @@ -477,17 +506,20 @@ public class GTRecipeTypes { .setMaxTooltips(4) .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.COMPUTATION); - public final static GTRecipeType ROCK_BREAKER_RECIPES = register("rock_breaker", ELECTRIC).setMaxIOSize(1, 4, 0, 0) + public final static GTRecipeType ROCK_BREAKER_RECIPES = REGISTRATE.recipeType("rock_breaker", ELECTRIC) + .setMaxIOSize(1, 4, 0, 0) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_MACERATE) - .setMachineLayoutGridBuilder(ItemRecipeCapability.CAP, IO.OUT, - (machine, layout) -> GTMuiWidgets.createGrid(4, 2, true, 's')) + .setMachineLayoutGridBuilder(ItemRecipeCapability.CAP, IO.OUT, (machine, layout) -> { + + return GTMuiWidgets.createGrid(4, 2, true, 's'); + }) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.DUST_OVERLAY) .setItemSlotOverlay(IO.OUT, 0, GTGuiTextures.CRUSHED_ORE_OVERLAY)) .setIconSupplier(() -> GTMachines.ROCK_CRUSHER[GTValues.LV].asStack()) .setSound(GTSoundEntries.FIRE); - public static final GTRecipeType SCANNER_RECIPES = register("scanner", ELECTRIC) + public static final GTRecipeType SCANNER_RECIPES = REGISTRATE.recipeType("scanner", ELECTRIC) .setEUIO(IO.IN) .setMaxIOSize(2, 1, 1, 0) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) @@ -500,25 +532,28 @@ public class GTRecipeTypes { ////////////////////////////////////// // ******* Generator *******// ////////////////////////////////////// - public final static GTRecipeType COMBUSTION_GENERATOR_FUELS = register("combustion_generator", GENERATOR) + public final static GTRecipeType COMBUSTION_GENERATOR_FUELS = REGISTRATE + .recipeType("combustion_generator", GENERATOR) .setMaxIOSize(0, 0, 1, 0).setEUIO(IO.OUT) .UI(builder -> builder.setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.FURNACE_OVERLAY_2) .setProgressBar(GTGuiTextures.PROGRESS_ARROW_MULTIPLE)) .setSound(GTSoundEntries.COMBUSTION); - public final static GTRecipeType GAS_TURBINE_FUELS = register("gas_turbine", GENERATOR).setMaxIOSize(0, 0, 1, 0) + public final static GTRecipeType GAS_TURBINE_FUELS = REGISTRATE.recipeType("gas_turbine", GENERATOR) + .setMaxIOSize(0, 0, 1, 0) .setEUIO(IO.OUT) .UI(builder -> builder.setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.DARK_CANISTER_OVERLAY) .setProgressBar(GTGuiTextures.PROGRESS_GAS_COLLECTOR)) .setSound(GTSoundEntries.TURBINE); - public final static GTRecipeType STEAM_TURBINE_FUELS = register("steam_turbine", GENERATOR).setMaxIOSize(0, 0, 1, 1) + public final static GTRecipeType STEAM_TURBINE_FUELS = REGISTRATE.recipeType("steam_turbine", GENERATOR) + .setMaxIOSize(0, 0, 1, 1) .setEUIO(IO.OUT) .UI(builder -> builder.setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GTGuiTextures.PROGRESS_GAS_COLLECTOR)) .setSound(GTSoundEntries.TURBINE); - public final static GTRecipeType PLASMA_GENERATOR_FUELS = register("plasma_generator", GENERATOR) + public final static GTRecipeType PLASMA_GENERATOR_FUELS = REGISTRATE.recipeType("plasma_generator", GENERATOR) .setMaxIOSize(0, 0, 1, 1).setEUIO(IO.OUT) .UI(builder -> builder.setFluidSlotOverlay(IO.IN, 0, GTGuiTextures.CENTRIFUGE_OVERLAY) .setProgressBar(GTGuiTextures.PROGRESS_GAS_COLLECTOR)) @@ -527,31 +562,32 @@ public class GTRecipeTypes { ////////////////////////////////////// // ******* Multiblock *******// ////////////////////////////////////// - public final static GTRecipeType LARGE_BOILER_RECIPES = register("large_boiler", MULTIBLOCK) + public final static GTRecipeType LARGE_BOILER_RECIPES = REGISTRATE.recipeType("large_boiler", MULTIBLOCK) .setMaxIOSize(1, 0, 1, 1) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_BOILER_FUEL_STEEL)) - .addCustomRecipeLogic(LargeBoilerLogic.INSTANCE) .setMaxTooltips(1) .setSound(GTSoundEntries.FURNACE); - public final static GTRecipeType COKE_OVEN_RECIPES = register("coke_oven", MULTIBLOCK).setMaxIOSize(1, 1, 0, 1) + public final static GTRecipeType COKE_OVEN_RECIPES = REGISTRATE.recipeType("coke_oven", MULTIBLOCK) + .setMaxIOSize(1, 1, 0, 1) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW)) .setMaxTooltips(1) .setSound(GTSoundEntries.FIRE); - public final static GTRecipeType PRIMITIVE_BLAST_FURNACE_RECIPES = register("primitive_blast_furnace", MULTIBLOCK) + public final static GTRecipeType PRIMITIVE_BLAST_FURNACE_RECIPES = REGISTRATE + .recipeType("primitive_blast_furnace", MULTIBLOCK) .setMaxIOSize(3, 3, 0, 0) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW)) .setMaxTooltips(1) .setSound(GTSoundEntries.FIRE); - public final static GTRecipeType BLAST_RECIPES = register("electric_blast_furnace", MULTIBLOCK) + public final static GTRecipeType BLAST_RECIPES = REGISTRATE.recipeType("electric_blast_furnace", MULTIBLOCK) .setMaxIOSize(3, 3, 1, 1).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .addRecipeUIModifier(GTRecipeUIModifiers.TEMP_COIL_INFO)) .setSound(GTSoundEntries.FURNACE); - public final static GTRecipeType DISTILLATION_RECIPES = register("distillation_tower", MULTIBLOCK) + public final static GTRecipeType DISTILLATION_RECIPES = REGISTRATE.recipeType("distillation_tower", MULTIBLOCK) .setMaxIOSize(0, 1, 1, 12).setEUIO(IO.IN) .setSound(GTSoundEntries.CHEMICAL) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW_MULTIPLE)) @@ -625,12 +661,14 @@ public class GTRecipeTypes { } }); - public final static GTRecipeType PYROLYSE_RECIPES = register("pyrolyse_oven", MULTIBLOCK).setMaxIOSize(2, 1, 1, 1) + public final static GTRecipeType PYROLYSE_RECIPES = REGISTRATE.recipeType("pyrolyse_oven", MULTIBLOCK) + .setMaxIOSize(2, 1, 1, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW)) .setSound(GTSoundEntries.FIRE); - public final static GTRecipeType CRACKING_RECIPES = register("cracker", MULTIBLOCK).setMaxIOSize(1, 0, 2, 2) + public final static GTRecipeType CRACKING_RECIPES = REGISTRATE.recipeType("cracker", MULTIBLOCK) + .setMaxIOSize(1, 0, 2, 2) .setEUIO(IO.IN) .UI(builder -> builder .setProgressBar(GTGuiTextures.PROGRESS_CRACKING) @@ -639,7 +677,7 @@ public class GTRecipeTypes { .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.CIRCUIT_OVERLAY)) .setSound(GTSoundEntries.FIRE); - public final static GTRecipeType IMPLOSION_RECIPES = register("implosion_compressor", MULTIBLOCK) + public final static GTRecipeType IMPLOSION_RECIPES = REGISTRATE.recipeType("implosion_compressor", MULTIBLOCK) .setMaxIOSize(3, 2, 0, 0).setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.duration(20).EUt(GTValues.VA[GTValues.LV])) .UI(builder -> builder @@ -649,20 +687,22 @@ public class GTRecipeTypes { .setItemSlotOverlay(IO.OUT, 1, GTGuiTextures.DUST_OVERLAY)) .setSound(new ExistingSoundEntry(SoundEvents.GENERIC_EXPLODE.value(), SoundSource.BLOCKS)); - public final static GTRecipeType VACUUM_RECIPES = register("vacuum_freezer", MULTIBLOCK).setMaxIOSize(1, 1, 2, 1) + public final static GTRecipeType VACUUM_RECIPES = REGISTRATE.recipeType("vacuum_freezer", MULTIBLOCK) + .setMaxIOSize(1, 1, 2, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW)) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(GTValues.VA[GTValues.MV])) .setSound(GTSoundEntries.COOLING); - public final static GTRecipeType ASSEMBLY_LINE_RECIPES = register("assembly_line", MULTIBLOCK) + public final static GTRecipeType ASSEMBLY_LINE_RECIPES = REGISTRATE.recipeType("assembly_line", MULTIBLOCK) .setMaxIOSize(16, 1, 4, 0).setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW)) .setSound(GTSoundEntries.ASSEMBLER) .setHasResearchSlot(true) .onRecipeBuild(ResearchManager::createDefaultResearchRecipe); - public static final GTRecipeType LARGE_CHEMICAL_RECIPES = register("large_chemical_reactor", MULTIBLOCK) + public static final GTRecipeType LARGE_CHEMICAL_RECIPES = REGISTRATE + .recipeType("large_chemical_reactor", MULTIBLOCK) .setMaxIOSize(3, 3, 5, 4).setEUIO(IO.IN) .prepareBuilder(recipeBuilder -> recipeBuilder.EUt(GTValues.VA[GTValues.LV])) .UI(builder -> builder @@ -676,37 +716,23 @@ public class GTRecipeTypes { .setSound(GTValues.FOOLS.getAsBoolean() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setSmallRecipeMap(CHEMICAL_RECIPES); - public static final GTRecipeType FUSION_RECIPES = register("fusion_reactor", MULTIBLOCK).setMaxIOSize(0, 0, 2, 1) + public static final GTRecipeType FUSION_RECIPES = REGISTRATE.recipeType("fusion_reactor", MULTIBLOCK) + .setMaxIOSize(0, 0, 2, 1) .setEUIO(IO.IN) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_FUSION) .addRecipeUIModifier(FusionReactorMachine::addEUToStartLabel)) .setSound(GTSoundEntries.ARC) .setMaxTooltips(4); - public static final GTRecipeType DUMMY_RECIPES = register("dummy", DUMMY) + public static final GTRecipeType DUMMY_RECIPES = REGISTRATE.recipeType("dummy", DUMMY) .setXEIVisible(false); - protected static GTRecipeType register(String name, String group, RecipeType... proxyRecipes) { - return register(GTCEu.id(name), group, proxyRecipes); - } - - public static GTRecipeType register(ResourceLocation id, String group, RecipeType... proxyRecipes) { - var recipeType = new GTRecipeType(id, group, proxyRecipes); - GTRegistries.register(BuiltInRegistries.RECIPE_TYPE, recipeType.registryName, recipeType); - recipeType.setSerializer(GTRegistries.register(BuiltInRegistries.RECIPE_SERIALIZER, recipeType.registryName, - new GTRecipeSerializer())); - return recipeType; - } - public static void init() { GCYMRecipeTypes.init(); } - public @Nullable static GTRecipeType get(String name) { - RecipeType type = BuiltInRegistries.RECIPE_TYPE.get(GTCEu.id(name)); - if (type instanceof GTRecipeType gtType) { - return gtType; - } - return null; + public static GTRecipeType get(String name) { + return (GTRecipeType) RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY) + .registryOrThrow(Registries.RECIPE_TYPE).get(GTCEu.id(name)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java index 93ceadec07a..15b3a1e4388 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java @@ -3,10 +3,14 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.registries.RegisterEvent; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; +@EventBusSubscriber public class GTSoundEntries { // Machine Sounds @@ -50,15 +54,17 @@ public class GTSoundEntries { public static final SoundEntry PORTAL_CLOSING = REGISTRATE.sound("portal_closing").build(); public static final SoundEntry METAL_PIPE = REGISTRATE.sound("metal_pipe").build(); - public static void init() { - GTRegistries.SOUNDS.forEach(SoundEntry::prepare); - registerSounds(); - } + public static void init() {} - private static void registerSounds() { - for (SoundEntry entry : GTRegistries.SOUNDS) { - entry.register(soundEvent -> GTRegistries.register(BuiltInRegistries.SOUND_EVENT, soundEvent.getLocation(), - soundEvent)); + @SubscribeEvent + public static void registerSounds(RegisterEvent event) { + if (event.getRegistryKey() == Registries.SOUND_EVENT) { + GTRegistries.SOUNDS.forEach(SoundEntry::prepare); + for (SoundEntry entry : GTRegistries.SOUNDS) { + entry.register(soundEvent -> { + event.register(Registries.SOUND_EVENT, soundEvent.getLocation(), () -> soundEvent); + }); + } } } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java index 18a41a6e53e..d454b55d2f5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java @@ -5,45 +5,52 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.item.tool.behavior.*; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; + public class GTToolBehaviors { private GTToolBehaviors() {} + private static final DeferredRegister> TOOL_BEHAVIOR_TYPE = DeferredRegister + .create(GTRegistries.Keys.TOOL_BEHAVIOR, GTCEu.MOD_ID); + // spotless:off - public static final ToolBehaviorType AOE_CONFIG_UI = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("aoe_config_ui"), new ToolBehaviorType<>(AOEConfigUIBehavior.CODEC, AOEConfigUIBehavior.STREAM_CODEC)); - public static final ToolBehaviorType BLOCK_ROTATING = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("rotate_block"), new ToolBehaviorType<>(BlockRotatingBehavior.CODEC, BlockRotatingBehavior.STREAM_CODEC)); - public static final ToolBehaviorType DISABLE_SHIELD = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("disable_shield"), new ToolBehaviorType<>(DisableShieldBehavior.CODEC, DisableShieldBehavior.STREAM_CODEC)); - public static final ToolBehaviorType ENTITY_DAMAGE = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("entity_damage"), new ToolBehaviorType<>(EntityDamageBehavior.CODEC, EntityDamageBehavior.STREAM_CODEC)); - public static final ToolBehaviorType PATH = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("path"), new ToolBehaviorType<>(GrassPathBehavior.CODEC, GrassPathBehavior.STREAM_CODEC)); - public static final ToolBehaviorType HARVEST_CROPS = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("harvest_crops"), new ToolBehaviorType<>(HarvestCropsBehavior.CODEC, HarvestCropsBehavior.STREAM_CODEC)); - public static final ToolBehaviorType HARVEST_ICE = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("harvest_ice"), new ToolBehaviorType<>(HarvestIceBehavior.CODEC, HarvestIceBehavior.STREAM_CODEC)); - public static final ToolBehaviorType HOE_GROUND = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("hoe_ground"), new ToolBehaviorType<>(HoeGroundBehavior.CODEC, HoeGroundBehavior.STREAM_CODEC)); - public static final ToolBehaviorType STRIP_LOG = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("strip_log"), new ToolBehaviorType<>(LogStripBehavior.CODEC, LogStripBehavior.STREAM_CODEC)); - public static final ToolBehaviorType PLUNGER = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("plunger"), new ToolBehaviorType<>(PlungerBehavior.CODEC, PlungerBehavior.STREAM_CODEC)); - public static final ToolBehaviorType ROTATE_RAIL = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("rotate_rail"), new ToolBehaviorType<>(RotateRailBehavior.CODEC, RotateRailBehavior.STREAM_CODEC)); - public static final ToolBehaviorType SCRAPE = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("scrape"), new ToolBehaviorType<>(ScrapeBehavior.CODEC, ScrapeBehavior.STREAM_CODEC)); - public static final ToolBehaviorType TORCH_PLACE = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("torch_place"), new ToolBehaviorType<>(TorchPlaceBehavior.CODEC, TorchPlaceBehavior.STREAM_CODEC)); - public static final ToolBehaviorType TREE_FELLING = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("tree_felling"), new ToolBehaviorType<>(TreeFellingBehavior.CODEC, TreeFellingBehavior.STREAM_CODEC)); - public static final ToolBehaviorType WAX_OFF = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("wax_off"), new ToolBehaviorType<>(WaxOffBehavior.CODEC, WaxOffBehavior.STREAM_CODEC)); - public static final ToolBehaviorType MODE_SWITCH = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("mode_switch"), new ToolBehaviorType<>(ToolModeSwitchBehavior.CODEC, ToolModeSwitchBehavior.STREAM_CODEC)); - public static final ToolBehaviorType PROSPECTING = GTRegistries.register(GTRegistries.TOOL_BEHAVIORS, - GTCEu.id("prospecting"), new ToolBehaviorType<>(ProspectingBehavior.CODEC, ProspectingBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> AOE_CONFIG_UI = TOOL_BEHAVIOR_TYPE.register( + "aoe_config_ui", () -> new ToolBehaviorType<>(AOEConfigUIBehavior.CODEC, AOEConfigUIBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> BLOCK_ROTATING = TOOL_BEHAVIOR_TYPE.register( + "rotate_block", () -> new ToolBehaviorType<>(BlockRotatingBehavior.CODEC, BlockRotatingBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> DISABLE_SHIELD = TOOL_BEHAVIOR_TYPE.register( + "disable_shield", () -> new ToolBehaviorType<>(DisableShieldBehavior.CODEC, DisableShieldBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> ENTITY_DAMAGE = TOOL_BEHAVIOR_TYPE.register( + "entity_damage", () -> new ToolBehaviorType<>(EntityDamageBehavior.CODEC, EntityDamageBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> PATH = TOOL_BEHAVIOR_TYPE.register( + "path", () -> new ToolBehaviorType<>(GrassPathBehavior.CODEC, GrassPathBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> HARVEST_CROPS = TOOL_BEHAVIOR_TYPE.register( + "harvest_crops", () -> new ToolBehaviorType<>(HarvestCropsBehavior.CODEC, HarvestCropsBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> HARVEST_ICE = TOOL_BEHAVIOR_TYPE.register( + "harvest_ice", () -> new ToolBehaviorType<>(HarvestIceBehavior.CODEC, HarvestIceBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> HOE_GROUND = TOOL_BEHAVIOR_TYPE.register( + "hoe_ground", () -> new ToolBehaviorType<>(HoeGroundBehavior.CODEC, HoeGroundBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> STRIP_LOG = TOOL_BEHAVIOR_TYPE.register( + "strip_log", () -> new ToolBehaviorType<>(LogStripBehavior.CODEC, LogStripBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> PLUNGER = TOOL_BEHAVIOR_TYPE.register( + "plunger", () -> new ToolBehaviorType<>(PlungerBehavior.CODEC, PlungerBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> ROTATE_RAIL = TOOL_BEHAVIOR_TYPE.register( + "rotate_rail", () -> new ToolBehaviorType<>(RotateRailBehavior.CODEC, RotateRailBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> SCRAPE = TOOL_BEHAVIOR_TYPE.register( + "scrape", () -> new ToolBehaviorType<>(ScrapeBehavior.CODEC, ScrapeBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> TORCH_PLACE = TOOL_BEHAVIOR_TYPE.register( + "torch_place", () -> new ToolBehaviorType<>(TorchPlaceBehavior.CODEC, TorchPlaceBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> TREE_FELLING = TOOL_BEHAVIOR_TYPE.register( + "tree_felling", () -> new ToolBehaviorType<>(TreeFellingBehavior.CODEC, TreeFellingBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> WAX_OFF = TOOL_BEHAVIOR_TYPE.register( + "wax_off", () -> new ToolBehaviorType<>(WaxOffBehavior.CODEC, WaxOffBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> MODE_SWITCH = TOOL_BEHAVIOR_TYPE.register( + "mode_switch", () -> new ToolBehaviorType<>(ToolModeSwitchBehavior.CODEC, ToolModeSwitchBehavior.STREAM_CODEC)); + public static final DeferredHolder, ToolBehaviorType> PROSPECTING = TOOL_BEHAVIOR_TYPE.register( + "prospecting", () -> new ToolBehaviorType<>(ProspectingBehavior.CODEC, ProspectingBehavior.STREAM_CODEC)); // spotless:on - public static void init() {} + public static void init(IEventBus modBus) {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index bc00efdee1a..3513a7556ca 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -881,6 +881,4 @@ public MachineDefinition[] register() { tiers); } } - - public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index bd36ec0108a..2a90fb6bbc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -19,16 +19,17 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class ElementMaterials { public static void register() { - Actinium = new Material.Builder(GTCEu.id("actinium")) + Actinium = REGISTRATE.material("actinium") .color(0xC3D1FF).secondaryColor(0x397090).iconSet(METALLIC) .element(GTElements.Ac) .buildAndRegister(); - Aluminium = new Material.Builder(GTCEu.id("aluminium")) + Aluminium = REGISTRATE.material("aluminium") .ingot() .liquid(new FluidBuilder().temperature(933)) .ore() @@ -44,7 +45,7 @@ public static void register() { .blast(1700, GasTier.LOW) .buildAndRegister(); - Americium = new Material.Builder(GTCEu.id("americium")) + Americium = REGISTRATE.material("americium") .ingot(3) .liquid(new FluidBuilder().temperature(1449)) .plasma() @@ -54,7 +55,7 @@ public static void register() { .itemPipeProperties(64, 64) .buildAndRegister(); - Antimony = new Material.Builder(GTCEu.id("antimony")) + Antimony = REGISTRATE.material("antimony") .ingot() .liquid(new FluidBuilder().temperature(904)) .color(0xeaeaff).secondaryColor(0x8181bd).iconSet(SHINY) @@ -62,13 +63,13 @@ public static void register() { .element(GTElements.Sb) .buildAndRegister(); - Argon = new Material.Builder(GTCEu.id("argon")) + Argon = REGISTRATE.material("argon") .gas().plasma() .color(0x00FF00) .element(GTElements.Ar) .buildAndRegister(); - Arsenic = new Material.Builder(GTCEu.id("arsenic")) + Arsenic = REGISTRATE.material("arsenic") .dust() .gas(new FluidBuilder() .state(FluidState.GAS) @@ -78,23 +79,23 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.ARSENICOSIS) .buildAndRegister(); - Astatine = new Material.Builder(GTCEu.id("astatine")) + Astatine = REGISTRATE.material("astatine") .color(0x65204f).secondaryColor(0x17212b) .element(GTElements.At) .buildAndRegister(); - Barium = new Material.Builder(GTCEu.id("barium")) + Barium = REGISTRATE.material("barium") .dust() .color(0xede192).secondaryColor(0xa7ad4d).iconSet(METALLIC) .element(GTElements.Ba) .buildAndRegister(); - Berkelium = new Material.Builder(GTCEu.id("berkelium")) + Berkelium = REGISTRATE.material("berkelium") .color(0x645A88).iconSet(RADIOACTIVE) .element(GTElements.Bk) .buildAndRegister(); - Beryllium = new Material.Builder(GTCEu.id("beryllium")) + Beryllium = REGISTRATE.material("beryllium") .ingot() .liquid(new FluidBuilder().temperature(1560)) .ore() @@ -103,75 +104,75 @@ public static void register() { .element(GTElements.Be) .buildAndRegister(); - Bismuth = new Material.Builder(GTCEu.id("bismuth")) + Bismuth = REGISTRATE.material("bismuth") .ingot(1) .liquid(new FluidBuilder().temperature(545)) .color(0x5fdddd).secondaryColor(0x517385).iconSet(METALLIC) .element(GTElements.Bi) .buildAndRegister(); - Bohrium = new Material.Builder(GTCEu.id("bohrium")) + Bohrium = REGISTRATE.material("bohrium") .color(0xde67ff).secondaryColor(0xDC57FF).iconSet(RADIOACTIVE) .element(GTElements.Bh) .buildAndRegister(); - Boron = new Material.Builder(GTCEu.id("boron")) + Boron = REGISTRATE.material("boron") .dust() .color(0xbffdbf).secondaryColor(0x6d7058) .element(GTElements.B) .buildAndRegister(); - Bromine = new Material.Builder(GTCEu.id("bromine")) + Bromine = REGISTRATE.material("bromine") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x912200).secondaryColor(0x080101).iconSet(SHINY) .element(GTElements.Br) .buildAndRegister(); - Caesium = new Material.Builder(GTCEu.id("caesium")) + Caesium = REGISTRATE.material("caesium") .dust() .color(0xd1821c).secondaryColor(0x231f14).iconSet(SHINY) .element(GTElements.Cs) .buildAndRegister(); - Calcium = new Material.Builder(GTCEu.id("calcium")) + Calcium = REGISTRATE.material("calcium") .dust() .color(0xFFF5DE).secondaryColor(0xa4a4a4).iconSet(METALLIC) .element(GTElements.Ca) .buildAndRegister(); - Californium = new Material.Builder(GTCEu.id("californium")) + Californium = REGISTRATE.material("californium") .color(0xA85A12).iconSet(RADIOACTIVE) .element(GTElements.Cf) .buildAndRegister(); - Carbon = new Material.Builder(GTCEu.id("carbon")) + Carbon = REGISTRATE.material("carbon") .dust() .liquid(new FluidBuilder().temperature(4600)) .color(0x333030).secondaryColor(0x221c1c) .element(GTElements.C) .buildAndRegister(); - Cadmium = new Material.Builder(GTCEu.id("cadmium")) + Cadmium = REGISTRATE.material("cadmium") .dust() .color(0x636377).secondaryColor(0x431a34).iconSet(SHINY) .element(GTElements.Cd) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.POISON) .buildAndRegister(); - Cerium = new Material.Builder(GTCEu.id("cerium")) + Cerium = REGISTRATE.material("cerium") .dust() .liquid(new FluidBuilder().temperature(1068)) .color(0x87917D).secondaryColor(0x5e6458).iconSet(METALLIC) .element(GTElements.Ce) .buildAndRegister(); - Chlorine = new Material.Builder(GTCEu.id("chlorine")) + Chlorine = REGISTRATE.material("chlorine") .gas(new FluidBuilder().state(FluidState.GAS).customStill()) .element(GTElements.Cl) // TODO hazard .buildAndRegister(); - Chromium = new Material.Builder(GTCEu.id("chromium")) + Chromium = REGISTRATE.material("chromium") .ingot(3) .liquid(new FluidBuilder().temperature(2180)) .color(0xf3e0ea).secondaryColor(0x441f2e).iconSet(SHINY) @@ -183,7 +184,7 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Cobalt = new Material.Builder(GTCEu.id("cobalt")) + Cobalt = REGISTRATE.material("cobalt") .ingot() .liquid(new FluidBuilder().temperature(1768)) .ore() // leave for TiCon ore processing @@ -194,13 +195,13 @@ public static void register() { .itemPipeProperties(2560, 2.0f) .buildAndRegister(); - Copernicium = new Material.Builder(GTCEu.id("copernicium")) + Copernicium = REGISTRATE.material("copernicium") .color(0x565c5d).secondaryColor(0xffd34b).iconSet(RADIOACTIVE) .element(GTElements.Cn) // .radioactiveHazard(1) .buildAndRegister(); - Copper = new Material.Builder(GTCEu.id("copper")) + Copper = REGISTRATE.material("copper") .ingot(1) .liquid(new FluidBuilder().temperature(1358)) .ore() @@ -212,47 +213,47 @@ public static void register() { .fluidPipeProperties(1696, 6, true) .buildAndRegister(); - Curium = new Material.Builder(GTCEu.id("curium")) + Curium = REGISTRATE.material("curium") .color(0x7B544E).iconSet(RADIOACTIVE) .element(GTElements.Cm) // .radioactiveHazard(1) .buildAndRegister(); - Darmstadtium = new Material.Builder(GTCEu.id("darmstadtium")) + Darmstadtium = REGISTRATE.material("darmstadtium") .ingot().fluid() .color(0x578062).iconSet(RADIOACTIVE) .appendFlags(EXT2_METAL, GENERATE_ROTOR, GENERATE_DENSE, GENERATE_SMALL_GEAR) .element(GTElements.Ds) .buildAndRegister(); - Deuterium = new Material.Builder(GTCEu.id("deuterium")) + Deuterium = REGISTRATE.material("deuterium") .gas(new FluidBuilder().state(FluidState.GAS).customStill()) .element(GTElements.D) .buildAndRegister(); - Dubnium = new Material.Builder(GTCEu.id("dubnium")) + Dubnium = REGISTRATE.material("dubnium") .color(0xc7ddde).secondaryColor(0x00f3ff).iconSet(RADIOACTIVE) .element(GTElements.Db) .buildAndRegister(); - Dysprosium = new Material.Builder(GTCEu.id("dysprosium")) + Dysprosium = REGISTRATE.material("dysprosium") .color(0x6a664b).secondaryColor(0x423307) .iconSet(METALLIC) .element(GTElements.Dy) .buildAndRegister(); - Einsteinium = new Material.Builder(GTCEu.id("einsteinium")) + Einsteinium = REGISTRATE.material("einsteinium") .color(0xCE9F00).iconSet(RADIOACTIVE) .element(GTElements.Es) .buildAndRegister(); - Erbium = new Material.Builder(GTCEu.id("erbium")) + Erbium = REGISTRATE.material("erbium") .color(0xeccbdb).secondaryColor(0x5d625a) .iconSet(METALLIC) .element(GTElements.Er) .buildAndRegister(); - Europium = new Material.Builder(GTCEu.id("europium")) + Europium = REGISTRATE.material("europium") .ingot() .liquid(new FluidBuilder().temperature(1099)) .color(0x20FFFF).secondaryColor(0x429393).iconSet(METALLIC) @@ -266,35 +267,35 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - Fermium = new Material.Builder(GTCEu.id("fermium")) + Fermium = REGISTRATE.material("fermium") .color(0xc99fe7).secondaryColor(0x890085).iconSet(METALLIC) .element(GTElements.Fm) // .radioactiveHazard(1) .buildAndRegister(); - Flerovium = new Material.Builder(GTCEu.id("flerovium")) + Flerovium = REGISTRATE.material("flerovium") .color(0x2a384e).secondaryColor(0xd2ff00) .iconSet(RADIOACTIVE) .element(GTElements.Fl) .buildAndRegister(); - Fluorine = new Material.Builder(GTCEu.id("fluorine")) + Fluorine = REGISTRATE.material("fluorine") .gas(new FluidBuilder().state(FluidState.GAS).customStill()) .element(GTElements.F) .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS, false) .buildAndRegister(); - Francium = new Material.Builder(GTCEu.id("francium")) + Francium = REGISTRATE.material("francium") .color(0xAAAAAA).secondaryColor(0x0000ff).iconSet(RADIOACTIVE) .element(GTElements.Fr) .buildAndRegister(); - Gadolinium = new Material.Builder(GTCEu.id("gadolinium")) + Gadolinium = REGISTRATE.material("gadolinium") .color(0x828a7a).secondaryColor(0x363420).iconSet(METALLIC) .element(GTElements.Gd) .buildAndRegister(); - Gallium = new Material.Builder(GTCEu.id("gallium")) + Gallium = REGISTRATE.material("gallium") .ingot() .liquid(new FluidBuilder().temperature(303)) .color(0x7a84ca).secondaryColor(0x13132e).iconSet(SHINY) @@ -302,12 +303,12 @@ public static void register() { .element(GTElements.Ga) .buildAndRegister(); - Germanium = new Material.Builder(GTCEu.id("germanium")) + Germanium = REGISTRATE.material("germanium") .color(0x4a4a4a).secondaryColor(0x2d2612).iconSet(SHINY) .element(GTElements.Ge) .buildAndRegister(); - Gold = new Material.Builder(GTCEu.id("gold")) + Gold = REGISTRATE.material("gold") .ingot() .liquid(new FluidBuilder().temperature(1337)) .ore() @@ -319,30 +320,30 @@ public static void register() { .fluidPipeProperties(1671, 25, true, true, false, false) .buildAndRegister(); - Hafnium = new Material.Builder(GTCEu.id("hafnium")) + Hafnium = REGISTRATE.material("hafnium") .color(0x99999A).secondaryColor(0x2b4a3a).iconSet(SHINY) .element(GTElements.Hf) .buildAndRegister(); - Hassium = new Material.Builder(GTCEu.id("hassium")) + Hassium = REGISTRATE.material("hassium") .color(0x738786).secondaryColor(0x62ffd5) .iconSet(RADIOACTIVE) .element(GTElements.Hs) .buildAndRegister(); - Holmium = new Material.Builder(GTCEu.id("holmium")) + Holmium = REGISTRATE.material("holmium") .color(0xf6fc9c).secondaryColor(0xa3a3a3) .iconSet(METALLIC) .element(GTElements.Ho) .buildAndRegister(); - Hydrogen = new Material.Builder(GTCEu.id("hydrogen")) + Hydrogen = REGISTRATE.material("hydrogen") .gas() .color(0x0000B5) .element(GTElements.H) .buildAndRegister(); - Helium = new Material.Builder(GTCEu.id("helium")) + Helium = REGISTRATE.material("helium") .gas(new FluidBuilder().state(FluidState.GAS).customStill()) .plasma() .liquid(new FluidBuilder() @@ -354,27 +355,27 @@ public static void register() { .buildAndRegister(); Helium.getProperty(PropertyKey.FLUID).setPrimaryKey(FluidStorageKeys.GAS); - Helium3 = new Material.Builder(GTCEu.id("helium_3")) + Helium3 = REGISTRATE.material("helium_3") .gas(new FluidBuilder() .customStill() .translation("gtceu.fluid.generic")) .element(GTElements.He3) .buildAndRegister(); - Indium = new Material.Builder(GTCEu.id("indium")) + Indium = REGISTRATE.material("indium") .ingot() .liquid(new FluidBuilder().temperature(430)) .color(0x5c3588).secondaryColor(0x2b0b4a).iconSet(SHINY) .element(GTElements.In) .buildAndRegister(); - Iodine = new Material.Builder(GTCEu.id("iodine")) + Iodine = REGISTRATE.material("iodine") .dust() .color(0x3e4467).secondaryColor(0x021e40).iconSet(SHINY) .element(GTElements.I) .buildAndRegister(); - Iridium = new Material.Builder(GTCEu.id("iridium")) + Iridium = REGISTRATE.material("iridium") .ingot(3) .liquid(new FluidBuilder().temperature(2719)) .color(0x99fede).secondaryColor(0x6cd1cf).iconSet(METALLIC) @@ -387,7 +388,7 @@ public static void register() { .vacuumStats(VA[EV], 250)) .buildAndRegister(); - Iron = new Material.Builder(GTCEu.id("iron")) + Iron = REGISTRATE.material("iron") .ingot() .liquid(new FluidBuilder().temperature(1811)) .plasma() @@ -403,7 +404,7 @@ public static void register() { .cableProperties(V[MV], 2, 3) .buildAndRegister(); - Krypton = new Material.Builder(GTCEu.id("krypton")) + Krypton = REGISTRATE.material("krypton") .gas(new FluidBuilder() .customStill() .translation("gtceu.fluid.generic")) @@ -411,20 +412,20 @@ public static void register() { .element(GTElements.Kr) .buildAndRegister(); - Lanthanum = new Material.Builder(GTCEu.id("lanthanum")) + Lanthanum = REGISTRATE.material("lanthanum") .dust() .liquid(new FluidBuilder().temperature(1193)) .color(0xd17d50).secondaryColor(0x4a3560).iconSet(METALLIC) .element(GTElements.La) .buildAndRegister(); - Lawrencium = new Material.Builder(GTCEu.id("lawrencium")) + Lawrencium = REGISTRATE.material("lawrencium") .color(0x5D7575) .iconSet(RADIOACTIVE) .element(GTElements.Lr) .buildAndRegister(); - Lead = new Material.Builder(GTCEu.id("lead")) + Lead = REGISTRATE.material("lead") .ingot(1) .liquid(new FluidBuilder().temperature(600)) .ore() @@ -437,7 +438,7 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.WEAK_POISON) .buildAndRegister(); - Lithium = new Material.Builder(GTCEu.id("lithium")) + Lithium = REGISTRATE.material("lithium") .dust() .liquid(new FluidBuilder().temperature(454)) .ore() @@ -445,31 +446,31 @@ public static void register() { .element(GTElements.Li) .buildAndRegister(); - Livermorium = new Material.Builder(GTCEu.id("livermorium")) + Livermorium = REGISTRATE.material("livermorium") .color(0x939393).secondaryColor(0xff5e5e).iconSet(RADIOACTIVE) .element(GTElements.Lv) .buildAndRegister(); - Lutetium = new Material.Builder(GTCEu.id("lutetium")) + Lutetium = REGISTRATE.material("lutetium") .dust() .liquid(new FluidBuilder().temperature(1925)) .color(0x00ccff).secondaryColor(0x4c687a).iconSet(METALLIC) .element(GTElements.Lu) .buildAndRegister(); - Magnesium = new Material.Builder(GTCEu.id("magnesium")) + Magnesium = REGISTRATE.material("magnesium") .dust() .liquid(new FluidBuilder().temperature(923)) .color(0xd6e3ff).secondaryColor(0x594d19).iconSet(FINE) .element(GTElements.Mg) .buildAndRegister(); - Mendelevium = new Material.Builder(GTCEu.id("mendelevium")) + Mendelevium = REGISTRATE.material("mendelevium") .color(0x1D4ACF).iconSet(RADIOACTIVE) .element(GTElements.Md) .buildAndRegister(); - Manganese = new Material.Builder(GTCEu.id("manganese")) + Manganese = REGISTRATE.material("manganese") .ingot() .liquid(new FluidBuilder().temperature(1519)) .color(0x88a669).secondaryColor(0xCDE1B9) @@ -478,19 +479,19 @@ public static void register() { .rotorStats(100, 115, 2.0f, 512) .buildAndRegister(); - Meitnerium = new Material.Builder(GTCEu.id("meitnerium")) + Meitnerium = REGISTRATE.material("meitnerium") .color(0x4f3c82).secondaryColor(0x6e90ff).iconSet(RADIOACTIVE) .element(GTElements.Mt) .buildAndRegister(); - Mercury = new Material.Builder(GTCEu.id("mercury")) + Mercury = REGISTRATE.material("mercury") .fluid() .color(0xE6DCDC).iconSet(DULL) .element(GTElements.Hg) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.WEAK_POISON) .buildAndRegister(); - Molybdenum = new Material.Builder(GTCEu.id("molybdenum")) + Molybdenum = REGISTRATE.material("molybdenum") .ingot() .liquid(new FluidBuilder().temperature(2896)) .ore() @@ -500,12 +501,12 @@ public static void register() { .rotorStats(100, 115, 2.0f, 512) .buildAndRegister(); - Moscovium = new Material.Builder(GTCEu.id("moscovium")) + Moscovium = REGISTRATE.material("moscovium") .color(0x2a1b40).secondaryColor(0xbd91ff).iconSet(RADIOACTIVE) .element(GTElements.Mc) .buildAndRegister(); - Neodymium = new Material.Builder(GTCEu.id("neodymium")) + Neodymium = REGISTRATE.material("neodymium") .ingot().fluid().ore() .color(0x6c5863).secondaryColor(0x2c1919).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_ROD, GENERATE_BOLT_SCREW) @@ -514,19 +515,19 @@ public static void register() { .blast(1297, GasTier.MID) .buildAndRegister(); - Neon = new Material.Builder(GTCEu.id("neon")) + Neon = REGISTRATE.material("neon") .gas() .color(0xFAB4B4) .element(GTElements.Ne) .buildAndRegister(); - Neptunium = new Material.Builder(GTCEu.id("neptunium")) + Neptunium = REGISTRATE.material("neptunium") .color(0x284D7B).iconSet(RADIOACTIVE) .element(GTElements.Np) // .radioactiveHazard(1) .buildAndRegister(); - Nickel = new Material.Builder(GTCEu.id("nickel")) + Nickel = REGISTRATE.material("nickel") .ingot() .liquid(new FluidBuilder().temperature(1728)) .plasma() @@ -538,12 +539,12 @@ public static void register() { .itemPipeProperties(2048, 1.0f) .buildAndRegister(); - Nihonium = new Material.Builder(GTCEu.id("nihonium")) + Nihonium = REGISTRATE.material("nihonium") .color(0x323957).secondaryColor(0xbfabff).iconSet(RADIOACTIVE) .element(GTElements.Nh) .buildAndRegister(); - Niobium = new Material.Builder(GTCEu.id("niobium")) + Niobium = REGISTRATE.material("niobium") .ingot().fluid() .color(0xb494b4).secondaryColor(0x4b3f4d).iconSet(BRIGHT) .element(GTElements.Nb) @@ -551,24 +552,24 @@ public static void register() { .blastStats(VA[HV], 900)) .buildAndRegister(); - Nitrogen = new Material.Builder(GTCEu.id("nitrogen")) + Nitrogen = REGISTRATE.material("nitrogen") .gas().plasma() .color(0x00BFC1) .element(GTElements.N) .buildAndRegister(); - Nobelium = new Material.Builder(GTCEu.id("nobelium")) + Nobelium = REGISTRATE.material("nobelium") .color(0x3e4758).secondaryColor(0x43deff) .iconSet(RADIOACTIVE) .element(GTElements.No) .buildAndRegister(); - Oganesson = new Material.Builder(GTCEu.id("oganesson")) + Oganesson = REGISTRATE.material("oganesson") .color(0x443936).secondaryColor(0xff1dbd).iconSet(RADIOACTIVE) .element(GTElements.Og) .buildAndRegister(); - Osmium = new Material.Builder(GTCEu.id("osmium")) + Osmium = REGISTRATE.material("osmium") .ingot(4) .liquid(new FluidBuilder().temperature(3306)) .color(0x54afff).secondaryColor(0x6e6eff).iconSet(METALLIC) @@ -582,7 +583,7 @@ public static void register() { .vacuumStats(VA[EV], 300)) .buildAndRegister(); - Oxygen = new Material.Builder(GTCEu.id("oxygen")) + Oxygen = REGISTRATE.material("oxygen") .gas() .liquid(new FluidBuilder() .temperature(85) @@ -595,7 +596,7 @@ public static void register() { .buildAndRegister(); Oxygen.getProperty(PropertyKey.FLUID).setPrimaryKey(FluidStorageKeys.GAS); - Palladium = new Material.Builder(GTCEu.id("palladium")) + Palladium = REGISTRATE.material("palladium") .ingot().fluid().ore() .color(0xbd92b5).secondaryColor(0x535b14).iconSet(SHINY) .appendFlags(EXT_METAL, GENERATE_FOIL, GENERATE_FINE_WIRE) @@ -605,20 +606,20 @@ public static void register() { .vacuumStats(VA[HV], 150)) .buildAndRegister(); - Phosphorus = new Material.Builder(GTCEu.id("phosphorus")) + Phosphorus = REGISTRATE.material("phosphorus") .dust() .color(0x77332c).secondaryColor(0x220202) .element(GTElements.P) .buildAndRegister(); - Polonium = new Material.Builder(GTCEu.id("polonium")) + Polonium = REGISTRATE.material("polonium") .color(0x163b27).secondaryColor(0x00ff78) .iconSet(RADIOACTIVE) .element(GTElements.Po) // .radioactiveHazard(1) .buildAndRegister(); - Platinum = new Material.Builder(GTCEu.id("platinum")) + Platinum = REGISTRATE.material("platinum") .ingot() .liquid(new FluidBuilder().temperature(2041)) .ore() @@ -630,7 +631,7 @@ public static void register() { .itemPipeProperties(512, 4.0f) .buildAndRegister(); - Plutonium239 = new Material.Builder(GTCEu.id("plutonium_239")) + Plutonium239 = REGISTRATE.material("plutonium") .ingot(3) .liquid(new FluidBuilder().temperature(913)) .ore(true) @@ -639,7 +640,7 @@ public static void register() { .radioactiveHazard(1.5f) .buildAndRegister(); - Plutonium241 = new Material.Builder(GTCEu.id("plutonium_241")) + Plutonium241 = REGISTRATE.material("plutonium_241") .ingot(3) .liquid(new FluidBuilder().temperature(913)) .color(0xff4c4c).secondaryColor(0x222730).iconSet(RADIOACTIVE) @@ -648,50 +649,50 @@ public static void register() { .radioactiveHazard(1.5f) .buildAndRegister(); - Potassium = new Material.Builder(GTCEu.id("potassium")) + Potassium = REGISTRATE.material("potassium") .dust(1) .liquid(new FluidBuilder().temperature(337)) .color(0xd2e1f2).secondaryColor(0x6189b8).iconSet(METALLIC) .element(GTElements.K) .buildAndRegister(); - Praseodymium = new Material.Builder(GTCEu.id("praseodymium")) + Praseodymium = REGISTRATE.material("praseodymium") .color(0x718060).secondaryColor(0x3f3447).iconSet(METALLIC) .element(GTElements.Pr) .buildAndRegister(); - Promethium = new Material.Builder(GTCEu.id("promethium")) + Promethium = REGISTRATE.material("promethium") .color(0x814947).secondaryColor(0xd0ff71) .iconSet(RADIOACTIVE) .element(GTElements.Pm) // .radioactiveHazard(1) .buildAndRegister(); - Protactinium = new Material.Builder(GTCEu.id("protactinium")) + Protactinium = REGISTRATE.material("protactinium") .color(0xA78B6D).iconSet(RADIOACTIVE) .element(GTElements.Pa) // .radioactiveHazard(1) .buildAndRegister(); - Radon = new Material.Builder(GTCEu.id("radon")) + Radon = REGISTRATE.material("radon") .gas() .color(0xFF39FF) .element(GTElements.Rn) .radioactiveHazard(1) .buildAndRegister(); - Radium = new Material.Builder(GTCEu.id("radium")) + Radium = REGISTRATE.material("radium") .color(0x838361).secondaryColor(0x89ff21).iconSet(RADIOACTIVE) .element(GTElements.Ra) // .radioactiveHazard(1) .buildAndRegister(); - Rhenium = new Material.Builder(GTCEu.id("rhenium")) + Rhenium = REGISTRATE.material("rhenium") .color(0xcbcfd7).secondaryColor(0x37393d).iconSet(SHINY) .element(GTElements.Re) .buildAndRegister(); - Rhodium = new Material.Builder(GTCEu.id("rhodium")) + Rhodium = REGISTRATE.material("rhodium") .ingot().fluid() .color(0xfd46b1).secondaryColor(0xDC0C58).iconSet(BRIGHT) .appendFlags(EXT2_METAL, GENERATE_GEAR, GENERATE_FINE_WIRE) @@ -701,17 +702,17 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - Roentgenium = new Material.Builder(GTCEu.id("roentgenium")) + Roentgenium = REGISTRATE.material("roentgenium") .color(0x388c48).secondaryColor(0x198a92).iconSet(RADIOACTIVE) .element(GTElements.Rg) .buildAndRegister(); - Rubidium = new Material.Builder(GTCEu.id("rubidium")) + Rubidium = REGISTRATE.material("rubidium") .color(0xde0f0f).secondaryColor(0x3a1f1f).iconSet(SHINY) .element(GTElements.Rb) .buildAndRegister(); - Ruthenium = new Material.Builder(GTCEu.id("ruthenium")) + Ruthenium = REGISTRATE.material("ruthenium") .ingot().fluid() .color(0xa2cde0).secondaryColor(0x3c7285).iconSet(SHINY) .flags(GENERATE_FOIL, GENERATE_GEAR) @@ -721,12 +722,12 @@ public static void register() { .vacuumStats(VA[HV], 200)) .buildAndRegister(); - Rutherfordium = new Material.Builder(GTCEu.id("rutherfordium")) + Rutherfordium = REGISTRATE.material("rutherfordium") .color(0x6b6157).secondaryColor(0xFFF6A1).iconSet(RADIOACTIVE) .element(GTElements.Rf) .buildAndRegister(); - Samarium = new Material.Builder(GTCEu.id("samarium")) + Samarium = REGISTRATE.material("samarium") .ingot() .liquid(new FluidBuilder().temperature(1345)) .color(0xc2c289).secondaryColor(0x235254).iconSet(METALLIC) @@ -737,23 +738,23 @@ public static void register() { .vacuumStats(VA[HV], 200)) .buildAndRegister(); - Scandium = new Material.Builder(GTCEu.id("scandium")) + Scandium = REGISTRATE.material("scandium") .color(0xb1b2ac).secondaryColor(0x1c3433) .iconSet(METALLIC) .element(GTElements.Sc) .buildAndRegister(); - Seaborgium = new Material.Builder(GTCEu.id("seaborgium")) + Seaborgium = REGISTRATE.material("seaborgium") .color(0x19C5FF).secondaryColor(0xff19b2).iconSet(RADIOACTIVE) .element(GTElements.Sg) .buildAndRegister(); - Selenium = new Material.Builder(GTCEu.id("selenium")) + Selenium = REGISTRATE.material("selenium") .color(0xffdf77).secondaryColor(0x055d28).iconSet(SHINY) .element(GTElements.Se) .buildAndRegister(); - Silicon = new Material.Builder(GTCEu.id("silicon")) + Silicon = REGISTRATE.material("silicon") .ingot().fluid() .color(0x707078).secondaryColor(0x10293b).iconSet(METALLIC) .flags(GENERATE_FOIL) @@ -761,7 +762,7 @@ public static void register() { .blast(2273) // no gas tier for silicon .buildAndRegister(); - Silver = new Material.Builder(GTCEu.id("silver")) + Silver = REGISTRATE.material("silver") .ingot() .liquid(new FluidBuilder().temperature(1235)) .ore() @@ -771,25 +772,25 @@ public static void register() { .cableProperties(V[HV], 1, 1) .buildAndRegister(); - Sodium = new Material.Builder(GTCEu.id("sodium")) + Sodium = REGISTRATE.material("sodium") .dust() .color(0x7c80ff).secondaryColor(0x2b30a3).iconSet(METALLIC) .element(GTElements.Na) .buildAndRegister(); - Strontium = new Material.Builder(GTCEu.id("strontium")) + Strontium = REGISTRATE.material("strontium") .color(0x7a7953).secondaryColor(0x4c0b06).iconSet(METALLIC) .element(GTElements.Sr) .buildAndRegister(); - Sulfur = new Material.Builder(GTCEu.id("sulfur")) + Sulfur = REGISTRATE.material("sulfur") .dust().ore() .color(0xfdff31).secondaryColor(0xffb400) .flags(FLAMMABLE) .element(GTElements.S) .buildAndRegister(); - Tantalum = new Material.Builder(GTCEu.id("tantalum")) + Tantalum = REGISTRATE.material("tantalum") .ingot() .liquid(new FluidBuilder().temperature(3290)) .color(0xa8a7c6).secondaryColor(0x1f2b20).iconSet(METALLIC) @@ -797,30 +798,30 @@ public static void register() { .element(GTElements.Ta) .buildAndRegister(); - Technetium = new Material.Builder(GTCEu.id("technetium")) + Technetium = REGISTRATE.material("technetium") .color(0x7430e1).secondaryColor(0x7430e1).iconSet(RADIOACTIVE) .element(GTElements.Tc) // .radioactiveHazard(1) .buildAndRegister(); - Tellurium = new Material.Builder(GTCEu.id("tellurium")) + Tellurium = REGISTRATE.material("tellurium") .color(0x8fea66).secondaryColor(0x00bfff) .iconSet(RADIOACTIVE) .element(GTElements.Te) .buildAndRegister(); - Tennessine = new Material.Builder(GTCEu.id("tennessine")) + Tennessine = REGISTRATE.material("tennessine") .color(0x785cc4).secondaryColor(0x7959d4).iconSet(RADIOACTIVE) .element(GTElements.Ts) .buildAndRegister(); - Terbium = new Material.Builder(GTCEu.id("terbium")) + Terbium = REGISTRATE.material("terbium") .color(0xcedab4).secondaryColor(0x263640) .iconSet(METALLIC) .element(GTElements.Tb) .buildAndRegister(); - Thorium = new Material.Builder(GTCEu.id("thorium")) + Thorium = REGISTRATE.material("thorium") .ingot() .liquid(new FluidBuilder().temperature(2023)) .ore() @@ -829,19 +830,19 @@ public static void register() { .element(GTElements.Th) .buildAndRegister(); - Thallium = new Material.Builder(GTCEu.id("thallium")) + Thallium = REGISTRATE.material("thallium") .color(0x5d6b8e).secondaryColor(0x815b63).iconSet(SHINY) .element(GTElements.Tl) // .poison(PoisonProperty.PoisonType.CONTACT) .buildAndRegister(); - Thulium = new Material.Builder(GTCEu.id("thulium")) + Thulium = REGISTRATE.material("thulium") .color(0x467681).secondaryColor(0x682c2c) .iconSet(METALLIC) .element(GTElements.Tm) .buildAndRegister(); - Tin = new Material.Builder(GTCEu.id("tin")) + Tin = REGISTRATE.material("tin") .ingot(1) .liquid(new FluidBuilder().temperature(505)) .plasma() @@ -854,7 +855,7 @@ public static void register() { .itemPipeProperties(4096, 0.5f) .buildAndRegister(); - Titanium = new Material.Builder(GTCEu.id("titanium")) // todo Ore? Look at EBF recipe here if we do Ti ores + Titanium = REGISTRATE.material("titanium") // todo Ore? Look at EBF recipe here if we do Ti ores .ingot(3).fluid() .color(0xed8eea).secondaryColor(0xff64bc).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_ROTOR, GENERATE_SMALL_GEAR, GENERATE_GEAR, GENERATE_FRAME) @@ -870,7 +871,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - Tritium = new Material.Builder(GTCEu.id("tritium")) + Tritium = REGISTRATE.material("tritium") .gas(new FluidBuilder().state(FluidState.GAS).customStill()) .color(0xff316b).secondaryColor(0xd00000) .iconSet(METALLIC) @@ -878,7 +879,7 @@ public static void register() { .radioactiveHazard(1) .buildAndRegister(); - Tungsten = new Material.Builder(GTCEu.id("tungsten")) + Tungsten = REGISTRATE.material("tungsten") .ingot(3) .liquid(new FluidBuilder().temperature(3695)) .color(0x3b3a32).secondaryColor(0x2a2800).iconSet(METALLIC) @@ -893,7 +894,7 @@ public static void register() { .vacuumStats(VA[HV], 300)) .buildAndRegister(); - Uranium238 = new Material.Builder(GTCEu.id("uranium_238")) + Uranium238 = REGISTRATE.material("uranium") .ingot(3) .liquid(new FluidBuilder().temperature(1405)) .color(0x1d891d).secondaryColor(0x33342c).iconSet(RADIOACTIVE) @@ -902,7 +903,7 @@ public static void register() { .radioactiveHazard(1) .buildAndRegister(); - Uranium235 = new Material.Builder(GTCEu.id("uranium_235")) + Uranium235 = REGISTRATE.material("uranium_235") .ingot(3) .liquid(new FluidBuilder().temperature(1405)) .color(0x46FA46).secondaryColor(0x33342c).iconSet(RADIOACTIVE) @@ -911,32 +912,32 @@ public static void register() { .radioactiveHazard(1) .buildAndRegister(); - Vanadium = new Material.Builder(GTCEu.id("vanadium")) + Vanadium = REGISTRATE.material("vanadium") .ingot().fluid() .color(0x696d76).secondaryColor(0x240808).iconSet(METALLIC) .element(GTElements.V) .blast(2183, GasTier.MID) .buildAndRegister(); - Xenon = new Material.Builder(GTCEu.id("xenon")) + Xenon = REGISTRATE.material("xenon") .gas() .color(0x00FFFF) .element(GTElements.Xe) .buildAndRegister(); - Ytterbium = new Material.Builder(GTCEu.id("ytterbium")) + Ytterbium = REGISTRATE.material("ytterbium") .color(0xA7A7A7).iconSet(METALLIC) .element(GTElements.Yb) .buildAndRegister(); - Yttrium = new Material.Builder(GTCEu.id("yttrium")) + Yttrium = REGISTRATE.material("yttrium") .ingot().fluid() .color(0x7d8072).secondaryColor(0x15161a).iconSet(METALLIC) .element(GTElements.Y) .blast(1799) .buildAndRegister(); - Zinc = new Material.Builder(GTCEu.id("zinc")) + Zinc = REGISTRATE.material("zinc") .ingot(1) .liquid(new FluidBuilder().temperature(693)) .color(0xEBEBFA).secondaryColor(0x232c30).iconSet(METALLIC) @@ -944,12 +945,12 @@ public static void register() { .element(GTElements.Zn) .buildAndRegister(); - Zirconium = new Material.Builder(GTCEu.id("zirconium")) + Zirconium = REGISTRATE.material("zirconium") .color(0xb99b7e).secondaryColor(0x271813).iconSet(METALLIC) .element(GTElements.Zr) .buildAndRegister(); - Naquadah = new Material.Builder(GTCEu.id("naquadah")) + Naquadah = REGISTRATE.material("naquadah") .ingot(4) .liquid(new FluidBuilder().customStill()) .ore() @@ -964,7 +965,7 @@ public static void register() { .vacuumStats(VA[EV], 150)) .buildAndRegister(); - NaquadahEnriched = new Material.Builder(GTCEu.id("enriched_naquadah")) + NaquadahEnriched = REGISTRATE.material("enriched_naquadah") .ingot(4) .liquid(new FluidBuilder().customStill()) .color(0x3C3C3C, false).secondaryColor(0x122f06).iconSet(METALLIC) @@ -975,7 +976,7 @@ public static void register() { .vacuumStats(VA[EV], 150)) .buildAndRegister(); - Naquadria = new Material.Builder(GTCEu.id("naquadria")) + Naquadria = REGISTRATE.material("naquadria") .ingot(3) .liquid(new FluidBuilder().customStill()) .color(0x1E1E1E, false).secondaryColor(0x59b3ff).iconSet(RADIOACTIVE) @@ -987,7 +988,7 @@ public static void register() { .radioactiveHazard(3) .buildAndRegister(); - Neutronium = new Material.Builder(GTCEu.id("neutronium")) + Neutronium = REGISTRATE.material("neutronium") .ingot(6) .liquid(new FluidBuilder().temperature(100_000)) .color(0xFFFFFF).secondaryColor(0x000000) @@ -1000,7 +1001,7 @@ public static void register() { .radioactiveHazard(10) .buildAndRegister(); - Tritanium = new Material.Builder(GTCEu.id("tritanium")) + Tritanium = REGISTRATE.material("tritanium") .ingot(6) .liquid(new FluidBuilder().temperature(25_000)) .color(0xc35769).secondaryColor(0x210840).iconSet(METALLIC) @@ -1011,7 +1012,7 @@ public static void register() { .rotorStats(220, 220, 6.0f, 10240) .buildAndRegister(); - Duranium = new Material.Builder(GTCEu.id("duranium")) + Duranium = REGISTRATE.material("duranium") .ingot(5) .liquid(new FluidBuilder().temperature(7500)) .color(0xf3e7a9).secondaryColor(0x9c9487).iconSet(BRIGHT) @@ -1022,7 +1023,7 @@ public static void register() { .fluidPipeProperties(9625, 500, true, true, true, true) .buildAndRegister(); - Trinium = new Material.Builder(GTCEu.id("trinium")) + Trinium = REGISTRATE.material("trinium") .ingot(7).fluid() .color(0x81808a).secondaryColor(0x351d4b).iconSet(SHINY) .flags(GENERATE_FOIL, GENERATE_BOLT_SCREW, GENERATE_GEAR, GENERATE_SPRING) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 5cfc80f1add..70d8115aa7c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ArmorProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; @@ -19,23 +17,24 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class FirstDegreeMaterials { public static void register() { - Almandine = new Material.Builder(GTCEu.id("almandine")) + Almandine = REGISTRATE.material("almandine") .gem(1).ore(3, 1) .color(0xa21717).secondaryColor(0x4b1e0c) .components(Aluminium, 2, Iron, 3, Silicon, 3, Oxygen, 12) .buildAndRegister(); - Andradite = new Material.Builder(GTCEu.id("andradite")) + Andradite = REGISTRATE.material("andradite") .gem(1) .color(0xffce26).secondaryColor(0x647d59).iconSet(RUBY) .components(Calcium, 3, Iron, 2, Silicon, 3, Oxygen, 12) .buildAndRegister(); - AnnealedCopper = new Material.Builder(GTCEu.id("annealed_copper")) + AnnealedCopper = REGISTRATE.material("annealed_copper") .ingot() .liquid(new FluidBuilder().temperature(1358)) .color(0xf2c079).secondaryColor(0xe45534).iconSet(BRIGHT) @@ -45,27 +44,27 @@ public static void register() { .buildAndRegister(); Copper.getProperty(PropertyKey.INGOT).setArcSmeltingInto(AnnealedCopper); - Asbestos = new Material.Builder(GTCEu.id("asbestos")) + Asbestos = REGISTRATE.material("asbestos") .dust(1).ore(3, 1) .color(0xE6E6E6).secondaryColor(0xdbd7bf) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.ASBESTOSIS) .components(Magnesium, 3, Silicon, 2, Hydrogen, 4, Oxygen, 9) .buildAndRegister(); - Ash = new Material.Builder(GTCEu.id("ash")) + Ash = REGISTRATE.material("ash") .dust(1) .color(0xd1d1d1).secondaryColor(0x8b8989) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 1) .buildAndRegister(); - Hematite = new Material.Builder(GTCEu.id("hematite")) + Hematite = REGISTRATE.material("hematite") .dust().ore() .color(0xff7161).secondaryColor(0x330817) .components(Iron, 2, Oxygen, 3) .buildAndRegister(); - BatteryAlloy = new Material.Builder(GTCEu.id("battery_alloy")) + BatteryAlloy = REGISTRATE.material("battery_alloy") .ingot(1) .liquid(new FluidBuilder().temperature(660)) .color(0xcac0ff).secondaryColor(0x5b0020) @@ -73,21 +72,21 @@ public static void register() { .components(Lead, 4, Antimony, 1) .buildAndRegister(); - BlueTopaz = new Material.Builder(GTCEu.id("blue_topaz")) + BlueTopaz = REGISTRATE.material("blue_topaz") .gem(3).ore(2, 1) .color(0xdbfeff).secondaryColor(0xa0c4d7).iconSet(GEM_HORIZONTAL) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT) .components(Aluminium, 2, Silicon, 1, Oxygen, 4, Fluorine, 2) .buildAndRegister(); - Bone = new Material.Builder(GTCEu.id("bone")) + Bone = REGISTRATE.material("bone") .dust(1) .color(0xfcfbed).secondaryColor(0xa0a38b) .flags(MORTAR_GRINDABLE, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES, DISABLE_DECOMPOSITION) .components(Calcium, 3) .buildAndRegister(); - Brass = new Material.Builder(GTCEu.id("brass")) + Brass = REGISTRATE.material("brass") .ingot(1) .liquid(new FluidBuilder().temperature(1160)) .color(0xffe36e).secondaryColor(0x935828).iconSet(SHINY) @@ -97,7 +96,7 @@ public static void register() { .itemPipeProperties(2048, 1) .buildAndRegister(); - Bronze = new Material.Builder(GTCEu.id("bronze")) + Bronze = REGISTRATE.material("bronze") .ingot() .liquid(new FluidBuilder().temperature(1357)) .color(0xffc370).secondaryColor(0x806752).iconSet(METALLIC) @@ -112,65 +111,65 @@ public static void register() { .fluidPipeProperties(1696, 20, true) .buildAndRegister(); - Goethite = new Material.Builder(GTCEu.id("goethite")) + Goethite = REGISTRATE.material("goethite") .dust(1).ore() .color(0x97873a).secondaryColor(0x313131).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING, BLAST_FURNACE_CALCITE_TRIPLE) .components(Iron, 1, Hydrogen, 1, Oxygen, 2) .buildAndRegister(); - Calcite = new Material.Builder(GTCEu.id("calcite")) + Calcite = REGISTRATE.material("calcite") .dust(1).ore() .color(0xfffef8).secondaryColor(0xbbaf62) .components(Calcium, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); - Cassiterite = new Material.Builder(GTCEu.id("cassiterite")) + Cassiterite = REGISTRATE.material("cassiterite") .dust(1).ore(2, 1) .color(0x89847e).secondaryColor(0x3b3b35).iconSet(ROUGH) .components(Tin, 1, Oxygen, 2) .buildAndRegister(); - CassiteriteSand = new Material.Builder(GTCEu.id("cassiterite_sand")) + CassiteriteSand = REGISTRATE.material("cassiterite_sand") .dust(1).ore(2, 1) .color(0x89847e).secondaryColor(0x3b3b35).iconSet(SAND) .components(Tin, 1, Oxygen, 2) .buildAndRegister(); - Chalcopyrite = new Material.Builder(GTCEu.id("chalcopyrite")) + Chalcopyrite = REGISTRATE.material("chalcopyrite") .dust(1).ore() .color(0x96c185).secondaryColor(0xe3af1a) .components(Copper, 1, Iron, 1, Sulfur, 2) .buildAndRegister(); - Charcoal = new Material.Builder(GTCEu.id("charcoal")) + Charcoal = REGISTRATE.material("charcoal") .gem(1, 1600) // default charcoal burn time in vanilla .color(0x7d6f58).secondaryColor(0x13110d).iconSet(FINE) .flags(FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE) .components(Carbon, 1) .buildAndRegister(); - Chromite = new Material.Builder(GTCEu.id("chromite")) + Chromite = REGISTRATE.material("chromite") .dust(1).ore() .color(0xc5c1a8).secondaryColor(0x4c1a69).iconSet(METALLIC) .components(Iron, 1, Chromium, 2, Oxygen, 4) .buildAndRegister(); - Cinnabar = new Material.Builder(GTCEu.id("cinnabar")) + Cinnabar = REGISTRATE.material("cinnabar") .gem(1).ore() .color(0xff335f).secondaryColor(0x3f0110).iconSet(EMERALD) .flags(CRYSTALLIZABLE, DECOMPOSITION_BY_CENTRIFUGING) .components(Mercury, 1, Sulfur, 1) .buildAndRegister(); - Water = new Material.Builder(GTCEu.id("water")) + Water = REGISTRATE.material("water") .liquid(new FluidBuilder().temperature(300)) .color(0x0000FF) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 2, Oxygen, 1) .buildAndRegister(); - Coal = new Material.Builder(GTCEu.id("coal")) + Coal = REGISTRATE.material("coal") .gem(1, 1600).ore(2, 1) // default coal burn time in vanilla .color(0x393e41).secondaryColor(0x101015).iconSet(LIGNITE) .flags(FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES, @@ -178,19 +177,19 @@ public static void register() { .components(Carbon, 1) .buildAndRegister(); - Cobaltite = new Material.Builder(GTCEu.id("cobaltite")) + Cobaltite = REGISTRATE.material("cobaltite") .dust(1).ore() .color(0x1975ff).secondaryColor(0x56071f).iconSet(METALLIC) .components(Cobalt, 1, Arsenic, 1, Sulfur, 1) .buildAndRegister(); - Cooperite = new Material.Builder(GTCEu.id("cooperite")) + Cooperite = REGISTRATE.material("cooperite") .dust(1).ore() .color(0xe9ffa7).secondaryColor(0x665f2f).iconSet(METALLIC) .components(Platinum, 3, Nickel, 1, Sulfur, 1, Palladium, 1) .buildAndRegister(); - Cupronickel = new Material.Builder(GTCEu.id("cupronickel")) + Cupronickel = REGISTRATE.material("cupronickel") .ingot(1) .liquid(new FluidBuilder().temperature(1542)) .color(0xffda8a).secondaryColor(0xcd2b00).iconSet(METALLIC) @@ -200,14 +199,14 @@ public static void register() { .cableProperties(V[MV], 1, 1) .buildAndRegister(); - DarkAsh = new Material.Builder(GTCEu.id("dark_ash")) + DarkAsh = REGISTRATE.material("dark_ash") .dust(1) .color(0x8b8989).secondaryColor(0x555353) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 1) .buildAndRegister(); - Diamond = new Material.Builder(GTCEu.id("diamond")) + Diamond = REGISTRATE.material("diamond") .gem(3).ore() .color(0xC8FFFF).iconSet(DIAMOND) .flags(GENERATE_BOLT_SCREW, GENERATE_LENS, GENERATE_GEAR, NO_SMASHING, NO_SMELTING, @@ -218,7 +217,7 @@ public static void register() { .attackSpeed(0.1F).enchantability(18).build()) .buildAndRegister(); - Electrum = new Material.Builder(GTCEu.id("electrum")) + Electrum = REGISTRATE.material("electrum") .ingot() .liquid(new FluidBuilder().temperature(1285)) .color(0xffff8b).secondaryColor(0xff8533).iconSet(SHINY) @@ -228,7 +227,7 @@ public static void register() { .cableProperties(V[HV], 2, 2) .buildAndRegister(); - Emerald = new Material.Builder(GTCEu.id("emerald")) + Emerald = REGISTRATE.material("emerald") .gem().ore(2, 1) .color(0x17ff6c).secondaryColor(0x003f00).iconSet(EMERALD) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, @@ -236,33 +235,33 @@ public static void register() { .components(Beryllium, 3, Aluminium, 2, Silicon, 6, Oxygen, 18) .buildAndRegister(); - Galena = new Material.Builder(GTCEu.id("galena")) + Galena = REGISTRATE.material("galena") .dust(3).ore() .color(0xf3e8fa).secondaryColor(0x331d42).iconSet(METALLIC) .flags(NO_SMELTING) .components(Lead, 1, Sulfur, 1) .buildAndRegister(); - Garnierite = new Material.Builder(GTCEu.id("garnierite")) + Garnierite = REGISTRATE.material("garnierite") .dust(3).ore() .color(0x32c880).secondaryColor(0x344028).iconSet(METALLIC) .components(Nickel, 1, Oxygen, 1) .buildAndRegister(); - GreenSapphire = new Material.Builder(GTCEu.id("green_sapphire")) + GreenSapphire = REGISTRATE.material("green_sapphire") .gem().ore() .color(0x9ae6b0).secondaryColor(0x64C882).iconSet(GEM_HORIZONTAL) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT) .components(Aluminium, 2, Oxygen, 3) .buildAndRegister(); - Grossular = new Material.Builder(GTCEu.id("grossular")) + Grossular = REGISTRATE.material("grossular") .gem(1).ore(3, 1) .color(0xffb777).secondaryColor(0x856f48).iconSet(RUBY) .components(Calcium, 3, Aluminium, 2, Silicon, 3, Oxygen, 12) .buildAndRegister(); - Ice = new Material.Builder(GTCEu.id("ice")) + Ice = REGISTRATE.material("ice") .dust(0) .liquid(new FluidBuilder() .temperature(273) @@ -272,28 +271,28 @@ public static void register() { .components(Hydrogen, 2, Oxygen, 1) .buildAndRegister(); - Ilmenite = new Material.Builder(GTCEu.id("ilmenite")) + Ilmenite = REGISTRATE.material("ilmenite") .dust(3).ore() .color(0x2b2a24).secondaryColor(0x2b1700).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Iron, 1, Titanium, 1, Oxygen, 3) .buildAndRegister(); - Rutile = new Material.Builder(GTCEu.id("rutile")) + Rutile = REGISTRATE.material("rutile") .gem() .color(0x892506).secondaryColor(0x330101).iconSet(GEM_HORIZONTAL) .flags(DISABLE_DECOMPOSITION) .components(Titanium, 1, Oxygen, 2) .buildAndRegister(); - Bauxite = new Material.Builder(GTCEu.id("bauxite")) + Bauxite = REGISTRATE.material("bauxite") .dust(1).ore() .color(0xcfb853).secondaryColor(0xe6220c) .flags(DISABLE_DECOMPOSITION) .components(Aluminium, 2, Oxygen, 3) .buildAndRegister(); - Invar = new Material.Builder(GTCEu.id("invar")) + Invar = REGISTRATE.material("invar") .ingot() .liquid(new FluidBuilder().temperature(1916)) .color(0xe2e8e1).secondaryColor(0x495d57).iconSet(METALLIC) @@ -307,7 +306,7 @@ public static void register() { .rotorStats(130, 115, 3.0f, 512) .buildAndRegister(); - Kanthal = new Material.Builder(GTCEu.id("kanthal")) + Kanthal = REGISTRATE.material("kanthal") .ingot() .liquid(new FluidBuilder().temperature(1708)) .color(0xC2D2DF).secondaryColor(0x4c4238).iconSet(METALLIC) @@ -318,7 +317,7 @@ public static void register() { .blastStats(VA[HV], 900)) .buildAndRegister(); - Lazurite = new Material.Builder(GTCEu.id("lazurite")) + Lazurite = REGISTRATE.material("lazurite") .gem(1).ore(6, 4) .color(0x2836f1).secondaryColor(0x183ca3).iconSet(LAPIS) .flags(GENERATE_PLATE, NO_SMASHING, NO_SMELTING, CRYSTALLIZABLE, GENERATE_ROD, @@ -326,7 +325,7 @@ public static void register() { .components(Aluminium, 6, Silicon, 6, Calcium, 8, Sodium, 8) .buildAndRegister(); - Magnalium = new Material.Builder(GTCEu.id("magnalium")) + Magnalium = REGISTRATE.material("magnalium") .ingot() .liquid(new FluidBuilder().temperature(929)) .color(0x98b9e9).secondaryColor(0x2f0b51).iconSet(METALLIC) @@ -336,25 +335,25 @@ public static void register() { .itemPipeProperties(1024, 2) .buildAndRegister(); - Magnesite = new Material.Builder(GTCEu.id("magnesite")) + Magnesite = REGISTRATE.material("magnesite") .dust().ore() .color(0xfbfbf6).secondaryColor(0x80705e).iconSet(ROUGH) .components(Magnesium, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); - Magnetite = new Material.Builder(GTCEu.id("magnetite")) + Magnetite = REGISTRATE.material("magnetite") .dust().ore() .color(0x9d9d9d).secondaryColor(0x06070e).iconSet(METALLIC) .components(Iron, 3, Oxygen, 4) .buildAndRegister(); - Molybdenite = new Material.Builder(GTCEu.id("molybdenite")) + Molybdenite = REGISTRATE.material("molybdenite") .dust().ore() .color(0xe3ddc3).secondaryColor(0x191919).iconSet(METALLIC) .components(Molybdenum, 1, Sulfur, 2) .buildAndRegister(); - Nichrome = new Material.Builder(GTCEu.id("nichrome")) + Nichrome = REGISTRATE.material("nichrome") .ingot() .liquid(new FluidBuilder().temperature(1818)) .color(0xaf94b2).secondaryColor(0x5b4c6a).iconSet(METALLIC) @@ -366,7 +365,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - NiobiumNitride = new Material.Builder(GTCEu.id("niobium_nitride")) + NiobiumNitride = REGISTRATE.material("niobium_nitride") .ingot().fluid() .color(0x574457).secondaryColor(0x332e3c).iconSet(BRIGHT) .appendFlags(EXT_METAL, GENERATE_FOIL) @@ -375,7 +374,7 @@ public static void register() { .blast(2846, GasTier.MID) .buildAndRegister(); - NiobiumTitanium = new Material.Builder(GTCEu.id("niobium_titanium")) + NiobiumTitanium = REGISTRATE.material("niobium_titanium") .ingot() .liquid(new FluidBuilder().temperature(2345)) .color(0xd2d9f9).secondaryColor(0x262528).iconSet(METALLIC) @@ -388,28 +387,28 @@ public static void register() { .vacuumStats(VA[HV], 200)) .buildAndRegister(); - Obsidian = new Material.Builder(GTCEu.id("obsidian")) + Obsidian = REGISTRATE.material("obsidian") .dust(3) .color(0x3b2754).secondaryColor(0x000001).iconSet(SHINY) .flags(NO_SMASHING, EXCLUDE_BLOCK_CRAFTING_RECIPES, GENERATE_PLATE, GENERATE_DENSE) .components(Magnesium, 1, Iron, 1, Silicon, 2, Oxygen, 4) .buildAndRegister(); - Phosphate = new Material.Builder(GTCEu.id("phosphate")) + Phosphate = REGISTRATE.material("phosphate") .dust(1) .color(0xe8dabd).secondaryColor(0xa48b56) .flags(NO_SMASHING, NO_SMELTING, FLAMMABLE, EXPLOSIVE) .components(Phosphorus, 1, Oxygen, 4) .buildAndRegister(); - PlatinumRaw = new Material.Builder(GTCEu.id("platinum_raw")) + PlatinumRaw = REGISTRATE.material("platinum_raw") .dust() .color(0xa09a7b).secondaryColor(0x4e4e45).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Platinum, 1, Chlorine, 2) .buildAndRegister(); - SterlingSilver = new Material.Builder(GTCEu.id("sterling_silver")) + SterlingSilver = REGISTRATE.material("sterling_silver") .ingot() .liquid(new FluidBuilder().temperature(1258)) .color(0xfaf4dc).secondaryColor(0x484434).iconSet(SHINY) @@ -424,7 +423,7 @@ public static void register() { .blastStats(VA[MV], 1000)) .buildAndRegister(); - RoseGold = new Material.Builder(GTCEu.id("rose_gold")) + RoseGold = REGISTRATE.material("rose_gold") .ingot() .liquid(new FluidBuilder().temperature(1341)) .color(0xecd5b8).secondaryColor(0xd85f2d).iconSet(SHINY) @@ -439,7 +438,7 @@ public static void register() { .blastStats(VA[MV], 1000)) .buildAndRegister(); - BlackBronze = new Material.Builder(GTCEu.id("black_bronze")) + BlackBronze = REGISTRATE.material("black_bronze") .ingot() .liquid(new FluidBuilder().temperature(1328)) .color(0x8b7c70).secondaryColor(0x4b3d32).iconSet(METALLIC) @@ -451,7 +450,7 @@ public static void register() { .blastStats(VA[MV], 1000)) .buildAndRegister(); - BismuthBronze = new Material.Builder(GTCEu.id("bismuth_bronze")) + BismuthBronze = REGISTRATE.material("bismuth_bronze") .ingot() .liquid(new FluidBuilder().temperature(1036)) .color(0xffd26f).secondaryColor(0x895f3d).iconSet(METALLIC) @@ -462,45 +461,45 @@ public static void register() { .blastStats(VA[MV], 1000)) .buildAndRegister(); - Biotite = new Material.Builder(GTCEu.id("biotite")) + Biotite = REGISTRATE.material("biotite") .dust(1) .color(0x343b34).secondaryColor(0x121200).iconSet(METALLIC) .components(Potassium, 1, Magnesium, 3, Aluminium, 3, Fluorine, 2, Silicon, 3, Oxygen, 10) .buildAndRegister(); - Powellite = new Material.Builder(GTCEu.id("powellite")) + Powellite = REGISTRATE.material("powellite") .dust().ore() .color(0xd8cfac).secondaryColor(0xbc7a2c) .components(Calcium, 1, Molybdenum, 1, Oxygen, 4) .buildAndRegister(); - Pyrite = new Material.Builder(GTCEu.id("pyrite")) + Pyrite = REGISTRATE.material("pyrite") .dust(1).ore() .color(0xfffee6).secondaryColor(0xb69f4e).iconSet(ROUGH) .flags(BLAST_FURNACE_CALCITE_DOUBLE) .components(Iron, 1, Sulfur, 2) .buildAndRegister(); - Pyrolusite = new Material.Builder(GTCEu.id("pyrolusite")) + Pyrolusite = REGISTRATE.material("pyrolusite") .dust().ore() .color(0xc7b5ab).secondaryColor(0x595756) .components(Manganese, 1, Oxygen, 2) .buildAndRegister(); - Pyrope = new Material.Builder(GTCEu.id("pyrope")) + Pyrope = REGISTRATE.material("pyrope") .gem().ore(3, 1) .color(0xe81958).secondaryColor(0x811e00).iconSet(RUBY) .components(Aluminium, 2, Magnesium, 3, Silicon, 3, Oxygen, 12) .buildAndRegister(); - RockSalt = new Material.Builder(GTCEu.id("rock_salt")) + RockSalt = REGISTRATE.material("rock_salt") .gem(1).ore(2, 1) .color(0xffeae1).secondaryColor(0xF0C8C8).iconSet(FINE) .flags(NO_SMASHING) .components(Potassium, 1, Chlorine, 1) .buildAndRegister(); - RTMAlloy = new Material.Builder(GTCEu.id("rtm_alloy")) + RTMAlloy = REGISTRATE.material("rtm_alloy") .ingot().fluid() .color(0x30306B).iconSet(SHINY) .components(Ruthenium, 4, Tungsten, 2, Molybdenum, 1) @@ -511,7 +510,7 @@ public static void register() { .vacuumStats(VA[HV], 250)) .buildAndRegister(); - Ruridit = new Material.Builder(GTCEu.id("ruridit")) + Ruridit = REGISTRATE.material("ruridit") .ingot(3) .fluid() .color(0x88b5b9).secondaryColor(0x4e885c).iconSet(BRIGHT) @@ -522,35 +521,35 @@ public static void register() { .vacuumStats(VA[HV], 300)) .buildAndRegister(); - Ruby = new Material.Builder(GTCEu.id("ruby")) + Ruby = REGISTRATE.material("ruby") .gem().ore() .color(0xd72310).secondaryColor(0x960b6d).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, GENERATE_LENS) .components(Chromium, 1, Aluminium, 2, Oxygen, 3) .buildAndRegister(); - Salt = new Material.Builder(GTCEu.id("salt")) + Salt = REGISTRATE.material("salt") .gem(1).ore(2, 1) .color(0xFAFAFA).iconSet(FINE) .flags(NO_SMASHING) .components(Sodium, 1, Chlorine, 1) .buildAndRegister(); - Saltpeter = new Material.Builder(GTCEu.id("saltpeter")) + Saltpeter = REGISTRATE.material("saltpeter") .dust(1).ore(2, 1) .color(0xE6E6E6).secondaryColor(0xe6e1cf).iconSet(FINE) .flags(NO_SMASHING, NO_SMELTING, FLAMMABLE) .components(Potassium, 1, Nitrogen, 1, Oxygen, 3) .buildAndRegister(); - Sapphire = new Material.Builder(GTCEu.id("sapphire")) + Sapphire = REGISTRATE.material("sapphire") .gem().ore() .color(0x3235e3).secondaryColor(0x211455).iconSet(EMERALD) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, GENERATE_LENS) .components(Aluminium, 2, Oxygen, 3) .buildAndRegister(); - Scheelite = new Material.Builder(GTCEu.id("scheelite")) + Scheelite = REGISTRATE.material("scheelite") .dust(3).ore() .color(0xd7e8b3).secondaryColor(0x143cae) .flags(DISABLE_DECOMPOSITION) @@ -558,7 +557,7 @@ public static void register() { .buildAndRegister() .setFormula("Ca(WO3)O", true); - Sodalite = new Material.Builder(GTCEu.id("sodalite")) + Sodalite = REGISTRATE.material("sodalite") .gem(1).ore(6, 4) .color(0x3d54ff).secondaryColor(0x210d78).iconSet(LAPIS) .flags(GENERATE_PLATE, GENERATE_ROD, NO_SMASHING, NO_SMELTING, CRYSTALLIZABLE, @@ -566,46 +565,46 @@ public static void register() { .components(Aluminium, 3, Silicon, 3, Sodium, 4, Chlorine, 1) .buildAndRegister(); - AluminiumSulfite = new Material.Builder(GTCEu.id("aluminium_sulfite")) + AluminiumSulfite = REGISTRATE.material("aluminium_sulfite") .dust() .color(0xd4ecf9).secondaryColor(0xa6b9b6) .components(Aluminium, 2, Sulfur, 3, Oxygen, 9) .buildAndRegister().setFormula("Al2(SO3)3", true); - Tantalite = new Material.Builder(GTCEu.id("tantalite")) + Tantalite = REGISTRATE.material("tantalite") .dust(3).ore() .color(0x4e6b94).secondaryColor(0x632300).iconSet(METALLIC) .components(Manganese, 1, Tantalum, 2, Oxygen, 6) .buildAndRegister(); - Coke = new Material.Builder(GTCEu.id("coke")) + Coke = REGISTRATE.material("coke") .gem(2, 3200) // 2x burn time of coal .color(0x575e5b).secondaryColor(0x1f1f29).iconSet(LIGNITE) .flags(FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE) .components(Carbon, 1) .buildAndRegister(); - SolderingAlloy = new Material.Builder(GTCEu.id("soldering_alloy")) + SolderingAlloy = REGISTRATE.material("soldering_alloy") .ingot(1) .liquid(new FluidBuilder().temperature(544)) .color(0x8c8ca7).secondaryColor(0x8675a7) .components(Tin, 6, Lead, 3, Antimony, 1) .buildAndRegister(); - Spessartine = new Material.Builder(GTCEu.id("spessartine")) + Spessartine = REGISTRATE.material("spessartine") .gem().ore(3, 1) .color(0xffa81e).secondaryColor(0xb33700).iconSet(RUBY) .components(Aluminium, 2, Manganese, 3, Silicon, 3, Oxygen, 12) .buildAndRegister(); - Sphalerite = new Material.Builder(GTCEu.id("sphalerite")) + Sphalerite = REGISTRATE.material("sphalerite") .dust(1).ore() .color(0xffdc88).secondaryColor(0x0f1605) .flags(DISABLE_DECOMPOSITION) .components(Zinc, 1, Sulfur, 1) .buildAndRegister(); - StainlessSteel = new Material.Builder(GTCEu.id("stainless_steel")) + StainlessSteel = REGISTRATE.material("stainless_steel") .ingot(3) .liquid(new FluidBuilder().temperature(2011)) .color(0xededfd).secondaryColor(0x19191d).iconSet(SHINY) @@ -620,7 +619,7 @@ public static void register() { .blastStats(VA[HV], 1100)) .buildAndRegister(); - Steel = new Material.Builder(GTCEu.id("steel")) + Steel = REGISTRATE.material("steel") .ingot(3) .liquid(new FluidBuilder().temperature(2046)) .color(0xa7a7a7).secondaryColor(0x121c37).iconSet(METALLIC) @@ -640,20 +639,20 @@ public static void register() { .blastStats(VA[MV], 800)) // no gas tier for steel .buildAndRegister(); - Stibnite = new Material.Builder(GTCEu.id("stibnite")) + Stibnite = REGISTRATE.material("stibnite") .dust().ore() .color(0x656565).secondaryColor(0x0a1432).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Antimony, 2, Sulfur, 3) .buildAndRegister(); - Tetrahedrite = new Material.Builder(GTCEu.id("tetrahedrite")) + Tetrahedrite = REGISTRATE.material("tetrahedrite") .dust().ore() .color(0xa3a09b).secondaryColor(0x143313) .components(Copper, 2, Iron, 1, Antimony, 1, Sulfur, 3) .buildAndRegister(); - TinAlloy = new Material.Builder(GTCEu.id("tin_alloy")) + TinAlloy = REGISTRATE.material("tin_alloy") .ingot() .liquid(new FluidBuilder().temperature(1258)) .color(0xC8C8C8).secondaryColor(0x8b8b8b).iconSet(METALLIC) @@ -662,14 +661,14 @@ public static void register() { .fluidPipeProperties(1572, 20, true) .buildAndRegister(); - Topaz = new Material.Builder(GTCEu.id("topaz")) + Topaz = REGISTRATE.material("topaz") .gem(3).ore() .color(0xe8d73a).secondaryColor(0xf4680f).iconSet(GEM_HORIZONTAL) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT) .components(Aluminium, 2, Silicon, 1, Oxygen, 5, Fluorine, 1, Hydrogen, 1) .buildAndRegister(); - Tungstate = new Material.Builder(GTCEu.id("tungstate")) + Tungstate = REGISTRATE.material("tungstate") .dust(3).ore() .color(0xe0ffc4).secondaryColor(0xab4400) .flags(DISABLE_DECOMPOSITION) @@ -677,7 +676,7 @@ public static void register() { .buildAndRegister() .setFormula("Li2(WO3)O", true); - Ultimet = new Material.Builder(GTCEu.id("ultimet")) + Ultimet = REGISTRATE.material("ultimet") .ingot(4) .liquid(new FluidBuilder().temperature(1980)) .color(0x9f9fb1).secondaryColor(0x385086).iconSet(SHINY) @@ -691,7 +690,7 @@ public static void register() { .blastStats(VA[HV], 1300)) .buildAndRegister(); - Uraninite = new Material.Builder(GTCEu.id("uraninite")) + Uraninite = REGISTRATE.material("uraninite") .dust(3).ore(true) .color(0xffd52e).secondaryColor(0x17212b).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) @@ -699,13 +698,13 @@ public static void register() { .buildAndRegister() .setFormula("UO2", true); - Uvarovite = new Material.Builder(GTCEu.id("uvarovite")) + Uvarovite = REGISTRATE.material("uvarovite") .gem() .color(0x2ded4c).secondaryColor(0x00697c).iconSet(RUBY) .components(Calcium, 3, Chromium, 2, Silicon, 3, Oxygen, 12) .buildAndRegister(); - VanadiumGallium = new Material.Builder(GTCEu.id("vanadium_gallium")) + VanadiumGallium = REGISTRATE.material("vanadium_gallium") .ingot() .liquid(new FluidBuilder().temperature(1712)) .color(0x89aeec).secondaryColor(0x00379d).iconSet(SHINY) @@ -717,7 +716,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - WroughtIron = new Material.Builder(GTCEu.id("wrought_iron")) + WroughtIron = REGISTRATE.material("wrought_iron") .ingot() .liquid(new FluidBuilder().temperature(2011)) .color(0xbcbcbc).secondaryColor(0x521c0b).iconSet(METALLIC) @@ -732,20 +731,21 @@ public static void register() { Iron.getProperty(PropertyKey.INGOT).setSmeltingInto(WroughtIron); Iron.getProperty(PropertyKey.INGOT).setArcSmeltingInto(WroughtIron); - Wulfenite = new Material.Builder(GTCEu.id("wulfenite")) + Wulfenite = REGISTRATE.material("wulfenite") .dust(3).ore() .color(0xff9000).secondaryColor(0xFF0000) .components(Lead, 1, Molybdenum, 1, Oxygen, 4) .buildAndRegister(); - YellowLimonite = new Material.Builder(GTCEu.id("yellow_limonite")) + Limonite = REGISTRATE.material("yellow_limonite") .dust().ore() .color(0xf5e315).secondaryColor(0xc06f33).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING, BLAST_FURNACE_CALCITE_DOUBLE) .components(Iron, 1, Hydrogen, 1, Oxygen, 2) .buildAndRegister(); + YellowLimonite = Limonite; - YttriumBariumCuprate = new Material.Builder(GTCEu.id("yttrium_barium_cuprate")) + YttriumBariumCuprate = REGISTRATE.material("yttrium_barium_cuprate") .ingot() .liquid(new FluidBuilder().temperature(1799)) .color(0x796d72).secondaryColor(0x260a3a).iconSet(METALLIC) @@ -758,7 +758,7 @@ public static void register() { .vacuumStats(VA[EV], 150)) .buildAndRegister(); - NetherQuartz = new Material.Builder(GTCEu.id("nether_quartz")) + NetherQuartz = REGISTRATE.material("nether_quartz") .gem(1).ore(2, 1) .color(0xf8efe3).secondaryColor(0xe6c1bb).iconSet(QUARTZ) .flags(GENERATE_PLATE, NO_SMELTING, CRYSTALLIZABLE, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES, @@ -766,28 +766,28 @@ public static void register() { .components(Silicon, 1, Oxygen, 2) .buildAndRegister(); - CertusQuartz = new Material.Builder(GTCEu.id("certus_quartz")) + CertusQuartz = REGISTRATE.material("certus_quartz") .gem(1).ore(2, 1) .color(0xc2d6ff).secondaryColor(0x86bacf).iconSet(CERTUS) .flags(GENERATE_PLATE, NO_SMELTING, CRYSTALLIZABLE, DISABLE_DECOMPOSITION) .components(Silicon, 1, Oxygen, 2) .buildAndRegister(); - Quartzite = new Material.Builder(GTCEu.id("quartzite")) + Quartzite = REGISTRATE.material("quartzite") .gem(1).ore(2, 1) .color(0xf2f5ed).secondaryColor(0xb8e2b8).iconSet(QUARTZ) .flags(NO_SMELTING, CRYSTALLIZABLE, DISABLE_DECOMPOSITION, GENERATE_PLATE) .components(Silicon, 1, Oxygen, 2) .buildAndRegister(); - Graphite = new Material.Builder(GTCEu.id("graphite")) + Graphite = REGISTRATE.material("graphite") .ore() .color(0xa8a89e).secondaryColor(0x172602) .flags(NO_SMELTING, FLAMMABLE, DISABLE_DECOMPOSITION) .components(Carbon, 1) .buildAndRegister(); - Graphene = new Material.Builder(GTCEu.id("graphene")) + Graphene = REGISTRATE.material("graphene") .dust().ingot() .color(0x808080).secondaryColor(0x3d3838).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION, GENERATE_FOIL) @@ -795,14 +795,14 @@ public static void register() { .cableProperties(V[IV], 1, 1) .buildAndRegister(); - TungsticAcid = new Material.Builder(GTCEu.id("tungstic_acid")) + TungsticAcid = REGISTRATE.material("tungstic_acid") .dust() .color(0xfffc03).secondaryColor(0x886217).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 2, Tungsten, 1, Oxygen, 4) .buildAndRegister(); - Osmiridium = new Material.Builder(GTCEu.id("osmiridium")) + Osmiridium = REGISTRATE.material("osmiridium") .ingot(3) .liquid(new FluidBuilder().temperature(3012)) .color(0x47adb6).secondaryColor(0x241a44).iconSet(METALLIC) @@ -816,31 +816,31 @@ public static void register() { .vacuumStats(VA[EV], 200)) .buildAndRegister(); - LithiumChloride = new Material.Builder(GTCEu.id("lithium_chloride")) + LithiumChloride = REGISTRATE.material("lithium_chloride") .dust() .color(0xDEDEFA).iconSet(FINE) .components(Lithium, 1, Chlorine, 1) .buildAndRegister(); - CalciumChloride = new Material.Builder(GTCEu.id("calcium_chloride")) + CalciumChloride = REGISTRATE.material("calcium_chloride") .dust() .color(0xFFFFFF).secondaryColor(0xe7e7d7).iconSet(FINE) .components(Calcium, 1, Chlorine, 2) .buildAndRegister(); - Bornite = new Material.Builder(GTCEu.id("bornite")) + Bornite = REGISTRATE.material("bornite") .dust(1).ore() .color(0xffe05a).secondaryColor(0x442602).iconSet(ROUGH) .components(Copper, 5, Iron, 1, Sulfur, 4) .buildAndRegister(); - Chalcocite = new Material.Builder(GTCEu.id("chalcocite")) + Chalcocite = REGISTRATE.material("chalcocite") .dust().ore() .color(0x657882).secondaryColor(0x33302e).iconSet(EMERALD) .components(Copper, 2, Sulfur, 1) .buildAndRegister(); - GalliumArsenide = new Material.Builder(GTCEu.id("gallium_arsenide")) + GalliumArsenide = REGISTRATE.material("gallium_arsenide") .ingot(1) .liquid(new FluidBuilder().temperature(1511)) .color(0x938fff).secondaryColor(0x8c548c) @@ -850,19 +850,19 @@ public static void register() { .blastStats(VA[MV], 1200)) .buildAndRegister(); - Potash = new Material.Builder(GTCEu.id("potash")) + Potash = REGISTRATE.material("potash") .dust(1) .color(0xffa772).secondaryColor(0x922f1b).iconSet(FINE) .components(Potassium, 2, Oxygen, 1) .buildAndRegister(); - SodaAsh = new Material.Builder(GTCEu.id("soda_ash")) + SodaAsh = REGISTRATE.material("soda_ash") .dust(1) .color(0xffffff).secondaryColor(0xDCDCFF) .components(Sodium, 2, Carbon, 1, Oxygen, 3) .buildAndRegister(); - IndiumGalliumPhosphide = new Material.Builder(GTCEu.id("indium_gallium_phosphide")) + IndiumGalliumPhosphide = REGISTRATE.material("indium_gallium_phosphide") .ingot(1) .liquid(new FluidBuilder().temperature(350)) .color(0xa77bd7).secondaryColor(0x4e546b) @@ -870,7 +870,7 @@ public static void register() { .components(Indium, 1, Gallium, 1, Phosphorus, 1) .buildAndRegister(); - NickelZincFerrite = new Material.Builder(GTCEu.id("nickel_zinc_ferrite")) + NickelZincFerrite = REGISTRATE.material("nickel_zinc_ferrite") .ingot(0) .liquid(new FluidBuilder().temperature(1410)) .color(0x3f2821).secondaryColor(0x2c2725) @@ -878,143 +878,143 @@ public static void register() { .components(Nickel, 1, Zinc, 1, Iron, 4, Oxygen, 8) .buildAndRegister(); - SiliconDioxide = new Material.Builder(GTCEu.id("silicon_dioxide")) + SiliconDioxide = REGISTRATE.material("silicon_dioxide") .dust(1) .color(0xf2f2f2).secondaryColor(0xb2c4c7).iconSet(QUARTZ) .flags(NO_SMASHING, NO_SMELTING) .components(Silicon, 1, Oxygen, 2) .buildAndRegister(); - MagnesiumChloride = new Material.Builder(GTCEu.id("magnesium_chloride")) + MagnesiumChloride = REGISTRATE.material("magnesium_chloride") .dust(1) .color(0xeee4e9).secondaryColor(0xD40D5C) .flags(DISABLE_DECOMPOSITION) .components(Magnesium, 1, Chlorine, 2) .buildAndRegister(); - SodiumSulfide = new Material.Builder(GTCEu.id("sodium_sulfide")) + SodiumSulfide = REGISTRATE.material("sodium_sulfide") .dust(1) .color(0xffd83d).secondaryColor(0xc54a00) .components(Sodium, 2, Sulfur, 1) .buildAndRegister(); - PhosphorusPentoxide = new Material.Builder(GTCEu.id("phosphorus_pentoxide")) + PhosphorusPentoxide = REGISTRATE.material("phosphorus_pentoxide") .dust(1) .color(0xe89188).secondaryColor(0x220202) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Phosphorus, 4, Oxygen, 10) .buildAndRegister(); - Quicklime = new Material.Builder(GTCEu.id("quicklime")) + Quicklime = REGISTRATE.material("quicklime") .dust(1) .color(0xecfff3).secondaryColor(0x7d8e83) .components(Calcium, 1, Oxygen, 1) .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) .buildAndRegister(); - SodiumBisulfate = new Material.Builder(GTCEu.id("sodium_bisulfate")) + SodiumBisulfate = REGISTRATE.material("sodium_bisulfate") .dust(1) .color(0xfeffed).secondaryColor(0xf1f0a3) .flags(DISABLE_DECOMPOSITION) .components(Sodium, 1, Hydrogen, 1, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - FerriteMixture = new Material.Builder(GTCEu.id("ferrite_mixture")) + FerriteMixture = REGISTRATE.material("ferrite_mixture") .dust(1) .color(0xB4B4B4).secondaryColor(0x763200).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Nickel, 1, Zinc, 1, Iron, 4) .buildAndRegister(); - Magnesia = new Material.Builder(GTCEu.id("magnesia")) + Magnesia = REGISTRATE.material("magnesia") .dust(1) .color(0x998282).secondaryColor(0x594d19) .components(Magnesium, 1, Oxygen, 1) .buildAndRegister(); - PlatinumGroupSludge = new Material.Builder(GTCEu.id("platinum_group_sludge")) + PlatinumGroupSludge = REGISTRATE.material("platinum_group_sludge") .dust(1) .color(0x343228).secondaryColor(0x001E00).iconSet(FINE) .flags(DISABLE_DECOMPOSITION) .buildAndRegister(); - Realgar = new Material.Builder(GTCEu.id("realgar")) + Realgar = REGISTRATE.material("realgar") .gem().ore() .color(0xff3d33).secondaryColor(0x3f0110).iconSet(EMERALD) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Arsenic, 4, Sulfur, 4) .buildAndRegister(); - SodiumBicarbonate = new Material.Builder(GTCEu.id("sodium_bicarbonate")) + SodiumBicarbonate = REGISTRATE.material("sodium_bicarbonate") .dust(1) .color(0xFFFFFF).secondaryColor(0xa7d2df).iconSet(ROUGH) .flags(DISABLE_DECOMPOSITION) .components(Sodium, 1, Hydrogen, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); - PotassiumDichromate = new Material.Builder(GTCEu.id("potassium_dichromate")) + PotassiumDichromate = REGISTRATE.material("potassium_dichromate") .dust(1) .color(0xff6000).secondaryColor(0xFF0000) .components(Potassium, 2, Chromium, 2, Oxygen, 7) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON) .buildAndRegister(); - ChromiumTrioxide = new Material.Builder(GTCEu.id("chromium_trioxide")) + ChromiumTrioxide = REGISTRATE.material("chromium_trioxide") .dust(1) .color(0xFFE4E1) .components(Chromium, 1, Oxygen, 3) .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.IRRITANT) .buildAndRegister(); - AntimonyTrioxide = new Material.Builder(GTCEu.id("antimony_trioxide")) + AntimonyTrioxide = REGISTRATE.material("antimony_trioxide") .dust(1) .color(0xf5f5ff).secondaryColor(0xc4c4d6) .components(Antimony, 2, Oxygen, 3) .buildAndRegister(); - Zincite = new Material.Builder(GTCEu.id("zincite")) + Zincite = REGISTRATE.material("zincite") .dust(1) .color(0xff9f49).secondaryColor(0xff0000) .components(Zinc, 1, Oxygen, 1) .buildAndRegister(); - CupricOxide = new Material.Builder(GTCEu.id("cupric_oxide")) + CupricOxide = REGISTRATE.material("cupric_oxide") .dust(1) .color(0x8df7cf).secondaryColor(0x57696e) .components(Copper, 1, Oxygen, 1) .buildAndRegister(); - CobaltOxide = new Material.Builder(GTCEu.id("cobalt_oxide")) + CobaltOxide = REGISTRATE.material("cobalt_oxide") .dust(1) .color(0x3cb099).secondaryColor(0x3b5c66) .components(Cobalt, 1, Oxygen, 1) .buildAndRegister(); - ArsenicTrioxide = new Material.Builder(GTCEu.id("arsenic_trioxide")) + ArsenicTrioxide = REGISTRATE.material("arsenic_trioxide") .dust(1) .color(0xf9f3f3).secondaryColor(0x3b5c66).iconSet(ROUGH) .components(Arsenic, 2, Oxygen, 3) .buildAndRegister(); - Massicot = new Material.Builder(GTCEu.id("massicot")) + Massicot = REGISTRATE.material("massicot") .dust(1) .color(0xFFDD55).secondaryColor(0x000000) .components(Lead, 1, Oxygen, 1) .buildAndRegister(); - Ferrosilite = new Material.Builder(GTCEu.id("ferrosilite")) + Ferrosilite = REGISTRATE.material("ferrosilite") .dust(1) .color(0x968c80).secondaryColor(0x97732a) .components(Iron, 1, Silicon, 1, Oxygen, 3) .buildAndRegister(); - MetalMixture = new Material.Builder(GTCEu.id("metal_mixture")) + MetalMixture = REGISTRATE.material("metal_mixture") .dust(1) .color(0x697077).secondaryColor(0x502d16).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .buildAndRegister(); - SodiumHydroxide = new Material.Builder(GTCEu.id("sodium_hydroxide")) + SodiumHydroxide = REGISTRATE.material("sodium_hydroxide") .dust(1) .color(0xf5feff).secondaryColor(0xa4ebf1) .flags(DISABLE_DECOMPOSITION) @@ -1022,84 +1022,84 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) .buildAndRegister(); - SodiumPersulfate = new Material.Builder(GTCEu.id("sodium_persulfate")) + SodiumPersulfate = REGISTRATE.material("sodium_persulfate") .liquid(new FluidBuilder().customStill()) .components(Sodium, 2, Sulfur, 2, Oxygen, 8) .buildAndRegister(); - Bastnasite = new Material.Builder(GTCEu.id("bastnasite")) + Bastnasite = REGISTRATE.material("bastnasite") .dust().ore(2, 1) .color(0xcaab60).secondaryColor(0xc8502d).iconSet(FINE) .components(Cerium, 1, Carbon, 1, Fluorine, 1, Oxygen, 3) .buildAndRegister(); - Pentlandite = new Material.Builder(GTCEu.id("pentlandite")) + Pentlandite = REGISTRATE.material("pentlandite") .dust().ore() .color(0xe3cf13).secondaryColor(0x29315b) .components(Nickel, 9, Sulfur, 8) .buildAndRegister(); - Spodumene = new Material.Builder(GTCEu.id("spodumene")) + Spodumene = REGISTRATE.material("spodumene") .dust().ore() .color(0xffbcbc).secondaryColor(0xc490ff) .components(Lithium, 1, Aluminium, 1, Silicon, 2, Oxygen, 6) .buildAndRegister(); - Lepidolite = new Material.Builder(GTCEu.id("lepidolite")) + Lepidolite = REGISTRATE.material("lepidolite") .dust().ore(2, 1) .color(0xffdae4).secondaryColor(0x75376f).iconSet(FINE) .components(Potassium, 1, Lithium, 3, Aluminium, 4, Fluorine, 2, Oxygen, 10) .buildAndRegister(); - GlauconiteSand = new Material.Builder(GTCEu.id("glauconite_sand")) + GlauconiteSand = REGISTRATE.material("glauconite_sand") .dust().ore(3, 1) .color(0x1da351).secondaryColor(0x1a6e8f).iconSet(SAND) .components(Potassium, 1, Magnesium, 2, Aluminium, 2, Silicon, 3, Oxygen, 12, Hydrogen, 2, Water, 1) .buildAndRegister(); - Malachite = new Material.Builder(GTCEu.id("malachite")) + Malachite = REGISTRATE.material("malachite") .gem().ore() .color(0x00f1b0).secondaryColor(0x107a47).iconSet(LAPIS) .components(Copper, 2, Carbon, 1, Hydrogen, 2, Oxygen, 5) .buildAndRegister(); - Mica = new Material.Builder(GTCEu.id("mica")) + Mica = REGISTRATE.material("mica") .dust().ore(2, 1) .color(0xecfeff).secondaryColor(0xc2a03c).iconSet(FINE) .components(Potassium, 1, Aluminium, 3, Silicon, 3, Fluorine, 2, Oxygen, 10) .buildAndRegister(); - Barite = new Material.Builder(GTCEu.id("barite")) + Barite = REGISTRATE.material("barite") .dust().ore() .color(0xe8e2d1).secondaryColor(0xf4b74b) .components(Barium, 1, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - Alunite = new Material.Builder(GTCEu.id("alunite")) + Alunite = REGISTRATE.material("alunite") .dust().ore(3, 1) .color(0xfbd677).secondaryColor(0xe11e0a).iconSet(METALLIC) .components(Potassium, 1, Aluminium, 2, Silicon, 2, Hydrogen, 6, Oxygen, 14) .buildAndRegister(); - Talc = new Material.Builder(GTCEu.id("talc")) + Talc = REGISTRATE.material("talc") .dust().ore(2, 1) .color(0xebffe9).secondaryColor(0x6fe19b).iconSet(FINE) .components(Magnesium, 3, Silicon, 4, Hydrogen, 2, Oxygen, 12) .buildAndRegister(); - Soapstone = new Material.Builder(GTCEu.id("soapstone")) + Soapstone = REGISTRATE.material("soapstone") .dust(1).ore(3, 1) .color(0x5a7261).secondaryColor(0x464c4b).iconSet(ROUGH) .components(Magnesium, 3, Silicon, 4, Hydrogen, 2, Oxygen, 12) .buildAndRegister(); - Kyanite = new Material.Builder(GTCEu.id("kyanite")) + Kyanite = REGISTRATE.material("kyanite") .dust().ore() .color(0xd5ffff).secondaryColor(0x5a69d6).iconSet(FLINT) .components(Aluminium, 2, Silicon, 1, Oxygen, 5) .buildAndRegister(); - IronMagnetic = new Material.Builder(GTCEu.id("magnetic_iron")) + IronMagnetic = REGISTRATE.material("magnetic_iron") .ingot() .color(0xeeeeee).secondaryColor(0x979797).iconSet(MAGNETIC) .flags(GENERATE_BOLT_SCREW, IS_MAGNETIC) @@ -1110,7 +1110,7 @@ public static void register() { .buildAndRegister(); Iron.getProperty(PropertyKey.INGOT).setMagneticMaterial(IronMagnetic); - TungstenCarbide = new Material.Builder(GTCEu.id("tungsten_carbide")) + TungstenCarbide = REGISTRATE.material("tungsten_carbide") .ingot(4).fluid() .color(0x635480).secondaryColor(0x392e44).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_FOIL, GENERATE_GEAR, GENERATE_SMALL_GEAR, GENERATE_FRAME, @@ -1125,114 +1125,114 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - CarbonDioxide = new Material.Builder(GTCEu.id("carbon_dioxide")) + CarbonDioxide = REGISTRATE.material("carbon_dioxide") .gas() .color(0xA9D0F5) .components(Carbon, 1, Oxygen, 2) .buildAndRegister(); - TitaniumTetrachloride = new Material.Builder(GTCEu.id("titanium_tetrachloride")) + TitaniumTetrachloride = REGISTRATE.material("titanium_tetrachloride") .liquid(new FluidBuilder().customStill()) .color(0xD40D5C) .flags(DISABLE_DECOMPOSITION) .components(Titanium, 1, Chlorine, 4) .buildAndRegister(); - NitrogenDioxide = new Material.Builder(GTCEu.id("nitrogen_dioxide")) + NitrogenDioxide = REGISTRATE.material("nitrogen_dioxide") .gas() .color(0x85FCFF) .components(Nitrogen, 1, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, 10) .buildAndRegister(); - HydrogenSulfide = new Material.Builder(GTCEu.id("hydrogen_sulfide")) + HydrogenSulfide = REGISTRATE.material("hydrogen_sulfide") .gas(new FluidBuilder().customStill()) .components(Hydrogen, 2, Sulfur, 1) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, 5) .buildAndRegister(); - NitricAcid = new Material.Builder(GTCEu.id("nitric_acid")) + NitricAcid = REGISTRATE.material("nitric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xCCCC00) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 1, Nitrogen, 1, Oxygen, 3) .buildAndRegister(); - SulfuricAcid = new Material.Builder(GTCEu.id("sulfuric_acid")) + SulfuricAcid = REGISTRATE.material("sulfuric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID).customStill()) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 2, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - PhosphoricAcid = new Material.Builder(GTCEu.id("phosphoric_acid")) + PhosphoricAcid = REGISTRATE.material("phosphoric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xDCDC01) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 3, Phosphorus, 1, Oxygen, 4) .buildAndRegister(); - SulfurTrioxide = new Material.Builder(GTCEu.id("sulfur_trioxide")) + SulfurTrioxide = REGISTRATE.material("sulfur_trioxide") .gas() .color(0xA0A014) .components(Sulfur, 1, Oxygen, 3) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, 1) .buildAndRegister(); - SulfurDioxide = new Material.Builder(GTCEu.id("sulfur_dioxide")) + SulfurDioxide = REGISTRATE.material("sulfur_dioxide") .gas() .color(0x0E4880) .components(Sulfur, 1, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, 1) .buildAndRegister(); - CarbonMonoxide = new Material.Builder(GTCEu.id("carbon_monoxide")) + CarbonMonoxide = REGISTRATE.material("carbon_monoxide") .gas() .color(0x0E4880) .components(Carbon, 1, Oxygen, 1) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARBON_MONOXIDE_POISONING) .buildAndRegister(); - HypochlorousAcid = new Material.Builder(GTCEu.id("hypochlorous_acid")) + HypochlorousAcid = REGISTRATE.material("hypochlorous_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x6F8A91) .components(Hydrogen, 1, Chlorine, 1, Oxygen, 1) .buildAndRegister(); - Ammonia = new Material.Builder(GTCEu.id("ammonia")) + Ammonia = REGISTRATE.material("ammonia") .gas() .color(0x4465a2).secondaryColor(0x3F3480) .components(Nitrogen, 1, Hydrogen, 3) .buildAndRegister(); - HydrofluoricAcid = new Material.Builder(GTCEu.id("hydrofluoric_acid")) + HydrofluoricAcid = REGISTRATE.material("hydrofluoric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x0088AA) .components(Hydrogen, 1, Fluorine, 1) // TODO HF poisoning .hazard(HazardProperty.HazardTrigger.ANY) .buildAndRegister(); - NitricOxide = new Material.Builder(GTCEu.id("nitric_oxide")) + NitricOxide = REGISTRATE.material("nitric_oxide") .gas() .color(0x7DC8F0) .components(Nitrogen, 1, Oxygen, 1) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, 1) .buildAndRegister(); - Iron3Chloride = new Material.Builder(GTCEu.id("iron_iii_chloride")) + Iron3Chloride = REGISTRATE.material("iron_iii_chloride") .liquid() .color(0x060B0B) .flags(DECOMPOSITION_BY_ELECTROLYZING) .components(Iron, 1, Chlorine, 3) .buildAndRegister(); - Iron2Chloride = new Material.Builder(GTCEu.id("iron_ii_chloride")) + Iron2Chloride = REGISTRATE.material("iron_ii_chloride") .liquid() .color(0xe8e0be) .flags(DECOMPOSITION_BY_ELECTROLYZING) .components(Iron, 1, Chlorine, 2) .buildAndRegister(); - UraniumHexafluoride = new Material.Builder(GTCEu.id("uranium_hexafluoride")) + UraniumHexafluoride = REGISTRATE.material("uranium_hexafluoride") .gas() .color(0x42D126) .flags(DISABLE_DECOMPOSITION) @@ -1240,41 +1240,41 @@ public static void register() { .buildAndRegister() .setFormula("UF6", true); - EnrichedUraniumHexafluoride = new Material.Builder(GTCEu.id("enriched_uranium_hexafluoride")) + EnrichedUraniumHexafluoride = REGISTRATE.material("enriched_uranium_hexafluoride") .gas() .color(0x4BF52A) .flags(DISABLE_DECOMPOSITION) .components(Uranium235, 1, Fluorine, 6) .buildAndRegister(); - DepletedUraniumHexafluoride = new Material.Builder(GTCEu.id("depleted_uranium_hexafluoride")) + DepletedUraniumHexafluoride = REGISTRATE.material("depleted_uranium_hexafluoride") .gas() .color(0x74BA66) .flags(DISABLE_DECOMPOSITION) .components(Uranium238, 1, Fluorine, 6) .buildAndRegister(); - NitrousOxide = new Material.Builder(GTCEu.id("nitrous_oxide")) + NitrousOxide = REGISTRATE.material("nitrous_oxide") .gas() .color(0x7DC8FF) .components(Nitrogen, 2, Oxygen, 1) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON, .5f) .buildAndRegister(); - EnderPearl = new Material.Builder(GTCEu.id("ender_pearl")) + EnderPearl = REGISTRATE.material("ender_pearl") .gem(1) .color(0x8cf4e2).secondaryColor(0x032620).iconSet(SHINY) .flags(NO_SMASHING, NO_SMELTING, GENERATE_PLATE) .components(Beryllium, 1, Potassium, 4, Nitrogen, 5) .buildAndRegister(); - PotassiumFeldspar = new Material.Builder(GTCEu.id("potassium_feldspar")) + PotassiumFeldspar = REGISTRATE.material("potassium_feldspar") .dust(1) .color(0xffe3bc).secondaryColor(0xd4918a).iconSet(FINE) .components(Potassium, 1, Aluminium, 1, Silicon, 3, Oxygen, 8) .buildAndRegister(); - NeodymiumMagnetic = new Material.Builder(GTCEu.id("magnetic_neodymium")) + NeodymiumMagnetic = REGISTRATE.material("magnetic_neodymium") .ingot() .color(0x9a8b94).secondaryColor(0x2c2c2c).iconSet(MAGNETIC) .flags(GENERATE_ROD, IS_MAGNETIC) @@ -1285,12 +1285,12 @@ public static void register() { .buildAndRegister(); Neodymium.getProperty(PropertyKey.INGOT).setMagneticMaterial(NeodymiumMagnetic); - HydrochloricAcid = new Material.Builder(GTCEu.id("hydrochloric_acid")) + HydrochloricAcid = REGISTRATE.material("hydrochloric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID).customStill()) .components(Hydrogen, 1, Chlorine, 1) .buildAndRegister(); - Steam = new Material.Builder(GTCEu.id("steam")) + Steam = REGISTRATE.material("steam") .gas(new FluidBuilder() .state(FluidState.GAS) .temperature(373) @@ -1299,21 +1299,21 @@ public static void register() { .components(Hydrogen, 2, Oxygen, 1) .buildAndRegister(); - DistilledWater = new Material.Builder(GTCEu.id("distilled_water")) + DistilledWater = REGISTRATE.material("distilled_water") .fluid() .color(0x4A94FF) .flags(DISABLE_DECOMPOSITION) .components(Hydrogen, 2, Oxygen, 1) .buildAndRegister(); - SodiumPotassium = new Material.Builder(GTCEu.id("sodium_potassium")) + SodiumPotassium = REGISTRATE.material("sodium_potassium") .fluid() .color(0x64FCB4) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Sodium, 1, Potassium, 1) .buildAndRegister(); - SamariumMagnetic = new Material.Builder(GTCEu.id("magnetic_samarium")) + SamariumMagnetic = REGISTRATE.material("magnetic_samarium") .ingot() .color(0xc5c5b3).secondaryColor(0x183e3f).iconSet(MAGNETIC) .flags(GENERATE_LONG_ROD, IS_MAGNETIC) @@ -1324,7 +1324,7 @@ public static void register() { .buildAndRegister(); Samarium.getProperty(PropertyKey.INGOT).setMagneticMaterial(SamariumMagnetic); - ManganesePhosphide = new Material.Builder(GTCEu.id("manganese_phosphide")) + ManganesePhosphide = REGISTRATE.material("manganese_phosphide") .ingot() .liquid(new FluidBuilder().temperature(1368)) .color(0xE1B454).secondaryColor(0x223033).iconSet(METALLIC) @@ -1334,7 +1334,7 @@ public static void register() { .blast(1200, GasTier.LOW) .buildAndRegister(); - MagnesiumDiboride = new Material.Builder(GTCEu.id("magnesium_diboride")) + MagnesiumDiboride = REGISTRATE.material("magnesium_diboride") .ingot() .liquid(new FluidBuilder().temperature(1103)) .color(0x603c1a).secondaryColor(0x423e39).iconSet(METALLIC) @@ -1346,7 +1346,7 @@ public static void register() { .vacuumStats(VA[MV], 200)) .buildAndRegister(); - MercuryBariumCalciumCuprate = new Material.Builder(GTCEu.id("mercury_barium_calcium_cuprate")) + MercuryBariumCalciumCuprate = REGISTRATE.material("mercury_barium_calcium_cuprate") .ingot() .liquid(new FluidBuilder().temperature(1075)) .color(0x928547).secondaryColor(0x3f2e2e).iconSet(SHINY) @@ -1358,7 +1358,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - UraniumTriplatinum = new Material.Builder(GTCEu.id("uranium_triplatinum")) + UraniumTriplatinum = REGISTRATE.material("uranium_triplatinum") .ingot() .liquid(new FluidBuilder().temperature(1882)) .color(0x457045).secondaryColor(0x66ff00).iconSet(RADIOACTIVE) @@ -1371,7 +1371,7 @@ public static void register() { .buildAndRegister() .setFormula("UPt3", true); - SamariumIronArsenicOxide = new Material.Builder(GTCEu.id("samarium_iron_arsenic_oxide")) + SamariumIronArsenicOxide = REGISTRATE.material("samarium_iron_arsenic_oxide") .ingot() .liquid(new FluidBuilder().temperature(1347)) .color(0x850e85).secondaryColor(0x332f33).iconSet(SHINY) @@ -1383,7 +1383,7 @@ public static void register() { .vacuumStats(VA[IV], 200)) .buildAndRegister(); - IndiumTinBariumTitaniumCuprate = new Material.Builder(GTCEu.id("indium_tin_barium_titanium_cuprate")) + IndiumTinBariumTitaniumCuprate = REGISTRATE.material("indium_tin_barium_titanium_cuprate") .ingot() .liquid(new FluidBuilder().temperature(1012)) .color(0x686760).secondaryColor(0x673300).iconSet(METALLIC) @@ -1395,7 +1395,7 @@ public static void register() { .vacuumStats(VA[LuV])) .buildAndRegister(); - UraniumRhodiumDinaquadide = new Material.Builder(GTCEu.id("uranium_rhodium_dinaquadide")) + UraniumRhodiumDinaquadide = REGISTRATE.material("uranium_rhodium_dinaquadide") .ingot() .liquid(new FluidBuilder().temperature(3410)) .color(0x232020).secondaryColor(0xff009c).iconSet(RADIOACTIVE) @@ -1408,8 +1408,8 @@ public static void register() { .buildAndRegister() .setFormula("URhNq2", true); - EnrichedNaquadahTriniumEuropiumDuranide = new Material.Builder( - GTCEu.id("enriched_naquadah_trinium_europium_duranide")) + EnrichedNaquadahTriniumEuropiumDuranide = REGISTRATE.material( + "enriched_naquadah_trinium_europium_duranide") .ingot() .liquid(new FluidBuilder().temperature(5930)) .color(0xc6b083).secondaryColor(0x45063d).iconSet(METALLIC) @@ -1421,7 +1421,7 @@ public static void register() { .vacuumStats(VA[UV], 200)) .buildAndRegister(); - RutheniumTriniumAmericiumNeutronate = new Material.Builder(GTCEu.id("ruthenium_trinium_americium_neutronate")) + RutheniumTriniumAmericiumNeutronate = REGISTRATE.material("ruthenium_trinium_americium_neutronate") .ingot() .liquid(new FluidBuilder().temperature(23691)) .color(0x897b76).secondaryColor(0x00c0ff).iconSet(RADIOACTIVE) @@ -1433,14 +1433,14 @@ public static void register() { .vacuumStats(VA[UHV], 200)) .buildAndRegister(); - InertMetalMixture = new Material.Builder(GTCEu.id("inert_metal_mixture")) + InertMetalMixture = REGISTRATE.material("inert_metal_mixture") .dust() .color(0x2b0645).secondaryColor(0x6a1600).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Rhodium, 1, Ruthenium, 1, Oxygen, 4) .buildAndRegister(); - RhodiumSulfate = new Material.Builder(GTCEu.id("rhodium_sulfate")) + RhodiumSulfate = REGISTRATE.material("rhodium_sulfate") .liquid(new FluidBuilder().temperature(1128)) .color(0xEEAA55) .flags(DISABLE_DECOMPOSITION) @@ -1448,14 +1448,14 @@ public static void register() { .buildAndRegister() .setFormula("Rh2(SO4)3", true); - RutheniumTetroxide = new Material.Builder(GTCEu.id("ruthenium_tetroxide")) + RutheniumTetroxide = REGISTRATE.material("ruthenium_tetroxide") .dust() .color(0xbeb809).secondaryColor(0x4e4e4d) .flags(DISABLE_DECOMPOSITION) .components(Ruthenium, 1, Oxygen, 4) .buildAndRegister(); - OsmiumTetroxide = new Material.Builder(GTCEu.id("osmium_tetroxide")) + OsmiumTetroxide = REGISTRATE.material("osmium_tetroxide") .dust() .color(0x578d9f).secondaryColor(0x394117).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) @@ -1463,124 +1463,124 @@ public static void register() { // TODO Osmium tetroxide poisoning .hazard(HazardProperty.HazardTrigger.ANY) .buildAndRegister(); - IridiumChloride = new Material.Builder(GTCEu.id("iridium_chloride")) + IridiumChloride = REGISTRATE.material("iridium_chloride") .dust() .color(0x41460c).secondaryColor(0x00542e).iconSet(FINE) .flags(DISABLE_DECOMPOSITION) .components(Iridium, 1, Chlorine, 3) .buildAndRegister(); - FluoroantimonicAcid = new Material.Builder(GTCEu.id("fluoroantimonic_acid")) + FluoroantimonicAcid = REGISTRATE.material("fluoroantimonic_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID).customStill()) .components(Hydrogen, 2, Antimony, 1, Fluorine, 7) .buildAndRegister(); - TitaniumTrifluoride = new Material.Builder(GTCEu.id("titanium_trifluoride")) + TitaniumTrifluoride = REGISTRATE.material("titanium_trifluoride") .dust() .color(0x8F00FF).secondaryColor(0x341465).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Titanium, 1, Fluorine, 3) .buildAndRegister(); - CalciumPhosphide = new Material.Builder(GTCEu.id("calcium_phosphide")) + CalciumPhosphide = REGISTRATE.material("calcium_phosphide") .dust() .color(0xFFF5DE).secondaryColor(0xf6baba).iconSet(METALLIC) .components(Calcium, 1, Phosphorus, 1) .buildAndRegister(); - IndiumPhosphide = new Material.Builder(GTCEu.id("indium_phosphide")) + IndiumPhosphide = REGISTRATE.material("indium_phosphide") .dust() .color(0x734d77).secondaryColor(0x2c272d).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Indium, 1, Phosphorus, 1) .buildAndRegister(); - BariumSulfide = new Material.Builder(GTCEu.id("barium_sulfide")) + BariumSulfide = REGISTRATE.material("barium_sulfide") .dust() .color(0x80784a).secondaryColor(0x2c333b).iconSet(METALLIC) .components(Barium, 1, Sulfur, 1) .buildAndRegister(); - TriniumSulfide = new Material.Builder(GTCEu.id("trinium_sulfide")) + TriniumSulfide = REGISTRATE.material("trinium_sulfide") .dust() .color(0xE68066).secondaryColor(0x6f143a).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Trinium, 1, Sulfur, 1) .buildAndRegister(); - ZincSulfide = new Material.Builder(GTCEu.id("zinc_sulfide")) + ZincSulfide = REGISTRATE.material("zinc_sulfide") .dust() .color(0xfff4d5).secondaryColor(0xdadada) .components(Zinc, 1, Sulfur, 1) .buildAndRegister(); - GalliumSulfide = new Material.Builder(GTCEu.id("gallium_sulfide")) + GalliumSulfide = REGISTRATE.material("gallium_sulfide") .dust() .color(0xffee5d).secondaryColor(0xedf008).iconSet(SHINY) .components(Gallium, 1, Sulfur, 1) .buildAndRegister(); - AntimonyTrifluoride = new Material.Builder(GTCEu.id("antimony_trifluoride")) + AntimonyTrifluoride = REGISTRATE.material("antimony_trifluoride") .dust() .color(0xfffbef).secondaryColor(0xF7EABC).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Antimony, 1, Fluorine, 3) .buildAndRegister(); - EnrichedNaquadahSulfate = new Material.Builder(GTCEu.id("enriched_naquadah_sulfate")) + EnrichedNaquadahSulfate = REGISTRATE.material("enriched_naquadah_sulfate") .dust() .color(0xff8023).secondaryColor(0x044610).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(NaquadahEnriched, 1, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - NaquadriaSulfate = new Material.Builder(GTCEu.id("naquadria_sulfate")) + NaquadriaSulfate = REGISTRATE.material("naquadria_sulfate") .dust() .color(0x85ff5a).secondaryColor(0x006633).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Naquadria, 1, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - Pyrochlore = new Material.Builder(GTCEu.id("pyrochlore")) + Pyrochlore = REGISTRATE.material("pyrochlore") .dust().ore() .color(0x5b4838).secondaryColor(0x331400).iconSet(METALLIC) .components(Calcium, 2, Niobium, 2, Oxygen, 6, Fluorine, 1) .buildAndRegister(); - PotassiumHydroxide = new Material.Builder(GTCEu.id("potassium_hydroxide")) + PotassiumHydroxide = REGISTRATE.material("potassium_hydroxide") .dust(1) .color(0xd1c299).secondaryColor(0x85623a).iconSet(METALLIC) .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) .components(Potassium, 1, Oxygen, 1, Hydrogen, 1) .buildAndRegister(); - PotassiumIodide = new Material.Builder(GTCEu.id("potassium_iodide")) + PotassiumIodide = REGISTRATE.material("potassium_iodide") .dust() .color(0xa66c71).secondaryColor(0x802d67).iconSet(METALLIC) .components(Potassium, 1, Iodine, 1) .buildAndRegister(); - PotassiumCarbonate = new Material.Builder(GTCEu.id("potassium_carbonate")) + PotassiumCarbonate = REGISTRATE.material("potassium_carbonate") .dust() .color(0xa66c71).secondaryColor(0x802d67).iconSet(METALLIC) .components(Potassium, 2, Carbon, 1, Oxygen, 3) .buildAndRegister(); - PotassiumFerrocyanide = new Material.Builder(GTCEu.id("potassium_ferrocyanide")) + PotassiumFerrocyanide = REGISTRATE.material("potassium_ferrocyanide") .dust() .color(0xc9a842).secondaryColor(0x947110).iconSet(DULL) .components(Potassium, 4, Iron, 1, Carbon, 6, Nitrogen, 6) .buildAndRegister() .setFormula("K4[Fe(CN)6]", true); - CalciumFerrocyanide = new Material.Builder(GTCEu.id("calcium_ferrocyanide")) + CalciumFerrocyanide = REGISTRATE.material("calcium_ferrocyanide") .dust() .color(0xc9a842).secondaryColor(0x947110).iconSet(DULL) .components(Calcium, 2, Iron, 1, Carbon, 6, Nitrogen, 6) .buildAndRegister() .setFormula("Ca2[Fe(CN)6]", true); - CalciumHydroxide = new Material.Builder(GTCEu.id("calcium_hydroxide")) + CalciumHydroxide = REGISTRATE.material("calcium_hydroxide") .dust() .color(0x72dbd4).secondaryColor(0x138a80).iconSet(ROUGH) .components(Calcium, 1, Oxygen, 2, Hydrogen, 2) @@ -1588,41 +1588,41 @@ public static void register() { .buildAndRegister() .setFormula("Ca(OH)2", true); - CalciumCarbonate = new Material.Builder(GTCEu.id("calcium_carbonate")) + CalciumCarbonate = REGISTRATE.material("calcium_carbonate") .dust() .color(0xd9ca9c).secondaryColor(0xad913b) .components(Calcium, 1, Carbon, 1, Oxygen, 3) .buildAndRegister(); - PotassiumCyanide = new Material.Builder(GTCEu.id("potassium_cyanide")) + PotassiumCyanide = REGISTRATE.material("potassium_cyanide") .dust() .color(0x93badb).secondaryColor(0x0c5696).iconSet(ROUGH) .components(Potassium, 1, Carbon, 1, Nitrogen, 1) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS, true) .buildAndRegister(); - HydrogenCyanide = new Material.Builder(GTCEu.id("hydrogen_cyanide")) + HydrogenCyanide = REGISTRATE.material("hydrogen_cyanide") .gas() .color(0x72dbd4) .components(Hydrogen, 1, Carbon, 1, Nitrogen, 1) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS, true) .buildAndRegister(); - FormicAcid = new Material.Builder(GTCEu.id("formic_acid")) + FormicAcid = REGISTRATE.material("formic_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xa6a6a6) .components(Carbon, 1, Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CHEMICAL_BURNS) .buildAndRegister(); - PotassiumSulfate = new Material.Builder(GTCEu.id("potassium_sulfate")) + PotassiumSulfate = REGISTRATE.material("potassium_sulfate") .dust() .color(0xebab34).secondaryColor(0xb5570e) .flags(DECOMPOSITION_BY_ELECTROLYZING) .components(Potassium, 2, Sulfur, 1, Oxygen, 4) .buildAndRegister(); - PrussianBlue = new Material.Builder(GTCEu.id("prussian_blue")) + PrussianBlue = REGISTRATE.material("prussian_blue") .dust() .color(0x102e5e).secondaryColor(0x010c42) .flags(DISABLE_DECOMPOSITION) @@ -1630,7 +1630,7 @@ public static void register() { .buildAndRegister() .setFormula("Fe4[Fe(CN)6]3", true); - Formaldehyde = new Material.Builder(GTCEu.id("formaldehyde")) + Formaldehyde = REGISTRATE.material("formaldehyde") .liquid() .color(0xddeced) .flags(DECOMPOSITION_BY_ELECTROLYZING) @@ -1638,42 +1638,42 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON) .buildAndRegister(); - Glycolonitrile = new Material.Builder(GTCEu.id("glycolonitrile")) + Glycolonitrile = REGISTRATE.material("glycolonitrile") .liquid() .color(0x5b8c8f) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 3, Nitrogen, 1, Oxygen, 1) .buildAndRegister(); - DiethylenetriaminePentaacetonitrile = new Material.Builder(GTCEu.id("diethylenetriamine_pentaacetonitrile")) + DiethylenetriaminePentaacetonitrile = REGISTRATE.material("diethylenetriamine_pentaacetonitrile") .liquid() .color(0xcbbfd6) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 14, Hydrogen, 18, Nitrogen, 8) .buildAndRegister(); - DiethylenetriaminepentaaceticAcid = new Material.Builder(GTCEu.id("diethylenetriaminepentaacetic_acid")) + DiethylenetriaminepentaaceticAcid = REGISTRATE.material("diethylenetriaminepentaacetic_acid") .dust() .color(0xe8c93c).secondaryColor(0xc99118) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 14, Hydrogen, 23, Nitrogen, 3, Oxygen, 10) .buildAndRegister(); - SodiumNitrite = new Material.Builder(GTCEu.id("sodium_nitrite")) + SodiumNitrite = REGISTRATE.material("sodium_nitrite") .dust() .color(0xcfbf65).secondaryColor(0x85600b) .flags(DECOMPOSITION_BY_ELECTROLYZING) .components(Sodium, 1, Nitrogen, 1, Oxygen, 2) .buildAndRegister(); - HydrogenPeroxide = new Material.Builder(GTCEu.id("hydrogen_peroxide")) + HydrogenPeroxide = REGISTRATE.material("hydrogen_peroxide") .liquid() .color(0x0cbdd7) .components(Hydrogen, 2, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS, true) .buildAndRegister(); - IlmeniteSlag = new Material.Builder(GTCEu.id("ilmenite_slag")) + IlmeniteSlag = REGISTRATE.material("ilmenite_slag") .dust() .color(0x8B0000).iconSet(SAND) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCYMMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCYMMaterials.java index 95079799674..3bbbcf903a0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCYMMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCYMMaterials.java @@ -1,19 +1,18 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GCYMMaterials { public static void register() { - TantalumCarbide = new Material.Builder(GTCEu.id("tantalum_carbide")) + TantalumCarbide = REGISTRATE.material("tantalum_carbide") .ingot(4).fluid() .color(0x999900).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE) @@ -22,7 +21,7 @@ public static void register() { .blastStats(VA[EV], 1200)) .buildAndRegister(); - HSLASteel = new Material.Builder(GTCEu.id("hsla_steel")) + HSLASteel = REGISTRATE.material("hsla_steel") .ingot(3).fluid() .color(0x686868).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME, GENERATE_SPRING) @@ -31,7 +30,7 @@ public static void register() { .blastStats(VA[GTValues.HV], 1000)) .buildAndRegister(); - MolybdenumDisilicide = new Material.Builder(GTCEu.id("molybdenum_disilicide")) + MolybdenumDisilicide = REGISTRATE.material("molybdenum_disilicide") .ingot(2).fluid() .color(0x564A84).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_SPRING, GENERATE_RING, GENERATE_PLATE, GENERATE_LONG_ROD) @@ -40,7 +39,7 @@ public static void register() { .blastStats(VA[EV], 800)) .buildAndRegister(); - Zeron100 = new Material.Builder(GTCEu.id("zeron_100")) + Zeron100 = REGISTRATE.material("zeron_100") .ingot(5).fluid() .color(0x294972).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE) @@ -49,7 +48,7 @@ public static void register() { .blastStats(VA[EV], 1000)) .buildAndRegister(); - WatertightSteel = new Material.Builder(GTCEu.id("watertight_steel")) + WatertightSteel = REGISTRATE.material("watertight_steel") .ingot(4).fluid() .color(0x2B4B56).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME) @@ -58,7 +57,7 @@ public static void register() { .blastStats(VA[EV], 800)) .buildAndRegister(); - IncoloyMA956 = new Material.Builder(GTCEu.id("incoloy_ma_956")) + IncoloyMA956 = REGISTRATE.material("incoloy_ma_956") .ingot(5).fluid() .color(0x2D9B66).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME) @@ -67,7 +66,7 @@ public static void register() { .blastStats(VA[EV], 800)) .buildAndRegister(); - MaragingSteel300 = new Material.Builder(GTCEu.id("maraging_steel_300")) + MaragingSteel300 = REGISTRATE.material("maraging_steel_300") .ingot(4).fluid() .color(0x505B6E).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_ROD, GENERATE_FRAME) @@ -76,7 +75,7 @@ public static void register() { .blastStats(VA[EV], 1000)) .buildAndRegister(); - HastelloyX = new Material.Builder(GTCEu.id("hastelloy_x")) + HastelloyX = REGISTRATE.material("hastelloy_x") .ingot(5).fluid() .color(0x5784B8).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_FRAME) @@ -85,7 +84,7 @@ public static void register() { .blastStats(VA[EV], 900)) .buildAndRegister(); - Stellite100 = new Material.Builder(GTCEu.id("stellite_100")) + Stellite100 = REGISTRATE.material("stellite_100") .ingot(4).fluid() .color(0xCFCFEE).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE) @@ -94,7 +93,7 @@ public static void register() { .blastStats(VA[EV], 1000)) .buildAndRegister(); - TitaniumCarbide = new Material.Builder(GTCEu.id("titanium_carbide")) + TitaniumCarbide = REGISTRATE.material("titanium_carbide") .ingot(3).fluid() .color(0x90092F).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE) @@ -103,7 +102,7 @@ public static void register() { .blastStats(VA[EV], 1000)) .buildAndRegister(); - TitaniumTungstenCarbide = new Material.Builder(GTCEu.id("titanium_tungsten_carbide")) + TitaniumTungstenCarbide = REGISTRATE.material("titanium_tungsten_carbide") .ingot(6).fluid() .color(0x680B0B).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE) @@ -112,7 +111,7 @@ public static void register() { .blastStats(VA[EV], 1000)) .buildAndRegister(); - HastelloyC276 = new Material.Builder(GTCEu.id("hastelloy_c_276")) + HastelloyC276 = REGISTRATE.material("hastelloy_c_276") .ingot(6).fluid() .color(0xAB2F2F).iconSet(METALLIC) .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_FRAME) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java index f2b0a3099ca..65b9bfdc35c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/HigherDegreeMaterials.java @@ -1,8 +1,6 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; @@ -11,31 +9,32 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class HigherDegreeMaterials { public static void register() { - Electrotine = new Material.Builder(GTCEu.id("electrotine")) + Electrotine = REGISTRATE.material("electrotine") .dust().ore(5, 1, true) .color(0x83cbf5).secondaryColor(0x004585).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Redstone, 1, Electrum, 1) .buildAndRegister(); - EnderEye = new Material.Builder(GTCEu.id("ender_eye")) + EnderEye = REGISTRATE.material("ender_eye") .gem(1) .color(0xb5e45a).secondaryColor(0x001430).iconSet(SHINY) .flags(GENERATE_PLATE, NO_SMASHING, NO_SMELTING, DECOMPOSITION_BY_CENTRIFUGING) .components(EnderPearl, 1, Blaze, 1) .buildAndRegister(); - Diatomite = new Material.Builder(GTCEu.id("diatomite")) + Diatomite = REGISTRATE.material("diatomite") .dust(1).ore() .color(0xfffafa) .components(Flint, 8, Hematite, 1, Sapphire, 1) .buildAndRegister(); - RedSteel = new Material.Builder(GTCEu.id("red_steel")) + RedSteel = REGISTRATE.material("red_steel") .ingot(3).fluid() .color(0xa09191).secondaryColor(0x500404).iconSet(METALLIC) .appendFlags(EXT_METAL, GENERATE_GEAR, GENERATE_BOLT_SCREW, GENERATE_LONG_ROD) @@ -46,7 +45,7 @@ public static void register() { .blastStats(VA[HV], 1000)) .buildAndRegister(); - BlueSteel = new Material.Builder(GTCEu.id("blue_steel")) + BlueSteel = REGISTRATE.material("blue_steel") .ingot(3).fluid() .color(0x779ac6).secondaryColor(0x191948).iconSet(METALLIC) .appendFlags(EXT_METAL, GENERATE_FRAME, GENERATE_GEAR, GENERATE_BOLT_SCREW, GENERATE_LONG_ROD) @@ -57,35 +56,35 @@ public static void register() { .blastStats(VA[HV], 1000)) .buildAndRegister(); - Basalt = new Material.Builder(GTCEu.id("basalt")) + Basalt = REGISTRATE.material("basalt") .dust(1) .color(0x5c5c5c).secondaryColor(0x1b2632).iconSet(ROUGH) .flags(NO_SMASHING, DECOMPOSITION_BY_CENTRIFUGING) .components(Olivine, 1, Calcite, 3, Flint, 8, DarkAsh, 4) .buildAndRegister(); - GraniticMineralSand = new Material.Builder(GTCEu.id("granitic_mineral_sand")) + GraniticMineralSand = REGISTRATE.material("granitic_mineral_sand") .dust(1).ore() .color(0xd69077).secondaryColor(0x71352c).iconSet(SAND) .components(Magnetite, 1, Deepslate, 1) .flags(BLAST_FURNACE_CALCITE_DOUBLE) .buildAndRegister(); - Redrock = new Material.Builder(GTCEu.id("redrock")) + Redrock = REGISTRATE.material("redrock") .dust(1) .color(0xffa49e).secondaryColor(0x52362a).iconSet(ROUGH) .flags(NO_SMASHING, DECOMPOSITION_BY_CENTRIFUGING) .components(Calcite, 2, Flint, 1) .buildAndRegister(); - GarnetSand = new Material.Builder(GTCEu.id("garnet_sand")) + GarnetSand = REGISTRATE.material("garnet_sand") .dust(1).ore() .color(0xcc4c25).secondaryColor(0x510b04).iconSet(SAND) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Almandine, 1, Andradite, 1, Grossular, 1, Pyrope, 1, Spessartine, 1, Uvarovite, 1) .buildAndRegister(); - HSSG = new Material.Builder(GTCEu.id("hssg")) + HSSG = REGISTRATE.material("hssg") .ingot(3).fluid() .color(0x9cbabe).secondaryColor(0x032550).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_SMALL_GEAR, GENERATE_FRAME, GENERATE_SPRING, GENERATE_FINE_WIRE, @@ -98,7 +97,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - RedAlloy = new Material.Builder(GTCEu.id("red_alloy")) + RedAlloy = REGISTRATE.material("red_alloy") .ingot(0) .liquid(new FluidBuilder().temperature(1400)) .color(0xc55252).secondaryColor(0xC80000).iconSet(METALLIC) @@ -108,14 +107,14 @@ public static void register() { .cableProperties(GTValues.V[0], 1, 0) .buildAndRegister(); - BasalticMineralSand = new Material.Builder(GTCEu.id("basaltic_mineral_sand")) + BasalticMineralSand = REGISTRATE.material("basaltic_mineral_sand") .dust(1).ore() .color(0x5c5c5c).secondaryColor(0x283228).iconSet(SAND) .components(Magnetite, 1, Basalt, 1) .flags(BLAST_FURNACE_CALCITE_DOUBLE) .buildAndRegister(); - HSSE = new Material.Builder(GTCEu.id("hsse")) + HSSE = REGISTRATE.material("hsse") .ingot(4).fluid() .color(0x9d9cbe).secondaryColor(0x2b0350).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_FRAME, GENERATE_RING, GENERATE_GEAR) @@ -128,7 +127,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - HSSS = new Material.Builder(GTCEu.id("hsss")) + HSSS = REGISTRATE.material("hsss") .ingot(4).fluid() .color(0xa482bf).secondaryColor(0x66000e).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_SMALL_GEAR, GENERATE_RING, GENERATE_FRAME, GENERATE_ROTOR, @@ -140,35 +139,35 @@ public static void register() { .vacuumStats(VA[EV], 200)) .buildAndRegister(); - IridiumMetalResidue = new Material.Builder(GTCEu.id("iridium_metal_residue")) + IridiumMetalResidue = REGISTRATE.material("iridium_metal_residue") .dust() .color(0x484a5e).secondaryColor(0x3e1c38).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Iridium, 1, Chlorine, 3, PlatinumSludgeResidue, 1) .buildAndRegister(); - Granite = new Material.Builder(GTCEu.id("granite")) + Granite = REGISTRATE.material("granite") .dust() .color(0xd69077).secondaryColor(0x71352c).iconSet(ROUGH) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 4, Redrock, 1) .buildAndRegister(); - Brick = new Material.Builder(GTCEu.id("brick")) + Brick = REGISTRATE.material("brick") .dust() .color(0xc76245).secondaryColor(0x2d1610).iconSet(ROUGH) .flags(EXCLUDE_BLOCK_CRAFTING_RECIPES, NO_SMELTING, DECOMPOSITION_BY_CENTRIFUGING) .components(Clay, 1) .buildAndRegister(); - Fireclay = new Material.Builder(GTCEu.id("fireclay")) + Fireclay = REGISTRATE.material("fireclay") .dust() .color(0xffeab6).secondaryColor(0x84581c).iconSet(ROUGH) .flags(DECOMPOSITION_BY_CENTRIFUGING, NO_SMELTING) .components(Clay, 1, Brick, 1) .buildAndRegister(); - Diorite = new Material.Builder(GTCEu.id("diorite")) + Diorite = REGISTRATE.material("diorite") .dust() .color(0xe9e9e9).secondaryColor(0x7b7b7b) .iconSet(ROUGH) @@ -176,7 +175,7 @@ public static void register() { .components(Mirabilite, 2, Clay, 7) .buildAndRegister(); - BlueAlloy = new Material.Builder(GTCEu.id("blue_alloy")) + BlueAlloy = REGISTRATE.material("blue_alloy") .ingot() .liquid(new FluidBuilder().temperature(1400)) .color(0x64B4FF).secondaryColor(0x3c7dba).iconSet(METALLIC) @@ -185,14 +184,14 @@ public static void register() { .cableProperties(GTValues.V[HV], 2, 1) .buildAndRegister(); - RadAway = new Material.Builder(GTCEu.id("rad_away")) + RadAway = REGISTRATE.material("rad_away") .dust() .color(0xe3a1d7).secondaryColor(0x9845a3).iconSet(ROUGH) .flags(DISABLE_DECOMPOSITION) .components(PotassiumIodide, 5, PrussianBlue, 3, DiethylenetriaminepentaaceticAcid, 5) .buildAndRegister(); - Blackstone = new Material.Builder(GTCEu.id("blackstone")) + Blackstone = REGISTRATE.material("blackstone") .dust() .color(0x3c3947).secondaryColor(0x160f10).iconSet(ROUGH) .flags(NO_SMASHING) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/OrganicChemistryMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/OrganicChemistryMaterials.java index b581ac7cf73..92a7873704b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/OrganicChemistryMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/OrganicChemistryMaterials.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; @@ -13,6 +11,7 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.FINE; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.ROUGH; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class OrganicChemistryMaterials { @@ -20,7 +19,7 @@ public class OrganicChemistryMaterials { * ID RANGE: 1000-1068 (incl.) */ public static void register() { - SiliconeRubber = new Material.Builder(GTCEu.id("silicone_rubber")) + SiliconeRubber = REGISTRATE.material("silicone_rubber") .polymer() .liquid(new FluidBuilder().temperature(900)) .toolStats( @@ -30,7 +29,7 @@ public static void register() { .components(Carbon, 2, Hydrogen, 6, Oxygen, 1, Silicon, 1) .buildAndRegister(); - Nitrobenzene = new Material.Builder(GTCEu.id("nitrobenzene")) + Nitrobenzene = REGISTRATE.material("nitrobenzene") .gas() .color(0x704936) .flags(DISABLE_DECOMPOSITION) @@ -38,13 +37,13 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - RawRubber = new Material.Builder(GTCEu.id("raw_rubber")) + RawRubber = REGISTRATE.material("raw_rubber") .polymer() .color(0x54503D).secondaryColor(0x54403D) .components(Carbon, 5, Hydrogen, 8) .buildAndRegister(); - RawStyreneButadieneRubber = new Material.Builder(GTCEu.id("raw_styrene_butadiene_rubber")) + RawStyreneButadieneRubber = REGISTRATE.material("raw_styrene_butadiene_rubber") .dust() .color(0x54403D).secondaryColor(0x241520) .flags(DISABLE_DECOMPOSITION, FLAMMABLE) @@ -52,7 +51,7 @@ public static void register() { .buildAndRegister() .setFormula("(C4H6)3C8H8", true); - StyreneButadieneRubber = new Material.Builder(GTCEu.id("styrene_butadiene_rubber")) + StyreneButadieneRubber = REGISTRATE.material("styrene_butadiene_rubber") .polymer() .liquid(new FluidBuilder().temperature(1000)) .toolStats( @@ -63,14 +62,14 @@ public static void register() { .buildAndRegister() .setFormula("(C4H6)3C8H8", true); - PolyvinylAcetate = new Material.Builder(GTCEu.id("polyvinyl_acetate")) + PolyvinylAcetate = REGISTRATE.material("polyvinyl_acetate") .fluid() .color(0xFF9955) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 6, Oxygen, 2) .buildAndRegister(); - ReinforcedEpoxyResin = new Material.Builder(GTCEu.id("reinforced_epoxy_resin")) + ReinforcedEpoxyResin = REGISTRATE.material("reinforced_epoxy_resin") .polymer() .liquid(new FluidBuilder().temperature(600)) .color(0x9ecaad).secondaryColor(0xb1b2a1).iconSet(ROUGH) @@ -78,7 +77,7 @@ public static void register() { .components(Carbon, 6, Hydrogen, 4, Oxygen, 1) .buildAndRegister(); - PolyvinylChloride = new Material.Builder(GTCEu.id("polyvinyl_chloride")) + PolyvinylChloride = REGISTRATE.material("polyvinyl_chloride") .polymer() .liquid(new FluidBuilder().temperature(373)) .color(0xFF9955).secondaryColor(0x6ca5bf) @@ -87,7 +86,7 @@ public static void register() { .itemPipeProperties(512, 4) .buildAndRegister(); - PolyphenyleneSulfide = new Material.Builder(GTCEu.id("polyphenylene_sulfide")) + PolyphenyleneSulfide = REGISTRATE.material("polyphenylene_sulfide") .polymer() .liquid(new FluidBuilder().temperature(500)) .color(0x5e5e08).secondaryColor(0x2c373c) @@ -95,13 +94,13 @@ public static void register() { .components(Carbon, 6, Hydrogen, 4, Sulfur, 1) .buildAndRegister(); - GlycerylTrinitrate = new Material.Builder(GTCEu.id("glyceryl_trinitrate")) + GlycerylTrinitrate = REGISTRATE.material("glyceryl_trinitrate") .liquid(new FluidBuilder().customStill()) .flags(FLAMMABLE, EXPLOSIVE) .components(Carbon, 3, Hydrogen, 5, Nitrogen, 3, Oxygen, 9) .buildAndRegister(); - Polybenzimidazole = new Material.Builder(GTCEu.id("polybenzimidazole")) + Polybenzimidazole = REGISTRATE.material("polybenzimidazole") .polymer() .liquid(new FluidBuilder().temperature(1450)) .color(0x464441).secondaryColor(0x382e1b) @@ -113,14 +112,14 @@ public static void register() { .fluidPipeProperties(1000, 350, true) .buildAndRegister(); - Polydimethylsiloxane = new Material.Builder(GTCEu.id("polydimethylsiloxane")) + Polydimethylsiloxane = REGISTRATE.material("polydimethylsiloxane") .dust() .color(0xF5F5F5).secondaryColor(0x9d9fa1) .flags(DISABLE_DECOMPOSITION, FLAMMABLE) .components(Carbon, 2, Hydrogen, 6, Oxygen, 1, Silicon, 1) .buildAndRegister(); - Polyethylene = new Material.Builder(GTCEu.id("polyethylene")) + Polyethylene = REGISTRATE.material("polyethylene") .polymer(1) .liquid(new FluidBuilder().temperature(408)) .color(0xC8C8C8) @@ -131,7 +130,7 @@ public static void register() { .fluidPipeProperties(370, 60, true) .buildAndRegister(); - Epoxy = new Material.Builder(GTCEu.id("epoxy")) + Epoxy = REGISTRATE.material("epoxy") .polymer(1) .liquid(new FluidBuilder().temperature(400)) .color(0xf6fabd).secondaryColor(0xC88C14).iconSet(ROUGH) @@ -139,7 +138,7 @@ public static void register() { .components(Carbon, 21, Hydrogen, 25, Chlorine, 1, Oxygen, 5) .buildAndRegister(); - Polycaprolactam = new Material.Builder(GTCEu.id("polycaprolactam")) + Polycaprolactam = REGISTRATE.material("polycaprolactam") .polymer(1) .liquid(new FluidBuilder().temperature(493)) .color(0x3f3d2d).secondaryColor(0x43432e) @@ -147,7 +146,7 @@ public static void register() { .components(Carbon, 6, Hydrogen, 11, Nitrogen, 1, Oxygen, 1) .buildAndRegister(); - Polytetrafluoroethylene = new Material.Builder(GTCEu.id("polytetrafluoroethylene")) + Polytetrafluoroethylene = REGISTRATE.material("polytetrafluoroethylene") .polymer(1) .liquid(new FluidBuilder().temperature(600)) .color(0x6e6e6e).secondaryColor(0x202020) @@ -158,135 +157,135 @@ public static void register() { .fluidPipeProperties(600, 100, true, true, false, false) .buildAndRegister(); - Sugar = new Material.Builder(GTCEu.id("sugar")) + Sugar = REGISTRATE.material("sugar") .gem(1) .color(0xFFFFFF).secondaryColor(0x545468).iconSet(FINE) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 12, Oxygen, 6) .buildAndRegister(); - Methane = new Material.Builder(GTCEu.id("methane")) + Methane = REGISTRATE.material("methane") .gas(new FluidBuilder() .translation("gtceu.fluid.gas_generic")) .color(0xFF0078) .components(Carbon, 1, Hydrogen, 4) .buildAndRegister(); - Epichlorohydrin = new Material.Builder(GTCEu.id("epichlorohydrin")) + Epichlorohydrin = REGISTRATE.material("epichlorohydrin") .liquid(new FluidBuilder().customStill()) .color(0x712400) .components(Carbon, 3, Hydrogen, 5, Chlorine, 1, Oxygen, 1) .buildAndRegister(); - Monochloramine = new Material.Builder(GTCEu.id("monochloramine")) + Monochloramine = REGISTRATE.material("monochloramine") .gas() .color(0x3F9F80) .components(Nitrogen, 1, Hydrogen, 2, Chlorine, 1) .buildAndRegister(); - Chloroform = new Material.Builder(GTCEu.id("chloroform")) + Chloroform = REGISTRATE.material("chloroform") .fluid() .color(0x892CA0) .components(Carbon, 1, Hydrogen, 1, Chlorine, 3) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.POISON) .buildAndRegister(); - Cumene = new Material.Builder(GTCEu.id("cumene")) + Cumene = REGISTRATE.material("cumene") .gas() .color(0x552200) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 9, Hydrogen, 12) .buildAndRegister(); - Tetrafluoroethylene = new Material.Builder(GTCEu.id("tetrafluoroethylene")) + Tetrafluoroethylene = REGISTRATE.material("tetrafluoroethylene") .gas() .color(0x7D7D7D) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Fluorine, 4) .buildAndRegister(); - Chloromethane = new Material.Builder(GTCEu.id("chloromethane")) + Chloromethane = REGISTRATE.material("chloromethane") .gas() .color(0xC82CA0) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 1, Hydrogen, 3, Chlorine, 1) .buildAndRegister(); - AllylChloride = new Material.Builder(GTCEu.id("allyl_chloride")) + AllylChloride = REGISTRATE.material("allyl_chloride") .fluid() .color(0x87DEAA) .components(Carbon, 2, Methane, 1, HydrochloricAcid, 1) .buildAndRegister() .setFormula("C3H5Cl", true); - Isoprene = new Material.Builder(GTCEu.id("isoprene")) + Isoprene = REGISTRATE.material("isoprene") .fluid() .color(0x141414) .components(Carbon, 5, Hydrogen, 8) .buildAndRegister(); - Propane = new Material.Builder(GTCEu.id("propane")) + Propane = REGISTRATE.material("propane") .gas() .color(0xFAE250) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 8) .buildAndRegister(); - Propene = new Material.Builder(GTCEu.id("propene")) + Propene = REGISTRATE.material("propene") .gas() .color(0xFFDD55) .components(Carbon, 3, Hydrogen, 6) .buildAndRegister(); - Ethane = new Material.Builder(GTCEu.id("ethane")) + Ethane = REGISTRATE.material("ethane") .gas() .color(0xC8C8FF) .components(Carbon, 2, Hydrogen, 6) .buildAndRegister(); - Butene = new Material.Builder(GTCEu.id("butene")) + Butene = REGISTRATE.material("butene") .gas() .color(0xCF5005) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 8) .buildAndRegister(); - Butane = new Material.Builder(GTCEu.id("butane")) + Butane = REGISTRATE.material("butane") .gas() .color(0xB6371E) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 10) .buildAndRegister(); - DissolvedCalciumAcetate = new Material.Builder(GTCEu.id("dissolved_calcium_acetate")) + DissolvedCalciumAcetate = REGISTRATE.material("dissolved_calcium_acetate") .fluid() .color(0xDCC8B4) .flags(DISABLE_DECOMPOSITION) .components(Calcium, 1, Carbon, 4, Oxygen, 4, Hydrogen, 6, Water, 1) .buildAndRegister(); - VinylAcetate = new Material.Builder(GTCEu.id("vinyl_acetate")) + VinylAcetate = REGISTRATE.material("vinyl_acetate") .fluid() .color(0xE1B380) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 6, Oxygen, 2) .buildAndRegister(); - MethylAcetate = new Material.Builder(GTCEu.id("methyl_acetate")) + MethylAcetate = REGISTRATE.material("methyl_acetate") .fluid() .color(0xEEC6AF) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 6, Oxygen, 2) .buildAndRegister(); - Ethenone = new Material.Builder(GTCEu.id("ethenone")) + Ethenone = REGISTRATE.material("ethenone") .fluid() .color(0x141446) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 2, Oxygen, 1) .buildAndRegister(); - Tetranitromethane = new Material.Builder(GTCEu.id("tetranitromethane")) + Tetranitromethane = REGISTRATE.material("tetranitromethane") .fluid() .color(0x0F2828) .flags(DISABLE_DECOMPOSITION) @@ -294,14 +293,14 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.WEAK_POISON) .buildAndRegister(); - Dimethylamine = new Material.Builder(GTCEu.id("dimethylamine")) + Dimethylamine = REGISTRATE.material("dimethylamine") .gas() .color(0x554469) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 7, Nitrogen, 1) .buildAndRegister(); - Dimethylhydrazine = new Material.Builder(GTCEu.id("dimethylhydrazine")) + Dimethylhydrazine = REGISTRATE.material("dimethylhydrazine") .fluid() .color(0x000055) .flags(DISABLE_DECOMPOSITION) @@ -309,48 +308,48 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - DinitrogenTetroxide = new Material.Builder(GTCEu.id("dinitrogen_tetroxide")) + DinitrogenTetroxide = REGISTRATE.material("dinitrogen_tetroxide") .gas() .color(0x004184) .components(Nitrogen, 2, Oxygen, 4) .buildAndRegister(); - Dimethyldichlorosilane = new Material.Builder(GTCEu.id("dimethyldichlorosilane")) + Dimethyldichlorosilane = REGISTRATE.material("dimethyldichlorosilane") .gas() .color(0x441650) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 6, Chlorine, 2, Silicon, 1) .buildAndRegister(); - Styrene = new Material.Builder(GTCEu.id("styrene")) + Styrene = REGISTRATE.material("styrene") .fluid() .color(0xD2C8BE) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 8) .buildAndRegister(); - Butadiene = new Material.Builder(GTCEu.id("butadiene")) + Butadiene = REGISTRATE.material("butadiene") .gas() .color(0xB55A10) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 4, Hydrogen, 6) .buildAndRegister(); - Dichlorobenzene = new Material.Builder(GTCEu.id("dichlorobenzene")) + Dichlorobenzene = REGISTRATE.material("dichlorobenzene") .fluid() .color(0x004455) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 4, Chlorine, 2) .buildAndRegister(); - AceticAcid = new Material.Builder(GTCEu.id("acetic_acid")) + AceticAcid = REGISTRATE.material("acetic_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xC8B4A0) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 4, Oxygen, 2) .buildAndRegister(); - Phenol = new Material.Builder(GTCEu.id("phenol")) + Phenol = REGISTRATE.material("phenol") .fluid() .color(0x784421) .flags(DISABLE_DECOMPOSITION) @@ -358,14 +357,14 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - BisphenolA = new Material.Builder(GTCEu.id("bisphenol_a")) + BisphenolA = REGISTRATE.material("bisphenol_a") .fluid() .color(0xD4AA00) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 15, Hydrogen, 16, Oxygen, 2) .buildAndRegister(); - VinylChloride = new Material.Builder(GTCEu.id("vinyl_chloride")) + VinylChloride = REGISTRATE.material("vinyl_chloride") .gas() .color(0xE1F0F0) .flags(DISABLE_DECOMPOSITION) @@ -373,14 +372,14 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Ethylene = new Material.Builder(GTCEu.id("ethylene")) + Ethylene = REGISTRATE.material("ethylene") .gas() .color(0xE1E1E1) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 2, Hydrogen, 4) .buildAndRegister(); - Benzene = new Material.Builder(GTCEu.id("benzene")) + Benzene = REGISTRATE.material("benzene") .fluid() .color(0x1A1A1A) .flags(DISABLE_DECOMPOSITION) @@ -388,47 +387,47 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Acetone = new Material.Builder(GTCEu.id("acetone")) + Acetone = REGISTRATE.material("acetone") .fluid() .color(0xAFAFAF) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 3, Hydrogen, 6, Oxygen, 1) .buildAndRegister(); - Glycerol = new Material.Builder(GTCEu.id("glycerol")) + Glycerol = REGISTRATE.material("glycerol") .fluid() .color(0x87DE87) .components(Carbon, 3, Hydrogen, 8, Oxygen, 3) .buildAndRegister(); - Methanol = new Material.Builder(GTCEu.id("methanol")) + Methanol = REGISTRATE.material("methanol") .fluid() .color(0xAA8800) .components(Carbon, 1, Hydrogen, 4, Oxygen, 1) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.METHANOL_POISONING) .buildAndRegister(); - Ethanol = new Material.Builder(GTCEu.id("ethanol")) + Ethanol = REGISTRATE.material("ethanol") .liquid(new FluidBuilder().customStill()) .components(Carbon, 2, Hydrogen, 6, Oxygen, 1) .flags(DISABLE_DECOMPOSITION) // TODO ethanol intoxication .hazard(HazardProperty.HazardTrigger.INHALATION, .buildAndRegister(); - Toluene = new Material.Builder(GTCEu.id("toluene")) + Toluene = REGISTRATE.material("toluene") .liquid(new FluidBuilder().customStill()) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 7, Hydrogen, 8) .buildAndRegister(); - DiphenylIsophtalate = new Material.Builder(GTCEu.id("diphenyl_isophthalate")) + DiphenylIsophtalate = REGISTRATE.material("diphenyl_isophthalate") .fluid() .color(0x246E57) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 20, Hydrogen, 14, Oxygen, 4) .buildAndRegister(); - PhthalicAcid = new Material.Builder(GTCEu.id("phthalic_acid")) + PhthalicAcid = REGISTRATE.material("phthalic_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xD1D1D1) .flags(DISABLE_DECOMPOSITION) @@ -436,7 +435,7 @@ public static void register() { .buildAndRegister() .setFormula("C6H4(CO2H)2", true); - Dimethylbenzene = new Material.Builder(GTCEu.id("dimethylbenzene")) + Dimethylbenzene = REGISTRATE.material("dimethylbenzene") .fluid() .color(0x669C40) .flags(DISABLE_DECOMPOSITION) @@ -444,7 +443,7 @@ public static void register() { .buildAndRegister() .setFormula("C6H4(CH3)2", true); - Diaminobenzidine = new Material.Builder(GTCEu.id("diaminobenzidine")) + Diaminobenzidine = REGISTRATE.material("diaminobenzidine") .fluid() .color(0x337D59) .flags(DISABLE_DECOMPOSITION) @@ -452,7 +451,7 @@ public static void register() { .buildAndRegister() .setFormula("(C6H3(NH2)2)2", true); - Dichlorobenzidine = new Material.Builder(GTCEu.id("dichlorobenzidine")) + Dichlorobenzidine = REGISTRATE.material("dichlorobenzidine") .fluid() .color(0xA1DEA6) .flags(DISABLE_DECOMPOSITION) @@ -460,14 +459,14 @@ public static void register() { .buildAndRegister() .setFormula("(C6H3Cl(NH2))2", true); - Nitrochlorobenzene = new Material.Builder(GTCEu.id("nitrochlorobenzene")) + Nitrochlorobenzene = REGISTRATE.material("nitrochlorobenzene") .fluid() .color(0x8FB51A) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 6, Hydrogen, 4, Chlorine, 1, Nitrogen, 1, Oxygen, 2) .buildAndRegister(); - Chlorobenzene = new Material.Builder(GTCEu.id("chlorobenzene")) + Chlorobenzene = REGISTRATE.material("chlorobenzene") .fluid() .color(0x326A3E) .flags(DISABLE_DECOMPOSITION) @@ -475,35 +474,35 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Octane = new Material.Builder(GTCEu.id("octane")) + Octane = REGISTRATE.material("octane") .fluid() .flags(DISABLE_DECOMPOSITION) .color(0x8A0A09) .components(Carbon, 8, Hydrogen, 18) .buildAndRegister(); - EthylTertButylEther = new Material.Builder(GTCEu.id("ethyl_tertbutyl_ether")) + EthylTertButylEther = REGISTRATE.material("ethyl_tertbutyl_ether") .fluid() .flags(DISABLE_DECOMPOSITION) .color(0xB15C06) .components(Carbon, 6, Hydrogen, 14, Oxygen, 1) .buildAndRegister(); - Ethylbenzene = new Material.Builder(GTCEu.id("ethylbenzene")) + Ethylbenzene = REGISTRATE.material("ethylbenzene") .fluid() .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 10) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Naphthalene = new Material.Builder(GTCEu.id("naphthalene")) + Naphthalene = REGISTRATE.material("naphthalene") .fluid() .flags(DISABLE_DECOMPOSITION) .color(0xF4F4D7) .components(Carbon, 10, Hydrogen, 8) .buildAndRegister(); - Rubber = new Material.Builder(GTCEu.id("rubber")) + Rubber = REGISTRATE.material("rubber") .polymer(0) .liquid(new FluidBuilder().temperature(400)) .color(0x353529).secondaryColor(0x080808) @@ -513,20 +512,20 @@ public static void register() { .components(Carbon, 5, Hydrogen, 8) .buildAndRegister(); - Cyclohexane = new Material.Builder(GTCEu.id("cyclohexane")) + Cyclohexane = REGISTRATE.material("cyclohexane") .fluid() .color(0xe8b113).secondaryColor(0x602a10) .components(Carbon, 6, Hydrogen, 12) .buildAndRegister(); - NitrosylChloride = new Material.Builder(GTCEu.id("nitrosyl_chloride")) + NitrosylChloride = REGISTRATE.material("nitrosyl_chloride") .gas() .flags(FLAMMABLE) .color(0xF3F100) .components(Nitrogen, 1, Oxygen, 1, Chlorine, 1) .buildAndRegister(); - CyclohexanoneOxime = new Material.Builder(GTCEu.id("cyclohexanone_oxime")) + CyclohexanoneOxime = REGISTRATE.material("cyclohexanone_oxime") .dust() .flags(DISABLE_DECOMPOSITION, FLAMMABLE) .color(0xEBEBF0).iconSet(ROUGH) @@ -534,7 +533,7 @@ public static void register() { .buildAndRegister() .setFormula("C6H11NO", true); - Caprolactam = new Material.Builder(GTCEu.id("caprolactam")) + Caprolactam = REGISTRATE.material("caprolactam") .dust() .flags(DISABLE_DECOMPOSITION, FLAMMABLE) .color(0xfffef8).secondaryColor(0xbab7a2) @@ -542,7 +541,7 @@ public static void register() { .buildAndRegister() .setFormula("(CH2)5C(O)NH", true); - Butyraldehyde = new Material.Builder(GTCEu.id("butyraldehyde")) + Butyraldehyde = REGISTRATE.material("butyraldehyde") .fluid() .color(0x554A3F) .flags(DISABLE_DECOMPOSITION) @@ -550,14 +549,14 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.NAUSEA, false) .buildAndRegister(); - PolyvinylButyral = new Material.Builder(GTCEu.id("polyvinyl_butyral")) + PolyvinylButyral = REGISTRATE.material("polyvinyl_butyral") .ingot().fluid() .color(0x3e7051).secondaryColor(0x535648) .flags(GENERATE_PLATE, DISABLE_DECOMPOSITION, NO_SMASHING) .components(Butyraldehyde, 1, PolyvinylAcetate, 1) .buildAndRegister(); - Biphenyl = new Material.Builder(GTCEu.id("biphenyl")) + Biphenyl = REGISTRATE.material("biphenyl") .dust() .color(0x8B8C4F).iconSet(FINE) .flags(DISABLE_DECOMPOSITION) @@ -565,7 +564,7 @@ public static void register() { .buildAndRegister() .setFormula("(C6H5)2", true); - PolychlorinatedBiphenyl = new Material.Builder(GTCEu.id("polychlorinated_biphenyl")) + PolychlorinatedBiphenyl = REGISTRATE.material("polychlorinated_biphenyl") .fluid() .color(0xCACC0E) .flags(DISABLE_DECOMPOSITION) @@ -574,7 +573,7 @@ public static void register() { .buildAndRegister() .setFormula("(C6H4Cl)2", true); - AceticAnhydride = new Material.Builder(GTCEu.id("acetic_anhydride")) + AceticAnhydride = REGISTRATE.material("acetic_anhydride") .fluid() .color(0xE0D182) .flags(DISABLE_DECOMPOSITION) @@ -582,7 +581,7 @@ public static void register() { .buildAndRegister() .setFormula("(CH3CO)2O", true); - AminoPhenol = new Material.Builder(GTCEu.id("aminophenol")) + AminoPhenol = REGISTRATE.material("aminophenol") .fluid() .color(0x784421) .flags(DISABLE_DECOMPOSITION) @@ -590,21 +589,21 @@ public static void register() { .buildAndRegister() .setFormula("H2NC6H4OH", true); - Paracetamol = new Material.Builder(GTCEu.id("paracetamol")) + Paracetamol = REGISTRATE.material("paracetamol") .dust() .color(0xF2EDCB) .flags(DISABLE_DECOMPOSITION) .components(Carbon, 8, Hydrogen, 9, Nitrogen, 1, Oxygen, 2) .buildAndRegister(); - AmmoniumFormate = new Material.Builder(GTCEu.id("ammonium_formate")) + AmmoniumFormate = REGISTRATE.material("ammonium_formate") .gas() .color(0x93badb) .components(Carbon, 1, Hydrogen, 5, Nitrogen, 1, Oxygen, 2) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.IRRITANT) .buildAndRegister(); - Formamide = new Material.Builder(GTCEu.id("formamide")) + Formamide = REGISTRATE.material("formamide") .liquid() .color(0x5cccb6) .components(Carbon, 1, Hydrogen, 3, Nitrogen, 1, Oxygen, 1) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java index a3c1aae455d..954fd474732 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/SecondDegreeMaterials.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; @@ -17,11 +15,12 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class SecondDegreeMaterials { public static void register() { - Glass = new Material.Builder(GTCEu.id("glass")) + Glass = REGISTRATE.material("glass") .gem(0) .liquid(new FluidBuilder() .temperature(1200) @@ -31,61 +30,61 @@ public static void register() { .components(SiliconDioxide, 1) .buildAndRegister(); - Perlite = new Material.Builder(GTCEu.id("perlite")) + Perlite = REGISTRATE.material("perlite") .dust(1) .color(0xeee0e0).secondaryColor(0xc1b9a9) .components(Obsidian, 2, Water, 1) .buildAndRegister(); - ActivatedCarbon = new Material.Builder(GTCEu.id("activated_carbon")) + ActivatedCarbon = REGISTRATE.material("activated_carbon") .dust(1) .color(0x212125).secondaryColor(0x15151a) .components(Carbon, 1) .flags(DECOMPOSITION_BY_CENTRIFUGING) .buildAndRegister(); - Borax = new Material.Builder(GTCEu.id("borax")) + Borax = REGISTRATE.material("borax") .dust(1) .color(0xFAFAFA).secondaryColor(0xd7e7e7).iconSet(FINE) .components(Sodium, 2, Boron, 4, Water, 10, Oxygen, 7) .buildAndRegister(); - SaltWater = new Material.Builder(GTCEu.id("salt_water")) + SaltWater = REGISTRATE.material("salt_water") .fluid() .color(0x0000C8) .flags(DISABLE_DECOMPOSITION) .components(Salt, 1, Water, 1) .buildAndRegister(); - Olivine = new Material.Builder(GTCEu.id("olivine")) + Olivine = REGISTRATE.material("olivine") .gem().ore(2, 1) .color(0xa7e404).secondaryColor(0x166439).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT) .components(Magnesium, 1, Iron, 1, SiliconDioxide, 2) .buildAndRegister(); - Opal = new Material.Builder(GTCEu.id("opal")) + Opal = REGISTRATE.material("opal") .gem().ore() .color(0xf9e3ea).secondaryColor(0x16bbe0).iconSet(OPAL) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 1) .buildAndRegister(); - Amethyst = new Material.Builder(GTCEu.id("amethyst")) + Amethyst = REGISTRATE.material("amethyst") .gem(3).ore() .color(0xcfa0f3).secondaryColor(0x734fbc).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, GENERATE_LENS) .components(SiliconDioxide, 4, Iron, 1) .buildAndRegister(); - EchoShard = new Material.Builder(GTCEu.id("echo_shard")) + EchoShard = REGISTRATE.material("echo_shard") .gem(3) .color(0x002b2d).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, GENERATE_ROD) .components(SiliconDioxide, 3, Sculk, 2) .buildAndRegister(); - Lapis = new Material.Builder(GTCEu.id("lapis")) + Lapis = REGISTRATE.material("lapis") .gem(1).ore(6, 4) .color(0x85a9ff).secondaryColor(0x2a7fff).iconSet(LAPIS) .flags(NO_SMASHING, NO_SMELTING, CRYSTALLIZABLE, NO_WORKING, DECOMPOSITION_BY_ELECTROLYZING, @@ -94,7 +93,7 @@ public static void register() { .components(Lazurite, 12, Sodalite, 2, Pyrite, 1, Calcite, 1) .buildAndRegister(); - Blaze = new Material.Builder(GTCEu.id("blaze")) + Blaze = REGISTRATE.material("blaze") .dust(1) .liquid(new FluidBuilder() .temperature(4000) @@ -104,14 +103,14 @@ public static void register() { .components(DarkAsh, 1, Sulfur, 1) .buildAndRegister(); - Apatite = new Material.Builder(GTCEu.id("apatite")) + Apatite = REGISTRATE.material("apatite") .gem(1).ore(4, 2) .color(0x06cdf1).secondaryColor(0x701c07).iconSet(DIAMOND) .flags(NO_SMASHING, NO_SMELTING, CRYSTALLIZABLE, DISABLE_DECOMPOSITION) .components(Calcium, 5, Phosphate, 3, Chlorine, 1) .buildAndRegister(); - BlackSteel = new Material.Builder(GTCEu.id("black_steel")) + BlackSteel = REGISTRATE.material("black_steel") .ingot().fluid() .color(0x666666).secondaryColor(0x1a120e).iconSet(METALLIC) .appendFlags(EXT_METAL, GENERATE_FINE_WIRE, GENERATE_GEAR, GENERATE_FRAME) @@ -120,7 +119,7 @@ public static void register() { .blast(1758, GasTier.LOW) .buildAndRegister(); - DamascusSteel = new Material.Builder(GTCEu.id("damascus_steel")) + DamascusSteel = REGISTRATE.material("damascus_steel") .ingot(3).fluid() .color(0x6E6E6E).secondaryColor(0x302222).iconSet(METALLIC) .appendFlags(EXT_METAL, GENERATE_BOLT_SCREW, GENERATE_LONG_ROD, GENERATE_GEAR) @@ -133,7 +132,7 @@ public static void register() { .blast(1500, GasTier.LOW) .buildAndRegister(); - TungstenSteel = new Material.Builder(GTCEu.id("tungsten_steel")) + TungstenSteel = REGISTRATE.material("tungsten_steel") .ingot(4).fluid() .color(0x687ece).secondaryColor(0x03192f).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_ROTOR, GENERATE_SMALL_GEAR, GENERATE_DENSE, GENERATE_FRAME, @@ -149,7 +148,7 @@ public static void register() { .vacuumStats(VA[HV])) .buildAndRegister(); - CobaltBrass = new Material.Builder(GTCEu.id("cobalt_brass")) + CobaltBrass = REGISTRATE.material("cobalt_brass") .ingot() .liquid(new FluidBuilder().temperature(1202)) .color(0xbaa365).secondaryColor(0x596338).iconSet(METALLIC) @@ -157,87 +156,87 @@ public static void register() { .components(Brass, 7, Aluminium, 1, Cobalt, 1) .toolStats(ToolProperty.Builder.of(2.5F, 2.0F, 1024, 2) .addTypes(GTToolType.MORTAR) - .attackSpeed(5.8F).enchantability(5).build()) + .attackSpeed(-0.2F).enchantability(5).build()) .rotorStats(100, 120, 2.0f, 256) .itemPipeProperties(2048, 1) .buildAndRegister(); - TricalciumPhosphate = new Material.Builder(GTCEu.id("tricalcium_phosphate")) + TricalciumPhosphate = REGISTRATE.material("tricalcium_phosphate") .dust().ore(3, 1) .color(0xfffddb).secondaryColor(0xFFFF00).iconSet(FLINT) .flags(NO_SMASHING, NO_SMELTING, FLAMMABLE, EXPLOSIVE, DECOMPOSITION_BY_CENTRIFUGING) .components(Calcium, 3, Phosphate, 2) .buildAndRegister(); - GarnetRed = new Material.Builder(GTCEu.id("red_garnet")) + GarnetRed = REGISTRATE.material("red_garnet") .gem().ore(4, 1) .color(0x950c15).secondaryColor(0x510b04).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, DECOMPOSITION_BY_CENTRIFUGING) .components(Pyrope, 3, Almandine, 5, Spessartine, 8) .buildAndRegister(); - GarnetYellow = new Material.Builder(GTCEu.id("yellow_garnet")) + GarnetYellow = REGISTRATE.material("yellow_garnet") .gem().ore(4, 1) .color(0xf6ff09).secondaryColor(0xe7a800).iconSet(RUBY) .appendFlags(EXT_METAL, NO_SMASHING, NO_SMELTING, HIGH_SIFTER_OUTPUT, DECOMPOSITION_BY_CENTRIFUGING) .components(Andradite, 5, Grossular, 8, Uvarovite, 3) .buildAndRegister(); - Marble = new Material.Builder(GTCEu.id("marble")) + Marble = REGISTRATE.material("marble") .dust() .color(0xf0f5f4).secondaryColor(0xb3b3b3).iconSet(ROUGH) .flags(NO_SMASHING, DECOMPOSITION_BY_CENTRIFUGING) .components(Magnesium, 1, Calcite, 7) .buildAndRegister(); - Deepslate = new Material.Builder(GTCEu.id("deepslate")) + Deepslate = REGISTRATE.material("deepslate") .dust() .color(0x797979).secondaryColor(0x2f2f37).iconSet(ROUGH) .flags(NO_SMASHING, DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 4, Biotite, 1) .buildAndRegister(); - RedGranite = new Material.Builder(GTCEu.id("red_granite")) + RedGranite = REGISTRATE.material("granite_red") .dust() .color(0xFF0080).iconSet(ROUGH) .flags(NO_SMASHING) .components(Aluminium, 2, PotassiumFeldspar, 1, Oxygen, 3) .buildAndRegister(); - VanadiumMagnetite = new Material.Builder(GTCEu.id("vanadium_magnetite")) + VanadiumMagnetite = REGISTRATE.material("vanadium_magnetite") .dust().ore() .color(0x505d70).secondaryColor(0x170322).iconSet(METALLIC) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Magnetite, 1, Vanadium, 1) .buildAndRegister(); - QuartzSand = new Material.Builder(GTCEu.id("quartz_sand")) + QuartzSand = REGISTRATE.material("quartz_sand") .dust(1) .color(0xf8efe3).secondaryColor(0xe6c1bb).iconSet(SAND) .flags(DISABLE_DECOMPOSITION) .components(CertusQuartz, 1, Quartzite, 1) .buildAndRegister(); - Pollucite = new Material.Builder(GTCEu.id("pollucite")) + Pollucite = REGISTRATE.material("pollucite") .dust().ore() .color(0xeed9e1).secondaryColor(0x72a6a7) .components(Caesium, 2, Aluminium, 2, Silicon, 4, Water, 2, Oxygen, 12) .buildAndRegister(); - Bentonite = new Material.Builder(GTCEu.id("bentonite")) + Bentonite = REGISTRATE.material("bentonite") .dust().ore(3, 1) .color(0xede8a3).secondaryColor(0xcdb44c).iconSet(ROUGH) .flags(DISABLE_DECOMPOSITION) .components(Sodium, 1, Magnesium, 6, Silicon, 12, Hydrogen, 6, Water, 5, Oxygen, 36) .buildAndRegister(); - FullersEarth = new Material.Builder(GTCEu.id("fullers_earth")) + FullersEarth = REGISTRATE.material("fullers_earth") .dust().ore(2, 1) .color(0xf3efbb).secondaryColor(0xb8d066).iconSet(FINE) .components(Magnesium, 2, Silicon, 4, Oxygen, 14, Hydrogen, 4, Water, 1) .buildAndRegister(); - Pitchblende = new Material.Builder(GTCEu.id("pitchblende")) + Pitchblende = REGISTRATE.material("pitchblende") .dust(3).ore(true) .color(0xffd647).secondaryColor(0x0d1e2f) .flags(DECOMPOSITION_BY_CENTRIFUGING) @@ -245,39 +244,39 @@ public static void register() { .buildAndRegister() .setFormula("(UO2)3ThPb", true); - Monazite = new Material.Builder(GTCEu.id("monazite")) + Monazite = REGISTRATE.material("monazite") .gem(1).ore(4, 2, true) .color(0xd0ee98).secondaryColor(0x520505).iconSet(DIAMOND) .flags(NO_SMASHING, NO_SMELTING, CRYSTALLIZABLE) .components(RareEarth, 1, Phosphate, 1) .buildAndRegister(); - Mirabilite = new Material.Builder(GTCEu.id("mirabilite")) + Mirabilite = REGISTRATE.material("mirabilite") .dust() .color(0xf9e7e7).secondaryColor(0xb57a7a) .components(Sodium, 2, Sulfur, 1, Water, 10, Oxygen, 4) .buildAndRegister(); - Trona = new Material.Builder(GTCEu.id("trona")) + Trona = REGISTRATE.material("trona") .dust(1).ore(2, 1) .color(0xe6e6a5).secondaryColor(0x87875F).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Sodium, 3, Carbon, 2, Hydrogen, 1, Water, 2, Oxygen, 6) .buildAndRegister(); - Gypsum = new Material.Builder(GTCEu.id("gypsum")) + Gypsum = REGISTRATE.material("gypsum") .dust(1).ore() .color(0xfffaec).secondaryColor(0x71570a) .components(Calcium, 1, Sulfur, 1, Water, 2, Oxygen, 4) .buildAndRegister(); - Zeolite = new Material.Builder(GTCEu.id("zeolite")) + Zeolite = REGISTRATE.material("zeolite") .dust().ore(3, 1) .color(0xf2e3e0).secondaryColor(0xeabeb4) .components(Sodium, 2, Aluminium, 2, Silicon, 3, Oxygen, 10, Water, 2) .buildAndRegister(); - Concrete = new Material.Builder(GTCEu.id("concrete")) + Concrete = REGISTRATE.material("concrete") .dust() .liquid(new FluidBuilder().temperature(286)) .color(0xfaf3e8).secondaryColor(0xbbbaba).iconSet(ROUGH) @@ -285,7 +284,7 @@ public static void register() { .components(Stone, 1) .buildAndRegister(); - SteelMagnetic = new Material.Builder(GTCEu.id("magnetic_steel")) + SteelMagnetic = REGISTRATE.material("magnetic_steel") .ingot() .color(0xa7a7a7).secondaryColor(0x121c37).iconSet(MAGNETIC) .flags(GENERATE_ROD, IS_MAGNETIC, GENERATE_DENSE) @@ -296,7 +295,7 @@ public static void register() { .buildAndRegister(); Steel.getProperty(PropertyKey.INGOT).setMagneticMaterial(SteelMagnetic); - VanadiumSteel = new Material.Builder(GTCEu.id("vanadium_steel")) + VanadiumSteel = REGISTRATE.material("vanadium_steel") .ingot(3) .liquid(new FluidBuilder().temperature(2073)) .color(0xb59fcc).secondaryColor(0x19140d).iconSet(SHINY) @@ -309,7 +308,7 @@ public static void register() { .blast(1453, GasTier.LOW) .buildAndRegister(); - Potin = new Material.Builder(GTCEu.id("potin")) + Potin = REGISTRATE.material("potin") .ingot() .liquid(new FluidBuilder().temperature(1084)) .color(0xaaada3).secondaryColor(0x5e3320).iconSet(METALLIC) @@ -318,7 +317,7 @@ public static void register() { .fluidPipeProperties(1456, 40, true) .buildAndRegister(); - BorosilicateGlass = new Material.Builder(GTCEu.id("borosilicate_glass")) + BorosilicateGlass = REGISTRATE.material("borosilicate_glass") .ingot(1) .liquid(new FluidBuilder().temperature(1921)) .color(0xFAFAFA).secondaryColor(0xfaf5c0).iconSet(SHINY) @@ -326,7 +325,7 @@ public static void register() { .components(Boron, 1, SiliconDioxide, 7) .buildAndRegister(); - Andesite = new Material.Builder(GTCEu.id("andesite")) + Andesite = REGISTRATE.material("andesite") .dust() .color(0xa8aa9a).iconSet(ROUGH) .flags(DECOMPOSITION_BY_CENTRIFUGING) @@ -334,7 +333,7 @@ public static void register() { .removeHazard() .buildAndRegister(); - NaquadahAlloy = new Material.Builder(GTCEu.id("naquadah_alloy")) + NaquadahAlloy = REGISTRATE.material("naquadah_alloy") .ingot(5).fluid() .color(0x323232).secondaryColor(0x301131).iconSet(METALLIC) .appendFlags(EXT2_METAL, GENERATE_SPRING, GENERATE_RING, GENERATE_ROTOR, GENERATE_SMALL_GEAR, @@ -349,46 +348,46 @@ public static void register() { .vacuumStats(VA[IV], 300)) .buildAndRegister(); - SulfuricNickelSolution = new Material.Builder(GTCEu.id("sulfuric_nickel_solution")) + SulfuricNickelSolution = REGISTRATE.material("sulfuric_nickel_solution") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x3EB640) .components(Nickel, 1, Oxygen, 1, SulfuricAcid, 1) .buildAndRegister(); - SulfuricCopperSolution = new Material.Builder(GTCEu.id("sulfuric_copper_solution")) + SulfuricCopperSolution = REGISTRATE.material("sulfuric_copper_solution") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x48A5C0) .components(Copper, 1, Oxygen, 1, SulfuricAcid, 1) .buildAndRegister(); - LeadZincSolution = new Material.Builder(GTCEu.id("lead_zinc_solution")) + LeadZincSolution = REGISTRATE.material("lead_zinc_solution") .liquid(new FluidBuilder().customStill()) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(Lead, 1, Silver, 1, Zinc, 1, Sulfur, 3, Water, 1) .buildAndRegister(); - NitrationMixture = new Material.Builder(GTCEu.id("nitration_mixture")) + NitrationMixture = REGISTRATE.material("nitration_mixture") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xE6E2AB) .flags(DISABLE_DECOMPOSITION) .components(NitricAcid, 1, SulfuricAcid, 1) .buildAndRegister(); - DilutedSulfuricAcid = new Material.Builder(GTCEu.id("diluted_sulfuric_acid")) + DilutedSulfuricAcid = REGISTRATE.material("diluted_sulfuric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xC07820) .flags(DISABLE_DECOMPOSITION) .components(SulfuricAcid, 2, Water, 1) .buildAndRegister(); - DilutedHydrochloricAcid = new Material.Builder(GTCEu.id("diluted_hydrochloric_acid")) + DilutedHydrochloricAcid = REGISTRATE.material("diluted_hydrochloric_acid") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x99A7A3) .flags(DISABLE_DECOMPOSITION) .components(HydrochloricAcid, 1, Water, 1) .buildAndRegister(); - Flint = new Material.Builder(GTCEu.id("flint")) + Flint = REGISTRATE.material("flint") .gem(1) .color(0xc7c7c7).secondaryColor(0x212121).iconSet(FLINT) .flags(NO_SMASHING, MORTAR_GRINDABLE, DECOMPOSITION_BY_CENTRIFUGING) @@ -400,21 +399,21 @@ public static void register() { .enchantment(Enchantments.FIRE_ASPECT, 1).build()) .buildAndRegister(); - Air = new Material.Builder(GTCEu.id("air")) + Air = REGISTRATE.material("air") .gas(new FluidBuilder().customStill()) .color(0xA9D0F5) .flags(DISABLE_DECOMPOSITION) .components(Nitrogen, 78, Oxygen, 21, Argon, 9) .buildAndRegister(); - LiquidAir = new Material.Builder(GTCEu.id("liquid_air")) + LiquidAir = REGISTRATE.material("liquid_air") .liquid(new FluidBuilder().temperature(97)) .color(0xA9D0F5) .flags(DISABLE_DECOMPOSITION) .components(Nitrogen, 70, Oxygen, 22, CarbonDioxide, 5, Helium, 2, Argon, 1, Ice, 1) .buildAndRegister(); - NetherAir = new Material.Builder(GTCEu.id("nether_air")) + NetherAir = REGISTRATE.material("nether_air") .gas() .color(0x4C3434) .flags(DISABLE_DECOMPOSITION) @@ -422,7 +421,7 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CHEMICAL_BURNS) .buildAndRegister(); - LiquidNetherAir = new Material.Builder(GTCEu.id("liquid_nether_air")) + LiquidNetherAir = REGISTRATE.material("liquid_nether_air") .liquid(new FluidBuilder().temperature(58)) .color(0x4C3434) .flags(DISABLE_DECOMPOSITION) @@ -430,14 +429,14 @@ public static void register() { 1, Ash, 1) .buildAndRegister(); - EnderAir = new Material.Builder(GTCEu.id("ender_air")) + EnderAir = REGISTRATE.material("ender_air") .gas() .color(0x283454) .flags(DISABLE_DECOMPOSITION) .components(NitrogenDioxide, 78, Deuterium, 21, Xenon, 9) .buildAndRegister(); - LiquidEnderAir = new Material.Builder(GTCEu.id("liquid_ender_air")) + LiquidEnderAir = REGISTRATE.material("liquid_ender_air") .liquid(new FluidBuilder().temperature(36)) .color(0x283454) .flags(DISABLE_DECOMPOSITION) @@ -445,49 +444,49 @@ public static void register() { 1, EnderPearl, 1) .buildAndRegister(); - AquaRegia = new Material.Builder(GTCEu.id("aqua_regia")) + AquaRegia = REGISTRATE.material("aqua_regia") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xFFB132) .flags(DISABLE_DECOMPOSITION) .components(NitricAcid, 1, HydrochloricAcid, 2) .buildAndRegister(); - PlatinumSludgeResidue = new Material.Builder(GTCEu.id("platinum_sludge_residue")) + PlatinumSludgeResidue = REGISTRATE.material("platinum_sludge_residue") .dust() .color(0x5e4b40).secondaryColor(0x4b403d).iconSet(FINE) .flags(DECOMPOSITION_BY_CENTRIFUGING) .components(SiliconDioxide, 2, Gold, 3) .buildAndRegister(); - PalladiumRaw = new Material.Builder(GTCEu.id("palladium_raw")) + PalladiumRaw = REGISTRATE.material("palladium_raw") .dust() .color(0x5d4e1a).secondaryColor(0x33352d).iconSet(METALLIC) .flags(DISABLE_DECOMPOSITION) .components(Palladium, 1, Ammonia, 1) .buildAndRegister(); - RarestMetalMixture = new Material.Builder(GTCEu.id("rarest_metal_mixture")) + RarestMetalMixture = REGISTRATE.material("rarest_metal_mixture") .dust() .color(0xca8832).secondaryColor(0xb21900).iconSet(SHINY) .flags(DISABLE_DECOMPOSITION) .components(Iridium, 1, Osmium, 1, Oxygen, 4, Water, 1) .buildAndRegister(); - AmmoniumChloride = new Material.Builder(GTCEu.id("ammonium_chloride")) + AmmoniumChloride = REGISTRATE.material("ammonium_chloride") .dust() .color(0x60a1c5).secondaryColor(0x48619c) .components(Ammonia, 1, HydrochloricAcid, 1) .buildAndRegister() .setFormula("NH4Cl", true); - AcidicOsmiumSolution = new Material.Builder(GTCEu.id("acidic_osmium_solution")) + AcidicOsmiumSolution = REGISTRATE.material("acidic_osmium_solution") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0xDAC5C5) .flags(DISABLE_DECOMPOSITION) .components(Osmium, 1, Oxygen, 4, Water, 1, HydrochloricAcid, 1) .buildAndRegister(); - RhodiumPlatedPalladium = new Material.Builder(GTCEu.id("rhodium_plated_palladium")) + RhodiumPlatedPalladium = REGISTRATE.material("rhodium_plated_palladium") .ingot().fluid() .color(0xd1d1d1).secondaryColor(0x000000).iconSet(SHINY) .appendFlags(EXT2_METAL, GENERATE_ROTOR, GENERATE_DENSE, GENERATE_SMALL_GEAR) @@ -498,14 +497,14 @@ public static void register() { .vacuumStats(VA[EV], 300)) .buildAndRegister(); - Clay = new Material.Builder(GTCEu.id("clay")) + Clay = REGISTRATE.material("clay") .dust(1) .color(0xbec9e8).secondaryColor(0x373944).iconSet(ROUGH) .flags(MORTAR_GRINDABLE, EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) .components(Sodium, 2, Lithium, 1, Aluminium, 2, Silicon, 2, Water, 6) .buildAndRegister(); - Redstone = new Material.Builder(GTCEu.id("redstone")) + Redstone = REGISTRATE.material("redstone") .dust().ore(5, 1, true) .liquid(new FluidBuilder().temperature(500)) .color(0xff0000).secondaryColor(0x340605).iconSet(ROUGH) @@ -515,14 +514,14 @@ public static void register() { .removeHazard() .buildAndRegister(); - Dichloroethane = new Material.Builder(GTCEu.id("dichloroethane")) + Dichloroethane = REGISTRATE.material("dichloroethane") .liquid() .color(0xafc979) .flags(DECOMPOSITION_BY_ELECTROLYZING) .components(Carbon, 2, Hydrogen, 4, Chlorine, 2) .buildAndRegister(); - Diethylenetriamine = new Material.Builder(GTCEu.id("diethylenetriamine")) + Diethylenetriamine = REGISTRATE.material("diethylenetriamine") .liquid() .color(0xa9d9a7) .flags(DISABLE_DECOMPOSITION) @@ -530,7 +529,7 @@ public static void register() { .hazard(HazardProperty.HazardTrigger.ANY, GTMedicalConditions.CHEMICAL_BURNS) .buildAndRegister(); - Tuff = new Material.Builder(GTCEu.id("tuff")) + Tuff = REGISTRATE.material("tuff") .dust() .color(0x75756a).secondaryColor(0x8a8a80).iconSet(ROUGH) .flags(NO_SMASHING) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java index 022a0555f38..834e42497d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/materials/UnknownCompositionMaterials.java @@ -1,7 +1,5 @@ package com.gregtechceu.gtceu.common.data.materials; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.HazardProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.ToolProperty; import com.gregtechceu.gtceu.api.fluids.FluidBuilder; @@ -11,360 +9,360 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; -import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.dustSmall; -import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.dustTiny; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class UnknownCompositionMaterials { public static void register() { - WoodGas = new Material.Builder(GTCEu.id("wood_gas")) + WoodGas = REGISTRATE.material("wood_gas") .gas() .color(0xDECD87).secondaryColor(0xdeb287) .buildAndRegister(); - WoodVinegar = new Material.Builder(GTCEu.id("wood_vinegar")) + WoodVinegar = REGISTRATE.material("wood_vinegar") .fluid() .color(0xD45500).secondaryColor(0x905800) .buildAndRegister(); - WoodTar = new Material.Builder(GTCEu.id("wood_tar")) + WoodTar = REGISTRATE.material("wood_tar") .fluid() .color(0x3a271a).secondaryColor(0x28170B) .flags(STICKY, FLAMMABLE).buildAndRegister(); - CharcoalByproducts = new Material.Builder(GTCEu.id("charcoal_byproducts")) + CharcoalByproducts = REGISTRATE.material("charcoal_byproducts") .fluid().color(0x784421).buildAndRegister(); - Biomass = new Material.Builder(GTCEu.id("biomass")) + Biomass = REGISTRATE.material("biomass") .liquid(new FluidBuilder().customStill()).color(0x00FF00).buildAndRegister(); - BioDiesel = new Material.Builder(GTCEu.id("bio_diesel")) + BioDiesel = REGISTRATE.material("bio_diesel") .fluid().color(0xFF8000) .flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - FermentedBiomass = new Material.Builder(GTCEu.id("fermented_biomass")) + FermentedBiomass = REGISTRATE.material("fermented_biomass") .liquid(new FluidBuilder().temperature(300)) .color(0x445500) .buildAndRegister(); - Creosote = new Material.Builder(GTCEu.id("creosote")) + Creosote = REGISTRATE.material("creosote") .liquid(new FluidBuilder().block().customStill().burnTime(6400)).color(0x804000) .flags(STICKY).buildAndRegister(); - Diesel = new Material.Builder(GTCEu.id("diesel")) + Diesel = REGISTRATE.material("diesel") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - RocketFuel = new Material.Builder(GTCEu.id("rocket_fuel")) + RocketFuel = REGISTRATE.material("rocket_fuel") .fluid().flags(FLAMMABLE, EXPLOSIVE).color(0xBDB78C).buildAndRegister(); - Glue = new Material.Builder(GTCEu.id("glue")) + Glue = REGISTRATE.material("glue") .liquid(new FluidBuilder().customStill()).flags(STICKY).buildAndRegister(); - Lubricant = new Material.Builder(GTCEu.id("lubricant")) + Lubricant = REGISTRATE.material("lubricant") .liquid(new FluidBuilder().customStill()).buildAndRegister(); - McGuffium239 = new Material.Builder(GTCEu.id("mc_guffium_239")) + McGuffium239 = REGISTRATE.material("mc_guffium_239") .liquid(new FluidBuilder().customStill()).buildAndRegister(); - IndiumConcentrate = new Material.Builder(GTCEu.id("indium_concentrate")) + IndiumConcentrate = REGISTRATE.material("indium_concentrate") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x0E2950).buildAndRegister(); - SeedOil = new Material.Builder(GTCEu.id("seed_oil")) + SeedOil = REGISTRATE.material("seed_oil") .liquid(new FluidBuilder().customStill()) .color(0xFFFFFF) .flags(STICKY, FLAMMABLE).buildAndRegister(); - DrillingFluid = new Material.Builder(GTCEu.id("drilling_fluid")) + DrillingFluid = REGISTRATE.material("drilling_fluid") .fluid().color(0xFFFFAA).buildAndRegister(); - ConstructionFoam = new Material.Builder(GTCEu.id("construction_foam")) + ConstructionFoam = REGISTRATE.material("construction_foam") .fluid().color(0x808080).buildAndRegister(); - SulfuricHeavyFuel = new Material.Builder(GTCEu.id("sulfuric_heavy_fuel")) + SulfuricHeavyFuel = REGISTRATE.material("sulfuric_heavy_fuel") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE).buildAndRegister(); - HeavyFuel = new Material.Builder(GTCEu.id("heavy_fuel")) + HeavyFuel = REGISTRATE.material("heavy_fuel") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE).buildAndRegister(); - LightlyHydroCrackedHeavyFuel = new Material.Builder(GTCEu.id("lightly_hydro_cracked_heavy_fuel")) + LightlyHydroCrackedHeavyFuel = REGISTRATE.material("lightly_hydro_cracked_heavy_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xFFFF00).flags(FLAMMABLE).buildAndRegister(); - SeverelyHydroCrackedHeavyFuel = new Material.Builder(GTCEu.id("severely_hydro_cracked_heavy_fuel")) + SeverelyHydroCrackedHeavyFuel = REGISTRATE.material("severely_hydro_cracked_heavy_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xFFFF00).flags(FLAMMABLE).buildAndRegister(); - LightlySteamCrackedHeavyFuel = new Material.Builder(GTCEu.id("lightly_steam_cracked_heavy_fuel")) + LightlySteamCrackedHeavyFuel = REGISTRATE.material("lightly_steam_cracked_heavy_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .flags(FLAMMABLE).buildAndRegister(); - SeverelySteamCrackedHeavyFuel = new Material.Builder(GTCEu.id("severely_steam_cracked_heavy_fuel")) + SeverelySteamCrackedHeavyFuel = REGISTRATE.material("severely_steam_cracked_heavy_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .flags(FLAMMABLE).buildAndRegister(); - SulfuricLightFuel = new Material.Builder(GTCEu.id("sulfuric_light_fuel")) + SulfuricLightFuel = REGISTRATE.material("sulfuric_light_fuel") .liquid(new FluidBuilder() .customStill()) .flags(FLAMMABLE).buildAndRegister(); - LightFuel = new Material.Builder(GTCEu.id("light_fuel")) + LightFuel = REGISTRATE.material("light_fuel") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE).buildAndRegister(); - LightlyHydroCrackedLightFuel = new Material.Builder(GTCEu.id("lightly_hydro_cracked_light_fuel")) + LightlyHydroCrackedLightFuel = REGISTRATE.material("lightly_hydro_cracked_light_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xB7AF08).flags(FLAMMABLE).buildAndRegister(); - SeverelyHydroCrackedLightFuel = new Material.Builder(GTCEu.id("severely_hydro_cracked_light_fuel")) + SeverelyHydroCrackedLightFuel = REGISTRATE.material("severely_hydro_cracked_light_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xB7AF08).flags(FLAMMABLE).buildAndRegister(); - LightlySteamCrackedLightFuel = new Material.Builder(GTCEu.id("lightly_steam_cracked_light_fuel")) + LightlySteamCrackedLightFuel = REGISTRATE.material("lightly_steam_cracked_light_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .flags(FLAMMABLE).buildAndRegister(); - SeverelySteamCrackedLightFuel = new Material.Builder(GTCEu.id("severely_steam_cracked_light_fuel")) + SeverelySteamCrackedLightFuel = REGISTRATE.material("severely_steam_cracked_light_fuel") .liquid(new FluidBuilder() .temperature(775) .customStill()) .flags(FLAMMABLE).buildAndRegister(); - SulfuricNaphtha = new Material.Builder(GTCEu.id("sulfuric_naphtha")) + SulfuricNaphtha = REGISTRATE.material("sulfuric_naphtha") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE).buildAndRegister(); - Naphtha = new Material.Builder(GTCEu.id("naphtha")) + Naphtha = REGISTRATE.material("naphtha") .liquid(new FluidBuilder().customStill()).flags(FLAMMABLE).buildAndRegister(); - LightlyHydroCrackedNaphtha = new Material.Builder(GTCEu.id("lightly_hydro_cracked_naphtha")) + LightlyHydroCrackedNaphtha = REGISTRATE.material("lightly_hydro_cracked_naphtha") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xBFB608).flags(FLAMMABLE).buildAndRegister(); - SeverelyHydroCrackedNaphtha = new Material.Builder(GTCEu.id("severely_hydro_cracked_naphtha")) + SeverelyHydroCrackedNaphtha = REGISTRATE.material("severely_hydro_cracked_naphtha") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xBFB608).flags(FLAMMABLE).buildAndRegister(); - LightlySteamCrackedNaphtha = new Material.Builder(GTCEu.id("lightly_steam_cracked_naphtha")) + LightlySteamCrackedNaphtha = REGISTRATE.material("lightly_steam_cracked_naphtha") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xBFB608).flags(FLAMMABLE).buildAndRegister(); - SeverelySteamCrackedNaphtha = new Material.Builder(GTCEu.id("severely_steam_cracked_naphtha")) + SeverelySteamCrackedNaphtha = REGISTRATE.material("severely_steam_cracked_naphtha") .liquid(new FluidBuilder() .temperature(775) .customStill()) .color(0xBFB608).flags(FLAMMABLE).buildAndRegister(); - SulfuricGas = new Material.Builder(GTCEu.id("sulfuric_gas")) + SulfuricGas = REGISTRATE.material("sulfuric_gas") .gas(new FluidBuilder().customStill()) .color(0xECDCCC).buildAndRegister(); - RefineryGas = new Material.Builder(GTCEu.id("refinery_gas")) + RefineryGas = REGISTRATE.material("refinery_gas") .gas(new FluidBuilder().customStill()) .color(0xB4B4B4) .flags(FLAMMABLE) .buildAndRegister(); - LightlyHydroCrackedGas = new Material.Builder(GTCEu.id("lightly_hydro_cracked_gas")) + LightlyHydroCrackedGas = REGISTRATE.material("lightly_hydro_cracked_gas") .gas(new FluidBuilder().temperature(775)) .color(0xA0A0A0) .flags(FLAMMABLE) .buildAndRegister(); - SeverelyHydroCrackedGas = new Material.Builder(GTCEu.id("severely_hydro_cracked_gas")) + SeverelyHydroCrackedGas = REGISTRATE.material("severely_hydro_cracked_gas") .gas(new FluidBuilder().temperature(775)) .color(0xC8C8C8) .flags(FLAMMABLE) .buildAndRegister(); - LightlySteamCrackedGas = new Material.Builder(GTCEu.id("lightly_steam_cracked_gas")) + LightlySteamCrackedGas = REGISTRATE.material("lightly_steam_cracked_gas") .gas(new FluidBuilder().temperature(775)) .color(0xE0E0E0) .flags(FLAMMABLE) .buildAndRegister(); - SeverelySteamCrackedGas = new Material.Builder(GTCEu.id("severely_steam_cracked_gas")) + SeverelySteamCrackedGas = REGISTRATE.material("severely_steam_cracked_gas") .gas(new FluidBuilder().temperature(775)) .color(0xE0E0E0).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedEthane = new Material.Builder(GTCEu.id("hydro_cracked_ethane")) + HydroCrackedEthane = REGISTRATE.material("hydro_cracked_ethane") .gas(new FluidBuilder().temperature(775)) .color(0x9696BC).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedEthylene = new Material.Builder(GTCEu.id("hydro_cracked_ethylene")) + HydroCrackedEthylene = REGISTRATE.material("hydro_cracked_ethylene") .gas(new FluidBuilder().temperature(775)) .color(0xA3A3A0).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedPropene = new Material.Builder(GTCEu.id("hydro_cracked_propene")) + HydroCrackedPropene = REGISTRATE.material("hydro_cracked_propene") .gas(new FluidBuilder().temperature(775)) .color(0xBEA540).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedPropane = new Material.Builder(GTCEu.id("hydro_cracked_propane")) + HydroCrackedPropane = REGISTRATE.material("hydro_cracked_propane") .gas(new FluidBuilder().temperature(775)) .color(0xBEA540).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedButane = new Material.Builder(GTCEu.id("hydro_cracked_butane")) + HydroCrackedButane = REGISTRATE.material("hydro_cracked_butane") .gas(new FluidBuilder().temperature(775)) .color(0x852C18).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedButene = new Material.Builder(GTCEu.id("hydro_cracked_butene")) + HydroCrackedButene = REGISTRATE.material("hydro_cracked_butene") .gas(new FluidBuilder().temperature(775)) .color(0x993E05).flags(FLAMMABLE).buildAndRegister(); - HydroCrackedButadiene = new Material.Builder(GTCEu.id("hydro_cracked_butadiene")) + HydroCrackedButadiene = REGISTRATE.material("hydro_cracked_butadiene") .gas(new FluidBuilder().temperature(775)) .color(0xAD5203).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedEthane = new Material.Builder(GTCEu.id("steam_cracked_ethane")) + SteamCrackedEthane = REGISTRATE.material("steam_cracked_ethane") .gas(new FluidBuilder().temperature(775)) .color(0x9696BC).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedEthylene = new Material.Builder(GTCEu.id("steam_cracked_ethylene")) + SteamCrackedEthylene = REGISTRATE.material("steam_cracked_ethylene") .gas(new FluidBuilder().temperature(775)) .color(0xA3A3A0).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedPropene = new Material.Builder(GTCEu.id("steam_cracked_propene")) + SteamCrackedPropene = REGISTRATE.material("steam_cracked_propene") .gas(new FluidBuilder().temperature(775)) .color(0xBEA540).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedPropane = new Material.Builder(GTCEu.id("steam_cracked_propane")) + SteamCrackedPropane = REGISTRATE.material("steam_cracked_propane") .gas(new FluidBuilder().temperature(775)) .color(0xBEA540).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedButane = new Material.Builder(GTCEu.id("steam_cracked_butane")) + SteamCrackedButane = REGISTRATE.material("steam_cracked_butane") .gas(new FluidBuilder().temperature(775)) .color(0x852C18).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedButene = new Material.Builder(GTCEu.id("steam_cracked_butene")) + SteamCrackedButene = REGISTRATE.material("steam_cracked_butene") .gas(new FluidBuilder().temperature(775)) .color(0x993E05).flags(FLAMMABLE).buildAndRegister(); - SteamCrackedButadiene = new Material.Builder(GTCEu.id("steam_cracked_butadiene")) + SteamCrackedButadiene = REGISTRATE.material("steam_cracked_butadiene") .gas(new FluidBuilder().temperature(775)) .color(0xAD5203).flags(FLAMMABLE).buildAndRegister(); - LPG = new Material.Builder(GTCEu.id("lpg")) + LPG = REGISTRATE.material("lpg") .liquid(new FluidBuilder().customStill()) .color(0xFCFCAC).flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - RawGrowthMedium = new Material.Builder(GTCEu.id("raw_growth_medium")) + RawGrowthMedium = REGISTRATE.material("raw_growth_medium") .fluid().color(0xA47351).buildAndRegister(); - SterileGrowthMedium = new Material.Builder(GTCEu.id("sterilized_growth_medium")) + SterileGrowthMedium = REGISTRATE.material("sterilized_growth_medium") .fluid().color(0xAC876E).buildAndRegister(); - Oil = new Material.Builder(GTCEu.id("oil")) + Oil = REGISTRATE.material("oil") .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - HeavyOil = new Material.Builder(GTCEu.id("heavy_oil")) + HeavyOil = REGISTRATE.material("heavy_oil") .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - RawOil = new Material.Builder(GTCEu.id("raw_oil")) + RawOil = REGISTRATE.material("raw_oil") .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - LightOil = new Material.Builder(GTCEu.id("light_oil")) + LightOil = REGISTRATE.material("light_oil") .liquid(new FluidBuilder().block().customStill()) .color(0x0A0A0A) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - NaturalGas = new Material.Builder(GTCEu.id("natural_gas")) + NaturalGas = REGISTRATE.material("natural_gas") .gas(new FluidBuilder().block().customStill()) .flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - Bacteria = new Material.Builder(GTCEu.id("bacteria")) + Bacteria = REGISTRATE.material("bacteria") .fluid().color(0x808000).buildAndRegister(); - BacterialSludge = new Material.Builder(GTCEu.id("bacterial_sludge")) + BacterialSludge = REGISTRATE.material("bacterial_sludge") .fluid().color(0x355E3B).buildAndRegister(); - EnrichedBacterialSludge = new Material.Builder(GTCEu.id("enriched_bacterial_sludge")) + EnrichedBacterialSludge = REGISTRATE.material("enriched_bacterial_sludge") .fluid().color(0x7FFF00).buildAndRegister(); - Mutagen = new Material.Builder(GTCEu.id("mutagen")) + Mutagen = REGISTRATE.material("mutagen") .fluid().color(0x00FF7F).buildAndRegister(); - GelatinMixture = new Material.Builder(GTCEu.id("gelatin_mixture")) + GelatinMixture = REGISTRATE.material("gelatin_mixture") .fluid().color(0x588BAE).buildAndRegister(); - RawGasoline = new Material.Builder(GTCEu.id("raw_gasoline")) + RawGasoline = REGISTRATE.material("raw_gasoline") .fluid().color(0xFF6400).flags(FLAMMABLE).buildAndRegister(); - Gasoline = new Material.Builder(GTCEu.id("gasoline")) + Gasoline = REGISTRATE.material("gasoline") .fluid().color(0xFAA500).flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - HighOctaneGasoline = new Material.Builder(GTCEu.id("high_octane_gasoline")) + HighOctaneGasoline = REGISTRATE.material("high_octane_gasoline") .fluid().color(0xFFA500).flags(FLAMMABLE, EXPLOSIVE).buildAndRegister(); - CoalGas = new Material.Builder(GTCEu.id("coal_gas")) + CoalGas = REGISTRATE.material("coal_gas") .gas().color(0x333333).buildAndRegister(); - CoalTar = new Material.Builder(GTCEu.id("coal_tar")) + CoalTar = REGISTRATE.material("coal_tar") .fluid().color(0x1A1A1A).flags(STICKY, FLAMMABLE).buildAndRegister(); - Gunpowder = new Material.Builder(GTCEu.id("gunpowder")) + Gunpowder = REGISTRATE.material("gunpowder") .dust(0) .color(0xa4a4a4).secondaryColor(0x767676).iconSet(ROUGH) .flags(FLAMMABLE, EXPLOSIVE, NO_SMELTING, NO_SMASHING) .components(Saltpeter, 2, Sulfur, 1, Carbon, 3) .buildAndRegister(); - Oilsands = new Material.Builder(GTCEu.id("oilsands")) + Oilsands = REGISTRATE.material("oilsands") .dust(1).ore() .color(0xe3c78a).secondaryColor(0x161e22).iconSet(SAND) .flags(FLAMMABLE) .buildAndRegister(); - RareEarth = new Material.Builder(GTCEu.id("rare_earth")) + RareEarth = REGISTRATE.material("rare_earth") .dust(0) .color(0xffdc88).secondaryColor(0xe99673).iconSet(FINE) .buildAndRegister(); - Stone = new Material.Builder(GTCEu.id("stone")) + Stone = REGISTRATE.material("stone") .dust(2) .color(0x8f8f8f).secondaryColor(0x898989).iconSet(ROUGH) .flags(MORTAR_GRINDABLE, GENERATE_GEAR, NO_SMASHING, NO_SMELTING) .buildAndRegister(); - Lava = new Material.Builder(GTCEu.id("lava")) + Lava = REGISTRATE.material("lava") .fluid().color(0xFF4000).buildAndRegister(); - Netherite = new Material.Builder(GTCEu.id("netherite")) + Netherite = REGISTRATE.material("netherite") .ingot().color(0x4b4042).secondaryColor(0x474447) .flags(FIRE_RESISTANT) .toolStats(ToolProperty.Builder.of(10.0F, 4.0F, 2032, 4) .enchantability(21).build()) .buildAndRegister(); - Glowstone = new Material.Builder(GTCEu.id("glowstone")) + Glowstone = REGISTRATE.material("glowstone") .dust(1) .liquid(new FluidBuilder().temperature(500)) .color(0xfcb34c).secondaryColor(0xce7533).iconSet(SHINY) @@ -372,69 +370,69 @@ public static void register() { EXCLUDE_BLOCK_CRAFTING_BY_HAND_RECIPES) .buildAndRegister(); - NetherStar = new Material.Builder(GTCEu.id("nether_star")) + NetherStar = REGISTRATE.material("nether_star") .gem(4) .color(0xfeffc6).secondaryColor(0x7fd7e2) .iconSet(NETHERSTAR) .flags(NO_SMASHING, NO_SMELTING, GENERATE_LENS) .buildAndRegister(); - Endstone = new Material.Builder(GTCEu.id("endstone")) + Endstone = REGISTRATE.material("endstone") .dust(1) .color(0xf6fabd).secondaryColor(0xc5be8b).iconSet(ROUGH) .flags(NO_SMASHING) .buildAndRegister(); - Netherrack = new Material.Builder(GTCEu.id("netherrack")) + Netherrack = REGISTRATE.material("netherrack") .dust(1) .color(0x7c4249).secondaryColor(0x400b0b).iconSet(ROUGH) .flags(NO_SMASHING, FLAMMABLE) .buildAndRegister(); - CetaneBoostedDiesel = new Material.Builder(GTCEu.id("cetane_boosted_diesel")) + CetaneBoostedDiesel = REGISTRATE.material("cetane_boosted_diesel") .liquid(new FluidBuilder().customStill()) .color(0xC8FF00) .flags(FLAMMABLE, EXPLOSIVE) .buildAndRegister(); - Collagen = new Material.Builder(GTCEu.id("collagen")) + Collagen = REGISTRATE.material("collagen") .dust(1) .color(0xffadb7).secondaryColor(0x80471C).iconSet(ROUGH) .buildAndRegister(); - Gelatin = new Material.Builder(GTCEu.id("gelatin")) + Gelatin = REGISTRATE.material("gelatin") .dust(1) .color(0xfaf7cb).secondaryColor(0x693d00).iconSet(ROUGH) .buildAndRegister(); - Agar = new Material.Builder(GTCEu.id("agar")) + Agar = REGISTRATE.material("agar") .dust(1) .color(0xbdd168).secondaryColor(0x403218).iconSet(ROUGH) .buildAndRegister(); - Milk = new Material.Builder(GTCEu.id("milk")) + Milk = REGISTRATE.material("milk") .liquid(new FluidBuilder() .temperature(295) .customStill()) .color(0xfffbf0).secondaryColor(0xf6eac8).iconSet(FINE) .buildAndRegister(); - Cocoa = new Material.Builder(GTCEu.id("cocoa")) + Cocoa = REGISTRATE.material("cocoa") .dust(0) .color(0x976746).secondaryColor(0x301a0a).iconSet(FINE) .buildAndRegister(); - Wheat = new Material.Builder(GTCEu.id("wheat")) + Wheat = REGISTRATE.material("wheat") .dust(0) .color(0xdcbb65).secondaryColor(0x565138).iconSet(FINE) .buildAndRegister(); - Meat = new Material.Builder(GTCEu.id("meat")) + Meat = REGISTRATE.material("meat") .dust(1) .color(0xe85048).secondaryColor(0x470a06).iconSet(SAND) .buildAndRegister(); - Wood = new Material.Builder(GTCEu.id("wood")) + Wood = REGISTRATE.material("wood") .wood() .color(0xc29f6d).secondaryColor(0x643200).iconSet(WOOD) .fluidPipeProperties(340, 5, false) @@ -443,160 +441,161 @@ public static void register() { GENERATE_FRAME) .buildAndRegister(); - Paper = new Material.Builder(GTCEu.id("paper")) + Paper = REGISTRATE.material("paper") .dust(0) .color(0xF9F9F9).secondaryColor(0xECECEC).iconSet(DULL) .flags(GENERATE_PLATE, FLAMMABLE, NO_SMELTING, NO_SMASHING, MORTAR_GRINDABLE, EXCLUDE_PLATE_COMPRESSOR_RECIPE) .buildAndRegister(); - FishOil = new Material.Builder(GTCEu.id("fish_oil")) + FishOil = REGISTRATE.material("fish_oil") .fluid() .color(0xDCC15D) .flags(STICKY, FLAMMABLE) .buildAndRegister(); - RubySlurry = new Material.Builder(GTCEu.id("ruby_slurry")) + RubySlurry = REGISTRATE.material("ruby_slurry") .fluid().color(0xff6464).buildAndRegister(); - SapphireSlurry = new Material.Builder(GTCEu.id("sapphire_slurry")) + SapphireSlurry = REGISTRATE.material("sapphire_slurry") .fluid().color(0x6464c8).buildAndRegister(); - GreenSapphireSlurry = new Material.Builder(GTCEu.id("green_sapphire_slurry")) + GreenSapphireSlurry = REGISTRATE.material("green_sapphire_slurry") .fluid().color(0x64c882).buildAndRegister(); // These colors are much nicer looking than those in MC's EnumDyeColor - DyeBlack = new Material.Builder(GTCEu.id("black_dye")) + DyeBlack = REGISTRATE.material("black_dye") .fluid().color(0x202020).buildAndRegister(); - DyeRed = new Material.Builder(GTCEu.id("red_dye")) + DyeRed = REGISTRATE.material("red_dye") .fluid().color(0xFF0000).buildAndRegister(); - DyeGreen = new Material.Builder(GTCEu.id("green_dye")) + DyeGreen = REGISTRATE.material("green_dye") .fluid().color(0x00FF00).buildAndRegister(); - DyeBrown = new Material.Builder(GTCEu.id("brown_dye")) + DyeBrown = REGISTRATE.material("brown_dye") .fluid().color(0x604000).buildAndRegister(); - DyeBlue = new Material.Builder(GTCEu.id("blue_dye")) + DyeBlue = REGISTRATE.material("blue_dye") .fluid().color(0x0020FF).buildAndRegister(); - DyePurple = new Material.Builder(GTCEu.id("purple_dye")) + DyePurple = REGISTRATE.material("purple_dye") .fluid().color(0x800080).buildAndRegister(); - DyeCyan = new Material.Builder(GTCEu.id("cyan_dye")) + DyeCyan = REGISTRATE.material("cyan_dye") .fluid().color(0x00FFFF).buildAndRegister(); - DyeLightGray = new Material.Builder(GTCEu.id("light_gray_dye")) + DyeLightGray = REGISTRATE.material("light_gray_dye") .fluid().color(0xC0C0C0).buildAndRegister(); - DyeGray = new Material.Builder(GTCEu.id("gray_dye")) + DyeGray = REGISTRATE.material("gray_dye") .fluid().color(0x808080).buildAndRegister(); - DyePink = new Material.Builder(GTCEu.id("pink_dye")) + DyePink = REGISTRATE.material("pink_dye") .fluid().color(0xFFC0C0).buildAndRegister(); - DyeLime = new Material.Builder(GTCEu.id("lime_dye")) + DyeLime = REGISTRATE.material("lime_dye") .fluid().color(0x80FF80).buildAndRegister(); - DyeYellow = new Material.Builder(GTCEu.id("yellow_dye")) + DyeYellow = REGISTRATE.material("yellow_dye") .fluid().color(0xFFFF00).buildAndRegister(); - DyeLightBlue = new Material.Builder(GTCEu.id("light_blue_dye")) + DyeLightBlue = REGISTRATE.material("light_blue_dye") .fluid().color(0x6080FF).buildAndRegister(); - DyeMagenta = new Material.Builder(GTCEu.id("magenta_dye")) + DyeMagenta = REGISTRATE.material("magenta_dye") .fluid().color(0xFF00FF).buildAndRegister(); - DyeOrange = new Material.Builder(GTCEu.id("orange_dye")) + DyeOrange = REGISTRATE.material("orange_dye") .fluid().color(0xFF8000).buildAndRegister(); - DyeWhite = new Material.Builder(GTCEu.id("white_dye")) + DyeWhite = REGISTRATE.material("white_dye") .fluid().color(0xFFFFFF).buildAndRegister(); - ImpureEnrichedNaquadahSolution = new Material.Builder(GTCEu.id("impure_enriched_naquadah_solution")) + ImpureEnrichedNaquadahSolution = REGISTRATE.material("impure_enriched_naquadah_solution") .fluid().color(0x388438).buildAndRegister(); - EnrichedNaquadahSolution = new Material.Builder(GTCEu.id("enriched_naquadah_solution")) + EnrichedNaquadahSolution = REGISTRATE.material("enriched_naquadah_solution") .fluid().color(0x3AAD3A).buildAndRegister(); - AcidicEnrichedNaquadahSolution = new Material.Builder(GTCEu.id("acidic_enriched_naquadah_solution")) + AcidicEnrichedNaquadahSolution = REGISTRATE.material("acidic_enriched_naquadah_solution") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x3DD63D).buildAndRegister(); - EnrichedNaquadahWaste = new Material.Builder(GTCEu.id("enriched_naquadah_waste")) + EnrichedNaquadahWaste = REGISTRATE.material("enriched_naquadah_waste") .fluid().color(0x355B35).buildAndRegister(); - ImpureNaquadriaSolution = new Material.Builder(GTCEu.id("impure_naquadria_solution")) + ImpureNaquadriaSolution = REGISTRATE.material("impure_naquadria_solution") .fluid().color(0x518451).buildAndRegister(); - NaquadriaSolution = new Material.Builder(GTCEu.id("naquadria_solution")) + NaquadriaSolution = REGISTRATE.material("naquadria_solution") .fluid().color(0x61AD61).buildAndRegister(); - AcidicNaquadriaSolution = new Material.Builder(GTCEu.id("acidic_naquadria_solution")) + AcidicNaquadriaSolution = REGISTRATE.material("acidic_naquadria_solution") .liquid(new FluidBuilder().attribute(FluidAttributes.ACID)) .color(0x70D670).buildAndRegister(); - NaquadriaWaste = new Material.Builder(GTCEu.id("naquadria_waste")) + NaquadriaWaste = REGISTRATE.material("naquadria_waste") .fluid().color(0x425B42).buildAndRegister(); - Lapotron = new Material.Builder(GTCEu.id("lapotron")) + Lapotron = REGISTRATE.material("lapotron") .gem() .color(0x7497ea).secondaryColor(0x1c0b39).iconSet(DIAMOND) .flags(DISABLE_MATERIAL_RECIPES) .ignoredTagPrefixes(dustTiny, dustSmall) .buildAndRegister(); - TreatedWood = new Material.Builder(GTCEu.id("treated_wood")) + TreatedWood = REGISTRATE.material("treated_wood") .wood() .color(0x644218).secondaryColor(0x4e0b00).iconSet(WOOD) .fluidPipeProperties(340, 10, false) .flags(GENERATE_PLATE, FLAMMABLE, GENERATE_ROD, GENERATE_FRAME) .buildAndRegister(); - UUMatter = new Material.Builder(GTCEu.id("uu_matter")) + UUMatter = REGISTRATE.material("uu_matter") .liquid(new FluidBuilder() .temperature(300) .customStill()) .buildAndRegister(); - PCBCoolant = new Material.Builder(GTCEu.id("pcb_coolant")) + PCBCoolant = REGISTRATE.material("pcb_coolant") .fluid().color(0xD5D69C) .hazard(HazardProperty.HazardTrigger.INHALATION, GTMedicalConditions.CARCINOGEN) .buildAndRegister(); - Sculk = new Material.Builder(GTCEu.id("sculk")) + Sculk = REGISTRATE.material("sculk") .dust(1) .color(0x015a5c).secondaryColor(0x001616).iconSet(ROUGH) .buildAndRegister(); - Wax = new Material.Builder(GTCEu.id("wax")) - .gem().fluid() + Wax = REGISTRATE.material("wax") + .ingot().fluid() .color(0xfabf29) .flags(NO_SMELTING) .buildAndRegister(); - BauxiteSlurry = new Material.Builder(GTCEu.id("bauxite_slurry")) + BauxiteSlurry = REGISTRATE.material("bauxite_slurry") .fluid() .color(0x051650) .buildAndRegister(); - CrackedBauxiteSlurry = new Material.Builder(GTCEu.id("cracked_bauxite_slurry")) - .liquid(775) + CrackedBauxiteSlurry = REGISTRATE.material("cracked_bauxite_slurry") + .liquid(new FluidBuilder() + .temperature(775)) .color(0x052C50) .buildAndRegister(); - BauxiteSludge = new Material.Builder(GTCEu.id("bauxite_sludge")) + BauxiteSludge = REGISTRATE.material("bauxite_sludge") .fluid() .color(0x563D2D) .buildAndRegister(); - DecalcifiedBauxiteSludge = new Material.Builder(GTCEu.id("decalcified_bauxite_sludge")) + DecalcifiedBauxiteSludge = REGISTRATE.material("decalcified_bauxite_sludge") .fluid() .color(0x6F2DA8) .buildAndRegister(); - BauxiteSlag = new Material.Builder(GTCEu.id("bauxite_slag")) + BauxiteSlag = REGISTRATE.material("bauxite_slag") .dust() .color(0x6F2DA8).iconSet(SAND) .buildAndRegister(); diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/CoverPlaceBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/CoverPlaceBehavior.java index e4e183164e2..ddde69eb088 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/CoverPlaceBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/CoverPlaceBehavior.java @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.item.component.IItemComponent; import com.gregtechceu.gtceu.common.data.item.GTItemAbilities; +import net.minecraft.core.Holder; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; @@ -19,7 +20,7 @@ import java.util.function.BooleanSupplier; import java.util.function.Predicate; -public record CoverPlaceBehavior(CoverDefinition coverDefinition) implements IInteractionItem { +public record CoverPlaceBehavior(Holder coverDefinition) implements IInteractionItem { @Override public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext context) { @@ -31,9 +32,10 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex if (coverable != null) { var coverSide = ICoverable.rayTraceCoverableSide(coverable, player); if (coverSide != null && coverable.getCoverAtSide(coverSide) == null && - coverable.canPlaceCoverOnSide(coverDefinition, coverSide)) { + coverable.canPlaceCoverOnSide(coverDefinition.value(), coverSide)) { if (player instanceof ServerPlayer serverPlayer) { - boolean result = coverable.placeCoverOnSide(coverSide, itemStack, coverDefinition, serverPlayer); + boolean result = coverable.placeCoverOnSide(coverSide, itemStack, coverDefinition.value(), + serverPlayer); if (result && !player.isCreative()) { itemStack.shrink(1); } @@ -50,8 +52,8 @@ public static boolean isCoverBehaviorItem(ItemStack itemStack, @Nullable Boolean Item item = itemStack.getItem(); if (item instanceof IComponentItem componentItem) { for (IItemComponent component : componentItem.getComponents()) { - if (component instanceof CoverPlaceBehavior(CoverDefinition definition)) { - if (canPlaceCover == null || canPlaceCover.test(definition)) { + if (component instanceof CoverPlaceBehavior(Holder definition)) { + if (canPlaceCover == null || canPlaceCover.test(definition.value())) { return true; } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java index df80eddfc4d..b0340b2955d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/AOEConfigUIBehavior.java @@ -134,6 +134,6 @@ public ModularPanel buildUI(PlayerInventoryGuiData data, PanelSyncManager @Override public ToolBehaviorType getType() { - return GTToolBehaviors.AOE_CONFIG_UI; + return GTToolBehaviors.AOE_CONFIG_UI.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java index ab75e841ccd..e9980109c46 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/BlockRotatingBehavior.java @@ -99,7 +99,7 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.BLOCK_ROTATING; + return GTToolBehaviors.BLOCK_ROTATING.get(); } public static BlockHitResult retraceBlock(BlockGetter level, Player player, BlockPos pos) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/DisableShieldBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/DisableShieldBehavior.java index 3e2ceef0cdc..d5be615c608 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/DisableShieldBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/DisableShieldBehavior.java @@ -32,7 +32,7 @@ public boolean canDisableShield(ItemStack stack, ItemStack shield, LivingEntity @Override public ToolBehaviorType getType() { - return GTToolBehaviors.DISABLE_SHIELD; + return GTToolBehaviors.DISABLE_SHIELD.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java index 26bd54b44e0..c1ef291814b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/EntityDamageBehavior.java @@ -166,7 +166,7 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.ENTITY_DAMAGE; + return GTToolBehaviors.ENTITY_DAMAGE.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java index 612f85d1739..6be0b074966 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/GrassPathBehavior.java @@ -116,6 +116,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext Level, @Override public ToolBehaviorType getType() { - return GTToolBehaviors.PATH; + return GTToolBehaviors.PATH.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java index 6fa8a524cd2..ff63c38049f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestCropsBehavior.java @@ -122,6 +122,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.HARVEST_CROPS; + return GTToolBehaviors.HARVEST_CROPS.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestIceBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestIceBehavior.java index 824ed35ecb1..11132b55b15 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestIceBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HarvestIceBehavior.java @@ -31,7 +31,7 @@ protected HarvestIceBehavior() {/**/} @Override public ToolBehaviorType getType() { - return GTToolBehaviors.HARVEST_ICE; + return GTToolBehaviors.HARVEST_ICE.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java index c7e08e14d65..4676a93ec84 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/HoeGroundBehavior.java @@ -116,6 +116,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.HOE_GROUND; + return GTToolBehaviors.HOE_GROUND.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java index 2e57b597a89..61d9f6ee071 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/LogStripBehavior.java @@ -105,6 +105,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext Level, @Override public ToolBehaviorType getType() { - return GTToolBehaviors.STRIP_LOG; + return GTToolBehaviors.STRIP_LOG.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java index dc98cea1198..d6884f01297 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/PlungerBehavior.java @@ -85,7 +85,7 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.PLUNGER; + return GTToolBehaviors.PLUNGER.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ProspectingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ProspectingBehavior.java index 53e4c1600f6..f3e65e666c7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ProspectingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ProspectingBehavior.java @@ -111,6 +111,6 @@ private static List getSurroundingBlocks(Direction dir) { @Override public ToolBehaviorType getType() { - return GTToolBehaviors.PROSPECTING; + return GTToolBehaviors.PROSPECTING.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java index 43dbaada20d..3c856cc9c9b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/RotateRailBehavior.java @@ -63,6 +63,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext context @Override public ToolBehaviorType getType() { - return GTToolBehaviors.ROTATE_RAIL; + return GTToolBehaviors.ROTATE_RAIL.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java index f85a9017951..5ade9fb8dcc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ScrapeBehavior.java @@ -106,6 +106,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext Level, @Override public ToolBehaviorType getType() { - return GTToolBehaviors.SCRAPE; + return GTToolBehaviors.SCRAPE.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java index e6f6f13edb4..72ff33865f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/ToolModeSwitchBehavior.java @@ -110,7 +110,7 @@ public boolean canPerformAction(ItemStack stack, ItemAbility action) { @Override public ToolBehaviorType getType() { - return GTToolBehaviors.MODE_SWITCH; + return GTToolBehaviors.MODE_SWITCH.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TorchPlaceBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TorchPlaceBehavior.java index d94570f790d..47d4c35fe5d 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TorchPlaceBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TorchPlaceBehavior.java @@ -140,7 +140,7 @@ private static boolean checkAndPlaceTorch(UseOnContext context, ItemStack slotSt @Override public ToolBehaviorType getType() { - return GTToolBehaviors.TORCH_PLACE; + return GTToolBehaviors.TORCH_PLACE.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TreeFellingBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TreeFellingBehavior.java index a8fdbbdad65..3f5d0fcf1e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TreeFellingBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/TreeFellingBehavior.java @@ -48,7 +48,7 @@ protected TreeFellingBehavior(boolean enabled) { @Override public ToolBehaviorType getType() { - return GTToolBehaviors.TREE_FELLING; + return GTToolBehaviors.TREE_FELLING.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java index 92d6d391c46..1324c6d79fe 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/behavior/WaxOffBehavior.java @@ -108,6 +108,6 @@ public void addInformation(@NotNull ItemStack stack, Item.TooltipContext Level, @Override public ToolBehaviorType getType() { - return GTToolBehaviors.WAX_OFF; + return GTToolBehaviors.WAX_OFF.get(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java index 949dc60e50b..5c95eff9449 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/BedrockOreMinerLogic.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.machine.trait; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; @@ -11,6 +12,7 @@ import com.gregtechceu.gtceu.api.machine.trait.recipe.RecipeLogic; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.RecipeHelper; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.machine.multiblock.electric.BedrockOreMinerMachine; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; @@ -78,7 +80,7 @@ private GTRecipe getOreMinerRecipe() { if (wm == null) return null; Material material = wm.material(); if (material.isNull()) return null; - ItemStack stack = ChemicalHelper.get(TagPrefix.get(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix), + ItemStack stack = ChemicalHelper.get(GTRegistries.TAG_PREFIXES.get(GTCEu.id(GTCEu.appendIdString(ConfigHolder.INSTANCE.machines.bedrockOreDropTagPrefix))), material, getOreToProduce()); // backup 1: crushed; if raw ore doesn't exist if (stack.isEmpty()) stack = ChemicalHelper.get(TagPrefix.crushed, material, getOreToProduce()); diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java index ba1bcc3bb7b..5226b0855b1 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentBlockCondition.java @@ -91,7 +91,7 @@ public static AdjacentBlockCondition fromTags(TagKey... tags) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.ADJACENT_BLOCK; + return GTRecipeConditions.ADJACENT_BLOCK.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java index f858ba631f5..e1a52ad9037 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/AdjacentFluidCondition.java @@ -95,7 +95,7 @@ public static AdjacentFluidCondition fromTags(TagKey... tags) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.ADJACENT_FLUID; + return GTRecipeConditions.ADJACENT_FLUID.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java index 616987c7b31..81d71f3b916 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeCondition.java @@ -43,7 +43,7 @@ public BiomeCondition(ResourceKey biome) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.BIOME; + return GTRecipeConditions.BIOME.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeTagCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeTagCondition.java index 6a156ad835e..7fd3627fb1e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeTagCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/BiomeTagCondition.java @@ -43,7 +43,7 @@ public BiomeTagCondition(TagKey biome) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.BIOME_TAG; + return GTRecipeConditions.BIOME_TAG.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/CleanroomCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/CleanroomCondition.java index 70ff56af471..c2cf4d8aaaf 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/CleanroomCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/CleanroomCondition.java @@ -40,7 +40,7 @@ public CleanroomCondition(boolean isReverse, CleanroomType cleanroom) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.CLEANROOM; + return GTRecipeConditions.CLEANROOM.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DaytimeCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DaytimeCondition.java index c1305564cd5..afbacccb80f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DaytimeCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DaytimeCondition.java @@ -28,7 +28,7 @@ public DaytimeCondition(boolean isReverse) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.DAYTIME; + return GTRecipeConditions.DAYTIME.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java index c4a22114968..a280835fdff 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/DimensionCondition.java @@ -52,7 +52,7 @@ public DimensionCondition(boolean isReverse, ResourceKey dimension) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.DIMENSION; + return GTRecipeConditions.DIMENSION.get(); } @Override @@ -68,9 +68,10 @@ public Component getTooltips() { @Override public RecipeUIModifier modifyUI() { return (recipe, widget) -> { - DimensionMarker dimMarker = GTRegistries.DIMENSION_MARKERS.getOptional(this.dimension.location()).orElse( - new DimensionMarker(DimensionMarker.MAX_TIER, () -> Blocks.BARRIER, - Component.literal(this.dimension.toString()))); + DimensionMarker dimMarker = GTRegistries.DIMENSION_MARKERS.stream() + .filter(d -> d.getDimension().equals(this.dimension)).findFirst().orElse( + new DimensionMarker(Level.OVERWORLD, DimensionMarker.MAX_TIER, () -> Blocks.BARRIER, + Component.literal(this.dimension.toString()))); ItemStack icon = dimMarker.getIcon(); String dimTier = "T" + (dimMarker.tier >= DimensionMarker.MAX_TIER ? "?" : dimMarker.tier); diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java index 7ab5dd2ae5b..42a21f25dc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EUToStartCondition.java @@ -37,7 +37,7 @@ public EUToStartCondition(boolean isReverse, long euToStart) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.EU_TO_START; + return GTRecipeConditions.EU_TO_START.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java index c07acb8ba83..3d7a61d4caa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/EnvironmentalHazardCondition.java @@ -41,7 +41,7 @@ public EnvironmentalHazardCondition(boolean isReverse, MedicalCondition conditio @Override public RecipeConditionType getType() { - return GTRecipeConditions.ENVIRONMENTAL_HAZARD; + return GTRecipeConditions.ENVIRONMENTAL_HAZARD.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/FTBQuestCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/FTBQuestCondition.java index 2bcf2a971e5..190dba0e3c3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/FTBQuestCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/FTBQuestCondition.java @@ -48,7 +48,7 @@ private QuestObject getQuest() { @Override public RecipeConditionType getType() { - return GTRecipeConditions.FTB_QUEST; + return GTRecipeConditions.FTB_QUEST.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/HeraclesQuestCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/HeraclesQuestCondition.java index 90fc53b95e5..a4d5512d8e5 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/HeraclesQuestCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/HeraclesQuestCondition.java @@ -41,7 +41,7 @@ public HeraclesQuestCondition(boolean isReverse, String questId) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.HERACLES_QUEST; + return GTRecipeConditions.HERACLES_QUEST.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java index d3342677b10..f7c452489fa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/PositionYCondition.java @@ -40,7 +40,7 @@ public PositionYCondition(boolean isReverse, int min, int max) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.POSITION_Y; + return GTRecipeConditions.POSITION_Y.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java index e9d86e9b443..899182beb07 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/RainingCondition.java @@ -37,7 +37,7 @@ public RainingCondition(float level) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.RAINING; + return GTRecipeConditions.RAINING.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ResearchCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ResearchCondition.java index 2bd613897ad..6cef3a32712 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ResearchCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ResearchCondition.java @@ -40,7 +40,7 @@ public ResearchCondition(boolean isReverse, ResearchData data) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.RESEARCH; + return GTRecipeConditions.RESEARCH.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java index 3986d705c05..8405ae71cfa 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/ThunderCondition.java @@ -39,7 +39,7 @@ public ThunderCondition(float level) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.THUNDER; + return GTRecipeConditions.THUNDER.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java index 02819b88d5f..e8c5d8130f6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/common/recipe/condition/VentCondition.java @@ -25,7 +25,7 @@ public VentCondition(boolean isReverse) { @Override public RecipeConditionType getType() { - return GTRecipeConditions.VENT; + return GTRecipeConditions.VENT.get(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/common/worldgen/modifier/RubberTreeChancePlacement.java b/src/main/java/com/gregtechceu/gtceu/common/worldgen/modifier/RubberTreeChancePlacement.java index f451e9ecc12..dcb55f94eb0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/worldgen/modifier/RubberTreeChancePlacement.java +++ b/src/main/java/com/gregtechceu/gtceu/common/worldgen/modifier/RubberTreeChancePlacement.java @@ -1,11 +1,8 @@ package com.gregtechceu.gtceu.common.worldgen.modifier; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.util.RandomSource; import net.minecraft.world.level.levelgen.placement.PlacementModifierType; import net.minecraft.world.level.levelgen.placement.RepeatingPlacement; @@ -15,9 +12,7 @@ public class RubberTreeChancePlacement extends RepeatingPlacement { - public static final PlacementModifierType RUBBER_TREE_CHANCE_PLACEMENT = GTRegistries - .register(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, GTCEu.id("rubber_tree_chance"), - () -> RubberTreeChancePlacement.CODEC); + public static final PlacementModifierType RUBBER_TREE_CHANCE_PLACEMENT = () -> RubberTreeChancePlacement.CODEC; public static final RubberTreeChancePlacement INSTANCE = new RubberTreeChancePlacement(); public static final MapCodec CODEC = MapCodec.unit(INSTANCE); diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java index 74826671a93..a609b09724e 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.core.mixins.neoforge; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; @@ -19,7 +18,8 @@ public class GameDataMixin { @ModifyExpressionValue(method = "getRegistrationOrder", at = @At(value = "NEW", target = "java/util/LinkedHashSet")) private static LinkedHashSet gtceu$injectGTRegistriesFirst(LinkedHashSet ordered) { - ordered.addAll(BuiltInRegistries.REGISTRY.keySet().stream().filter(r -> r.getNamespace().equals(GTCEu.MOD_ID)).sorted(ResourceLocation::compareNamespaced).toList()); + ordered.addAll(BuiltInRegistries.REGISTRY.keySet().stream().filter(r -> r.getNamespace().equals(GTCEu.MOD_ID)) + .sorted(ResourceLocation::compareNamespaced).toList()); return ordered; } } diff --git a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java index 606a6f21e91..8f616e4d357 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java @@ -27,7 +27,8 @@ public class PostRegistryListener extends ContextAwareReloadListener implements private PostRegistryListener() {} protected void apply() { - var registry = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY).registryOrThrow(GTRegistries.Keys.ORE_VEIN); + var registry = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY) + .registryOrThrow(GTRegistries.Keys.ORE_VEIN); buildVeinGenerators(registry); GTOreVeins.updateLargestVeinSize(registry); diff --git a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java index 8025973e1eb..e6f0600cfb1 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loot/ChestGenHooks.java @@ -1,13 +1,13 @@ package com.gregtechceu.gtceu.data.loot; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.core.mixins.LootPoolAccessor; import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.ItemStackHashStrategy; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ExtraCodecs; @@ -23,9 +23,11 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; +import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.LootTableLoadEvent; +import net.neoforged.neoforge.registries.DeferredRegister; import com.google.common.base.Preconditions; import com.mojang.serialization.MapCodec; @@ -49,9 +51,9 @@ public final class ChestGenHooks { private ChestGenHooks() {} - public static void init() { + public static void init(IEventBus modBus) { NeoForge.EVENT_BUS.register(ChestGenHooks.class); - RandomWeightLootFunction.init(); + RandomWeightLootFunction.init(modBus); } @SubscribeEvent @@ -138,8 +140,7 @@ public static class RandomWeightLootFunction extends LootItemConditionalFunction ExtraCodecs.NON_NEGATIVE_INT.fieldOf("max").forGetter(val -> val.maxAmount)) .apply(instance, RandomWeightLootFunction::new)); - public static final LootItemFunctionType TYPE = GTRegistries.register( - BuiltInRegistries.LOOT_FUNCTION_TYPE, GTCEu.id("random_weight"), new LootItemFunctionType<>(CODEC)); + public static final LootItemFunctionType TYPE = new LootItemFunctionType<>(CODEC); private final ItemStack stack; @Getter @@ -155,7 +156,11 @@ public RandomWeightLootFunction(@NotNull ItemStack stack, int minAmount, int max this.maxAmount = maxAmount; } - public static void init() {} + public static void init(IEventBus modBus) { + var register = DeferredRegister.create(Registries.LOOT_FUNCTION_TYPE, GTCEu.MOD_ID); + register.register(modBus); + register.register("random_weight", () -> TYPE); + } @Override public @NotNull LootItemFunctionType getType() { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java index b4ff4b2b4b6..881acf51907 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/GTIngredientTypes.java @@ -22,7 +22,6 @@ public static void init(IEventBus bus) { FLUID_INGREDIENT_TYPES.register(bus); } - public static final DeferredHolder, IngredientType> INT_CIRCUIT_INGREDIENT = ITEM_INGREDIENT_TYPES .register("circuit", () -> new IngredientType<>(IntCircuitIngredient.CODEC)); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java index 42f5b3c46c4..27a8185e328 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/builder/GTRecipeBuilder.java @@ -20,7 +20,6 @@ import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.ingredient.*; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.data.item.GTDataComponents; import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour; diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java index 59d4b665c11..c5abb8548a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/MaterialRecipeHandler.java @@ -442,7 +442,7 @@ private static void processGemConversion(@NotNull RecipeOutput provider, @NotNul if (material.hasFlag(MORTAR_GRINDABLE)) { VanillaRecipeHelper.addShapedRecipe(provider, String.format("gem_to_dust_%s_%s", material.getName(), - FormattingUtil.toLowerCaseUnderscore(prefix.name)), + FormattingUtil.toLowerCaseUnderscore(prefix.getName())), crushedStack, "X", "m", 'X', new MaterialEntry(prefix, material)); } @@ -457,14 +457,14 @@ private static void processGemConversion(@NotNull RecipeOutput provider, @NotNul } VanillaRecipeHelper.addShapelessRecipe(provider, - String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name), + String.format("gem_to_gem_%s_%s", FormattingUtil.toLowerCaseUnderscore(lowerPrefix.getName()), material.getName()), prevStack, 'h', new MaterialEntry(prefix, material)); CUTTER_RECIPES - .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) + .recipeBuilder("cut_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.getName()) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.getName())) .inputItems(prefix, material) .outputItems(prevStack) .duration(20) @@ -473,8 +473,8 @@ private static void processGemConversion(@NotNull RecipeOutput provider, @NotNul LASER_ENGRAVER_RECIPES .recipeBuilder( - "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.name) + - "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.name)) + "engrave_" + material.getName() + "_" + FormattingUtil.toLowerCaseUnderscore(prefix.getName()) + + "_to_" + FormattingUtil.toLowerCaseUnderscore(lowerPrefix.getName())) .inputItems(prevStack) .notConsumable(lens, MarkerMaterials.Color.White) .outputItems(prefix, material) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java index 68a1d6797e2..867a9ed54b2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/OreRecipeHandler.java @@ -62,7 +62,7 @@ private static void processMetalSmelting(@NotNull RecipeOutput provider, @NotNul ItemStack ingotStack = ChemicalHelper.get(ingot, smeltingResult); if (!ingotStack.isEmpty() && doesMaterialUseNormalFurnace(smeltingResult) && !prefix.isIgnored(material)) { - String name = "smelt_" + prefix.name + "_" + material.getName() + "_to_ingot"; + String name = "smelt_" + prefix.getName() + "_" + material.getName() + "_to_ingot"; TagKey tag = ChemicalHelper.getTag(prefix, material); VanillaRecipeHelper.addSmeltingRecipe(provider, name, tag, ingotStack, 0.5f); @@ -102,7 +102,7 @@ private static void processOre(@NotNull RecipeOutput provider, @NotNull TagPrefi ItemStack crushedStack = ChemicalHelper.get(crushed, material); crushedStack.setCount(crushedStack.getCount() * property.getOreMultiplier()); - String prefixString = orePrefix == ore ? "" : orePrefix.name + "_"; + String prefixString = orePrefix == ore ? "" : orePrefix.getName() + "_"; if (!crushedStack.isEmpty()) { int crushedCount = property.getOreMultiplier() * oreTypeMultiplier; GTRecipeBuilder builder = FORGE_HAMMER_RECIPES diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java index 18456eaa8a5..45173eb009c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PartsRecipeHandler.java @@ -227,7 +227,7 @@ private static void processGear(@NotNull RecipeOutput provider, @NotNull TagPref if (material.hasFluid()) { FluidStack fluidStack = material.getProperty(PropertyKey.FLUID).solidifiesFrom(L * (isSmall ? 1 : 4)); if (!fluidStack.isEmpty()) { - FLUID_SOLIDFICATION_RECIPES.recipeBuilder("solidify_" + material.getName() + "_" + prefix.name) + FLUID_SOLIDFICATION_RECIPES.recipeBuilder("solidify_" + material.getName() + "_" + prefix.getName()) .notConsumable(isSmall ? GTItems.SHAPE_MOLD_GEAR_SMALL : GTItems.SHAPE_MOLD_GEAR) .inputFluids(fluidStack) .outputItems(stack) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java index 0241e053542..ca6a5c0bf0c 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PipeRecipeHandler.java @@ -57,7 +57,7 @@ private static void processRestrictivePipe(@NotNull RecipeOutput provider, return; } - ASSEMBLER_RECIPES.recipeBuilder("assemble_" + material.getName() + "_" + prefix.name) + ASSEMBLER_RECIPES.recipeBuilder("assemble_" + material.getName() + "_" + prefix.getName()) .inputItems(unrestrictive, material) .inputItems(ring, Iron, 2) .outputItems(prefix, material) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PolarizingRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PolarizingRecipeHandler.java index c71ea58f373..9f179922330 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PolarizingRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/PolarizingRecipeHandler.java @@ -50,7 +50,7 @@ private static void processPolarizing(@NotNull RecipeOutput provider, @NotNull I if (!magneticMaterial.isNull() && (prefix.doGenerateBlock(magneticMaterial) || prefix.doGenerateItem(magneticMaterial))) { ItemStack magneticStack = ChemicalHelper.get(prefix, magneticMaterial); - POLARIZER_RECIPES.recipeBuilder("polarize_" + material.getName() + "_" + prefix.name) // polarizing + POLARIZER_RECIPES.recipeBuilder("polarize_" + material.getName() + "_" + prefix.getName()) // polarizing .inputItems(prefix, material) .outputItems(magneticStack) .duration((int) ((int) material.getMass() * prefix.getMaterialAmount(material) / M)) diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireCombiningHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireCombiningHandler.java index ff73486ba07..06299a589da 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireCombiningHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireCombiningHandler.java @@ -108,7 +108,7 @@ private static void processCableStripping(@NotNull RecipeOutput provider, @NotNu return; } - PACKER_RECIPES.recipeBuilder("strip_" + material.getName() + "_" + prefix.name) + PACKER_RECIPES.recipeBuilder("strip_" + material.getName() + "_" + prefix.getName()) .inputItems(prefix, material) .outputItems(cableToWireMap.get(prefix), material) .outputItems(plate, GTMaterials.Rubber, diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireRecipeHandler.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireRecipeHandler.java index 9ecdec43808..2ef658ff72a 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireRecipeHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/generated/WireRecipeHandler.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.data.recipe.generated; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; @@ -7,6 +8,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.WireProperties; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; @@ -141,7 +143,7 @@ private static void generateCableCovering(@NotNull RecipeOutput provider, } int cableAmount = (int) (prefix.getMaterialAmount(material) * 2 / M); - TagPrefix cablePrefix = TagPrefix.get("cable" + prefix.name().substring(4)); + TagPrefix cablePrefix = GTRegistries.TAG_PREFIXES.get(GTCEu.id("cable" + prefix.getName().substring(4))); int voltageTier = GTUtil.getTierByVoltage(property.getVoltage()); int insulationAmount = INSULATION_AMOUNT.getInt(cablePrefix); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java index 2b00ff870e5..fe69a2f3f71 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -3,9 +3,9 @@ import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.GTStringUtils; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; @@ -14,7 +14,10 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.material.Fluid; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.fluids.FluidStack; +import net.neoforged.neoforge.registries.DeferredHolder; +import net.neoforged.neoforge.registries.DeferredRegister; import appeng.api.networking.GridHelper; import appeng.api.networking.IGrid; @@ -33,12 +36,12 @@ import java.util.List; -import javax.annotation.ParametersAreNonnullByDefault; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault +@SuppressWarnings("unused") public class GTAEPlaceholders { + private static final DeferredRegister AE_PLACEHOLDERS = DeferredRegister + .create(GTRegistries.Keys.PLACEHOLDER, "gtceu"); + private GTAEPlaceholders() {} private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException { @@ -47,7 +50,7 @@ private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException if (nodeHost != null) { IGridNode node = nodeHost.getGridNode(ctx.side()); if (node != null) return node.getGrid(); - } ; + } BlockEntity blockEntity = ctx.level().getBlockEntity(ctx.pos()); if (blockEntity instanceof IGridConnectedBlockEntity gridMachine) { IGrid nullable = gridMachine.getMainNode().getGrid(); @@ -58,10 +61,8 @@ private static IGrid getGrid(PlaceholderContext ctx) throws PlaceholderException } private static long countItems(String id, IGrid grid) { - var key = ResourceLocation.parse(id); - if (key == null) return 0; - if (!BuiltInRegistries.ITEM.containsKey(key)) return 0; - Item item = BuiltInRegistries.ITEM.get(key); + Item item = BuiltInRegistries.ITEM.get(ResourceLocation.parse(id)); + if (item == null) return 0; GenericStack stack = GenericStack.fromItemStack(new ItemStack(item, 1)); if (stack == null) return 0; return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); @@ -87,9 +88,8 @@ private static long countFluids(@Nullable String id, IGrid grid) { } return count; } - var fluidId = ResourceLocation.parse(id); - if (!BuiltInRegistries.FLUID.containsKey(fluidId)) return 0; - Fluid fluid = BuiltInRegistries.FLUID.get(fluidId); + Fluid fluid = BuiltInRegistries.FLUID.get(ResourceLocation.parse(id)); + if (fluid == null) return 0; GenericStack stack = GenericStack.fromFluidStack(new FluidStack(fluid, 1)); if (stack == null) return 0; return grid.getStorageService().getInventory().getAvailableStacks().get(stack.what()); @@ -102,135 +102,152 @@ private static Vector3i getSpatialSize(IGrid grid) { return new Vector3i(tmp.getX(), tmp.getY(), tmp.getZ()).absolute(); } - public static void init() { - PlaceholderHandler.addPlaceholder(new Placeholder("ae2itemCount") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, grid)); - if (args.size() == 1) - return MultiLineComponent.literal(countItems(GTStringUtils.componentsToString(args.get(0)), grid)); - if (GTStringUtils.equals(args.get(0), "filter")) { - int slot = PlaceholderUtils.toInt(args.get(1)); - try { - PlaceholderUtils.checkRange("slot index", 1, 8, slot); - if (ctx.itemStackHandler() == null) throw new NotSupportedException(); - return MultiLineComponent.literal(countItems( - ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), grid)); - } catch (NullPointerException e) { - throw new MissingItemException("filter", slot); + public static void init(IEventBus modBus) { + AE_PLACEHOLDERS.register(modBus); + } + + public static DeferredHolder AE2_ITEM_COUNT = AE_PLACEHOLDERS.register("ae2_item_count", + () -> new Placeholder("ae2itemCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countItems((ItemFilter) null, grid)); + if (args.size() == 1) + return MultiLineComponent + .literal(countItems(GTStringUtils.componentsToString(args.get(0)), grid)); + if (GTStringUtils.equals(args.get(0), "filter")) { + int slot = PlaceholderUtils.toInt(args.get(1)); + try { + PlaceholderUtils.checkRange("slot index", 1, 8, slot); + if (ctx.itemStackHandler() == null) throw new NotSupportedException(); + return MultiLineComponent.literal(countItems( + ItemFilter.loadFilter(ctx.itemStackHandler().getStackInSlot(slot - 1)), grid)); + } catch (NullPointerException e) { + throw new MissingItemException("filter", slot); + } } + throw new InvalidArgsException(); } - throw new InvalidArgsException(); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2fluidCount") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, grid)); - if (args.size() == 1) - return MultiLineComponent.literal(countFluids(GTStringUtils.componentsToString(args.get(0)), grid)); - throw new WrongNumberOfArgsException(1, args.size()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2power") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - PlaceholderUtils.checkArgs(args, 0); - return MultiLineComponent.literal(grid.getEnergyService().getStoredPower()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2maxPower") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - PlaceholderUtils.checkArgs(args, 0); - return MultiLineComponent.literal(grid.getEnergyService().getMaxStoredPower()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2powerUsage") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - PlaceholderUtils.checkArgs(args, 0); - return MultiLineComponent.literal(grid.getEnergyService().getAvgPowerUsage()); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2spatial") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - PlaceholderUtils.checkArgs(args, 1); - if (GTStringUtils.equals(args.get(0), "power")) { - return MultiLineComponent.literal(grid.getSpatialService().requiredPower()); - } else if (GTStringUtils.equals(args.get(0), "efficiency")) { - return MultiLineComponent.literal(grid.getSpatialService().currentEfficiency()); - } else if (GTStringUtils.equals(args.get(0), "sizeX")) { - return MultiLineComponent.literal(getSpatialSize(grid).x); - } else if (GTStringUtils.equals(args.get(0), "sizeY")) { - return MultiLineComponent.literal(getSpatialSize(grid).y); - } else if (GTStringUtils.equals(args.get(0), "sizeZ")) { - return MultiLineComponent.literal(getSpatialSize(grid).z); - } else throw new InvalidArgsException(); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2crafting") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - IGrid grid = getGrid(ctx); - PlaceholderUtils.checkArgs(args, 1, true); - ICraftingService crafting = grid.getCraftingService(); - if (GTStringUtils.equals(args.get(0), "get")) { - if (GTStringUtils.equals(args.get(1), "amount")) - return MultiLineComponent.literal(crafting.getCpus().size()); - int index = PlaceholderUtils.toInt(args.get(1)); - int i = 0; - for (ICraftingCPU cpu : crafting.getCpus()) { - if (index - 1 == i) { - CraftingJobStatus job = cpu.getJobStatus(); - if (GTStringUtils.equals(args.get(2), "storage")) - return MultiLineComponent.literal(cpu.getAvailableStorage()); - else if (GTStringUtils.equals(args.get(2), "threads")) - return MultiLineComponent.literal(cpu.getCoProcessors()); - else if (GTStringUtils.equals(args.get(2), "name")) - return MultiLineComponent - .of(cpu.getName() == null ? Component.literal("Crafting CPU " + i) : - cpu.getName().copy()); - else if (GTStringUtils.equals(args.get(2), "selectionMode")) - return MultiLineComponent.literal(cpu.getSelectionMode().name()); - else if (job == null) return MultiLineComponent.literal(0); - else if (GTStringUtils.equals(args.get(2), "amount")) - return MultiLineComponent.literal(job.crafting().amount()); - else if (GTStringUtils.equals(args.get(2), "item")) - return MultiLineComponent.of(job.crafting().what().getDisplayName().copy()); - else if (GTStringUtils.equals(args.get(2), "progress")) - return MultiLineComponent.literal(job.progress()); - else if (GTStringUtils.equals(args.get(2), "time")) - return MultiLineComponent.literal(job.elapsedTimeNanos()); - else throw new InvalidArgsException(); + }); + + public static DeferredHolder AE2_FLUID_COUNT = AE_PLACEHOLDERS.register("ae2_fluid_count", + () -> new Placeholder("ae2fluidCount") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + if (args.isEmpty()) return MultiLineComponent.literal(countFluids(null, grid)); + if (args.size() == 1) + return MultiLineComponent + .literal(countFluids(GTStringUtils.componentsToString(args.get(0)), grid)); + throw new WrongNumberOfArgsException(1, args.size()); + } + }); + + public static DeferredHolder AE2_POWER = AE_PLACEHOLDERS.register("ae2power", + () -> new Placeholder("ae2power") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getStoredPower()); + } + }); + + public static DeferredHolder AE2_MAX_POWER = AE_PLACEHOLDERS.register("ae2_max_power", + () -> new Placeholder("ae2maxPower") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getMaxStoredPower()); + } + }); + + public static DeferredHolder AE2_POWER_USAGE = AE_PLACEHOLDERS.register("ae2_power_usage", + () -> new Placeholder("ae2powerUsage") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 0); + return MultiLineComponent.literal(grid.getEnergyService().getAvgPowerUsage()); + } + }); + + public static DeferredHolder AE2_SPATIAL = AE_PLACEHOLDERS.register("ae2spatial", + () -> new Placeholder("ae2spatial") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1); + if (GTStringUtils.equals(args.get(0), "power")) { + return MultiLineComponent.literal(grid.getSpatialService().requiredPower()); + } else if (GTStringUtils.equals(args.get(0), "efficiency")) { + return MultiLineComponent.literal(grid.getSpatialService().currentEfficiency()); + } else if (GTStringUtils.equals(args.get(0), "sizeX")) { + return MultiLineComponent.literal(getSpatialSize(grid).x); + } else if (GTStringUtils.equals(args.get(0), "sizeY")) { + return MultiLineComponent.literal(getSpatialSize(grid).y); + } else if (GTStringUtils.equals(args.get(0), "sizeZ")) { + return MultiLineComponent.literal(getSpatialSize(grid).z); + } else throw new InvalidArgsException(); + } + }); + + public static DeferredHolder AE2_CRAFTING = AE_PLACEHOLDERS.register("ae2crafting", + () -> new Placeholder("ae2crafting") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + IGrid grid = getGrid(ctx); + PlaceholderUtils.checkArgs(args, 1, true); + ICraftingService crafting = grid.getCraftingService(); + if (GTStringUtils.equals(args.get(0), "get")) { + if (GTStringUtils.equals(args.get(1), "amount")) + return MultiLineComponent.literal(crafting.getCpus().size()); + int index = PlaceholderUtils.toInt(args.get(1)); + int i = 0; + for (ICraftingCPU cpu : crafting.getCpus()) { + if (index - 1 == i) { + CraftingJobStatus job = cpu.getJobStatus(); + if (GTStringUtils.equals(args.get(2), "storage")) + return MultiLineComponent.literal(cpu.getAvailableStorage()); + else if (GTStringUtils.equals(args.get(2), "threads")) + return MultiLineComponent.literal(cpu.getCoProcessors()); + else if (GTStringUtils.equals(args.get(2), "name")) + return MultiLineComponent + .of(cpu.getName() == null ? Component.literal("Crafting CPU " + i) : + cpu.getName().copy()); + else if (GTStringUtils.equals(args.get(2), "selectionMode")) + return MultiLineComponent.literal(cpu.getSelectionMode().name()); + else if (job == null) return MultiLineComponent.literal(0); + else if (GTStringUtils.equals(args.get(2), "amount")) + return MultiLineComponent.literal(job.crafting().amount()); + else if (GTStringUtils.equals(args.get(2), "item")) + return MultiLineComponent.of(job.crafting().what().getDisplayName().copy()); + else if (GTStringUtils.equals(args.get(2), "progress")) + return MultiLineComponent.literal(job.progress()); + else if (GTStringUtils.equals(args.get(2), "time")) + return MultiLineComponent.literal(job.elapsedTimeNanos()); + else throw new InvalidArgsException(); + } + i++; } - i++; - } - throw new OutOfRangeException("cpu number", 1, crafting.getCpus().size(), index); - } // else if (GTStringUtils.equals(args.get(0), "request")) {} gonna implement that someday :) - throw new InvalidArgsException(); - } - }); - } + throw new OutOfRangeException("cpu number", 1, crafting.getCpus().size(), index); + } // else if (GTStringUtils.equals(args.get(0), "request")) {} gonna implement that someday :) + throw new InvalidArgsException(); + } + }); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java index 05bdc33d6ef..cd95dcdff38 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -4,8 +4,12 @@ import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.NotSupportedException; import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.integration.cctweaked.peripherals.*; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; + import dan200.computercraft.api.ComputerCraftAPI; import dan200.computercraft.api.ForgeComputerCraftAPI; @@ -27,8 +31,10 @@ public static void init() { ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_COVERABLE); } - public static void initPlaceholders() { - PlaceholderHandler.addPlaceholder(new Placeholder("bufferText") { + public static void initPlaceholders(IEventBus modBus) { + var register = DeferredRegister.create(GTRegistries.Keys.PLACEHOLDER, "gtceu"); + register.register(modBus); + register.register("buffer_text", () -> new Placeholder("bufferText") { @Override public MultiLineComponent apply(PlaceholderContext ctx, diff --git a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java index 5cb90e50d18..f03db0c0aef 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/create/GTCreateIntegration.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.utils.GTStringUtils; import net.createmod.catnip.data.Couple; @@ -9,6 +10,8 @@ import net.minecraft.core.Direction; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.neoforge.registries.DeferredRegister; import com.simibubi.create.AllItems; import com.simibubi.create.Create; @@ -20,6 +23,7 @@ import com.simibubi.create.content.redstone.link.RedstoneLinkNetworkHandler; import com.simibubi.create.content.redstone.link.controller.LinkedControllerItem; import com.tterrag.registrate.AbstractRegistrate; +import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.List; @@ -28,23 +32,17 @@ public class GTCreateIntegration { + private static final DeferredRegister CREATE_PLACEHOLDERS = DeferredRegister + .create(GTRegistries.Keys.PLACEHOLDER, "gtceu"); + private GTCreateIntegration() {} - public static void init() { + public static void init(IEventBus modBus) { + CREATE_PLACEHOLDERS.register(modBus); GTCreateDisplaySources.init(); GTCreateDisplayTargets.init(); - } - - public static void initPlaceholders() { - PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - return processRedstonePlaceholder(ctx, args); - } - }); - PlaceholderHandler.addPlaceholder(new Placeholder("displayTarget") { + CREATE_PLACEHOLDERS.register("display_target", () -> new Placeholder("displayTarget") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -58,6 +56,18 @@ public MultiLineComponent apply(PlaceholderContext ctx, }); } + @ApiStatus.Internal + public static Placeholder getCreateRedstonePlaceholder() { + return new Placeholder("redstone") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + return processRedstonePlaceholder(ctx, args); + } + }; + } + private static int getRedstoneLinkPower(PlaceholderContext ctx, Couple freq) throws PlaceholderException { if (ctx.pos() == null) throw new NoTargetException(); 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 065f87bea77..6476902fe51 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -84,8 +84,9 @@ import com.gregtechceu.gtceu.integration.kjs.builders.block.CoilBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.machine.*; import com.gregtechceu.gtceu.integration.kjs.builders.material.MaterialBuilderWrapper; -import com.gregtechceu.gtceu.integration.kjs.builders.prefix.OreTagPrefixBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.prefix.TagPrefixBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.material.MaterialIconSetBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.material.OreTagPrefixBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.material.TagPrefixBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockFluidBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockOreBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.DimensionMarkerBuilder; @@ -125,13 +126,14 @@ public class GregTechKubeJSPlugin implements KubeJSPlugin { @Override public void registerBuilderTypes(BuilderTypeRegistry registry) { registry.addDefault(GTRegistries.Keys.ELEMENT, ElementBuilder.class, ElementBuilder::new); - registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, - DimensionMarkerBuilder::new); + registry.addDefault(GTRegistries.Keys.MATERIAL_ICON_SET, MaterialIconSetBuilder.class, MaterialIconSetBuilder::new); registry.addDefault(GTRegistries.Keys.MATERIAL, MaterialBuilderWrapper.class, MaterialBuilderWrapper::new); registry.of(GTRegistries.Keys.TAG_PREFIX, reg -> { reg.addDefault(TagPrefixBuilder.class, TagPrefixBuilder::new); reg.add(GTCEu.id("ore"), OreTagPrefixBuilder.class, OreTagPrefixBuilder::new); }); + registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, + DimensionMarkerBuilder::new); registry.addDefault(GTRegistries.Keys.RECIPE_TYPE, GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, @@ -162,6 +164,8 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { reg.add(GTCEu.id("coil"), CoilBlockBuilder.class, CoilBlockBuilder::new); }); + registry.addDefault(GTRegistries.Keys.WORLD_GEN_LAYER, WorldGenLayerBuilder.class, WorldGenLayerBuilder::new); + registry.addDefault(GTRegistries.Keys.ORE_VEIN, OreVeinDefinitionBuilder.class, OreVeinDefinitionBuilder::new); registry.addDefault(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidBuilder.class, BedrockFluidBuilder::new); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/ElementBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/ElementBuilder.java index 99d81de6f71..9296bce3549 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/ElementBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/ElementBuilder.java @@ -35,7 +35,6 @@ public ElementBuilder(ResourceLocation id) { @Override public Element createObject() { - return GTElements.createAndRegister(id, protons, neutrons, halfLifeSeconds, decayTo, name, symbol, - isIsotope); + return new Element(protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeCategoryBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeCategoryBuilder.java index 9b62c8441a2..16ca3fd9a12 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeCategoryBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeCategoryBuilder.java @@ -58,8 +58,6 @@ public void generateLang(LangKubeEvent lang) { @Override public GTRecipeCategory createObject() { - return GTRecipeCategories.register(id, recipeType) - .setIcon(icon) - .setXEIVisible(isXEIVisible); + return new GTRecipeCategory(id, recipeType).setIcon(icon).setXEIVisible(isXEIVisible); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java index 8b309f521a1..86710ddaf07 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java @@ -111,7 +111,7 @@ public GTRecipeTypeBuilder setIconSupplier(Supplier iconSupplier) { @Override public GTRecipeType createObject() { - var type = GTRecipeTypes.register(this.id, this.category); + var type = new GTRecipeType(id, category); type.maxInputs.putAll(maxInputs); type.maxOutputs.putAll(maxOutputs); if (this.layout != null) { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java index 065f0f4e886..a959273d689 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/WorldGenLayerBuilder.java @@ -3,12 +3,12 @@ import com.gregtechceu.gtceu.api.data.worldgen.IWorldGenLayer; import com.gregtechceu.gtceu.api.data.worldgen.SimpleWorldGenLayer; -import dev.latvian.mods.kubejs.registry.BuilderBase; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; import dev.latvian.mods.kubejs.level.ruletest.AnyMatchRuleTest; +import dev.latvian.mods.kubejs.registry.BuilderBase; import it.unimi.dsi.fastutil.objects.ObjectArrayList; import lombok.experimental.Accessors; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java index c9107ed135f..2f36a20b633 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java @@ -12,6 +12,7 @@ import com.gregtechceu.gtceu.api.fluids.FluidBuilder; import com.gregtechceu.gtceu.api.fluids.FluidState; import com.gregtechceu.gtceu.api.fluids.store.FluidStorageKey; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.integration.kjs.helpers.MaterialStackWrapper; import net.minecraft.resources.ResourceLocation; @@ -30,7 +31,7 @@ public class MaterialBuilderWrapper extends BuilderBase { public MaterialBuilderWrapper(ResourceLocation id) { super(id); - this.internal = new Material.Builder(this.id); + this.internal = new Material.Builder(GTRegistrate.createIgnoringListenerErrors(id.getNamespace()), id); this.dummyBuilder = true; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialIconSetBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialIconSetBuilder.java new file mode 100644 index 00000000000..593db9d528d --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialIconSetBuilder.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.integration.kjs.builders.material; + +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; +import dev.latvian.mods.kubejs.registry.BuilderBase; +import net.minecraft.resources.ResourceLocation; + +public class MaterialIconSetBuilder extends BuilderBase { + + private transient MaterialIconSet parent; + + public MaterialIconSetBuilder(ResourceLocation id) { + super(id); + parent = MaterialIconSet.DULL; + } + + public MaterialIconSetBuilder parent(MaterialIconSet parent) { + this.parent = parent; + return this; + } + + @Override + public MaterialIconSet createObject() { + return new MaterialIconSet(this.id, parent); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/OreTagPrefixBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/OreTagPrefixBuilder.java similarity index 75% rename from src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/OreTagPrefixBuilder.java rename to src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/OreTagPrefixBuilder.java index 73c4f1fb231..299851f20e1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/OreTagPrefixBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/OreTagPrefixBuilder.java @@ -1,10 +1,9 @@ -package com.gregtechceu.gtceu.integration.kjs.builders.prefix; +package com.gregtechceu.gtceu.integration.kjs.builders.material; import com.gregtechceu.gtceu.api.block.OreBlock; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.common.data.GTBlocks; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -16,7 +15,6 @@ import java.util.function.Supplier; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.Conditions.hasOreProperty; -import static com.gregtechceu.gtceu.integration.kjs.Validator.*; @Accessors(fluent = true, chain = true) public class OreTagPrefixBuilder extends TagPrefixBuilder { @@ -41,7 +39,7 @@ public OreTagPrefixBuilder(ResourceLocation id) { } @Override - public TagPrefix create(String id) { + public TagPrefix create(ResourceLocation id) { return new TagPrefix(id) .defaultTagPath("ores/%s") .prefixOnlyTagPath("ores_in_ground/%s") @@ -54,14 +52,6 @@ public TagPrefix create(String id) { @Override public TagPrefix createObject() { - validate(this.id, - errorIfNull(stateSupplier, "stateSupplier"), - onlySetDefault(templateProperties, () -> { - templateProperties = () -> GTBlocks.copy(stateSupplier.get().getBlock().properties(), - BlockBehaviour.Properties.of()); - }), - errorIfNull(baseModelLocation, "baseModelLocation")); - return base.registerOre(stateSupplier, materialSupplier, templateProperties, baseModelLocation, doubleDrops, isSand, shouldDropAsItem); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/TagPrefixBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/TagPrefixBuilder.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/TagPrefixBuilder.java rename to src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/TagPrefixBuilder.java index a51af258ec0..a190ac4f13b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/TagPrefixBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/TagPrefixBuilder.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.kjs.builders.prefix; +package com.gregtechceu.gtceu.integration.kjs.builders.material; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; @@ -33,10 +33,10 @@ public class TagPrefixBuilder extends BuilderBase { public TagPrefixBuilder(ResourceLocation id) { super(id); - this.base = create(id.getPath()); + this.base = create(id); } - public TagPrefix create(String id) { + public TagPrefix create(ResourceLocation id) { return new TagPrefix(id); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/package-info.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/package-info.java deleted file mode 100644 index 27cfc3d130f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/prefix/package-info.java +++ /dev/null @@ -1,9 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@FieldsAreNonnullByDefault -package com.gregtechceu.gtceu.integration.kjs.builders.prefix; - -import net.minecraft.FieldsAreNonnullByDefault; -import net.minecraft.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/DimensionMarkerBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/DimensionMarkerBuilder.java index 8b7810ce073..47094f19279 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/DimensionMarkerBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/DimensionMarkerBuilder.java @@ -3,7 +3,9 @@ import com.gregtechceu.gtceu.api.data.DimensionMarker; import com.gregtechceu.gtceu.integration.kjs.Validator; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -33,6 +35,6 @@ public DimensionMarker createObject() { id, Validator.errorIfNull(iconSupplier, "icon"), Validator.errorIfOutOfRange(tier, "tier", 0, DimensionMarker.MAX_TIER)); - return new DimensionMarker(tier, iconSupplier, overrideName); + return new DimensionMarker(ResourceKey.create(Registries.DIMENSION, id), tier, iconSupplier, overrideName); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/MaterialIconInfoEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/MaterialIconInfoEventJS.java index bd27a47a5eb..fb997a6f51e 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/MaterialIconInfoEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/MaterialIconInfoEventJS.java @@ -1,8 +1,10 @@ package com.gregtechceu.gtceu.integration.kjs.events; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.integration.kjs.helpers.GTResourceLocation; import dev.latvian.mods.kubejs.event.KubeStartupEvent; import dev.latvian.mods.kubejs.typings.Info; @@ -10,13 +12,13 @@ public class MaterialIconInfoEventJS implements KubeStartupEvent { @Info("Create a new material icon set with the default parent.") - public MaterialIconSet createIconSet(String name) { - return new MaterialIconSet(name); + public MaterialIconSet createIconSet(GTResourceLocation name) { + return new MaterialIconSet(name.wrapped()); } @Info("Create a new material icon set with a specific parent.") - public MaterialIconSet createIconSet(String name, MaterialIconSet parent) { - return new MaterialIconSet(name, parent); + public MaterialIconSet createIconSet(GTResourceLocation name, MaterialIconSet parent) { + return new MaterialIconSet(name.wrapped(), parent); } @Info("Create a new material icon type.") diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java index fab360d76df..636dbc008aa 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java @@ -175,9 +175,10 @@ public static List getRawMaterialList(BedrockOreDefinition bedrockOre public static DimensionMarker[] getDimensionMarkers(Set> dimensionFilter) { return dimensionFilter.stream() .map(ResourceKey::location) - .map(loc -> GTRegistries.DIMENSION_MARKERS.getOptional(loc).orElse( - new DimensionMarker(DimensionMarker.MAX_TIER, () -> Blocks.BARRIER, - Component.literal(loc.toString())))) + .map(loc -> GTRegistries.DIMENSION_MARKERS.stream().filter(d -> d.getDimension().location().equals(loc)) + .findFirst().orElse( + new DimensionMarker(Level.OVERWORLD, DimensionMarker.MAX_TIER, () -> Blocks.BARRIER, + Component.literal(loc.toString())))) .sorted(Comparator.comparingInt(DimensionMarker::getTier)) .toArray(DimensionMarker[]::new); } diff --git a/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java b/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java index 04aee40ef78..a07997cb0cf 100644 --- a/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java +++ b/src/test/java/com/gregtechceu/gtceu/api/recipe/GTRecipeSerializerTest.java @@ -1,7 +1,6 @@ package com.gregtechceu.gtceu.api.recipe; import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.recipe.condition.AdjacentBlockCondition; import com.gregtechceu.gtceu.common.recipe.condition.AdjacentFluidCondition; import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; @@ -124,7 +123,8 @@ public static void testSerializingFluidCondition(GameTestHelper helper) { "AdjacentFluidCondition did not deserialize properly"); JsonObject jsonConfig = condition.serialize(helper.getLevel().registryAccess()); - AdjacentFluidCondition newCondition = (AdjacentFluidCondition) AdjacentFluidCondition.deserialize(helper.getLevel().registryAccess(), jsonConfig); + AdjacentFluidCondition newCondition = (AdjacentFluidCondition) AdjacentFluidCondition + .deserialize(helper.getLevel().registryAccess(), jsonConfig); helper.assertTrue(equalHolderSetLists(newCondition.getOrInitFluids(null), fluidSetIn), "AdjacentFluidCondition did not deserialize properly"); @@ -150,7 +150,8 @@ public static void testSerializingBlockCondition(GameTestHelper helper) { "AdjacentBlockCondition did not deserialize properly"); JsonObject jsonConfig = condition.serialize(helper.getLevel().registryAccess()); - AdjacentBlockCondition newCondition = (AdjacentBlockCondition) AdjacentBlockCondition.deserialize(helper.getLevel().registryAccess(), jsonConfig); + AdjacentBlockCondition newCondition = (AdjacentBlockCondition) AdjacentBlockCondition + .deserialize(helper.getLevel().registryAccess(), jsonConfig); helper.assertTrue(equalHolderSetLists(newCondition.getOrInitBlocks(null), blockSetIn), "AdjacentBlockCondition did not deserialize properly"); diff --git a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java index 7692debd3d1..edb953e0fa3 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -23,6 +23,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.MappedRegistry; +import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.gametest.framework.GameTestAssertPosException; import net.minecraft.gametest.framework.GameTestHelper; @@ -244,7 +245,7 @@ public static GTRecipeType createRecipeType(String name, int maxInputs, int maxO .setEUIO(IO.IN) .setMaxIOSize(maxInputs, maxOutputs, maxFluidInputs, maxFluidOutputs); - GTRegistries.register(BuiltInRegistries.RECIPE_TYPE, type.registryName, type); + Registry.register(BuiltInRegistries.RECIPE_TYPE, type.registryName, type); GTRegistries.RECIPE_CATEGORIES.freeze(); BuiltInRegistries.RECIPE_TYPE.freeze(); return type; @@ -277,7 +278,7 @@ public static CoverBehavior placeCover(GameTestHelper helper, MetaMachine machin for (IItemComponent component : componentItem.getComponents()) { if (component instanceof CoverPlaceBehavior coverPlaceBehavior) { helper.assertTrue(coverDefinition == null, "stack has multiple coverPlaceBehaviours"); - coverDefinition = coverPlaceBehavior.coverDefinition(); + coverDefinition = coverPlaceBehavior.coverDefinition().value(); } } } From 7cf3cd653d1659299a83824c402fdd9b95f0958b Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 17:23:52 +1000 Subject: [PATCH 11/33] fix material registration not working --- .../gregtechceu/gtceu/api/data/chemical/material/Material.java | 2 +- src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java | 1 - 2 files changed, 1 insertion(+), 2 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 76854757d55..cf6d6d5fb34 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 @@ -147,7 +147,7 @@ protected Material(ResourceLocation resourceLocation) { } protected void registerMaterial(GTRegistrate registrate) { - registrate.generic(GTRegistries.Keys.MATERIAL, () -> this).register(); + registrate.generic(this.getName(), GTRegistries.Keys.MATERIAL, () -> this).register(); } public String getName() { diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index b2fefb9f081..84a829414cc 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -173,7 +173,6 @@ public static void init(final IEventBus modBus) { GTCreativeModeTabs.init(); GTBlocks.init(); - GTFluids.init(); GTDimensionMarkers.init(modBus); GTRecipeCapabilities.init(modBus); From 43695fa3ebc54e8ad1d426043b959fe97b5afe0a Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 18:01:42 +1000 Subject: [PATCH 12/33] fix some startup bugs --- .../data/gtceu/gtceu/ore_vein/naquadah.json | 2 +- .../api/data/worldgen/WorldGenLayers.java | 28 ++++++------------- .../worldgen/modifier/BiomePlacement.java | 6 ---- .../gtceu/api/recipe/GTRecipe.java | 2 +- .../gtceu/api/recipe/GTRecipeType.java | 5 ++-- .../api/registry/registrate/GTRegistrate.java | 6 +++- .../gregtechceu/gtceu/common/CommonProxy.java | 3 +- .../gtceu/common/data/GTToolBehaviors.java | 4 ++- 8 files changed, 24 insertions(+), 32 deletions(-) diff --git a/src/generated/resources/data/gtceu/gtceu/ore_vein/naquadah.json b/src/generated/resources/data/gtceu/gtceu/ore_vein/naquadah.json index ca251c42251..dc137fb7792 100644 --- a/src/generated/resources/data/gtceu/gtceu/ore_vein/naquadah.json +++ b/src/generated/resources/data/gtceu/gtceu/ore_vein/naquadah.json @@ -23,7 +23,7 @@ }, "min_y": 10, "spread": { - "targets": "gtceu:plutonium_239" + "targets": "gtceu:plutonium" }, "top": { "layers": 2, diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index b5112916c29..13da4e3b7d3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -1,42 +1,32 @@ package com.gregtechceu.gtceu.api.data.worldgen; -import com.gregtechceu.gtceu.GTCEu; -import com.gregtechceu.gtceu.api.registry.GTRegistries; - +import com.gregtechceu.gtceu.common.registry.GTRegistration; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; import java.util.Set; public class WorldGenLayers { - private static final DeferredRegister WORLD_GEN_LAYERS = DeferredRegister - .create(GTRegistries.Keys.WORLD_GEN_LAYER, GTCEu.MOD_ID); public static void init(IEventBus modBus) { - WORLD_GEN_LAYERS.register(modBus); - WORLD_GEN_LAYERS.register("stone", () -> STONE); - WORLD_GEN_LAYERS.register("deepslate", () -> DEEPSLATE); - WORLD_GEN_LAYERS.register("netherrack", () -> NETHERRACK); - WORLD_GEN_LAYERS.register("endstone", () -> ENDSTONE); } - public static final SimpleWorldGenLayer STONE = new SimpleWorldGenLayer( - GTCEu.id("stone"), () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), + public static final SimpleWorldGenLayer STONE = GTRegistration.REGISTRATE.simpleWorldGenLayer( + "stone", () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), Set.of(Level.OVERWORLD)); - public static final SimpleWorldGenLayer DEEPSLATE = new SimpleWorldGenLayer( - GTCEu.id("deepslate"), () -> new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES), + public static final SimpleWorldGenLayer DEEPSLATE = GTRegistration.REGISTRATE.simpleWorldGenLayer( + "deepslate", () -> new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES), Set.of(Level.OVERWORLD)); - public static final SimpleWorldGenLayer NETHERRACK = new SimpleWorldGenLayer( - GTCEu.id("netherrack"), () -> new TagMatchTest(BlockTags.NETHER_CARVER_REPLACEABLES), + public static final SimpleWorldGenLayer NETHERRACK = GTRegistration.REGISTRATE.simpleWorldGenLayer( + "netherrack", () -> new TagMatchTest(BlockTags.NETHER_CARVER_REPLACEABLES), Set.of(Level.NETHER)); - public static final SimpleWorldGenLayer ENDSTONE = new SimpleWorldGenLayer( - GTCEu.id("endstone"), () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, + public static final SimpleWorldGenLayer ENDSTONE = GTRegistration.REGISTRATE.simpleWorldGenLayer( + "endstone", () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, Set.of(Level.END)); } diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java index b4871552799..849532521cf 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/modifier/BiomePlacement.java @@ -43,12 +43,6 @@ public Stream getPositions(PlacementContext context, RandomSource rand return positions; } - public static void init(IEventBus modBus) { - var register = DeferredRegister.create(Registries.PLACEMENT_MODIFIER_TYPE, GTCEu.MOD_ID); - register.register(modBus); - register.register("biome_placement", () -> BIOME_PLACEMENT); - } - @Override public PlacementModifierType type() { return BIOME_PLACEMENT; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index 71d0da2b039..4355b1bcf09 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -161,7 +161,7 @@ public GTRecipe copy(ContentModifier modifier, boolean modifyDuration) { @Override public @NotNull RecipeSerializer getSerializer() { - return recipeType.getSerializer(); + return recipeType.getSerializer().value(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 7fefd514adb..85697f3025f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; +import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; @@ -40,7 +41,7 @@ public class GTRecipeType implements RecipeType { @Getter @Setter(onMethod_ = { @ApiStatus.Internal }) - public GTRecipeSerializer serializer; + public Holder> serializer; @Getter public final ResourceLocation registryName; @@ -101,7 +102,7 @@ public class GTRecipeType implements RecipeType { public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { var registrate = GTRegistrate.createIgnoringListenerErrors(registryName.getNamespace()); registrate.generic(registryName.getPath(), Registries.RECIPE_TYPE, () -> this).build(); - registrate.generic(registryName.getPath(), Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).build(); + serializer = registrate.generic(registryName.getPath(), Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).register(); this.registryName = registryName; this.group = group; 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 5465b5f1e81..219ca38968d 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 @@ -18,6 +18,7 @@ import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.recipe.GTRecipeSerializer; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.registry.GTRegistries; @@ -221,6 +222,9 @@ protected

NoConfigBuilder createCreativ public GTRecipeType recipeType(String name, String group, RecipeType... proxyRecipes) { var recipeType = new GTRecipeType(GTCEu.id(name), group, proxyRecipes); this.generic(name, GTRegistries.Keys.RECIPE_TYPE, () -> recipeType).build(); + this.generic(name, Registries.RECIPE_TYPE, () -> recipeType).build(); + recipeType.setSerializer(this.generic(name, Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).register()); + return recipeType; } @@ -240,7 +244,7 @@ public TagPrefix tagPrefix(String name) { public TagPrefix tagPrefix(String name, boolean invertedName) { var tagPrefix = new TagPrefix(makeResourceLocation(name), invertedName); - this.generic(name.toLowerCase(), GTRegistries.Keys.TAG_PREFIX, () -> tagPrefix).register(); + this.generic(name, GTRegistries.Keys.TAG_PREFIX, () -> tagPrefix).register(); return tagPrefix; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 84a829414cc..46de6243f5b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -173,6 +173,7 @@ public static void init(final IEventBus modBus) { GTCreativeModeTabs.init(); GTBlocks.init(); + GTFluids.init(); GTDimensionMarkers.init(modBus); GTRecipeCapabilities.init(modBus); @@ -273,7 +274,7 @@ public static void registerMaterialContent(RegisterEvent event) { GTMaterialItems.generateArmors(); } else if (event.getRegistryKey() == Registries.FLUID) { - GTFluids.init(); + GTFluids.registerMaterialFluids(); } else if (event.getRegistryKey() == Registries.BLOCK_ENTITY_TYPE) { GTBlockEntities.init(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java index d454b55d2f5..1a4e26787a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java @@ -52,5 +52,7 @@ private GTToolBehaviors() {} public static final DeferredHolder, ToolBehaviorType> PROSPECTING = TOOL_BEHAVIOR_TYPE.register( "prospecting", () -> new ToolBehaviorType<>(ProspectingBehavior.CODEC, ProspectingBehavior.STREAM_CODEC)); // spotless:on - public static void init(IEventBus modBus) {} + public static void init(IEventBus modBus) { + TOOL_BEHAVIOR_TYPE.register(modBus); + } } From 1c10b72fbd5a525a2e159e74dc73cb9ed0d33e3c Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 18:07:46 +1000 Subject: [PATCH 13/33] get tests to pass --- .../gregtechceu/gtceu/common/data/GTOreVeins.java | 12 ++++++------ .../gtceu/data/loader/PostRegistryListener.java | 15 ++++++++------- .../gtceu/integration/map/cache/WorldCache.java | 5 +++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java index db7803fc5ab..4fdb2a1dc11 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTOreVeins.java @@ -6,9 +6,7 @@ import com.gregtechceu.gtceu.api.data.worldgen.generator.veins.NoopVeinGenerator; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import net.minecraft.core.HolderGetter; -import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; +import net.minecraft.core.*; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; @@ -109,15 +107,17 @@ public class GTOreVeins { public static final ResourceKey REDSTONE_VEIN = create(GTCEu.id("redstone")); public static final ResourceKey SAPPHIRE_VEIN = create(GTCEu.id("sapphire")); - public static void updateLargestVeinSize(Registry registry) { + public static void updateLargestVeinSize(HolderLookup.RegistryLookup holderLookup) { // map to average of min & max values. - GTOreVeins.largestVeinSize = registry.stream() + GTOreVeins.largestVeinSize = holderLookup.listElements() + .map(Holder::value) .map(GTOreDefinition::clusterSize) .mapToInt(intProvider -> (intProvider.getMinValue() + intProvider.getMaxValue()) / 2) .max() .orElse(0); - GTOreVeins.largestIndicatorOffset = registry.stream() + GTOreVeins.largestIndicatorOffset = holderLookup.listElements() + .map(Holder::value) .flatMapToInt(definition -> definition.indicatorGenerators().stream() .mapToInt(indicatorGenerator -> indicatorGenerator.getSearchRadiusModifier( (int) Math.ceil(definition.clusterSize().getMinValue() / 2.0)))) diff --git a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java index 8f616e4d357..547c3440f7b 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java +++ b/src/main/java/com/gregtechceu/gtceu/data/loader/PostRegistryListener.java @@ -6,6 +6,7 @@ import com.gregtechceu.gtceu.common.data.GTOreVeins; import com.gregtechceu.gtceu.integration.map.cache.server.ServerCache; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; @@ -27,17 +28,17 @@ public class PostRegistryListener extends ContextAwareReloadListener implements private PostRegistryListener() {} protected void apply() { - var registry = RegistryAccess.fromRegistryOfRegistries(BuiltInRegistries.REGISTRY) - .registryOrThrow(GTRegistries.Keys.ORE_VEIN); + HolderLookup.RegistryLookup holderLookup = getRegistryLookup() + .lookupOrThrow(GTRegistries.Keys.ORE_VEIN); - buildVeinGenerators(registry); - GTOreVeins.updateLargestVeinSize(registry); - ServerCache.instance.oreVeinDefinitionsChanged(registry); + buildVeinGenerators(holderLookup); + GTOreVeins.updateLargestVeinSize(holderLookup); + ServerCache.instance.oreVeinDefinitionsChanged(holderLookup); WorldGeneratorUtils.invalidateOreVeinCache(); } - public static void buildVeinGenerators(Registry registry) { - var iterator = registry.holders().iterator(); + public static void buildVeinGenerators(HolderLookup.RegistryLookup holderLookup) { + var iterator = holderLookup.listElements().iterator(); while (iterator.hasNext()) { var definition = iterator.next(); var veinGen = definition.value().veinGenerator(); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/WorldCache.java b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/WorldCache.java index 6779580f1ef..3d6879262a1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/map/cache/WorldCache.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/map/cache/WorldCache.java @@ -5,6 +5,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; @@ -42,12 +43,12 @@ public void clear() { cache.clear(); } - public void oreVeinDefinitionsChanged(Registry registry) { + public void oreVeinDefinitionsChanged(HolderLookup.RegistryLookup holderLookup) { // Existing instances of vein definitions referenced by the cache are now invalid. Repopulate them here. for (DimensionCache levelCache : cache.values()) { for (GridCache gridCache : levelCache.getCache().values()) { gridCache.getVeins().removeIf(vein -> { - Optional> def = registry.getHolder(vein.definition().getKey()); + Optional> def = holderLookup.get(Objects.requireNonNull(vein.definition().getKey())); def.ifPresent(vein::definition); return def.isEmpty(); }); From 6329c4872a43e9f0f9f530c53f1b271d19b57141 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Fri, 17 Jul 2026 18:12:44 +1000 Subject: [PATCH 14/33] stop duplicating recipe types --- .../java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java | 3 --- .../gtceu/api/registry/registrate/GTRegistrate.java | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 85697f3025f..9a67bc7c0c5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -101,9 +101,6 @@ public class GTRecipeType implements RecipeType { public GTRecipeType(ResourceLocation registryName, String group, RecipeType... proxyRecipes) { var registrate = GTRegistrate.createIgnoringListenerErrors(registryName.getNamespace()); - registrate.generic(registryName.getPath(), Registries.RECIPE_TYPE, () -> this).build(); - serializer = registrate.generic(registryName.getPath(), Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).register(); - this.registryName = registryName; this.group = group; this.category = registrate.recipeCategory(registryName.getPath(), this); 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 219ca38968d..05fc8fde244 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 @@ -220,7 +220,7 @@ protected

NoConfigBuilder createCreativ // Recipe types public GTRecipeType recipeType(String name, String group, RecipeType... proxyRecipes) { - var recipeType = new GTRecipeType(GTCEu.id(name), group, proxyRecipes); + var recipeType = new GTRecipeType(makeResourceLocation(name), group, proxyRecipes); this.generic(name, GTRegistries.Keys.RECIPE_TYPE, () -> recipeType).build(); this.generic(name, Registries.RECIPE_TYPE, () -> recipeType).build(); recipeType.setSerializer(this.generic(name, Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).register()); From 716b90702d9776b011febb2a10dcb667dce55500 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 12:17:01 +0300 Subject: [PATCH 15/33] Add proper types/variable names to GTRegistryKubeEvent (thanks lat..) --- .../kjs/events/GTRegistryKubeEvent.java | 70 +++++++++---------- .../helpers/KubeGTRegistryEventHandler.java | 5 +- 2 files changed, 36 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryKubeEvent.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryKubeEvent.java index aa91f60442c..c6a9bca5341 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryKubeEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/GTRegistryKubeEvent.java @@ -25,6 +25,7 @@ * * @param The type of object to register */ +@SuppressWarnings({ "unchecked", "rawtypes" }) public class GTRegistryKubeEvent implements KubeStartupEvent, AdditionalObjectRegistry { private final ResourceKey> registryKey; @@ -38,68 +39,65 @@ public GTRegistryKubeEvent(ResourceKey> registryKey) { } public BuilderBase create(Context cx, GTResourceLocation id, GTResourceLocation type) { - var sourceLine = SourceLine.of(cx); - var t = builderInfo.namedType(type.wrapped()); + SourceLine sourceLine = SourceLine.of(cx); + BuilderType builderType = this.builderInfo.namedType(type.wrapped()); - if (t == null) { + if (builderType == null) { throw new KubeRuntimeException("Unknown type '" + type + "' for object '" + id + "'!").source(sourceLine); } - var b = t.factory().createBuilder(id.wrapped()); + BuilderBase builder = builderType.factory().createBuilder(id.wrapped()); - if (b == null) { + if (builder == null) { throw new KubeRuntimeException("Unknown type '" + type + "' for object '" + id + "'!").source(sourceLine); } else if (builderInfo.directCodec() != null) { throw new KubeRuntimeException("Type '" + type + "' for object '" + id + "' is a datapack registry type!") .source(sourceLine); } else { - b.sourceLine = sourceLine; - b.registryKey = registryKey; - addBuilder(b); - created.add(b); + builder.sourceLine = sourceLine; + addBuilder(builder, this.registryKey); + created.add(builder); } - return b; + return builder; } public BuilderBase create(Context cx, GTResourceLocation id) { - var sourceLine = SourceLine.of(cx); - var t = builderInfo.defaultType(); + SourceLine sourceLine = SourceLine.of(cx); + BuilderType builderType = this.builderInfo.defaultType(); - if (t == null) { + if (builderType == null) { throw new KubeRuntimeException( - "Registry '" + registryKey.location() + "' doesn't have a default type registered!") + "Registry '" + this.registryKey.location() + "' doesn't have a default type registered!") .source(sourceLine); } - var b = t.factory().createBuilder(id.wrapped()); + BuilderBase builder = builderType.factory().createBuilder(id.wrapped()); - if (b == null) { - throw new KubeRuntimeException("Unknown type '" + t.type() + "' for object '" + id + "'!") + if (builder == null) { + throw new KubeRuntimeException("Unknown type '" + builderType.type() + "' for object '" + id + "'!") .source(sourceLine); } else { - b.sourceLine = sourceLine; - b.registryKey = registryKey; - addBuilder(b); - created.add(b); + builder.sourceLine = sourceLine; + addBuilder(builder, this.registryKey); + created.add(builder); } - return b; + return builder; } public CustomBuilderObject createCustom(Context cx, GTResourceLocation id, Supplier object) { - var sourceLine = SourceLine.of(cx); + SourceLine sourceLine = SourceLine.of(cx); if (object == null) { throw new KubeRuntimeException("Tried to register a null object with id: " + id).source(sourceLine); } - var b = new CustomBuilderObject(id.wrapped(), object); - b.sourceLine = sourceLine; - b.registryKey = registryKey; - addBuilder(b); - created.add(b); - return b; + CustomBuilderObject builder = new CustomBuilderObject(id.wrapped(), object); + builder.sourceLine = sourceLine; + addBuilder(builder, this.registryKey); + created.add(builder); + return builder; } @Override @@ -111,30 +109,28 @@ public void afterPosted(EventResult result) { @Override public void add(ResourceKey> registry, BuilderBase builder) { - builder.registryKey = (ResourceKey) registry; - addBuilder(builder); + addBuilder(builder, registry); } - private void addBuilder(BuilderBase builder) { + private void addBuilder(BuilderBase builder, ResourceKey> registryKey) { if (builder == null) { throw new IllegalArgumentException( - "Can't add null builder in registry '" + builder.registryKey.location() + "'!"); + "Can't add null builder in registry '" + registryKey.location() + "'!"); } + builder.registryKey = (ResourceKey) registryKey; if (DevProperties.get().logRegistryEventObjects) { ConsoleJS.STARTUP.info("~ " + builder.registryKey.location() + " | " + builder.id); } - var objStorage = RegistryObjectStorage.of(builder.registryKey); + RegistryObjectStorage objStorage = RegistryObjectStorage.of(registryKey); if (objStorage.objects.containsKey(builder.id)) { throw new IllegalArgumentException( "Duplicate key '" + builder.id + "' in registry '" + builder.registryKey.location() + "'!"); } - objStorage.objects.put(builder.id, (BuilderBase) builder); + objStorage.objects.put(builder.id, builder); RegistryObjectStorage.ALL_BUILDERS.add(builder); - - // registry.deferredRegister.register() } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java index a776583efe8..63e931f74ce 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java @@ -15,6 +15,7 @@ import dev.latvian.mods.kubejs.DevProperties; import dev.latvian.mods.kubejs.KubeJS; +import dev.latvian.mods.kubejs.registry.BuilderBase; import dev.latvian.mods.kubejs.registry.RegistryObjectStorage; import dev.latvian.mods.kubejs.script.ConsoleJS; import dev.latvian.mods.kubejs.script.ScriptType; @@ -42,7 +43,7 @@ private static void handleRegistryEvent(ResourceKey> registryKey GTCEuStartupEvents.REGISTRY.post(ScriptType.STARTUP, (ResourceKey) registryKey, new GTRegistryKubeEvent<>(registryKey)); - var objStorage = RegistryObjectStorage.of(registryKey); + RegistryObjectStorage objStorage = RegistryObjectStorage.of(registryKey); if (objStorage.objects.isEmpty()) { if (DevProperties.get().logRegistryEventObjects) { @@ -58,7 +59,7 @@ private static void handleRegistryEvent(ResourceKey> registryKey int added = 0; - for (var builder : objStorage) { + for (BuilderBase builder : objStorage) { if (builder.dummyBuilder) { // don't actually register anything here, the wrapper builders register themselves with Registrate builder.createTransformedObject(); From 367cefc46fd529b4c31778ad05c17685a9b930a7 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 12:18:18 +0300 Subject: [PATCH 16/33] Disable spotless on the start of GregTechKubeJSPlugin so it can have longer lines (they look neater for registration IMO) --- .../integration/kjs/GregTechKubeJSPlugin.java | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) 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 6476902fe51..24c48526e5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -123,6 +123,7 @@ public class GregTechKubeJSPlugin implements KubeJSPlugin { + // spotless:off @Override public void registerBuilderTypes(BuilderTypeRegistry registry) { registry.addDefault(GTRegistries.Keys.ELEMENT, ElementBuilder.class, ElementBuilder::new); @@ -132,31 +133,21 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { reg.addDefault(TagPrefixBuilder.class, TagPrefixBuilder::new); reg.add(GTCEu.id("ore"), OreTagPrefixBuilder.class, OreTagPrefixBuilder::new); }); - registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, - DimensionMarkerBuilder::new); + registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, DimensionMarkerBuilder::new); registry.addDefault(GTRegistries.Keys.RECIPE_TYPE, GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); - registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, - GTRecipeCategoryBuilder::new); + registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, GTRecipeCategoryBuilder::new); registry.of(GTRegistries.Keys.MACHINE, reg -> { - reg.addDefault(KJSWrappingMachineBuilder.class, - (id) -> new KJSWrappingMachineBuilder(id, - new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, false))); + reg.addDefault(KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, false))); - reg.add(GTCEu.id("custom"), KJSWrappingMachineBuilder.class, - (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id))); + reg.add(GTCEu.id("custom"), KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id))); reg.add(GTCEu.id("steam"), KJSSteamMachineBuilder.class, KJSSteamMachineBuilder::new); - reg.add(GTCEu.id("generator"), KJSWrappingMachineBuilder.class, - (id) -> new KJSWrappingMachineBuilder(id, - new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, true))); + reg.add(GTCEu.id("generator"), KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, true))); - reg.add(GTCEu.id("multiblock"), MultiblockMachineBuilderWrapper.class, - MultiblockMachineBuilderWrapper::createKJSMulti); - reg.add(GTCEu.id("tiered_multiblock"), KJSWrappingMultiblockBuilder.class, - KJSWrappingMultiblockBuilder::new); - reg.add(GTCEu.id("primitive"), MultiblockMachineBuilderWrapper.class, - (id) -> MultiblockMachineBuilderWrapper.createKJSMulti(id, PrimitiveWorkableMachine::new)); + reg.add(GTCEu.id("multiblock"), MultiblockMachineBuilderWrapper.class, MultiblockMachineBuilderWrapper::createKJSMulti); + reg.add(GTCEu.id("tiered_multiblock"), KJSWrappingMultiblockBuilder.class, KJSWrappingMultiblockBuilder::new); + reg.add(GTCEu.id("primitive"), MultiblockMachineBuilderWrapper.class, (id) -> MultiblockMachineBuilderWrapper.createKJSMulti(id, PrimitiveWorkableMachine::new)); }); registry.of(Registries.BLOCK, reg -> { @@ -166,8 +157,7 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { registry.addDefault(GTRegistries.Keys.WORLD_GEN_LAYER, WorldGenLayerBuilder.class, WorldGenLayerBuilder::new); - registry.addDefault(GTRegistries.Keys.ORE_VEIN, OreVeinDefinitionBuilder.class, - OreVeinDefinitionBuilder::new); + registry.addDefault(GTRegistries.Keys.ORE_VEIN, OreVeinDefinitionBuilder.class, OreVeinDefinitionBuilder::new); registry.addDefault(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidBuilder.class, BedrockFluidBuilder::new); registry.addDefault(GTRegistries.Keys.BEDROCK_ORE, BedrockOreBuilder.class, BedrockOreBuilder::new); registry.addDefault(GTRegistries.Keys.WORLD_GEN_LAYER, WorldGenLayerBuilder.class, WorldGenLayerBuilder::new); @@ -176,11 +166,10 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { @Override public void registerServerRegistries(ServerRegistryRegistry registry) { registry.register(GTRegistries.Keys.ORE_VEIN, GTOreDefinition.DIRECT_CODEC, GTOreDefinition.class); - registry.register(GTRegistries.Keys.BEDROCK_FLUID, - BedrockFluidDefinition.DIRECT_CODEC, BedrockFluidDefinition.class); - registry.register(GTRegistries.Keys.BEDROCK_ORE, - BedrockOreDefinition.DIRECT_CODEC, BedrockOreDefinition.class); + registry.register(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidDefinition.DIRECT_CODEC, BedrockFluidDefinition.class); + registry.register(GTRegistries.Keys.BEDROCK_ORE, BedrockOreDefinition.DIRECT_CODEC, BedrockOreDefinition.class); } + // spotless:on @Override public void registerEvents(EventGroupRegistry registry) { From 1218f5fe0f4ca7ab10a95909c724f30b97dbb435 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 13:22:18 +0300 Subject: [PATCH 17/33] Fix GT stuff's registration order --- .../gtceu/api/recipe/GTRecipeType.java | 1 - .../gtceu/api/registry/GTRegistries.java | 55 +++++++++++++++---- .../api/registry/registrate/GTRegistrate.java | 1 - .../core/mixins/neoforge/GameDataMixin.java | 6 +- .../integration/kjs/GregTechKubeJSPlugin.java | 3 + .../helpers/KubeGTRegistryEventHandler.java | 4 +- 6 files changed, 50 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java index 9a67bc7c0c5..970255b8adb 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -14,7 +14,6 @@ import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; 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 2b7141774ce..13530b6e220 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -18,7 +18,6 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.multiblock.error.PatternError; import com.gregtechceu.gtceu.api.placeholder.Placeholder; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; @@ -26,17 +25,23 @@ import net.minecraft.core.MappedRegistry; import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.RecipeType; import net.neoforged.neoforge.registries.RegistryBuilder; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; import java.util.*; public final class GTRegistries { - private static final HashMap> REGISTRIES = new HashMap<>(); + private static final SequencedSet LOAD_ORDER = new LinkedHashSet<>(); + private static final LinkedHashMap>, Registry> REGISTRIES = new LinkedHashMap<>(); private GTRegistries() {} @@ -52,7 +57,13 @@ private Keys() {} // Recipe related registries - public static final ResourceKey> RECIPE_TYPE = makeRegistryKey(GTCEu.id("recipe_type")); + /** + * Use {@link Registries#RECIPE_TYPE} instead of this. This only exists to simplify KubeJS registration. + * + * @see Registries#RECIPE_TYPE + */ + @ApiStatus.Internal + public static final ResourceKey>> RECIPE_TYPE = makeRegistryKey(GTCEu.id("recipe_type")); public static final ResourceKey> RECIPE_CATEGORY = makeRegistryKey(GTCEu.id("recipe_category")); public static final ResourceKey>> RECIPE_CAPABILITY = makeRegistryKey(GTCEu.id("recipe_capability")); public static final ResourceKey>> RECIPE_CONDITION = makeRegistryKey(GTCEu.id("recipe_condition")); @@ -73,33 +84,40 @@ private Keys() {} public static final ResourceKey> DIMENSION_MARKER = makeRegistryKey(GTCEu.id("dimension_marker")); public static final ResourceKey> MEDICAL_CONDITION = makeRegistryKey(GTCEu.id("medical_condition")); + public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); public static final ResourceKey> WORLD_GEN_LAYER = makeRegistryKey(GTCEu.id("world_gen_layer")); public static final ResourceKey> PATTERN_ERROR_TYPE = makeRegistryKey(GTCEu.id("pattern_error_type")); public static final ResourceKey> PLACEHOLDER = makeRegistryKey(GTCEu.id("placeholder")); - public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); } // spotless:off // GT Registries public static final Registry ELEMENTS = makeRegistry(Keys.ELEMENT); - public static final MaterialRegistry MATERIALS = makeMaterialRegistry(); public static final Registry TAG_PREFIXES = makeRegistry(Keys.TAG_PREFIX); + public static final Registry MATERIAL_ICON_SETS = makeRegistry(Keys.MATERIAL_ICON_SET); + public static final Registry> TOOL_BEHAVIORS = makeRegistry(Keys.TOOL_BEHAVIOR); + public static final Registry MEDICAL_CONDITIONS = makeRegistry(Keys.MEDICAL_CONDITION); + public static final MaterialRegistry MATERIALS = makeMaterialRegistry(); public static final Registry SOUNDS = makeRegistry(Keys.SOUND, false); public static final Registry CHANCE_LOGICS = makeRegistry(Keys.CHANCE_LOGIC); public static final Registry> RECIPE_CAPABILITIES = makeRegistry(Keys.RECIPE_CAPABILITY); + static { + // manually insert the vanilla recipe type registry into the load order list TWICE: + // - once for the actual recipe type registry + addRegistryToLoadOrder(Registries.RECIPE_TYPE, null); + // - a duplicate entry for the custom KubeJS builder type + addRegistryToLoadOrder(Keys.RECIPE_TYPE, BuiltInRegistries.RECIPE_TYPE); + } + public static final Registry DIMENSION_MARKERS = makeRegistry(Keys.DIMENSION_MARKER, false); public static final Registry> RECIPE_CONDITIONS = makeRegistry(Keys.RECIPE_CONDITION); public static final Registry RECIPE_CATEGORIES = makeRegistry(Keys.RECIPE_CATEGORY); public static final Registry MACHINES = makeRegistry(Keys.MACHINE); public static final Registry COVERS = makeRegistry(Keys.COVER); - public static final Registry> TOOL_BEHAVIORS = makeRegistry(Keys.TOOL_BEHAVIOR); - public static final Registry DIMENSION_MARKERS = makeRegistry(Keys.DIMENSION_MARKER, false); - public static final Registry MEDICAL_CONDITIONS = makeRegistry(Keys.MEDICAL_CONDITION); public static final Registry PLACEHOLDERS = makeRegistry(Keys.PLACEHOLDER); - public static final Registry MATERIAL_ICON_SETS = makeRegistry(Keys.MATERIAL_ICON_SET); public static final Registry PATTERN_ERROR_TYPES = makeRegistry(Keys.PATTERN_ERROR_TYPE); public static final Registry WORLD_GEN_LAYERS = makeRegistry(Keys.WORLD_GEN_LAYER); @@ -117,19 +135,32 @@ public static MappedRegistry makeRegistry(ResourceKey> key, b MappedRegistry registry = (MappedRegistry) new RegistryBuilder<>(key) .sync(sync) .create(); - REGISTRIES.put(key.location(), registry); + addRegistryToLoadOrder(key, registry); return registry; } private static MaterialRegistry makeMaterialRegistry() { MaterialRegistry registry = new MaterialRegistry(Keys.MATERIAL); - REGISTRIES.put(Keys.MATERIAL.location(), registry); + addRegistryToLoadOrder(Keys.MATERIAL, registry); return registry; } + @SuppressWarnings("unchecked") + private static void addRegistryToLoadOrder(ResourceKey> key, @Nullable Registry registry) { + LOAD_ORDER.add(key.location()); + if (registry != null) { + REGISTRIES.put((ResourceKey>) key, registry); + } + } + + @UnmodifiableView + public static SequencedSet getRegistrationOrder() { + return Collections.unmodifiableSequencedSet(LOAD_ORDER); + } + @UnmodifiableView public static Collection> getRegistries() { - return REGISTRIES.values(); + return Collections.unmodifiableCollection(REGISTRIES.values()); } public static void init() {} 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 05fc8fde244..cb28e645194 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 @@ -221,7 +221,6 @@ protected

NoConfigBuilder createCreativ public GTRecipeType recipeType(String name, String group, RecipeType... proxyRecipes) { var recipeType = new GTRecipeType(makeResourceLocation(name), group, proxyRecipes); - this.generic(name, GTRegistries.Keys.RECIPE_TYPE, () -> recipeType).build(); this.generic(name, Registries.RECIPE_TYPE, () -> recipeType).build(); recipeType.setSerializer(this.generic(name, Registries.RECIPE_SERIALIZER, GTRecipeSerializer::new).register()); diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java index a609b09724e..a080dafe282 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java @@ -1,8 +1,7 @@ package com.gregtechceu.gtceu.core.mixins.neoforge; -import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.registry.GTRegistries; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.registries.GameData; @@ -18,8 +17,7 @@ public class GameDataMixin { @ModifyExpressionValue(method = "getRegistrationOrder", at = @At(value = "NEW", target = "java/util/LinkedHashSet")) private static LinkedHashSet gtceu$injectGTRegistriesFirst(LinkedHashSet ordered) { - ordered.addAll(BuiltInRegistries.REGISTRY.keySet().stream().filter(r -> r.getNamespace().equals(GTCEu.MOD_ID)) - .sorted(ResourceLocation::compareNamespaced).toList()); + ordered.addAll(GTRegistries.getRegistrationOrder()); return ordered; } } 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 24c48526e5a..89ee4135510 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -136,6 +136,9 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { registry.addDefault(GTRegistries.Keys.DIMENSION_MARKER, DimensionMarkerBuilder.class, DimensionMarkerBuilder::new); registry.addDefault(GTRegistries.Keys.RECIPE_TYPE, GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); + registry.of(Registries.RECIPE_TYPE, reg -> { + reg.add(GTCEu.id("machine"), GTRecipeTypeBuilder.class, GTRecipeTypeBuilder::new); + }); registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, GTRecipeCategoryBuilder::new); registry.of(GTRegistries.Keys.MACHINE, reg -> { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java index 63e931f74ce..092f2f0bfba 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java @@ -31,8 +31,8 @@ public class KubeGTRegistryEventHandler { @SubscribeEvent(priority = EventPriority.LOW) public static void registerAll(RegisterEvent event) { - // only post the GT registry event for GT registries - if (!GTRegistries.getRegistries().contains(event.getRegistry())) { + // only post the GT registry event for GT registries (and the recipe type registry) + if (!GTRegistries.getRegistrationOrder().contains(event.getRegistryKey().location())) { return; } From 194f04d63e08740a59daf273744194b3593a09e2 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 13:22:37 +0300 Subject: [PATCH 18/33] Simplify GTRecipeTypeBuilder --- .../kjs/builders/GTRecipeTypeBuilder.java | 56 +++++++------------ 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java index 86710ddaf07..bd4eba36d04 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/GTRecipeTypeBuilder.java @@ -4,14 +4,15 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.gui.GTRecipeTypeUILayout; import com.gregtechceu.gtceu.api.sound.SoundEntry; -import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry; import dev.latvian.mods.kubejs.registry.BuilderBase; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import lombok.Setter; import lombok.experimental.Accessors; import org.jetbrains.annotations.Nullable; @@ -22,24 +23,27 @@ @Accessors(chain = true) public class GTRecipeTypeBuilder extends BuilderBase { - public transient String name, category; + public transient String category; public transient final Object2IntMap> maxInputs; public transient final Object2IntMap> maxOutputs; - @Nullable - protected SoundEntry sound; + @Setter + protected @Nullable SoundEntry sound; + @Setter protected boolean hasResearchSlot; + @Setter protected int maxTooltips; - private GTRecipeType smallRecipeMap; - private Supplier iconSupplier; - private Consumer layout; + @Setter + private @Nullable GTRecipeType smallRecipeMap; + @Setter + private @Nullable Supplier iconSupplier; + private @Nullable Consumer layout; public GTRecipeTypeBuilder(ResourceLocation id) { super(id); - name = this.id.getPath(); - category = "custom"; - maxInputs = new Object2IntOpenHashMap<>(); - maxOutputs = new Object2IntOpenHashMap<>(); + this.category = "custom"; + this.maxInputs = new Object2IntOpenHashMap<>(); + this.maxOutputs = new Object2IntOpenHashMap<>(); this.sound = null; this.hasResearchSlot = false; this.maxTooltips = 4; @@ -75,38 +79,18 @@ public GTRecipeTypeBuilder setEUIO(IO io) { } public GTRecipeTypeBuilder setMaxSize(IO io, RecipeCapability cap, int max) { - if (io == IO.IN || io == IO.BOTH) { + if (io.support(IO.IN)) { maxInputs.put(cap, max); } - if (io == IO.OUT || io == IO.BOTH) { + if (io.support(IO.OUT)) { maxOutputs.put(cap, max); } return this; } - public GTRecipeTypeBuilder setSound(SoundEntry sound) { - this.sound = sound; - return this; - } - - public GTRecipeTypeBuilder setHasResearchSlot(boolean hasResearchSlot) { - this.hasResearchSlot = hasResearchSlot; - return this; - } - - public GTRecipeTypeBuilder setMaxTooltips(int maxTooltips) { - this.maxTooltips = maxTooltips; - return this; - } - - public GTRecipeTypeBuilder setSmallRecipeMap(GTRecipeType smallRecipeMap) { - this.smallRecipeMap = smallRecipeMap; - return this; - } - - public GTRecipeTypeBuilder setIconSupplier(Supplier iconSupplier) { - this.iconSupplier = iconSupplier; - return this; + @Override + public void createAdditionalObjects(AdditionalObjectRegistry registry) { + super.createAdditionalObjects(registry); } @Override From c89d16ff9b1f665475be062017d7fec710fdea2b Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 13:23:09 +0300 Subject: [PATCH 19/33] Remove printing to KubeJS's logger --- .../integration/kjs/helpers/KubeGTRegistryEventHandler.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java index 092f2f0bfba..de5ee04a39c 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java @@ -14,7 +14,6 @@ import net.neoforged.neoforge.registries.RegisterEvent; import dev.latvian.mods.kubejs.DevProperties; -import dev.latvian.mods.kubejs.KubeJS; import dev.latvian.mods.kubejs.registry.BuilderBase; import dev.latvian.mods.kubejs.registry.RegistryObjectStorage; import dev.latvian.mods.kubejs.script.ConsoleJS; @@ -80,7 +79,7 @@ private static void handleRegistryEvent(ResourceKey> registryKey } if (!objStorage.objects.isEmpty() && DevProperties.get().logRegistryEventObjects) { - KubeJS.LOGGER.info("Registered {}/{} objects of {}", added, objStorage.objects.size(), + GTCEu.LOGGER.info("Registered {}/{} objects of {}", added, objStorage.objects.size(), registryKey.location()); } } From 62a81f0eab225c2c4f9ffe8bca9d6b08f3fd7ae1 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 28 Jun 2026 20:29:00 +0300 Subject: [PATCH 20/33] Get rid of the `KJSWrapping*Builder` classes --- .../integration/kjs/GTCEuStartupEvents.java | 3 +- .../integration/kjs/GregTechKubeJSPlugin.java | 27 +- .../machine/KJSMultiblockMachineBuilder.java | 382 ++++++++++++++++ .../machine/KJSSteamMachineBuilder.java | 60 +-- .../machine/KJSTieredMachineBuilder.java | 54 +-- .../machine/KJSTieredMultiblockBuilder.java | 72 +-- .../machine/KJSWrappingMachineBuilder.java | 96 ---- .../machine/KJSWrappingMultiblockBuilder.java | 75 --- .../machine/MachineBuilderWrapper.java | 41 ++ .../MultiblockMachineBuilderWrapper.java | 431 ------------------ .../material/MaterialBuilderWrapper.java | 3 +- .../helpers/KubeGTRegistryEventHandler.java | 6 +- 12 files changed, 481 insertions(+), 769 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java delete mode 100644 src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MultiblockMachineBuilderWrapper.java diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java index 0d593a9155f..5ccfc9598f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java @@ -18,8 +18,7 @@ public interface GTCEuStartupEvents { TargetedEventHandler>> REGISTRY = GROUP.startup("registry", () -> GTRegistryKubeEvent.class) .requiredTarget(EventTargetType.REGISTRY); - EventHandler MATERIAL_MODIFICATION = GROUP.startup("materialModification", - () -> MaterialModificationEventJS.class); + EventHandler MATERIAL_MODIFICATION = GROUP.startup("materialModification", () -> MaterialModificationEventJS.class); EventHandler CRAFTING_COMPONENTS = GROUP.startup("craftingComponents", () -> CraftingComponentsEventJS.class); EventHandler REGISTER_WOODS = GROUP.startup("registerWoods", () -> RegisterWoodsEventJS.class); 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 89ee4135510..c6b0f06876f 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -83,14 +83,8 @@ import com.gregtechceu.gtceu.integration.kjs.builders.block.ActiveBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.block.CoilBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.machine.*; -import com.gregtechceu.gtceu.integration.kjs.builders.material.MaterialBuilderWrapper; -import com.gregtechceu.gtceu.integration.kjs.builders.material.MaterialIconSetBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.material.OreTagPrefixBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.material.TagPrefixBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockFluidBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockOreBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.DimensionMarkerBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.OreVeinDefinitionBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.material.*; +import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.*; import com.gregtechceu.gtceu.integration.kjs.helpers.GTResourceLocation; import com.gregtechceu.gtceu.integration.kjs.helpers.MachineConstructors; import com.gregtechceu.gtceu.integration.kjs.helpers.MachineModifiers; @@ -114,6 +108,7 @@ import dev.latvian.mods.kubejs.recipe.component.RecipeComponentTypeRegistry; import dev.latvian.mods.kubejs.recipe.schema.RecipeFactoryRegistry; import dev.latvian.mods.kubejs.recipe.schema.RecipeSchemaRegistry; +import dev.latvian.mods.kubejs.registry.BuilderBase; import dev.latvian.mods.kubejs.registry.BuilderTypeRegistry; import dev.latvian.mods.kubejs.registry.RegistryObjectStorage; import dev.latvian.mods.kubejs.registry.ServerRegistryRegistry; @@ -142,15 +137,19 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { registry.addDefault(GTRegistries.Keys.RECIPE_CATEGORY, GTRecipeCategoryBuilder.class, GTRecipeCategoryBuilder::new); registry.of(GTRegistries.Keys.MACHINE, reg -> { - reg.addDefault(KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, false))); + reg.addDefault(KJSTieredMachineBuilder.class, (id) -> new KJSTieredMachineBuilder(id, SimpleTieredMachine::new, false)); - reg.add(GTCEu.id("custom"), KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id))); + reg.add(GTCEu.id("custom"), KJSTieredMachineBuilder.class, KJSTieredMachineBuilder::new); reg.add(GTCEu.id("steam"), KJSSteamMachineBuilder.class, KJSSteamMachineBuilder::new); - reg.add(GTCEu.id("generator"), KJSWrappingMachineBuilder.class, (id) -> new KJSWrappingMachineBuilder(id, new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, true))); + reg.add(GTCEu.id("generator"), KJSTieredMachineBuilder.class, (id) -> new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, true)); - reg.add(GTCEu.id("multiblock"), MultiblockMachineBuilderWrapper.class, MultiblockMachineBuilderWrapper::createKJSMulti); - reg.add(GTCEu.id("tiered_multiblock"), KJSWrappingMultiblockBuilder.class, KJSWrappingMultiblockBuilder::new); - reg.add(GTCEu.id("primitive"), MultiblockMachineBuilderWrapper.class, (id) -> MultiblockMachineBuilderWrapper.createKJSMulti(id, PrimitiveWorkableMachine::new)); + @SuppressWarnings("unchecked") + Class> multiblockBuilderClass = (Class>) KJSMultiblockMachineBuilder.class; + reg.add(GTCEu.id("multiblock"), multiblockBuilderClass, KJSMultiblockMachineBuilder::createKJSMulti); + @SuppressWarnings("unchecked") + Class> tieredMultiblockBuilderClass = (Class>) KJSTieredMultiblockBuilder.class; + reg.add(GTCEu.id("tiered_multiblock"), tieredMultiblockBuilderClass, KJSTieredMultiblockBuilder::new); + reg.add(GTCEu.id("primitive"), multiblockBuilderClass, (id) -> KJSMultiblockMachineBuilder.createKJSMulti(id, PrimitiveWorkableMachine::new)); }); registry.of(Registries.BLOCK, reg -> { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java new file mode 100644 index 00000000000..111d3a85aaf --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java @@ -0,0 +1,382 @@ +package com.gregtechceu.gtceu.integration.kjs.builders.machine; + +import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; +import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.data.RotationState; +import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; +import com.gregtechceu.gtceu.api.multiblock.pattern.IBlockPattern; +import com.gregtechceu.gtceu.api.recipe.GTRecipe; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; + +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.VoxelShape; + +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.util.nullness.NonNullBiConsumer; +import com.tterrag.registrate.util.nullness.NonNullConsumer; +import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; +import it.unimi.dsi.fastutil.objects.Reference2IntMap; +import org.apache.commons.lang3.function.TriFunction; +import org.jetbrains.annotations.Nullable; + +import java.util.Comparator; +import java.util.List; +import java.util.function.*; + +@SuppressWarnings("unused") +public class KJSMultiblockMachineBuilder extends MachineBuilderWrapper> { + + public KJSMultiblockMachineBuilder(MultiblockMachineBuilder builder) { + super(builder); + } + + public KJSMultiblockMachineBuilder generator(boolean generator) { + builder.generator(generator); + return this; + } + + public KJSMultiblockMachineBuilder pattern(Function pattern) { + builder.pattern(pattern); + return this; + } + + public KJSMultiblockMachineBuilder allowFlip(boolean allowFlip) { + builder.allowFlip(allowFlip); + return this; + } + + public KJSMultiblockMachineBuilder partSorter(Comparator partSorter) { + builder.partSorter(partSorter); + return this; + } + + public KJSMultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { + builder.partAppearance(partAppearance); + return this; + } + + public KJSMultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { + builder.additionalDisplay(additionalDisplay); + return this; + } + + public KJSMultiblockMachineBuilder recoveryItems(Supplier items) { + builder.recoveryItems(items); + return this; + } + + public KJSMultiblockMachineBuilder recoveryStacks(Supplier stacks) { + builder.recoveryStacks(stacks); + return this; + } + + public KJSMultiblockMachineBuilder definition(Function definition) { + builder.definition(definition); + return this; + } + + public KJSMultiblockMachineBuilder instanceFactory(MachineInstanceFactory machine) { + builder.instanceFactory(machine); + return this; + } + + public KJSMultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { + builder.model(model); + return this; + } + + public KJSMultiblockMachineBuilder blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { + builder.blockModel(blockModel); + return this; + } + + public KJSMultiblockMachineBuilder shape(VoxelShape shape) { + builder.shape(shape); + return this; + } + + public KJSMultiblockMachineBuilder multiblockPreviewRenderer(boolean multiBlockWorldPreview, + boolean multiBlockXEIPreview) { + builder.multiblockPreviewRenderer(multiBlockWorldPreview, multiBlockXEIPreview); + return this; + } + + public KJSMultiblockMachineBuilder rotationState(RotationState rotationState) { + builder.rotationState(rotationState); + return this; + } + + public KJSMultiblockMachineBuilder hasBER(boolean hasBER) { + builder.hasBER(hasBER); + return this; + } + + public KJSMultiblockMachineBuilder blockProp(NonNullUnaryOperator blockProp) { + builder.blockProp(blockProp); + return this; + } + + public KJSMultiblockMachineBuilder itemProp(NonNullUnaryOperator itemProp) { + builder.itemProp(itemProp); + return this; + } + + public KJSMultiblockMachineBuilder recipeTypes(GTRecipeType... recipeTypes) { + builder.recipeTypes(recipeTypes); + return this; + } + + public KJSMultiblockMachineBuilder recipeType(GTRecipeType recipeTypes) { + builder.recipeType(recipeTypes); + return this; + } + + public KJSMultiblockMachineBuilder tier(int tier) { + builder.tier(tier); + return this; + } + + public KJSMultiblockMachineBuilder recipeOutputLimits(Reference2IntMap> map) { + builder.recipeOutputLimits(map); + return this; + } + + public KJSMultiblockMachineBuilder addOutputLimit(RecipeCapability capability, int limit) { + builder.addOutputLimit(capability, limit); + return this; + } + + public KJSMultiblockMachineBuilder itemColor(BiFunction itemColor) { + builder.itemColor(itemColor); + return this; + } + + public KJSMultiblockMachineBuilder simpleModel(ResourceLocation model) { + builder.simpleModel(model); + return this; + } + + public KJSMultiblockMachineBuilder defaultModel() { + builder.defaultModel(); + return this; + } + + public KJSMultiblockMachineBuilder tieredHullModel(ResourceLocation model) { + builder.tieredHullModel(model); + return this; + } + + public KJSMultiblockMachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + builder.overlayTieredHullModel(overlayModel); + return this; + } + + public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + builder.colorOverlayTieredHullModel(overlay); + return this; + } + + public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + builder.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); + return this; + } + + public KJSMultiblockMachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + builder.workableTieredHullModel(workableModel); + return this; + } + + public KJSMultiblockMachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + builder.simpleGeneratorModel(workableModel); + return this; + } + + public KJSMultiblockMachineBuilder workableCasingModel(ResourceLocation baseCasing, + ResourceLocation overlayModel) { + builder.workableCasingModel(baseCasing, overlayModel); + return this; + } + + public KJSMultiblockMachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + builder.sidedOverlayCasingModel(baseCasing, workableModel); + return this; + } + + public KJSMultiblockMachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { + builder.sidedWorkableCasingModel(baseCasing, workableModel); + return this; + } + + public KJSMultiblockMachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + builder.overlaySteamHullModel(overlayModel); + return this; + } + + public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { + builder.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); + return this; + } + + public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + builder.colorOverlaySteamHullModel(overlay); + return this; + } + + public KJSMultiblockMachineBuilder workableSteamHullModel(boolean isHighPressure, + ResourceLocation workableModel) { + builder.workableSteamHullModel(isHighPressure, workableModel); + return this; + } + + public KJSMultiblockMachineBuilder tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { + builder.tooltipBuilder(tooltipBuilder); + return this; + } + + public KJSMultiblockMachineBuilder appearance(@Nullable Supplier state) { + builder.appearance(state); + return this; + } + + public KJSMultiblockMachineBuilder appearanceBlock(Supplier block) { + builder.appearanceBlock(block); + return this; + } + + public KJSMultiblockMachineBuilder langValue(@Nullable String langValue) { + builder.langValue(langValue); + return this; + } + + public KJSMultiblockMachineBuilder tooltips(Component... components) { + builder.tooltips(components); + return this; + } + + public KJSMultiblockMachineBuilder conditionalTooltip(Component component, Supplier condition) { + builder.conditionalTooltip(component, condition.get()); + return this; + } + + public KJSMultiblockMachineBuilder conditionalTooltip(Component component, boolean condition) { + builder.conditionalTooltip(component, condition); + return this; + } + + public KJSMultiblockMachineBuilder abilities(PartAbility... abilities) { + builder.abilities(abilities); + return this; + } + + public KJSMultiblockMachineBuilder paintingColor(int paintingColor) { + builder.paintingColor(paintingColor); + return this; + } + + public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier) { + builder.recipeModifier(recipeModifier); + return this; + } + + public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier, + boolean alwaysTryModifyRecipe) { + builder.recipeModifier(recipeModifier, alwaysTryModifyRecipe); + return this; + } + + public KJSMultiblockMachineBuilder recipeModifiers(RecipeModifier... recipeModifiers) { + builder.recipeModifiers(recipeModifiers); + return this; + } + + public KJSMultiblockMachineBuilder recipeModifiers(boolean alwaysTryModifyRecipe, + RecipeModifier... recipeModifiers) { + builder.recipeModifiers(alwaysTryModifyRecipe, recipeModifiers); + return this; + } + + public KJSMultiblockMachineBuilder noRecipeModifier() { + builder.noRecipeModifier(); + return this; + } + + public KJSMultiblockMachineBuilder alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { + builder.alwaysTryModifyRecipe(alwaysTryModifyRecipe); + return this; + } + + public KJSMultiblockMachineBuilder beforeWorking(BiPredicate beforeWorking) { + builder.beforeWorking(beforeWorking); + return this; + } + + public KJSMultiblockMachineBuilder onWorking(Predicate onWorking) { + builder.onWorking(onWorking); + return this; + } + + public KJSMultiblockMachineBuilder onWaiting(Consumer onWaiting) { + builder.onWaiting(onWaiting); + return this; + } + + public KJSMultiblockMachineBuilder afterWorking(Consumer afterWorking) { + builder.afterWorking(afterWorking); + return this; + } + + public KJSMultiblockMachineBuilder regressWhenWaiting(boolean regressWhenWaiting) { + builder.regressWhenWaiting(regressWhenWaiting); + return this; + } + + public KJSMultiblockMachineBuilder onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { + builder.onBlockEntityRegister(onBlockEntityRegister); + return this; + } + + public KJSMultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) { + builder.allowExtendedFacing(allowExtendedFacing); + return this; + } + + public static KJSMultiblockMachineBuilder createKJSMulti(ResourceLocation id) { + var baseBuilder = GTRegistrate.create(id.getNamespace(), false) + .multiblock(id.getPath(), WorkableElectricMultiblockMachine::new); + return new KJSMultiblockMachineBuilder<>(baseBuilder); + } + + public static KJSMultiblockMachineBuilder createKJSMulti(ResourceLocation id, + KJSTieredMachineBuilder.CreationFunction machine) { + var baseBuilder = GTRegistrate.create(id.getNamespace(), false) + .multiblock(id.getPath(), machine::create); + return new KJSMultiblockMachineBuilder<>(baseBuilder); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 2b20e6ccc80..30bb5b982f2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; @@ -15,13 +14,13 @@ import dev.latvian.mods.kubejs.client.LangKubeEvent; import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; +import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry; import dev.latvian.mods.kubejs.registry.BuilderBase; import lombok.Setter; import lombok.experimental.Accessors; -import org.jetbrains.annotations.Nullable; @Accessors(fluent = true, chain = true) -public class KJSSteamMachineBuilder extends BuilderBase implements IMachineBuilderKJS { +public class KJSSteamMachineBuilder extends BuilderBase { @Setter public transient boolean hasLowPressure = true, hasHighPressure = true; @@ -30,10 +29,6 @@ public class KJSSteamMachineBuilder extends BuilderBase imple @Setter public transient SteamDefinitionFunction definition = (isHP, def) -> def.tier(isHP ? 1 : 0); - private @Nullable MachineBuilder lowPressureBuilder = null, highPressureBuilder = null; - @Nullable - private MachineDefinition lpObject = null, hpObject = null; - public KJSSteamMachineBuilder(ResourceLocation id) { super(id); this.dummyBuilder = true; @@ -41,9 +36,14 @@ public KJSSteamMachineBuilder(ResourceLocation id) { @Override public MachineDefinition createObject() { - MachineDefinition value = null; + // this method is never called on dummy builders (which this class is) + return null; + } + + @Override + public void createAdditionalObjects(AdditionalObjectRegistry registry) { if (hasLowPressure) { - this.lowPressureBuilder = GTRegistrate.createIgnoringListenerErrors(this.id.getNamespace()) + var lowPressureBuilder = GTRegistrate.create(id.getNamespace(), false) .machine(String.format("lp_%s", this.id.getPath()), holder -> machine.create(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) @@ -53,12 +53,11 @@ public MachineDefinition createObject() { .workableSteamHullModel(false, id.withPrefix("block/machines/")); definition.apply(false, lowPressureBuilder); - this.lpObject = lowPressureBuilder.register(); - value = lpObject; + registry.add(GTRegistries.Keys.MACHINE, new MachineBuilderWrapper<>(lowPressureBuilder)); } if (hasHighPressure) { - this.highPressureBuilder = GTRegistrate.createIgnoringListenerErrors(this.id.getNamespace()) + var highPressureBuilder = GTRegistrate.create(id.getNamespace(), false) .machine(String.format("hp_%s", this.id.getPath()), holder -> machine.create(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) @@ -68,42 +67,7 @@ public MachineDefinition createObject() { .workableSteamHullModel(true, id.withPrefix("block/machines/")); definition.apply(true, highPressureBuilder); - this.hpObject = highPressureBuilder.register(); - if (value == null) value = hpObject; - } - - return value; - } - - @Override - public void generateMachineModels() { - generateMachineModel(lowPressureBuilder, lpObject); - generateMachineModel(highPressureBuilder, hpObject); - } - - @Override - public void generateAssets(KubeAssetGenerator generator) { - if (this.lowPressureBuilder != null) { - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); - } - if (this.highPressureBuilder != null) { - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); - } - } - - @Override - public String getTranslationKeyGroup() { - return "block"; - } - - @SuppressWarnings("DataFlowIssue") - @Override - public void generateLang(LangKubeEvent lang) { - if (lpObject != null) { - lang.add(GTCEu.MOD_ID, lpObject.getDescriptionId(), lpObject.getLangValue()); - } - if (hpObject != null) { - lang.add(GTCEu.MOD_ID, hpObject.getDescriptionId(), hpObject.getLangValue()); + registry.add(GTRegistries.Keys.MACHINE, new MachineBuilderWrapper<>(highPressureBuilder)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 7ef11f5aacd..7a1698b441b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -1,11 +1,11 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; @@ -13,13 +13,11 @@ import net.minecraft.resources.ResourceLocation; import com.google.common.base.Preconditions; -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; +import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry; import dev.latvian.mods.kubejs.registry.BuilderBase; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import lombok.Setter; import lombok.experimental.Accessors; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -28,10 +26,7 @@ import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; @Accessors(fluent = true, chain = true) -public class KJSTieredMachineBuilder extends BuilderBase<@Nullable MachineDefinition @NotNull []> - implements IMachineBuilderKJS { - - private final MachineBuilder[] builders = new MachineBuilder[TIER_COUNT]; +public class KJSTieredMachineBuilder extends BuilderBase { @Setter public transient int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @@ -52,6 +47,7 @@ public KJSTieredMachineBuilder(ResourceLocation id) { super(id); this.addDefaultTooltips = false; this.addDefaultModel = false; + this.dummyBuilder = true; } @@ -60,54 +56,32 @@ public KJSTieredMachineBuilder(ResourceLocation id, TieredCreationFunction machi super(id); this.machine = machine; this.isGenerator = isGenerator; - this.dummyBuilder = true; - } - - @Override - public void generateMachineModels() { - for (int tier : this.tiers) { - generateMachineModel(this.builders[tier], this.object[tier]); - } - } - @Override - public void generateAssets(KubeAssetGenerator generator) { - for (int tier : this.tiers) { - MachineDefinition definition = this.object[tier]; - if (definition == null) continue; - - final ResourceLocation id = definition.getId(); - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); - } + this.dummyBuilder = true; } + @SuppressWarnings("DataFlowIssue") @Override - public void generateLang(LangKubeEvent lang) { - super.generateLang(lang); - for (int tier : this.tiers) { - MachineDefinition def = this.object[tier]; - if (def != null && def.getLangValue() != null) { - lang.add(GTCEu.MOD_ID, def.getDescriptionId(), def.getLangValue()); - } - } + public MachineDefinition createObject() { + // this method is never called on dummy builders (which this class is) + return null; } @Override - public @Nullable MachineDefinition @NotNull [] createObject() { + public void createAdditionalObjects(AdditionalObjectRegistry registry) { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + "example: `builder.machine((holder, tier) => new SimpleTieredMachine(holder, tier, t => t * 3200)`"); Preconditions.checkNotNull(definition, "You must set a definition function! " + "See GTMachines for examples"); - @Nullable - MachineDefinition @NotNull [] definitions = new MachineDefinition[TIER_COUNT]; + for (final int tier : tiers) { String tierName = VN[tier].toLowerCase(Locale.ROOT); final Int2IntFunction tankFunction = Objects.requireNonNullElse(tankScalingFunction, GTMachineUtils.defaultTankSizeFunction); - MachineBuilder builder = GTRegistrate.createIgnoringListenerErrors(this.id.getNamespace()) + var builder = GTRegistrate.create(this.id.getNamespace(), false) .machine(String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.create(holder, tier, tankFunction)); @@ -127,10 +101,8 @@ public void generateLang(LangKubeEvent lang) { } } - this.builders[tier] = builder; - definitions[tier] = builder.register(); + registry.add(GTRegistries.Keys.MACHINE, new MachineBuilderWrapper<>(builder)); } - return definitions; } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index f9eafc7f271..a8ec4c0ee1b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -1,9 +1,9 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; @@ -12,104 +12,64 @@ import net.minecraft.resources.ResourceLocation; import com.google.common.base.Preconditions; -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; +import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry; import dev.latvian.mods.kubejs.registry.BuilderBase; import lombok.Setter; import lombok.experimental.Accessors; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Locale; import static com.gregtechceu.gtceu.api.GTValues.*; @Accessors(fluent = true, chain = true) -public class KJSTieredMultiblockBuilder extends BuilderBase<@Nullable MultiblockMachineDefinition @NotNull []> - implements IMachineBuilderKJS { - - private final MultiblockMachineBuilder[] builders = new MultiblockMachineBuilder[TIER_COUNT]; +public class KJSTieredMultiblockBuilder extends BuilderBase { @Setter public transient int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter - public transient TieredCreationFunction machine; + public transient MachineInstanceFactory.Tiered machine; @Setter public transient DefinitionFunction definition = (tier, def) -> def.tier(tier); public KJSTieredMultiblockBuilder(ResourceLocation id) { super(id); - this.dummyBuilder = true; - } - public KJSTieredMultiblockBuilder(ResourceLocation id, TieredCreationFunction machine) { - super(id); - this.machine = machine; this.dummyBuilder = true; } - @Override - public void generateMachineModels() { - for (int tier : this.tiers) { - generateMachineModel(this.builders[tier], this.object[tier]); - } - } - - @Override - public void generateAssets(KubeAssetGenerator generator) { - for (int tier : this.tiers) { - MachineDefinition definition = this.object[tier]; - if (definition == null) continue; - - final ResourceLocation id = definition.getId(); - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); - } - } - - @Override - public String getTranslationKeyGroup() { - return "block"; + public KJSTieredMultiblockBuilder(ResourceLocation id, MachineInstanceFactory.Tiered machine) { + this(id); + this.machine = machine; } + @SuppressWarnings("DataFlowIssue") @Override - public void generateLang(LangKubeEvent lang) { - for (int tier : tiers) { - MachineDefinition def = object[tier]; - if (def != null && def.getLangValue() != null) { - lang.add(def.getId().getNamespace(), def.getDescriptionId(), def.getLangValue()); - } - } + public MultiblockMachineDefinition createObject() { + // this method is never called on dummy builders (which this class is) + return null; } @Override - public @Nullable MultiblockMachineDefinition @NotNull [] createObject() { + public void createAdditionalObjects(AdditionalObjectRegistry registry) { Preconditions.checkNotNull(tiers, "Tiers can't be null!"); Preconditions.checkArgument(tiers.length > 0, "tiers must have at least one tier!"); Preconditions.checkNotNull(machine, "You must set a machine creation function! " + "example: `builder.machine((holder, tier) => new SimpleTieredMachine(holder, tier, t => t * 3200)`"); Preconditions.checkNotNull(definition, "You must set a definition function! " + "See GTMachines for examples"); - MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[TIER_COUNT]; + for (final int tier : tiers) { String tierName = VN[tier].toLowerCase(Locale.ROOT); MultiblockMachineBuilder builder = GTRegistrate .createIgnoringListenerErrors(this.id.getNamespace()) .multiblock(String.format("%s_%s", tierName, this.id.getPath()), - holder -> machine.create(holder, tier)); + holder -> machine.buildMachine(holder, tier)); builder.workableTieredHullModel(id.withPrefix("block/machines/")) .tier(tier); this.definition.apply(tier, builder); - this.builders[tier] = builder; - definitions[tier] = builder.register(); + registry.add(GTRegistries.Keys.MACHINE, new MachineBuilderWrapper<>(builder)); } - return definitions; - } - - @FunctionalInterface - public interface TieredCreationFunction { - - MultiblockControllerMachine create(BlockEntityCreationInfo info, int tier); } @FunctionalInterface diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java deleted file mode 100644 index 32c43732985..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMachineBuilder.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.gregtechceu.gtceu.integration.kjs.builders.machine; - -import com.gregtechceu.gtceu.api.machine.MachineDefinition; - -import net.minecraft.resources.ResourceLocation; - -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; -import dev.latvian.mods.kubejs.generator.KubeDataGenerator; -import dev.latvian.mods.kubejs.registry.BuilderBase; -import dev.latvian.mods.rhino.util.HideFromJS; -import it.unimi.dsi.fastutil.ints.Int2IntFunction; -import lombok.Getter; - -import java.util.Arrays; - -@SuppressWarnings("unused") -public class KJSWrappingMachineBuilder extends BuilderBase implements IMachineBuilderKJS { - - @HideFromJS - @Getter - private final KJSTieredMachineBuilder tieredBuilder; - - public KJSWrappingMachineBuilder(ResourceLocation id, KJSTieredMachineBuilder tieredBuilder) { - super(id); - this.tieredBuilder = tieredBuilder; - this.dummyBuilder = true; - } - - public KJSWrappingMachineBuilder tiers(int... tiers) { - tieredBuilder.tiers(tiers); - return this; - } - - public KJSWrappingMachineBuilder machine(KJSTieredMachineBuilder.TieredCreationFunction machine) { - tieredBuilder.machine(machine); - return this; - } - - public KJSWrappingMachineBuilder definition(KJSTieredMachineBuilder.DefinitionFunction definition) { - tieredBuilder.definition(definition); - return this; - } - - public KJSWrappingMachineBuilder tankScalingFunction(Int2IntFunction tankScalingFunction) { - tieredBuilder.tankScalingFunction(tankScalingFunction); - return this; - } - - public KJSWrappingMachineBuilder addDefaultTooltips(boolean addDefaultTooltips) { - tieredBuilder.addDefaultTooltips(addDefaultTooltips); - return this; - } - - public KJSWrappingMachineBuilder addDefaultModel(boolean addDefaultModel) { - tieredBuilder.addDefaultModel(addDefaultModel); - return this; - } - - public KJSWrappingMachineBuilder isGenerator(boolean isGenerator) { - tieredBuilder.isGenerator(isGenerator); - return this; - } - - @Override - public void generateData(KubeDataGenerator generator) { - tieredBuilder.generateData(generator); - } - - @Override - public void generateMachineModels() { - tieredBuilder.generateMachineModels(); - } - - @Override - public void generateAssets(KubeAssetGenerator generator) { - tieredBuilder.generateAssets(generator); - } - - @Override - public void generateLang(LangKubeEvent lang) { - tieredBuilder.generateLang(lang); - } - - @Override - public MachineDefinition createObject() { - for (var def : tieredBuilder.createTransformedObject()) { - if (def != null) { - return def; - } - } - // should never happen. - throw new IllegalStateException("Empty tiered machine builder " + Arrays.toString(tieredBuilder.get()) + - " With id " + tieredBuilder.id); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java deleted file mode 100644 index f13138e7cad..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSWrappingMultiblockBuilder.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.gregtechceu.gtceu.integration.kjs.builders.machine; - -import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; - -import net.minecraft.resources.ResourceLocation; - -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; -import dev.latvian.mods.kubejs.generator.KubeDataGenerator; -import dev.latvian.mods.kubejs.registry.BuilderBase; -import dev.latvian.mods.rhino.util.HideFromJS; -import lombok.Getter; - -import java.util.Arrays; - -public class KJSWrappingMultiblockBuilder extends BuilderBase - implements IMachineBuilderKJS { - - @HideFromJS - @Getter - private final KJSTieredMultiblockBuilder tieredBuilder; - - public KJSWrappingMultiblockBuilder(ResourceLocation id) { - super(id); - this.tieredBuilder = new KJSTieredMultiblockBuilder(this.id); - this.dummyBuilder = true; - } - - public KJSWrappingMultiblockBuilder tiers(int... tiers) { - tieredBuilder.tiers(tiers); - return this; - } - - public KJSWrappingMultiblockBuilder machine(KJSTieredMultiblockBuilder.TieredCreationFunction machine) { - tieredBuilder.machine(machine); - return this; - } - - public KJSWrappingMultiblockBuilder definition(KJSTieredMultiblockBuilder.DefinitionFunction definition) { - tieredBuilder.definition(definition); - return this; - } - - @Override - public void generateData(KubeDataGenerator generator) { - tieredBuilder.generateData(generator); - } - - @Override - public void generateMachineModels() { - tieredBuilder.generateMachineModels(); - } - - @Override - public void generateAssets(KubeAssetGenerator generator) { - tieredBuilder.generateAssets(generator); - } - - @Override - public void generateLang(LangKubeEvent lang) { - tieredBuilder.generateLang(lang); - } - - @Override - public MultiblockMachineDefinition createObject() { - for (var def : tieredBuilder.createTransformedObject()) { - if (def != null) { - return def; - } - } - // should never happen. - throw new IllegalStateException("Empty tiered multiblock builder " + Arrays.toString(tieredBuilder.get()) + - " With id " + tieredBuilder.id); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java new file mode 100644 index 00000000000..4b8aeb9e20a --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java @@ -0,0 +1,41 @@ +package com.gregtechceu.gtceu.integration.kjs.builders.machine; + +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; + +import dev.latvian.mods.kubejs.client.LangKubeEvent; +import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; +import dev.latvian.mods.kubejs.registry.BuilderBase; + +public class MachineBuilderWrapper> extends BuilderBase implements IMachineBuilderKJS { + + protected final B builder; + + public MachineBuilderWrapper(B builder) { + super(builder.getOwner().makeResourceLocation(builder.getName())); + this.builder = builder; + } + + @Override + public D createObject() { + return builder.createEntry(); + } + + @Override + public void generateMachineModels() { + generateMachineModel(builder, get()); + } + + @Override + public void generateAssets(KubeAssetGenerator generator) { + generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); + } + + @Override + public void generateLang(LangKubeEvent lang) { + D value = get(); + if (value != null && value.getLangValue() != null) { + lang.add(id.getNamespace(), value.getDescriptionId(), value.getLangValue()); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MultiblockMachineBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MultiblockMachineBuilderWrapper.java deleted file mode 100644 index af66a8d18f0..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MultiblockMachineBuilderWrapper.java +++ /dev/null @@ -1,431 +0,0 @@ -package com.gregtechceu.gtceu.integration.kjs.builders.machine; - -import com.gregtechceu.gtceu.api.block.MetaMachineBlock; -import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; -import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.item.MetaMachineItem; -import com.gregtechceu.gtceu.api.machine.*; -import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; -import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; -import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; -import com.gregtechceu.gtceu.api.multiblock.pattern.IBlockPattern; -import com.gregtechceu.gtceu.api.recipe.GTRecipe; -import com.gregtechceu.gtceu.api.recipe.GTRecipeType; -import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; -import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; - -import net.minecraft.core.Direction; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.shapes.VoxelShape; - -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullConsumer; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; -import dev.latvian.mods.kubejs.registry.BuilderBase; -import it.unimi.dsi.fastutil.objects.Reference2IntMap; -import org.apache.commons.lang3.function.TriFunction; -import org.jetbrains.annotations.Nullable; - -import java.util.Comparator; -import java.util.List; -import java.util.function.*; - -@SuppressWarnings("unused") -public class MultiblockMachineBuilderWrapper extends BuilderBase - implements IMachineBuilderKJS { - - private final MultiblockMachineBuilder internal; - - public MultiblockMachineBuilderWrapper(ResourceLocation id, - MultiblockMachineBuilder internal) { - super(id); - this.internal = internal; - this.dummyBuilder = true; - } - - public MultiblockMachineBuilderWrapper generator(boolean generator) { - internal.generator(generator); - return this; - } - - public MultiblockMachineBuilderWrapper pattern(Function pattern) { - internal.pattern(pattern); - return this; - } - - public MultiblockMachineBuilderWrapper allowFlip(boolean allowFlip) { - internal.allowFlip(allowFlip); - return this; - } - - public MultiblockMachineBuilderWrapper partSorter(Comparator partSorter) { - internal.partSorter(partSorter); - return this; - } - - public MultiblockMachineBuilderWrapper partAppearance(@Nullable TriFunction partAppearance) { - internal.partAppearance(partAppearance); - return this; - } - - public MultiblockMachineBuilderWrapper additionalDisplay(BiConsumer> additionalDisplay) { - internal.additionalDisplay(additionalDisplay); - return this; - } - - public MultiblockMachineBuilderWrapper recoveryItems(Supplier items) { - internal.recoveryItems(items); - return this; - } - - public MultiblockMachineBuilderWrapper recoveryStacks(Supplier stacks) { - internal.recoveryStacks(stacks); - return this; - } - - public MultiblockMachineBuilderWrapper definition(Function definition) { - internal.definition(definition); - return this; - } - - public MultiblockMachineBuilderWrapper blockEntityFactory(MachineInstanceFactory machine) { - internal.instanceFactory(machine); - return this; - } - - public MultiblockMachineBuilderWrapper model(@Nullable MachineBuilder.ModelInitializer model) { - internal.model(model); - return this; - } - - public MultiblockMachineBuilderWrapper blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { - internal.blockModel(blockModel); - return this; - } - - public MultiblockMachineBuilderWrapper shape(VoxelShape shape) { - internal.shape(shape); - return this; - } - - public MultiblockMachineBuilderWrapper multiblockPreviewRenderer(boolean multiBlockWorldPreview, - boolean multiBlockXEIPreview) { - internal.multiblockPreviewRenderer(multiBlockWorldPreview, multiBlockXEIPreview); - return this; - } - - public MultiblockMachineBuilderWrapper rotationState(RotationState rotationState) { - internal.rotationState(rotationState); - return this; - } - - public MultiblockMachineBuilderWrapper hasBER(boolean hasBER) { - internal.hasBER(hasBER); - return this; - } - - public MultiblockMachineBuilderWrapper blockProp(NonNullUnaryOperator blockProp) { - internal.blockProp(blockProp); - return this; - } - - public MultiblockMachineBuilderWrapper itemProp(NonNullUnaryOperator itemProp) { - internal.itemProp(itemProp); - return this; - } - - public MultiblockMachineBuilderWrapper blockBuilder(@Nullable Consumer> blockBuilder) { - internal.blockBuilder(blockBuilder); - return this; - } - - public MultiblockMachineBuilderWrapper itemBuilder(@Nullable Consumer> itemBuilder) { - internal.itemBuilder(itemBuilder); - return this; - } - - public MultiblockMachineBuilderWrapper recipeTypes(GTRecipeType... recipeTypes) { - internal.recipeTypes(recipeTypes); - return this; - } - - public MultiblockMachineBuilderWrapper recipeType(GTRecipeType recipeTypes) { - internal.recipeType(recipeTypes); - return this; - } - - public MultiblockMachineBuilderWrapper tier(int tier) { - internal.tier(tier); - return this; - } - - public MultiblockMachineBuilderWrapper recipeOutputLimits(Reference2IntMap> map) { - internal.recipeOutputLimits(map); - return this; - } - - public MultiblockMachineBuilderWrapper addOutputLimit(RecipeCapability capability, int limit) { - internal.addOutputLimit(capability, limit); - return this; - } - - public MultiblockMachineBuilderWrapper itemColor(BiFunction itemColor) { - internal.itemColor(itemColor); - return this; - } - - public MultiblockMachineBuilderWrapper simpleModel(ResourceLocation model) { - internal.simpleModel(model); - return this; - } - - public MultiblockMachineBuilderWrapper defaultModel() { - internal.defaultModel(); - return this; - } - - public MultiblockMachineBuilderWrapper tieredHullModel(ResourceLocation model) { - internal.tieredHullModel(model); - return this; - } - - public MultiblockMachineBuilderWrapper overlayTieredHullModel(ResourceLocation overlayModel) { - internal.overlayTieredHullModel(overlayModel); - return this; - } - - public MultiblockMachineBuilderWrapper colorOverlayTieredHullModel(ResourceLocation overlay) { - internal.colorOverlayTieredHullModel(overlay); - return this; - } - - public MultiblockMachineBuilderWrapper colorOverlayTieredHullModel(ResourceLocation overlay, - @Nullable ResourceLocation pipeOverlay, - @Nullable ResourceLocation emissiveOverlay) { - internal.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); - return this; - } - - public MultiblockMachineBuilderWrapper workableTieredHullModel(ResourceLocation workableModel) { - internal.workableTieredHullModel(workableModel); - return this; - } - - public MultiblockMachineBuilderWrapper simpleGeneratorModel(ResourceLocation workableModel) { - internal.simpleGeneratorModel(workableModel); - return this; - } - - public MultiblockMachineBuilderWrapper workableCasingModel(ResourceLocation baseCasing, - ResourceLocation overlayModel) { - internal.workableCasingModel(baseCasing, overlayModel); - return this; - } - - public MultiblockMachineBuilderWrapper sidedOverlayCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { - internal.sidedOverlayCasingModel(baseCasing, workableModel); - return this; - } - - public MultiblockMachineBuilderWrapper sidedWorkableCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { - internal.sidedWorkableCasingModel(baseCasing, workableModel); - return this; - } - - public MultiblockMachineBuilderWrapper overlaySteamHullModel(ResourceLocation overlayModel) { - internal.overlaySteamHullModel(overlayModel); - return this; - } - - public MultiblockMachineBuilderWrapper colorOverlaySteamHullModel(ResourceLocation overlay, - @Nullable ResourceLocation pipeOverlay, - @Nullable ResourceLocation emissiveOverlay) { - internal.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); - return this; - } - - public MultiblockMachineBuilderWrapper colorOverlaySteamHullModel(ResourceLocation overlay) { - internal.colorOverlaySteamHullModel(overlay); - return this; - } - - public MultiblockMachineBuilderWrapper workableSteamHullModel(boolean isHighPressure, - ResourceLocation workableModel) { - internal.workableSteamHullModel(isHighPressure, workableModel); - return this; - } - - public MultiblockMachineBuilderWrapper tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { - internal.tooltipBuilder(tooltipBuilder); - return this; - } - - public MultiblockMachineBuilderWrapper appearance(@Nullable Supplier state) { - internal.appearance(state); - return this; - } - - public MultiblockMachineBuilderWrapper appearanceBlock(Supplier block) { - internal.appearanceBlock(block); - return this; - } - - public MultiblockMachineBuilderWrapper langValue(@Nullable String langValue) { - internal.langValue(langValue); - return this; - } - - public MultiblockMachineBuilderWrapper tooltips(Component... components) { - internal.tooltips(components); - return this; - } - - public MultiblockMachineBuilderWrapper conditionalTooltip(Component component, Supplier condition) { - internal.conditionalTooltip(component, condition.get()); - return this; - } - - public MultiblockMachineBuilderWrapper conditionalTooltip(Component component, boolean condition) { - internal.conditionalTooltip(component, condition); - return this; - } - - public MultiblockMachineBuilderWrapper abilities(PartAbility... abilities) { - internal.abilities(abilities); - return this; - } - - public MultiblockMachineBuilderWrapper paintingColor(int paintingColor) { - internal.paintingColor(paintingColor); - return this; - } - - public MultiblockMachineBuilderWrapper recipeModifier(RecipeModifier recipeModifier) { - internal.recipeModifier(recipeModifier); - return this; - } - - public MultiblockMachineBuilderWrapper recipeModifier(RecipeModifier recipeModifier, - boolean alwaysTryModifyRecipe) { - internal.recipeModifier(recipeModifier, alwaysTryModifyRecipe); - return this; - } - - public MultiblockMachineBuilderWrapper recipeModifiers(RecipeModifier... recipeModifiers) { - internal.recipeModifiers(recipeModifiers); - return this; - } - - public MultiblockMachineBuilderWrapper recipeModifiers(boolean alwaysTryModifyRecipe, - RecipeModifier... recipeModifiers) { - internal.recipeModifiers(alwaysTryModifyRecipe, recipeModifiers); - return this; - } - - public MultiblockMachineBuilderWrapper noRecipeModifier() { - internal.noRecipeModifier(); - return this; - } - - public MultiblockMachineBuilderWrapper alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { - internal.alwaysTryModifyRecipe(alwaysTryModifyRecipe); - return this; - } - - public MultiblockMachineBuilderWrapper beforeWorking(BiPredicate beforeWorking) { - internal.beforeWorking(beforeWorking); - return this; - } - - public MultiblockMachineBuilderWrapper onWorking(Predicate onWorking) { - internal.onWorking(onWorking); - return this; - } - - public MultiblockMachineBuilderWrapper onWaiting(Consumer onWaiting) { - internal.onWaiting(onWaiting); - return this; - } - - public MultiblockMachineBuilderWrapper afterWorking(Consumer afterWorking) { - internal.afterWorking(afterWorking); - return this; - } - - public MultiblockMachineBuilderWrapper regressWhenWaiting(boolean regressWhenWaiting) { - internal.regressWhenWaiting(regressWhenWaiting); - return this; - } - - public MultiblockMachineBuilderWrapper onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { - internal.onBlockEntityRegister(onBlockEntityRegister); - return this; - } - - public MultiblockMachineBuilderWrapper allowExtendedFacing(boolean allowExtendedFacing) { - internal.allowExtendedFacing(allowExtendedFacing); - return this; - } - - @Override - public void generateMachineModels() { - generateMachineModel(internal, object); - } - - @Override - public void generateAssets(KubeAssetGenerator generator) { - final ResourceLocation id = this.id; - generator.itemModel(id, gen -> gen.parent(id.withPrefix("block/machine/"))); - } - - @Override - public void generateLang(LangKubeEvent lang) { - if (object != null && object.getLangValue() != null) { - lang.add(id.getNamespace(), object.getDescriptionId(), object.getLangValue()); - } - } - - public MultiblockMachineDefinition createObject() { - return internal.register(); - } - - public static MultiblockMachineBuilderWrapper createKJSMulti(ResourceLocation id) { - var baseBuilder = new MultiblockMachineBuilder<>(GTRegistrate.createIgnoringListenerErrors(id.getNamespace()), - id.getPath(), - MetaMachineBlock::new, - MetaMachineItem::new, - WorkableElectricMultiblockMachine::new); - return new MultiblockMachineBuilderWrapper(id, baseBuilder); - } - - public static MultiblockMachineBuilderWrapper createKJSMulti(ResourceLocation id, - KJSTieredMachineBuilder.CreationFunction machine) { - var baseBuilder = new MultiblockMachineBuilder<>(GTRegistrate.createIgnoringListenerErrors(id.getNamespace()), - id.getPath(), - MetaMachineBlock::new, - MetaMachineItem::new, - machine::create); - return new MultiblockMachineBuilderWrapper(id, baseBuilder); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java index 2f36a20b633..4ea86448fac 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java @@ -31,8 +31,7 @@ public class MaterialBuilderWrapper extends BuilderBase { public MaterialBuilderWrapper(ResourceLocation id) { super(id); - this.internal = new Material.Builder(GTRegistrate.createIgnoringListenerErrors(id.getNamespace()), id); - this.dummyBuilder = true; + this.internal = new Material.Builder(GTRegistrate.create(id.getNamespace(), false), id); } /* diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java index de5ee04a39c..e0eff079a0d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java @@ -60,11 +60,9 @@ private static void handleRegistryEvent(ResourceKey> registryKey for (BuilderBase builder : objStorage) { if (builder.dummyBuilder) { - // don't actually register anything here, the wrapper builders register themselves with Registrate - builder.createTransformedObject(); - } else { - event.register(registryKey, builder.id, builder::createTransformedObject); + continue; } + event.register(registryKey, builder.id, builder::createTransformedObject); if (DevProperties.get().logRegistryEventObjects) { ConsoleJS.STARTUP.info("+ " + registryKey.location() + " | " + builder.id); From 10de917c3f21a2e9025230b33a57baec0063a873 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 18 Jul 2026 20:50:25 +1000 Subject: [PATCH 21/33] some organisation changes --- .../api/data/chemical/material/Material.java | 3 + .../gtceu/api/data/tag/TagPrefix.java | 9 ++ .../api/data/worldgen/GTLayerPattern.java | 2 +- .../worldgen/bedrockore/WeightedMaterial.java | 2 +- .../indicators/SurfaceIndicatorGenerator.java | 2 +- .../generator/veins/ClassicVeinGenerator.java | 2 +- .../generator/veins/DikeVeinGenerator.java | 2 +- .../generator/veins/GeodeVeinGenerator.java | 10 +- .../veins/StandardVeinGenerator.java | 2 +- .../generator/veins/VeinedVeinGenerator.java | 2 +- .../api/multiblock/error/GTPatternErrors.java | 3 +- .../gtceu/api/registry/GTRegistries.java | 19 ++-- .../api/registry/registrate/GTRegistrate.java | 6 +- .../gtceu/common/data/GTDimensionMarkers.java | 2 +- .../common/data/item/GTDataComponents.java | 2 +- .../common/data/machines/GTMachineUtils.java | 2 +- .../machine/trait/miner/LargeMinerLogic.java | 3 +- .../machine/trait/miner/MinerLogic.java | 3 +- .../gregtechceu/gtceu/core/MixinHelpers.java | 4 +- .../core/mixins/neoforge/GameDataMixin.java | 4 +- .../integration/kjs/GregTechKubeJSPlugin.java | 95 ++++++------------- .../widgets/OreVeinRecipeWidget.java | 12 +-- 22 files changed, 88 insertions(+), 103 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 cf6d6d5fb34..aafa20e7536 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 @@ -23,6 +23,7 @@ import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.TagUtil; +import com.mojang.serialization.Codec; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; @@ -50,6 +51,8 @@ public class Material { + public static final Codec CODEC = GTRegistries.MATERIALS.byNameCodec(); + /** * Basic Info of this Material. * diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java index e5a619b4b82..333444774e9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/tag/TagPrefix.java @@ -13,6 +13,7 @@ import com.gregtechceu.gtceu.api.item.MaterialBlockItem; 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.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialBlocks; import com.gregtechceu.gtceu.common.data.GTMaterialItems; @@ -939,6 +940,14 @@ public boolean isEmpty() { .unformattedTagPath("surface_rocks") .materialAmount(GTValues.M / 3); + public static TagPrefix get(String id) { + return GTRegistries.TAG_PREFIXES.get(GTCEu.id(id)); + } + + public static TagPrefix get(ResourceLocation id) { + return GTRegistries.TAG_PREFIXES.get(id); + } + public static class Conditions { public static final Predicate hasToolProperty = mat -> mat.hasProperty(PropertyKey.TOOL); 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 35322b64f57..0743486f00d 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 @@ -85,7 +85,7 @@ public static class Layer { // spotless:off public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.list(Codec.either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.byNameCodec())).fieldOf("targets").forGetter(layer -> layer.targets), + Codec.list(Codec.either(TargetBlockState.CODEC.listOf(), Material.CODEC)).fieldOf("targets").forGetter(layer -> layer.targets), Codec.intRange(0, Integer.MAX_VALUE).fieldOf("min_size").forGetter(layer -> layer.minSize), Codec.intRange(0, Integer.MAX_VALUE).fieldOf("max_size").forGetter(layer -> layer.maxSize), Codec.intRange(0, Integer.MAX_VALUE).fieldOf("weight").forGetter(layer -> layer.weight) 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 ee82158b318..36637c06d06 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 @@ -11,7 +11,7 @@ public record WeightedMaterial(Material material, int weight) implements Weighte public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( - GTRegistries.MATERIALS.byNameCodec().fieldOf("material").forGetter(WeightedMaterial::material), + Material.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 47f68b456d0..dda8a83a5a4 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 @@ -45,7 +45,7 @@ public class SurfaceIndicatorGenerator extends IndicatorGenerator { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance .group( - Codec.either(BlockState.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("block") + Codec.either(BlockState.CODEC, Material.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 a8944c774a5..463b5a69e24 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 @@ -230,7 +230,7 @@ public static class Layer { // spotless:off public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.byNameCodec()).fieldOf("targets").forGetter(layer -> layer.target), + Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), Material.CODEC).fieldOf("targets").forGetter(layer -> layer.target), ExtraCodecs.intRange(-1, Integer.MAX_VALUE).optionalFieldOf("layers", -1).forGetter(layer -> layer.layers) ).apply(instance, Layer::new)); // spotless:on 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 01deedd4e95..b4532b20666 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 @@ -181,7 +181,7 @@ public record DikeBlockDefinition(Either, Material> block // spotless:off public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.byNameCodec()).fieldOf("block").forGetter(x -> x.block), + Codec.either(TargetBlockState.CODEC.listOf(), Material.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), Codec.INT.fieldOf("max_y").orElse(-64).forGetter(x -> x.maxY)) 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 550c5eee1f9..431357e3dd2 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 @@ -318,11 +318,11 @@ public record GeodeBlockSettings(Either fillingPro // spotless:off public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( - Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("filling_provider").forGetter(config -> config.fillingProvider), - Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("inner_layer_provider").forGetter(config -> config.innerLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("alternate_inner_layer_provider").forGetter(config -> config.alternateInnerLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("middle_layer_provider").forGetter(config -> config.middleLayerProvider), - Codec.either(BlockStateProvider.CODEC, GTRegistries.MATERIALS.byNameCodec()).fieldOf("outer_layer_provider").forGetter(config -> config.outerLayerProvider), + Codec.either(BlockStateProvider.CODEC, Material.CODEC).fieldOf("filling_provider").forGetter(config -> config.fillingProvider), + Codec.either(BlockStateProvider.CODEC, Material.CODEC).fieldOf("inner_layer_provider").forGetter(config -> config.innerLayerProvider), + Codec.either(BlockStateProvider.CODEC, Material.CODEC).fieldOf("alternate_inner_layer_provider").forGetter(config -> config.alternateInnerLayerProvider), + Codec.either(BlockStateProvider.CODEC, Material.CODEC).fieldOf("middle_layer_provider").forGetter(config -> config.middleLayerProvider), + Codec.either(BlockStateProvider.CODEC, Material.CODEC).fieldOf("outer_layer_provider").forGetter(config -> config.outerLayerProvider), ExtraCodecs.nonEmptyList(BlockState.CODEC.listOf()).fieldOf("inner_placements").forGetter(config -> config.innerPlacements), TagKey.hashedCodec(Registries.BLOCK).fieldOf("cannot_replace").forGetter(config -> config.cannotReplace), TagKey.hashedCodec(Registries.BLOCK).fieldOf("invalid_blocks").forGetter(config -> config.invalidBlocks), 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 c6c86b82ad3..24f72e59271 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 @@ -48,7 +48,7 @@ public class StandardVeinGenerator extends VeinGenerator { BuiltInRegistries.BLOCK.byNameCodec().fieldOf("deep_block").forGetter(ext -> ext.deepBlock.get()), BuiltInRegistries.BLOCK.byNameCodec().fieldOf("nether_block").forGetter(ext -> ext.netherBlock.get()) ).apply(instance, StandardVeinGenerator::new)); - public static final MapCodec CODEC_LIST = Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.byNameCodec()) + public static final MapCodec CODEC_LIST = Codec.either(OreConfiguration.TargetBlockState.CODEC.listOf(), Material.CODEC) .fieldOf("targets") .xmap(StandardVeinGenerator::new, StandardVeinGenerator::getBlocks); // spotless:on 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 3b87401442c..9cc5ddce630 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 @@ -56,7 +56,7 @@ public class VeinedVeinGenerator extends VeinGenerator { public static final Codec, Material>> BLOCK_ENTRY_CODEC = Codec - .either(TargetBlockState.CODEC.listOf(), GTRegistries.MATERIALS.byNameCodec()); + .either(TargetBlockState.CODEC.listOf(), Material.CODEC); // spotless:off public static final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> instance.group( VeinBlockDefinition.CODEC.listOf().fieldOf("ore_blocks").forGetter(it -> it.oreBlocks), diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java index 49b3a511d77..50719e0576b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/error/GTPatternErrors.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.multiblock.error; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.neoforged.bus.api.IEventBus; @@ -10,7 +11,7 @@ public class GTPatternErrors { private static final DeferredRegister PATTERN_ERRORS = DeferredRegister - .create(GTRegistries.Keys.PATTERN_ERROR_TYPE, "gtceu"); + .create(GTRegistries.Keys.PATTERN_ERROR_TYPE, GTCEu.MOD_ID); public static DeferredHolder PLACEHOLDER_ERROR = register( PlaceholderError.TYPE); 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 2b7141774ce..3147e30ba30 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/GTRegistries.java @@ -34,9 +34,10 @@ import java.util.*; +@SuppressWarnings("unused") public final class GTRegistries { - private static final HashMap> REGISTRIES = new HashMap<>(); + private static final LinkedHashMap> LOAD_ORDER = new LinkedHashMap<>(); private GTRegistries() {} @@ -79,15 +80,17 @@ private Keys() {} public static final ResourceKey>> TOOL_BEHAVIOR = makeRegistryKey(GTCEu.id("tool_behavior")); } - // spotless:off - // GT Registries + + // Be careful when changing the order of these static fields, as changing the order of them also changes the order of registry load. + public static final Registry ELEMENTS = makeRegistry(Keys.ELEMENT); public static final MaterialRegistry MATERIALS = makeMaterialRegistry(); public static final Registry TAG_PREFIXES = makeRegistry(Keys.TAG_PREFIX); public static final Registry SOUNDS = makeRegistry(Keys.SOUND, false); public static final Registry CHANCE_LOGICS = makeRegistry(Keys.CHANCE_LOGIC); + public static final Registry RECIPE_TYPE = makeRegistry(Keys.RECIPE_TYPE); public static final Registry> RECIPE_CAPABILITIES = makeRegistry(Keys.RECIPE_CAPABILITY); public static final Registry> RECIPE_CONDITIONS = makeRegistry(Keys.RECIPE_CONDITION); public static final Registry RECIPE_CATEGORIES = makeRegistry(Keys.RECIPE_CATEGORY); @@ -117,19 +120,23 @@ public static MappedRegistry makeRegistry(ResourceKey> key, b MappedRegistry registry = (MappedRegistry) new RegistryBuilder<>(key) .sync(sync) .create(); - REGISTRIES.put(key.location(), registry); + LOAD_ORDER.put(key.location(), registry); return registry; } private static MaterialRegistry makeMaterialRegistry() { MaterialRegistry registry = new MaterialRegistry(Keys.MATERIAL); - REGISTRIES.put(Keys.MATERIAL.location(), registry); + LOAD_ORDER.put(Keys.MATERIAL.location(), registry); return registry; } + public static List getRegistryOrder() { + return List.copyOf(LOAD_ORDER.keySet()); + } + @UnmodifiableView public static Collection> getRegistries() { - return REGISTRIES.values(); + return LOAD_ORDER.values(); } public static void init() {} 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 05fc8fde244..a37416be4fd 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 @@ -24,6 +24,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; +import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; @@ -59,6 +60,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; import java.util.*; import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; @@ -69,6 +71,8 @@ import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.Conditions.hasOreProperty; +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault public class GTRegistrate extends AbstractRegistrate { private static final Map EXISTING_REGISTRATES = new Object2ObjectOpenHashMap<>(); @@ -350,7 +354,7 @@ public GTBlockBuilder block(P parent, String name, } private @Nullable RegistryEntry currentTab; - private static final Map, RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); + private static final Map, @Nullable RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); public @Nullable RegistryEntry creativeModeTab() { return this.currentTab; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java index 7628276d070..54bcd5e511f 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTDimensionMarkers.java @@ -19,7 +19,7 @@ public class GTDimensionMarkers { static { - REGISTRATE.creativeModeTab(() -> null); + REGISTRATE.resetCreativeModeTab(); } private static final DeferredRegister DIMENSION_MARKER = DeferredRegister diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java index 90b25e5757b..4cc0fbac58c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/item/GTDataComponents.java @@ -78,7 +78,7 @@ public static void init(IEventBus bus) { // Material-related public static final DeferredHolder, DataComponentType> ITEM_MATERIAL = DATA_COMPONENTS .registerComponentType("item_material", builder -> builder - .persistent(GTRegistries.MATERIALS.byNameCodec()) + .persistent(Material.CODEC) .networkSynchronized(ByteBufCodecs.registry(GTRegistries.Keys.MATERIAL))); // Armor-related diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 3513a7556ca..753d8dca88b 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -374,7 +374,7 @@ public static MachineDefinition[] registerConverter(GTRegistrate registrate, int final var tab = registrate.creativeModeTab(); if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { - registrate.creativeModeTab(() -> null); + registrate.resetCreativeModeTab(); } MachineDefinition[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java index c2f02cb9f1a..a5bfb535ccd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/miner/LargeMinerLogic.java @@ -130,8 +130,7 @@ protected void dropPostProcessing(NonNullList blockDrops, List> validMachineClasses() { @Override public void onMachineLoad() { if (getMachine().getLevel() != null) { - var registry = getMachine().getLevel().registryAccess().registryOrThrow(Registries.ENCHANTMENT); - this.pickaxeTool.enchant(registry.getHolderOrThrow(Enchantments.FORTUNE), fortune); + this.pickaxeTool.enchant(getMachine().getLevel().registryAccess().holderOrThrow(Enchantments.FORTUNE), fortune); } this.inputItemHandler = new ItemRecipeHandler(IO.IN, diff --git a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 5a87016da76..6890eaf4aa1 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -290,8 +290,8 @@ public static void generateGTDynamicLoot(TriConsumer fortune = access.registryOrThrow(Registries.ENCHANTMENT) - .getHolderOrThrow(Enchantments.FORTUNE); + Holder fortune = access.holderOrThrow(Enchantments.FORTUNE); + GTMaterialBlocks.MATERIAL_BLOCKS.rowMap().forEach((prefix, map) -> { if (TagPrefix.ORES.containsKey(prefix)) { final TagPrefix.OreType type = TagPrefix.ORES.get(prefix); diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java index a609b09724e..3fdbb99a639 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/neoforge/GameDataMixin.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.neoforged.neoforge.registries.GameData; @@ -18,8 +19,7 @@ public class GameDataMixin { @ModifyExpressionValue(method = "getRegistrationOrder", at = @At(value = "NEW", target = "java/util/LinkedHashSet")) private static LinkedHashSet gtceu$injectGTRegistriesFirst(LinkedHashSet ordered) { - ordered.addAll(BuiltInRegistries.REGISTRY.keySet().stream().filter(r -> r.getNamespace().equals(GTCEu.MOD_ID)) - .sorted(ResourceLocation::compareNamespaced).toList()); + ordered.addAll(GTRegistries.getRegistryOrder()); return ordered; } } 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 6476902fe51..ebb792df109 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -100,9 +100,11 @@ import com.gregtechceu.gtceu.integration.kjs.recipe.KJSHelpers; import com.gregtechceu.gtceu.integration.kjs.recipe.components.*; +import dev.latvian.mods.kubejs.util.RegistryAccessContainer; +import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; @@ -322,75 +324,43 @@ public void registerBindings(BindingRegistry event) { event.add("CapeRegistry", CapeRegistry.class); } + private void registryObjectTypeWrapper(TypeWrapperRegistry typeWrappers, Class clazz, ResourceKey> registry) { + typeWrappers.register(clazz, (RegistryAccessContainer registries, Object o) -> { + o = Wrapper.unwrapped(o); + if (clazz.isInstance(o)) return clazz.cast(o); + GTResourceLocation wrapper = GTResourceLocation.wrap(o); + if (wrapper == null) return null; + return registries.access().registryOrThrow(registry).get(wrapper.wrapped()); + }); + } + @Override public void registerTypeWrappers(TypeWrapperRegistry registry) { registry.register(GTResourceLocation.class, GTResourceLocation::wrap); - registry.register(GTRecipeType.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof GTRecipeType recipeType) return recipeType; - if (o instanceof CharSequence chars) return GTRecipeTypes.get(chars.toString()); - return null; - }); - registry.register(GTRecipeCategory.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof GTRecipeCategory recipeCategory) return recipeCategory; - if (o instanceof CharSequence chars) return GTRecipeCategories.get(chars.toString()); - return null; - }); - registry.register(Element.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof Element element) return element; - if (o instanceof CharSequence chars) return GTRegistries.ELEMENTS.get(GTCEu.id(chars.toString())); - return null; - }); - registry.register(Material.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof Material material) return material; - if (o instanceof CharSequence chars) return GTMaterials.get(chars.toString()); - return null; - }); - registry.register(MachineDefinition.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof MachineDefinition definition) return definition; - if (o instanceof CharSequence chars) return GTMachines.get(chars.toString()); - return null; - }); + registryObjectTypeWrapper(registry, Material.class, GTRegistries.Keys.MATERIAL); + registryObjectTypeWrapper(registry, Element.class, GTRegistries.Keys.ELEMENT); + registryObjectTypeWrapper(registry, TagPrefix.class, GTRegistries.Keys.TAG_PREFIX); + registryObjectTypeWrapper(registry, MaterialIconSet.class, GTRegistries.Keys.MATERIAL_ICON_SET); - registry.register(TagPrefix.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof TagPrefix tagPrefix) return tagPrefix; - if (o instanceof ResourceLocation resLoc) return GTRegistries.TAG_PREFIXES.get(resLoc); - GTResourceLocation wrapper = GTResourceLocation.wrap(o); - if (wrapper == null) return null; - return GTRegistries.TAG_PREFIXES.get(wrapper.wrapped()); - }); - registry.register(MaterialEntry.class, MaterialEntry::of); + registryObjectTypeWrapper(registry, GTRecipeType.class, GTRegistries.Keys.RECIPE_TYPE); + registryObjectTypeWrapper(registry, GTRecipeCategory.class, GTRegistries.Keys.RECIPE_CATEGORY); + registryObjectTypeWrapper(registry, ChanceLogic.class, GTRegistries.Keys.CHANCE_LOGIC); - registry.register(RecipeCapability.class, o -> { + registryObjectTypeWrapper(registry, MachineDefinition.class, GTRegistries.Keys.MACHINE); + registryObjectTypeWrapper(registry, IWorldGenLayer.class, GTRegistries.Keys.WORLD_GEN_LAYER); + + registry.register(RecipeCapability.class, (RegistryAccessContainer registries, Object o) -> { o = Wrapper.unwrapped(o); if (o instanceof RecipeCapability capability) return capability; - if (o instanceof ResourceLocation id) return GTRegistries.RECIPE_CAPABILITIES.get(id); - GTResourceLocation wrapper = GTResourceLocation.wrap(o); - if (wrapper == null) return null; - return GTRegistries.RECIPE_CAPABILITIES.get(wrapper.wrapped()); - }); - registry.register(ChanceLogic.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof ChanceLogic capability) return capability; - if (o instanceof ResourceLocation id) return GTRegistries.CHANCE_LOGICS.get(id); GTResourceLocation wrapper = GTResourceLocation.wrap(o); if (wrapper == null) return null; - return GTRegistries.CHANCE_LOGICS.get(wrapper.wrapped()); + return registries.access().registryOrThrow(GTRegistries.Keys.RECIPE_CAPABILITY).get(wrapper.wrapped()); }); - registry.register(MaterialIconSet.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof MaterialIconSet iconSet) return iconSet; - if (o instanceof CharSequence chars) return GTRegistries.MATERIAL_ICON_SETS - .get(GTCEu.id(chars.toString())); - return null; - }); + + registry.register(MaterialEntry.class, MaterialEntry::of); + registry.register(MaterialStack.class, o -> { o = Wrapper.unwrapped(o); if (o instanceof MaterialStack stack) return stack; @@ -407,13 +377,6 @@ public void registerTypeWrappers(TypeWrapperRegistry registry) { return null; }); - registry.register(IWorldGenLayer.class, o -> { - o = Wrapper.unwrapped(o); - if (o instanceof IWorldGenLayer layer) return layer; - if (o instanceof CharSequence chars) return GTRegistries.WORLD_GEN_LAYERS - .get(GTCEu.id(chars.toString())); - return null; - }); registry.registerMapCodec(HeightRangePlacement.class, HeightRangePlacement.CODEC); registry.registerCodec(BiomeWeightModifier.class, BiomeWeightModifier.CODEC, BiomeWeightModifier.EMPTY); registry.registerCodec(VeinGenerator.class, VeinGenerator.DIRECT_CODEC, NoopVeinGenerator.INSTANCE); @@ -425,7 +388,7 @@ public void registerTypeWrappers(TypeWrapperRegistry registry) { if (o instanceof IWorldGenLayer.RuleTestSupplier supplier) return supplier; if (o instanceof CharSequence) { return () -> BlockStatePredicate.wrap(cx, o).asRuleTest(); - } ; + } return () -> BlockStatePredicate.wrapRuleTest(cx, o); }); diff --git a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java index 636dbc008aa..b1aa669ad04 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/recipeviewer/widgets/OreVeinRecipeWidget.java @@ -184,21 +184,21 @@ public static DimensionMarker[] getDimensionMarkers(Set> dime } public static String getOreName(GTOreDefinition oreDefinition) { - ResourceLocation id = Minecraft.getInstance().level.registryAccess() + ResourceLocation id = Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() .registryOrThrow(GTRegistries.Keys.ORE_VEIN).getKey(oreDefinition); - return "gtceu.jei.ore_vein." + id.getPath(); + return "gtceu.jei.ore_vein." + Objects.requireNonNull(id).getPath(); } public static String getFluidName(BedrockFluidDefinition fluid) { - ResourceLocation id = Minecraft.getInstance().level.registryAccess() + ResourceLocation id = Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() .registryOrThrow(GTRegistries.Keys.BEDROCK_FLUID).getKey(fluid); - return "gtceu.jei.bedrock_fluid." + id.getPath(); + return "gtceu.jei.bedrock_fluid." + Objects.requireNonNull(id).getPath(); } public static String getBedrockOreName(BedrockOreDefinition oreDefinition) { - ResourceLocation id = Minecraft.getInstance().level.registryAccess() + ResourceLocation id = Objects.requireNonNull(Minecraft.getInstance().level).registryAccess() .registryOrThrow(GTRegistries.Keys.BEDROCK_ORE).getKey(oreDefinition); - return "gtceu.jei.bedrock_ore." + id.getPath(); + return "gtceu.jei.bedrock_ore." + Objects.requireNonNull(id).getPath(); } private static String veinYield(BedrockFluidDefinition fluidDefinition) { From f5d5107930b63764a737c4bec16f8efab17092de Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 28 Jun 2026 14:49:04 +0300 Subject: [PATCH 22/33] Add more nullability annotations and change MachineBuilder's generics to be single characters instead of whole words --- .../gtceu/api/machine/MachineDefinition.java | 11 +- .../api/registry/registrate/GTRegistrate.java | 45 ++-- .../registry/registrate/MachineBuilder.java | 224 +++++++++--------- .../registrate/MultiblockMachineBuilder.java | 42 ++-- .../common/data/machines/GTMachineUtils.java | 15 +- 5 files changed, 162 insertions(+), 175 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index eb01bac89fc..524bffa8d12 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -37,6 +37,7 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.*; /** @@ -117,8 +118,7 @@ public class MachineDefinition implements Supplier { private boolean allowCoverOnFront; @Getter @Setter - @Nullable - private PanelFactory UI; + private @Nullable PanelFactory UI; @Getter @Setter private String themeId = ThemeAPI.DEFAULT_ID; @@ -129,6 +129,7 @@ public class MachineDefinition implements Supplier { @Getter @Setter(onMethod_ = @ApiStatus.Internal) private StateDefinition stateDefinition; + @SuppressWarnings("NotNullFieldNotInitialized") @Accessors(fluent = true) @Getter private MachineRenderState defaultRenderState; @@ -193,7 +194,7 @@ public BlockState defaultBlockState() { } @Override - public boolean equals(Object o) { + public boolean equals(@Nullable Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; @@ -207,10 +208,10 @@ public int hashCode() { return id.hashCode(); } - static final ThreadLocal STATE = new ThreadLocal<>(); + static final ThreadLocal<@Nullable MachineDefinition> STATE = new ThreadLocal<>(); public static MachineDefinition getBuilt() { - return STATE.get(); + return Objects.requireNonNull(STATE.get(), "Not building a machine definition currently"); } public static void setBuilt(MachineDefinition state) { 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 cb28e645194..86af1b79982 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 @@ -187,34 +187,33 @@ protected

NoConfigBuilder createCreativ }); } - public MachineBuilder machine(String name, - Function definitionFactory, - BiFunction blockFactory, - BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - return new MachineBuilder<>(this, name, definitionFactory, - blockFactory, itemFactory, blockEntityFactory); + // Machines + + public > MachineBuilder machine(String name, + Function definitionFactory, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return new MachineBuilder<>(this, name, definitionFactory, blockFactory, itemFactory, blockEntityFactory); } - public MachineBuilder machine(String name, - MachineInstanceFactory blockEntityFactory) { - return new MachineBuilder<>(this, name, MachineDefinition::new, - MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); + public > MachineBuilder machine(String name, + MachineInstanceFactory blockEntityFactory) { + return new MachineBuilder<>(this, name, MachineDefinition::new, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); } - public MultiblockMachineBuilder multiblock(String name, - BiFunction blockFactory, - BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - return new MultiblockMachineBuilder<>(this, name, - blockFactory, itemFactory, blockEntityFactory); + // Multiblock machines + + public MultiblockMachineBuilder multiblock(String name, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return new MultiblockMachineBuilder<>(this, name, blockFactory, itemFactory, blockEntityFactory); } - public MultiblockMachineBuilder multiblock(String name, - MachineInstanceFactory blockEntityFactory) { - return new MultiblockMachineBuilder<>(this, name, MetaMachineBlock::new, MetaMachineItem::new, - blockEntityFactory); + public MultiblockMachineBuilder multiblock(String name, + MachineInstanceFactory blockEntityFactory) { + return new MultiblockMachineBuilder<>(this, name, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); } // Recipe types @@ -349,7 +348,7 @@ public GTBlockBuilder block(P parent, String name, } private @Nullable RegistryEntry currentTab; - private static final Map, RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); + private static final Map, @Nullable RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); public @Nullable RegistryEntry creativeModeTab() { return this.currentTab; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 5cfbac9ddf5..ccd0f651754 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -68,6 +68,7 @@ import lombok.experimental.Accessors; import lombok.experimental.Tolerate; import org.apache.commons.lang3.ArrayUtils; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -81,19 +82,18 @@ @MethodsReturnNonnullByDefault @RemapPrefixForJS("kjs$") @Accessors(chain = true, fluent = true) -public class MachineBuilder> { +public class MachineBuilder> { protected final GTRegistrate registrate; protected final String name; - protected final BiFunction blockFactory; + protected final BiFunction blockFactory; protected final BiFunction itemFactory; - @Setter - protected MachineInstanceFactory instanceFactory; - @Setter - protected Function definition; + @Setter(onMethod_ = @ApiStatus.Internal) + protected MachineInstanceFactory instanceFactory; + @Setter(onMethod_ = @ApiStatus.Internal) + protected Function definition; @Nullable @Getter private MachineBuilder.ModelInitializer model = null; @@ -141,20 +141,18 @@ public class MachineBuilder appearance; @Getter // getter for KJS - @Nullable - private String langValue = null; + private @Nullable String langValue = null; public MachineBuilder(GTRegistrate registrate, String name, - Function definition, - BiFunction blockFactory, + Function definition, + BiFunction blockFactory, BiFunction itemFactory, - MachineInstanceFactory instanceFactory) { + MachineInstanceFactory instanceFactory) { this.registrate = registrate; this.name = name; this.blockFactory = blockFactory; @@ -164,146 +162,146 @@ public MachineBuilder(GTRegistrate registrate, String name, } @SuppressWarnings("unchecked") - public SELF getThis() { - return (SELF) this; + public S getThis() { + return (S) this; } - public SELF blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { + public S blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { this.blockModel = blockModel; return getThis(); } - public SELF shape(VoxelShape shape) { + public S shape(VoxelShape shape) { this.shape = shape; return getThis(); } - public SELF rotationState(RotationState rotationState) { + public S rotationState(RotationState rotationState) { this.rotationState = rotationState; return getThis(); } - public SELF allowExtendedFacing(boolean allowExtendedFacing) { + public S allowExtendedFacing(boolean allowExtendedFacing) { this.allowExtendedFacing = allowExtendedFacing; return getThis(); } - public SELF hasBER(boolean hasBER) { + public S hasBER(boolean hasBER) { this.hasBER = hasBER; return getThis(); } - public SELF renderMultiblockWorldPreview(boolean renderMultiblockWorldPreview) { + public S renderMultiblockWorldPreview(boolean renderMultiblockWorldPreview) { this.renderMultiblockWorldPreview = renderMultiblockWorldPreview; return getThis(); } - public SELF renderMultiblockXEIPreview(boolean renderMultiblockXEIPreview) { + public S renderMultiblockXEIPreview(boolean renderMultiblockXEIPreview) { this.renderMultiblockXEIPreview = renderMultiblockXEIPreview; return getThis(); } - public SELF blockProp(NonNullUnaryOperator blockProp) { + public S blockProp(NonNullUnaryOperator blockProp) { this.blockProp = blockProp; return getThis(); } - public SELF itemProp(NonNullUnaryOperator itemProp) { + public S itemProp(NonNullUnaryOperator itemProp) { this.itemProp = itemProp; return getThis(); } - public SELF blockBuilder(Consumer> blockBuilder) { + public S blockBuilder(@Nullable Consumer> blockBuilder) { this.blockBuilder = blockBuilder; return getThis(); } - public SELF itemBuilder(Consumer> itemBuilder) { + public S itemBuilder(@Nullable Consumer> itemBuilder) { this.itemBuilder = itemBuilder; return getThis(); } - public SELF onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { + public S onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { this.onBlockEntityRegister = onBlockEntityRegister; return getThis(); } - public SELF tier(int tier) { + public S tier(int tier) { this.tier = tier; return getThis(); } - public SELF recipeOutputLimits(Reference2IntMap> recipeOutputLimits) { + public S recipeOutputLimits(Reference2IntMap> recipeOutputLimits) { this.recipeOutputLimits = recipeOutputLimits; return getThis(); } - public SELF paintingColor(int paintingColor) { + public S paintingColor(int paintingColor) { this.paintingColor = paintingColor; return getThis(); } - public SELF itemColor(BiFunction itemColor) { + public S itemColor(BiFunction itemColor) { this.itemColor = itemColor; return getThis(); } - public SELF tooltipBuilder(BiConsumer> tooltipBuilder) { + public S tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { this.tooltipBuilder = tooltipBuilder; return getThis(); } - public SELF alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { + public S alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { this.alwaysTryModifyRecipe = alwaysTryModifyRecipe; return getThis(); } - public SELF beforeWorking(BiPredicate beforeWorking) { + public S beforeWorking(BiPredicate beforeWorking) { this.beforeWorking = beforeWorking; return getThis(); } - public SELF onWorking(Predicate onWorking) { + public S onWorking(Predicate onWorking) { this.onWorking = onWorking; return getThis(); } - public SELF onWaiting(Consumer onWaiting) { + public S onWaiting(Consumer onWaiting) { this.onWaiting = onWaiting; return getThis(); } - public SELF afterWorking(Consumer afterWorking) { + public S afterWorking(Consumer afterWorking) { this.afterWorking = afterWorking; return getThis(); } - public SELF regressWhenWaiting(boolean regressWhenWaiting) { + public S regressWhenWaiting(boolean regressWhenWaiting) { this.regressWhenWaiting = regressWhenWaiting; return getThis(); } - public SELF allowCoverOnFront(boolean allowCoverOnFront) { + public S allowCoverOnFront(boolean allowCoverOnFront) { this.allowCoverOnFront = allowCoverOnFront; return getThis(); } - public SELF appearance(Supplier appearance) { + public S appearance(@Nullable Supplier appearance) { this.appearance = appearance; return getThis(); } - public SELF ui(PanelFactory ui) { + public S ui(@Nullable PanelFactory ui) { this.ui = ui; return getThis(); } - public SELF langValue(String langValue) { + public S langValue(@Nullable String langValue) { this.langValue = langValue; return getThis(); } - public SELF recipeType(GTRecipeType type) { + public S recipeType(GTRecipeType type) { // noinspection ConstantValue if (type == null) { GTCEu.LOGGER.error( @@ -317,12 +315,13 @@ public SELF recipeType(GTRecipeType type) { } @Tolerate - public SELF recipeTypes(GTRecipeType... types) { + public S recipeTypes(GTRecipeType... types) { List typeList = new ArrayList<>(); Collections.addAll(typeList, this.recipeTypes); for (int i = 0; i < types.length; i++) { GTRecipeType type = types[i]; + // noinspection ConstantValue if (type != null) { initRecipeMachineModelProperties(type); typeList.add(type); @@ -345,40 +344,40 @@ protected void initRecipeMachineModelProperties(GTRecipeType type) { } } - public SELF model(@Nullable MachineBuilder.ModelInitializer model) { + public S model(@Nullable MachineBuilder.ModelInitializer model) { this.model = model; return getThis(); } - public SELF simpleModel(ResourceLocation modelName) { + public S simpleModel(ResourceLocation modelName) { return model(createBasicMachineModel(modelName)); } - public SELF defaultModel() { + public S defaultModel() { return simpleModel(registrate.makeResourceLocation("block/machine/template/" + name)); } - public SELF tieredHullModel(ResourceLocation model) { + public S tieredHullModel(ResourceLocation model) { return model(createTieredHullMachineModel(model)); } - public SELF overlayTieredHullModel(String name) { + public S overlayTieredHullModel(String name) { modelProperty(GTMachineModelProperties.IS_FORMED, false); return overlayTieredHullModel( ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/machine/part/" + name)); } - public SELF overlayTieredHullModel(ResourceLocation overlayModel) { + public S overlayTieredHullModel(ResourceLocation overlayModel) { return model(createOverlayTieredHullMachineModel(overlayModel)); } - public SELF colorOverlayTieredHullModel(String overlay) { + public S colorOverlayTieredHullModel(String overlay) { return colorOverlayTieredHullModel(overlay, null, null); } - public SELF colorOverlayTieredHullModel(String overlay, - @Nullable String pipeOverlay, - @Nullable String emissiveOverlay) { + public S colorOverlayTieredHullModel(String overlay, + @Nullable String pipeOverlay, + @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/overlay/machine/" + overlay); @@ -389,36 +388,36 @@ public SELF colorOverlayTieredHullModel(String overlay, return colorOverlayTieredHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } - public SELF colorOverlayTieredHullModel(ResourceLocation overlay) { + public S colorOverlayTieredHullModel(ResourceLocation overlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); return colorOverlayTieredHullModel(overlay, null, null); } - public SELF colorOverlayTieredHullModel(ResourceLocation overlay, - @Nullable ResourceLocation pipeOverlay, - @Nullable ResourceLocation emissiveOverlay) { + public S colorOverlayTieredHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_PAINTED, false); return model(createColorOverlayTieredHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } - public SELF overlaySteamHullModel(String name) { + public S overlaySteamHullModel(String name) { modelProperty(GTMachineModelProperties.IS_FORMED, false); return overlaySteamHullModel( ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/machine/part/" + name)); } - public SELF overlaySteamHullModel(ResourceLocation overlayModel) { + public S overlaySteamHullModel(ResourceLocation overlayModel) { modelProperty(GTMachineModelProperties.IS_STEEL_MACHINE, ConfigHolder.INSTANCE.machines.steelSteamMultiblocks); return model(createOverlaySteamHullMachineModel(overlayModel)); } - public SELF colorOverlaySteamHullModel(String overlay) { + public S colorOverlaySteamHullModel(String overlay) { return colorOverlaySteamHullModel(overlay, (String) null, null); } - public SELF colorOverlaySteamHullModel(String overlay, - @Nullable String pipeOverlay, - @Nullable String emissiveOverlay) { + public S colorOverlaySteamHullModel(String overlay, + @Nullable String pipeOverlay, + @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/overlay/machine/" + overlay); @@ -430,9 +429,9 @@ public SELF colorOverlaySteamHullModel(String overlay, return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } - public SELF colorOverlaySteamHullModel(String overlay, - @Nullable ResourceLocation pipeOverlay, - @Nullable String emissiveOverlay) { + public S colorOverlaySteamHullModel(String overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/overlay/machine/" + overlay); @@ -443,93 +442,92 @@ public SELF colorOverlaySteamHullModel(String overlay, return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } - public SELF colorOverlaySteamHullModel(ResourceLocation overlay) { + public S colorOverlaySteamHullModel(ResourceLocation overlay) { return colorOverlaySteamHullModel(overlay, null, null); } - public SELF colorOverlaySteamHullModel(ResourceLocation overlay, - @Nullable ResourceLocation pipeOverlay, - @Nullable ResourceLocation emissiveOverlay) { + public S colorOverlaySteamHullModel(ResourceLocation overlay, + @Nullable ResourceLocation pipeOverlay, + @Nullable ResourceLocation emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_PAINTED, false); return model(createColorOverlaySteamHullMachineModel(overlay, pipeOverlay, emissiveOverlay)); } - public SELF workableTieredHullModel(ResourceLocation workableModel) { + public S workableTieredHullModel(ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableTieredHullMachineModel(workableModel)); } - public SELF simpleGeneratorModel(ResourceLocation workableModel) { + public S simpleGeneratorModel(ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createSimpleGeneratorModel(workableModel)); } - public SELF workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { + public S workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableSteamHullMachineModel(isHighPressure, workableModel)); } - public SELF workableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { + public S workableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createWorkableCasingMachineModel(baseCasing, workableModel)); } - public SELF sidedOverlayCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { + public S sidedOverlayCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { return model(createSidedOverlayCasingMachineModel(baseCasing, workableModel)); } - public SELF sidedWorkableCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { + public S sidedWorkableCasingModel(ResourceLocation baseCasing, + ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createSidedWorkableCasingMachineModel(baseCasing, workableModel)); } - public SELF appearanceBlock(Supplier block) { + public S appearanceBlock(Supplier block) { appearance = () -> block.get().defaultBlockState(); return getThis(); } - public SELF tooltips(@Nullable Component... components) { + public S tooltips(@Nullable Component... components) { return tooltips(Arrays.asList(components)); } - public SELF tooltips(List components) { + public S tooltips(List components) { tooltips.addAll(components.stream().filter(Objects::nonNull).toList()); return getThis(); } - public SELF conditionalTooltip(Component component, BooleanSupplier condition) { + public S conditionalTooltip(Component component, BooleanSupplier condition) { return conditionalTooltip(component, condition.getAsBoolean()); } - public SELF conditionalTooltip(Component component, boolean condition) { - if (condition) - tooltips.add(component); + public S conditionalTooltip(Component component, boolean condition) { + if (condition) tooltips.add(component); return getThis(); } - public SELF abilities(PartAbility... abilities) { + public S abilities(PartAbility... abilities) { this.abilities = abilities; return getThis(); } - public SELF themeId(String themeId) { + public S themeId(String themeId) { this.themeId = themeId; return getThis(); } - public SELF themeId(Function themeId) { + public S themeId(Function themeId) { this.themeId = themeId.apply(tier); return getThis(); } - public SELF modelProperty(Property property) { + public S modelProperty(Property property) { return modelProperty(property, null); } - public > SELF modelProperty(Property property, - @Nullable T defaultValue) { + public > S modelProperty(Property property, + @Nullable T defaultValue) { this.modelProperties.put(property, defaultValue); return getThis(); } @@ -537,26 +535,26 @@ public > SELF modelProperty(Property property, // KJS helpers for model property defaults // These don't need to be copied to the multiblock builder because KJS doesn't care about the return type downgrade - public SELF kjs$modelPropertyBool(Property property, boolean defaultValue) { + public S kjs$modelPropertyBool(Property property, boolean defaultValue) { return modelProperty(property, defaultValue); } - public SELF kjs$modelPropertyInt(Property property, int defaultValue) { + public S kjs$modelPropertyInt(Property property, int defaultValue) { return modelProperty(property, defaultValue); } - public & Comparable> SELF kjs$modelPropertyEnum(Property property, - T defaultValue) { + public & Comparable> S kjs$modelPropertyEnum(Property property, + T defaultValue) { return modelProperty(property, defaultValue); } @Tolerate - public SELF modelProperties(Property... properties) { + public S modelProperties(Property... properties) { return this.modelProperties(List.of(properties)); } @Tolerate - public SELF modelProperties(Collection> properties) { + public S modelProperties(Collection> properties) { for (Property prop : properties) { this.modelProperties.put(prop, null); } @@ -564,61 +562,61 @@ public SELF modelProperties(Collection> properties) { } @Tolerate - public SELF modelProperties(Map, ? extends Comparable> properties) { + public S modelProperties(Map, ? extends Comparable> properties) { this.modelProperties.putAll(properties); return getThis(); } - public SELF removeModelProperty(Property property) { + public S removeModelProperty(Property property) { this.modelProperties.remove(property); return getThis(); } - public SELF clearModelProperties() { + public S clearModelProperties() { this.modelProperties.clear(); return getThis(); } - public SELF recipeModifier(RecipeModifier recipeModifier) { + public S recipeModifier(RecipeModifier recipeModifier) { this.recipeModifier = recipeModifier instanceof RecipeModifierList list ? list : new RecipeModifierList(recipeModifier); return getThis(); } - public SELF recipeModifier(RecipeModifier recipeModifier, boolean alwaysTryModifyRecipe) { + public S recipeModifier(RecipeModifier recipeModifier, boolean alwaysTryModifyRecipe) { this.alwaysTryModifyRecipe = alwaysTryModifyRecipe; return this.recipeModifier(recipeModifier); } - public SELF recipeModifiers(RecipeModifier... recipeModifiers) { + public S recipeModifiers(RecipeModifier... recipeModifiers) { this.recipeModifier = new RecipeModifierList(recipeModifiers); return getThis(); } - public SELF recipeModifiers(boolean alwaysTryModifyRecipe, - RecipeModifier... recipeModifiers) { + public S recipeModifiers(boolean alwaysTryModifyRecipe, + RecipeModifier... recipeModifiers) { return this.recipeModifier(new RecipeModifierList(recipeModifiers), alwaysTryModifyRecipe); } - public SELF noRecipeModifier() { + public S noRecipeModifier() { this.recipeModifier = new RecipeModifierList(RecipeModifier.NO_MODIFIER); this.alwaysTryModifyRecipe = false; return getThis(); } - public SELF addOutputLimit(RecipeCapability capability, int limit) { + public S addOutputLimit(RecipeCapability capability, int limit) { this.recipeOutputLimits.put(capability, limit); return getThis(); } - public SELF multiblockPreviewRenderer(boolean multiBlockWorldPreview, - boolean multiBlockXEIPreview) { + public S multiblockPreviewRenderer(boolean multiBlockWorldPreview, + boolean multiBlockXEIPreview) { this.renderMultiblockWorldPreview = multiBlockWorldPreview; this.renderMultiblockXEIPreview = multiBlockXEIPreview; return getThis(); } - protected DEFINITION createDefinition() { + protected D createDefinition() { return definition.apply(registrate.makeResourceLocation(name)); } @@ -639,7 +637,7 @@ protected void setupStateDefinition(MachineDefinition definition) { } @HideFromJS - public DEFINITION register() { + public D register() { this.registrate.object(name); var definition = createDefinition(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 8768be23119..40b529f9493 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -10,7 +10,6 @@ import com.gregtechceu.gtceu.api.multiblock.pattern.IBlockPattern; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; -import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; @@ -30,33 +29,24 @@ import java.util.*; import java.util.function.*; -import javax.annotation.ParametersAreNonnullByDefault; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault @Accessors(chain = true, fluent = true) -public class MultiblockMachineBuilder> - extends MachineBuilder { +public class MultiblockMachineBuilder extends MachineBuilder> { private boolean generator; private final Map> patterns; private boolean allowFlip = true; private final List> recoveryItems = new ArrayList<>(); + private Function> partSorter = (c) -> (a, b) -> 0; private @Nullable TriFunction partAppearance; - @Getter private BiConsumer> additionalDisplay = (m, l) -> {}; public MultiblockMachineBuilder(GTRegistrate registrate, String name, - BiFunction blockFactory, + BiFunction blockFactory, BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - super(registrate, name, (loc -> (DEFINITION) new MultiblockMachineDefinition(loc)), - blockFactory, - itemFactory, blockEntityFactory); + MachineInstanceFactory blockEntityFactory) { + super(registrate, name, MultiblockMachineDefinition::new, blockFactory, itemFactory, blockEntityFactory); patterns = new Object2ReferenceOpenHashMap<>(); allowExtendedFacing(true); allowCoverOnFront(true); @@ -64,61 +54,61 @@ public MultiblockMachineBuilder(GTRegistrate registrate, String name, modelProperty(GTMachineModelProperties.IS_FORMED, false); } - public SELF generator(boolean generator) { + public MultiblockMachineBuilder generator(boolean generator) { this.generator = generator; return getThis(); } - public SELF pattern(Function pattern) { + public MultiblockMachineBuilder pattern(Function pattern) { this.patterns.put(MultiblockControllerMachine.DEFAULT_STRUCTURE, pattern); return getThis(); } - public SELF pattern(String structureName, Function pattern) { + public MultiblockMachineBuilder pattern(String structureName, Function pattern) { this.patterns.put(structureName, pattern); return getThis(); } - public SELF allowFlip(boolean allowFlip) { + public MultiblockMachineBuilder allowFlip(boolean allowFlip) { this.allowFlip = allowFlip; return getThis(); } - public SELF partSorter(Function> partSorter) { + public MultiblockMachineBuilder partSorter(Function> partSorter) { this.partSorter = partSorter; return getThis(); } - public SELF partAppearance(@Nullable TriFunction partAppearance) { + public MultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { this.partAppearance = partAppearance; return getThis(); } - public SELF additionalDisplay(BiConsumer> additionalDisplay) { + public MultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { this.additionalDisplay = additionalDisplay; return getThis(); } - public SELF recoveryItems(Supplier items) { + public MultiblockMachineBuilder recoveryItems(Supplier items) { this.recoveryItems.add(() -> Arrays.stream(items.get()).map(ItemLike::asItem).map(Item::getDefaultInstance) .toArray(ItemStack[]::new)); return getThis(); } - public SELF recoveryStacks(Supplier stacks) { + public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { this.recoveryItems.add(stacks); return getThis(); } @Tolerate - public SELF partSorter(Comparator sorter) { + public MultiblockMachineBuilder partSorter(Comparator sorter) { this.partSorter = $ -> sorter; return getThis(); } @Override @HideFromJS - public DEFINITION register() { + public MultiblockMachineDefinition register() { var definition = super.register(); definition.setGenerator(generator); if (patterns.isEmpty()) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 3513a7556ca..be8c323e5a6 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -533,8 +533,8 @@ public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate re Supplier casing, Supplier valve, @Nullable PropertyFluidFilter filter, - BiConsumer, ResourceLocation> rendererSetup) { - MultiblockMachineBuilder builder = registrate + BiConsumer, ResourceLocation> rendererSetup) { + MultiblockMachineBuilder builder = registrate .multiblock(name, holder -> new MultiblockTankMachine(holder, capacity, filter)) .langValue(displayName) .tooltips( @@ -571,12 +571,11 @@ public static MachineDefinition registerTankValve(GTRegistrate registrate, Strin return builder.register(); } - public static < - MACHINE extends MultiblockControllerMachine> MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, - String name, - MachineInstanceFactory.Tiered factory, - BiFunction, MultiblockMachineDefinition> builder, - int... tiers) { + public static MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, + String name, + MachineInstanceFactory.Tiered factory, + BiFunction, MultiblockMachineDefinition> builder, + int... tiers) { MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate From 80170659c0178fa78e3b6749fbdc2507a317ee00 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 18 Jul 2026 21:17:19 +1000 Subject: [PATCH 23/33] make elements deferred --- docs/content/Modpacks/Changes/v9.0.0.md | 76 ++++ .../api/data/chemical/material/Material.java | 5 + .../api/registry/registrate/GTRegistrate.java | 7 +- .../gtceu/common/data/GTElements.java | 331 ++++++++---------- 4 files changed, 221 insertions(+), 198 deletions(-) create mode 100644 docs/content/Modpacks/Changes/v9.0.0.md diff --git a/docs/content/Modpacks/Changes/v9.0.0.md b/docs/content/Modpacks/Changes/v9.0.0.md new file mode 100644 index 00000000000..3496dc13d72 --- /dev/null +++ b/docs/content/Modpacks/Changes/v9.0.0.md @@ -0,0 +1,76 @@ +--- +title: "Version 9.0.0" +--- + + +# Updating to `9.0.0` + +## Registration Changes + +GregTech content now follows proper registration standards for mc content using registries. + +### For KJS + +- Register material icon types with `GTCEuStartupEvents.materialIconType` + +### For addons + +**All content should now be registered via either your addon's registrate instance, or via a [deferred register](https://docs.neoforged.net/docs/1.21.1/concepts/registries/#deferredregister).** + +The `GTCEuAPI.RegisterEvent` event has been removed, as content should now use registrate or deferred registers. + +### Migration Regex + +Some helpful regexes for migration are below: + +##### Elements + +Replace `public static final Element` with `public static final RegistryEntry` + +Replace `/= (new Element|((GTElements\.)?createAndRegister))/` with `= ADDON_REGISTRATE.element` + +### Content registered via registrate. + +The following should be registered via registrate: +- Materials - Use `REGISTRATE.material(String name)` to access the material builder. +- Elements - Use `REGISTRATE.element(...)` to register an element. +- Tag prefixes - Use the following methods: + - `REGISTRATE.tagPrefix(String name)` + - `REGISTRATE.tagPrefix(String name, boolean invertedName)` + - `REGISTRATE.oreTagPrefix(String name, TagKey miningToolTag)` +- Material icon sets - Use the following methods: + - `REGISTRATE.materialIconSet(String id)` + - `REGISTRATE.materialIconSet(String id, MaterialIconSet parent)` + - `REGISTRATE.materialIconSet(String id, @Nullable MaterialIconSet parent, boolean isRoot)` +- Recipe types - Use `REGISTRATE.recipeType(String name, String group, RecipeType... proxyRecipes)` +- Recipe categories - Use `REGISTRATE.recipeCategory(String categoryName, GTRecipeType recipeType)` +- World gen layers - Use `REGISTRATE.simpleWorldGenLayer(...)` +- Medical conditions - Use `REGISTRATE.medicalCondition(...)` + +### Other content + +All other content should be registered via deferred registers. +Content that can be registered via registrate can also be registered via deferred registers, but registrate is recommended. + +An exmaple of using a deferred register is shown below. +```java +class AddonCovers { + + private static final DeferredRegistry COVER_REGISTER = + DeferredRegister.create(GTRegistries.Keys.COVER, ADDON_MOD_ID); + + public static final DeferredHolder CUSTOM_COVER = COVER_REGISTER.create("addon_custom_cover", + () -> new CoverDefinition(ADDON.id("addon_custom_cover"), AddonCustomCover::new)); + + // The init function should be called at some point during your mod's construction (e.g. in your main mod file or mod startup file) + public static void init(IEventBus modBus) { + COVER_REGISTER.register(modBus); + } +} + +``` + +### Other changes + +- World gen layers now store their dimensions as `ResourceKey` rather than `ResourceLocation` +- Dimension markers now store their dimension as a `ResourceKey` rather than `ResourceLocation` \ No newline at end of file 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 aafa20e7536..3b8189aa7df 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 @@ -24,6 +24,7 @@ import com.gregtechceu.gtceu.utils.TagUtil; import com.mojang.serialization.Codec; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; @@ -1295,6 +1296,10 @@ public Builder element(Element element) { return this; } + public Builder element(Holder elementHolder) { + return element(elementHolder.value()); + } + /** * Set the Formula of this 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 a37416be4fd..1b50472f3c0 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 @@ -272,14 +272,13 @@ public Material.Builder material(String name) { // Elements - public Element element(String name, long protons, long neutrons, long halfLifeSeconds, @Nullable String decayTo, + public RegistryEntry element(String name, long protons, long neutrons, long halfLifeSeconds, @Nullable String decayTo, String symbol, boolean isIsotope) { var element = new Element(protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); - this.generic(name.toLowerCase(), GTRegistries.Keys.ELEMENT, () -> element).register(); - return element; + return this.generic(name.toLowerCase(), GTRegistries.Keys.ELEMENT, () -> element).register(); } - public Element element(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, + public RegistryEntry element(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, String symbol, boolean isIsotope) { return element(name, protons, neutrons, halfLifeSeconds, decayTo, symbol, isIsotope); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java index 466438da7db..145e9befac3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java @@ -1,206 +1,149 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.api.data.chemical.Element; +import com.tterrag.registrate.util.entry.RegistryEntry; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; @SuppressWarnings("unused") public class GTElements { - public static final Element H = REGISTRATE.element("Hydrogen", 1, 0, -1, null, "H", false); - public static final Element D = REGISTRATE.element("Deuterium", 1, 1, -1, "H", "D", true); - public static final Element T = REGISTRATE.element("Tritium", 1, 2, -1, "D", "T", true); - public static final Element He = REGISTRATE.element("Helium", 2, 2, -1, null, "He", false); - public static final Element He3 = REGISTRATE.element("Helium-3", 2, 1, -1, "H&D", "He-3", - true); - public static final Element Li = REGISTRATE.element("Lithium", 3, 4, -1, null, "Li", false); - public static final Element Be = REGISTRATE.element("Beryllium", 4, 5, -1, null, "Be", false); - public static final Element B = REGISTRATE.element("Boron", 5, 5, -1, null, "B", false); - public static final Element C = REGISTRATE.element("Carbon", 6, 6, -1, null, "C", false); - public static final Element N = REGISTRATE.element("Nitrogen", 7, 7, -1, null, "N", false); - public static final Element O = REGISTRATE.element("Oxygen", 8, 8, -1, null, "O", false); - public static final Element F = REGISTRATE.element("Fluorine", 9, 9, -1, null, "F", false); - public static final Element Ne = REGISTRATE.element("Neon", 10, 10, -1, null, "Ne", false); - public static final Element Na = REGISTRATE.element("Sodium", 11, 11, -1, null, "Na", false); - public static final Element Mg = REGISTRATE.element("Magnesium", 12, 12, -1, null, "Mg", - false); - public static final Element Al = REGISTRATE.element("Aluminium", 13, 13, -1, null, "Al", - false); - public static final Element Si = REGISTRATE.element("Silicon", 14, 14, -1, null, "Si", false); - public static final Element P = REGISTRATE.element("Phosphorus", 15, 15, -1, null, "P", - false); - public static final Element S = REGISTRATE.element("Sulfur", 16, 16, -1, null, "S", false); - public static final Element Cl = REGISTRATE.element("Chlorine", 17, 18, -1, null, "Cl", false); - public static final Element Ar = REGISTRATE.element("Argon", 18, 22, -1, null, "Ar", false); - public static final Element K = REGISTRATE.element("Potassium", 19, 20, -1, null, "K", false); - public static final Element Ca = REGISTRATE.element("Calcium", 20, 20, -1, null, "Ca", false); - public static final Element Sc = REGISTRATE.element("Scandium", 21, 24, -1, null, "Sc", false); - public static final Element Ti = REGISTRATE.element("Titanium", 22, 26, -1, null, "Ti", false); - public static final Element V = REGISTRATE.element("Vanadium", 23, 28, -1, null, "V", false); - public static final Element Cr = REGISTRATE.element("Chrome", 24, 28, -1, null, "Cr", false); - public static final Element Mn = REGISTRATE.element("Manganese", 25, 30, -1, null, "Mn", - false); - public static final Element Fe = REGISTRATE.element("Iron", 26, 30, -1, null, "Fe", false); - public static final Element Co = REGISTRATE.element("Cobalt", 27, 32, -1, null, "Co", false); - public static final Element Ni = REGISTRATE.element("Nickel", 28, 30, -1, null, "Ni", false); - public static final Element Cu = REGISTRATE.element("Copper", 29, 34, -1, null, "Cu", false); - public static final Element Zn = REGISTRATE.element("Zinc", 30, 35, -1, null, "Zn", false); - public static final Element Ga = REGISTRATE.element("Gallium", 31, 39, -1, null, "Ga", false); - public static final Element Ge = REGISTRATE.element("Germanium", 32, 40, -1, null, "Ge", - false); - public static final Element As = REGISTRATE.element("Arsenic", 33, 42, -1, null, "As", false); - public static final Element Se = REGISTRATE.element("Selenium", 34, 45, -1, null, "Se", false); - public static final Element Br = REGISTRATE.element("Bromine", 35, 45, -1, null, "Br", false); - public static final Element Kr = REGISTRATE.element("Krypton", 36, 48, -1, null, "Kr", false); - public static final Element Rb = REGISTRATE.element("Rubidium", 37, 48, -1, null, "Rb", false); - public static final Element Sr = REGISTRATE.element("Strontium", 38, 49, -1, null, "Sr", - false); - public static final Element Y = REGISTRATE.element("Yttrium", 39, 50, -1, null, "Y", false); - public static final Element Zr = REGISTRATE.element("Zirconium", 40, 51, -1, null, "Zr", - false); - public static final Element Nb = REGISTRATE.element("Niobium", 41, 53, -1, null, "Nb", false); - public static final Element Mo = REGISTRATE.element("Molybdenum", 42, 53, -1, null, "Mo", - false); - public static final Element Tc = REGISTRATE.element("Technetium", 43, 55, -1, null, "Tc", - false); - public static final Element Ru = REGISTRATE.element("Ruthenium", 44, 57, -1, null, "Ru", - false); - public static final Element Rh = REGISTRATE.element("Rhodium", 45, 58, -1, null, "Rh", false); - public static final Element Pd = REGISTRATE.element("Palladium", 46, 60, -1, null, "Pd", - false); - public static final Element Ag = REGISTRATE.element("Silver", 47, 60, -1, null, "Ag", false); - public static final Element Cd = REGISTRATE.element("Cadmium", 48, 64, -1, null, "Cd", false); - public static final Element In = REGISTRATE.element("Indium", 49, 65, -1, null, "In", false); - public static final Element Sn = REGISTRATE.element("Tin", 50, 68, -1, null, "Sn", false); - public static final Element Sb = REGISTRATE.element("Antimony", 51, 70, -1, null, "Sb", false); - public static final Element Te = REGISTRATE.element("Tellurium", 52, 75, -1, null, "Te", - false); - public static final Element I = REGISTRATE.element("Iodine", 53, 74, -1, null, "I", false); - public static final Element Xe = REGISTRATE.element("Xenon", 54, 77, -1, null, "Xe", false); - public static final Element Cs = REGISTRATE.element("Caesium", 55, 77, -1, null, "Cs", false); - public static final Element Ba = REGISTRATE.element("Barium", 56, 81, -1, null, "Ba", false); - public static final Element La = REGISTRATE.element("Lanthanum", 57, 81, -1, null, "La", - false); - public static final Element Ce = REGISTRATE.element("Cerium", 58, 82, -1, null, "Ce", false); - public static final Element Pr = REGISTRATE.element("Praseodymium", 59, 81, -1, null, "Pr", - false); - public static final Element Nd = REGISTRATE.element("Neodymium", 60, 84, -1, null, "Nd", - false); - public static final Element Pm = REGISTRATE.element("Promethium", 61, 83, -1, null, "Pm", - false); - public static final Element Sm = REGISTRATE.element("Samarium", 62, 88, -1, null, "Sm", false); - public static final Element Eu = REGISTRATE.element("Europium", 63, 88, -1, null, "Eu", false); - public static final Element Gd = REGISTRATE.element("Gadolinium", 64, 93, -1, null, "Gd", - false); - public static final Element Tb = REGISTRATE.element("Terbium", 65, 93, -1, null, "Tb", false); - public static final Element Dy = REGISTRATE.element("Dysprosium", 66, 96, -1, null, "Dy", - false); - public static final Element Ho = REGISTRATE.element("Holmium", 67, 97, -1, null, "Ho", false); - public static final Element Er = REGISTRATE.element("Erbium", 68, 99, -1, null, "Er", false); - public static final Element Tm = REGISTRATE.element("Thulium", 69, 99, -1, null, "Tm", false); - public static final Element Yb = REGISTRATE.element("Ytterbium", 70, 103, -1, null, "Yb", - false); - public static final Element Lu = REGISTRATE.element("Lutetium", 71, 103, -1, null, "Lu", - false); - public static final Element Hf = REGISTRATE.element("Hafnium", 72, 106, -1, null, "Hf", false); - public static final Element Ta = REGISTRATE.element("Tantalum", 73, 107, -1, null, "Ta", - false); - public static final Element W = REGISTRATE.element("Tungsten", 74, 109, -1, null, "W", false); - public static final Element Re = REGISTRATE.element("Rhenium", 75, 111, -1, null, "Re", false); - public static final Element Os = REGISTRATE.element("Osmium", 76, 114, -1, null, "Os", false); - public static final Element Ir = REGISTRATE.element("Iridium", 77, 115, -1, null, "Ir", false); - public static final Element Pt = REGISTRATE.element("Platinum", 78, 117, -1, null, "Pt", - false); - public static final Element Au = REGISTRATE.element("Gold", 79, 117, -1, null, "Au", false); - public static final Element Hg = REGISTRATE.element("Mercury", 80, 120, -1, null, "Hg", false); - public static final Element Tl = REGISTRATE.element("Thallium", 81, 123, -1, null, "Tl", - false); - public static final Element Pb = REGISTRATE.element("Lead", 82, 125, -1, null, "Pb", false); - public static final Element Bi = REGISTRATE.element("Bismuth", 83, 125, -1, null, "Bi", false); - public static final Element Po = REGISTRATE.element("Polonium", 84, 124, -1, null, "Po", - false); - public static final Element At = REGISTRATE.element("Astatine", 85, 124, -1, null, "At", - false); - public static final Element Rn = REGISTRATE.element("Radon", 86, 134, -1, null, "Rn", false); - public static final Element Fr = REGISTRATE.element("Francium", 87, 134, -1, null, "Fr", - false); - public static final Element Ra = REGISTRATE.element("Radium", 88, 136, -1, null, "Ra", false); - public static final Element Ac = REGISTRATE.element("Actinium", 89, 136, -1, null, "Ac", - false); - public static final Element Th = REGISTRATE.element("Thorium", 90, 140, -1, null, "Th", false); - public static final Element Pa = REGISTRATE.element("Protactinium", 91, 138, -1, null, - "Pa", false); - public static final Element U = REGISTRATE.element("Uranium", 92, 146, -1, null, "U", false); - public static final Element U238 = REGISTRATE.element("Uranium-238", 92, 146, -1, null, - "U-238", false); - public static final Element U235 = REGISTRATE.element("Uranium-235", 92, 143, -1, null, - "U-235", true); - public static final Element Np = REGISTRATE.element("Neptunium", 93, 144, -1, null, "Np", - false); - public static final Element Pu = REGISTRATE.element("Plutonium", 94, 152, -1, null, "Pu", - false); - public static final Element Pu239 = REGISTRATE.element("Plutonium-239", 94, 145, -1, null, - "Pu-239", false); - public static final Element Pu241 = REGISTRATE.element("Plutonium-241", 94, 149, -1, null, - "Pu-241", true); - public static final Element Am = REGISTRATE.element("Americium", 95, 150, -1, null, "Am", - false); - public static final Element Cm = REGISTRATE.element("Curium", 96, 153, -1, null, "Cm", false); - public static final Element Bk = REGISTRATE.element("Berkelium", 97, 152, -1, null, "Bk", - false); - public static final Element Cf = REGISTRATE.element("Californium", 98, 153, -1, null, "Cf", - false); - public static final Element Es = REGISTRATE.element("Einsteinium", 99, 153, -1, null, "Es", - false); - public static final Element Fm = REGISTRATE.element("Fermium", 100, 157, -1, null, "Fm", false); - public static final Element Md = REGISTRATE.element("Mendelevium", 101, 157, -1, null, "Md", - false); - public static final Element No = REGISTRATE.element("Nobelium", 102, 157, -1, null, "No", - false); - public static final Element Lr = REGISTRATE.element("Lawrencium", 103, 159, -1, null, "Lr", - false); - public static final Element Rf = REGISTRATE.element("Rutherfordium", 104, 161, -1, null, - "Rf", false); - public static final Element Db = REGISTRATE.element("Dubnium", 105, 163, -1, null, "Db", false); - public static final Element Sg = REGISTRATE.element("Seaborgium", 106, 165, -1, null, "Sg", - false); - public static final Element Bh = REGISTRATE.element("Bohrium", 107, 163, -1, null, "Bh", false); - public static final Element Hs = REGISTRATE.element("Hassium", 108, 169, -1, null, "Hs", false); - public static final Element Mt = REGISTRATE.element("Meitnerium", 109, 167, -1, null, "Mt", - false); - public static final Element Ds = REGISTRATE.element("Darmstadtium", 110, 171, -1, null, - "Ds", false); - public static final Element Rg = REGISTRATE.element("Roentgenium", 111, 169, -1, null, "Rg", - false); - public static final Element Cn = REGISTRATE.element("Copernicium", 112, 173, -1, null, "Cn", - false); - public static final Element Nh = REGISTRATE.element("Nihonium", 113, 171, -1, null, "Nh", - false); - public static final Element Fl = REGISTRATE.element("Flerovium", 114, 175, -1, null, "Fl", - false); - public static final Element Mc = REGISTRATE.element("Moscovium", 115, 173, -1, null, "Mc", - false); - public static final Element Lv = REGISTRATE.element("Livermorium", 116, 177, -1, null, "Lv", - false); - public static final Element Ts = REGISTRATE.element("Tennessine", 117, 177, -1, null, "Ts", - false); - public static final Element Og = REGISTRATE.element("Oganesson", 118, 176, -1, null, "Og", - false); - public static final Element Tr = REGISTRATE.element("Tritanium", 119, 178, -1, null, "Tr", - false); - public static final Element Dr = REGISTRATE.element("Duranium", 120, 180, -1, null, "Dr", - false); - public static final Element Ke = REGISTRATE.element("Trinium", 125, 198, -1, null, "Ke", false); - public static final Element Nq = REGISTRATE.element("Naquadah", 174, 352, 140, null, "Nq", - true); - public static final Element Nq1 = REGISTRATE.element("NaquadahEnriched", 174, 354, 140, null, - "Nq+", true); - public static final Element Nq2 = REGISTRATE.element("Naquadria", 174, 348, 140, null, "*Nq*", - true); - public static final Element Nt = REGISTRATE.element("Neutronium", 0, 1000, -1, null, "Nt", - false); - public static final Element Sp = REGISTRATE.element("Space", 1, 0, -1, null, "Sp", false); - public static final Element Ma = REGISTRATE.element("Magic", 1, 0, -1, null, "Ma", false); + // spotless:off + + public static final RegistryEntry H = REGISTRATE.element("Hydrogen", 1, 0, -1, null, "H", false); + public static final RegistryEntry D = REGISTRATE.element("Deuterium", 1, 1, -1, "H", "D", true); + public static final RegistryEntry T = REGISTRATE.element("Tritium", 1, 2, -1, "D", "T", true); + public static final RegistryEntry He = REGISTRATE.element("Helium", 2, 2, -1, null, "He", false); + public static final RegistryEntry He3 = REGISTRATE.element("Helium-3", 2, 1, -1, "H&D", "He-3", true); + public static final RegistryEntry Li = REGISTRATE.element("Lithium", 3, 4, -1, null, "Li", false); + public static final RegistryEntry Be = REGISTRATE.element("Beryllium", 4, 5, -1, null, "Be", false); + public static final RegistryEntry B = REGISTRATE.element("Boron", 5, 5, -1, null, "B", false); + public static final RegistryEntry C = REGISTRATE.element("Carbon", 6, 6, -1, null, "C", false); + public static final RegistryEntry N = REGISTRATE.element("Nitrogen", 7, 7, -1, null, "N", false); + public static final RegistryEntry O = REGISTRATE.element("Oxygen", 8, 8, -1, null, "O", false); + public static final RegistryEntry F = REGISTRATE.element("Fluorine", 9, 9, -1, null, "F", false); + public static final RegistryEntry Ne = REGISTRATE.element("Neon", 10, 10, -1, null, "Ne", false); + public static final RegistryEntry Na = REGISTRATE.element("Sodium", 11, 11, -1, null, "Na", false); + public static final RegistryEntry Mg = REGISTRATE.element("Magnesium", 12, 12, -1, null, "Mg", false); + public static final RegistryEntry Al = REGISTRATE.element("Aluminium", 13, 13, -1, null, "Al", false); + public static final RegistryEntry Si = REGISTRATE.element("Silicon", 14, 14, -1, null, "Si", false); + public static final RegistryEntry P = REGISTRATE.element("Phosphorus", 15, 15, -1, null, "P", false); + public static final RegistryEntry S = REGISTRATE.element("Sulfur", 16, 16, -1, null, "S", false); + public static final RegistryEntry Cl = REGISTRATE.element("Chlorine", 17, 18, -1, null, "Cl", false); + public static final RegistryEntry Ar = REGISTRATE.element("Argon", 18, 22, -1, null, "Ar", false); + public static final RegistryEntry K = REGISTRATE.element("Potassium", 19, 20, -1, null, "K", false); + public static final RegistryEntry Ca = REGISTRATE.element("Calcium", 20, 20, -1, null, "Ca", false); + public static final RegistryEntry Sc = REGISTRATE.element("Scandium", 21, 24, -1, null, "Sc", false); + public static final RegistryEntry Ti = REGISTRATE.element("Titanium", 22, 26, -1, null, "Ti", false); + public static final RegistryEntry V = REGISTRATE.element("Vanadium", 23, 28, -1, null, "V", false); + public static final RegistryEntry Cr = REGISTRATE.element("Chrome", 24, 28, -1, null, "Cr", false); + public static final RegistryEntry Mn = REGISTRATE.element("Manganese", 25, 30, -1, null, "Mn", false); + public static final RegistryEntry Fe = REGISTRATE.element("Iron", 26, 30, -1, null, "Fe", false); + public static final RegistryEntry Co = REGISTRATE.element("Cobalt", 27, 32, -1, null, "Co", false); + public static final RegistryEntry Ni = REGISTRATE.element("Nickel", 28, 30, -1, null, "Ni", false); + public static final RegistryEntry Cu = REGISTRATE.element("Copper", 29, 34, -1, null, "Cu", false); + public static final RegistryEntry Zn = REGISTRATE.element("Zinc", 30, 35, -1, null, "Zn", false); + public static final RegistryEntry Ga = REGISTRATE.element("Gallium", 31, 39, -1, null, "Ga", false); + public static final RegistryEntry Ge = REGISTRATE.element("Germanium", 32, 40, -1, null, "Ge", false); + public static final RegistryEntry As = REGISTRATE.element("Arsenic", 33, 42, -1, null, "As", false); + public static final RegistryEntry Se = REGISTRATE.element("Selenium", 34, 45, -1, null, "Se", false); + public static final RegistryEntry Br = REGISTRATE.element("Bromine", 35, 45, -1, null, "Br", false); + public static final RegistryEntry Kr = REGISTRATE.element("Krypton", 36, 48, -1, null, "Kr", false); + public static final RegistryEntry Rb = REGISTRATE.element("Rubidium", 37, 48, -1, null, "Rb", false); + public static final RegistryEntry Sr = REGISTRATE.element("Strontium", 38, 49, -1, null, "Sr", false); + public static final RegistryEntry Y = REGISTRATE.element("Yttrium", 39, 50, -1, null, "Y", false); + public static final RegistryEntry Zr = REGISTRATE.element("Zirconium", 40, 51, -1, null, "Zr", false); + public static final RegistryEntry Nb = REGISTRATE.element("Niobium", 41, 53, -1, null, "Nb", false); + public static final RegistryEntry Mo = REGISTRATE.element("Molybdenum", 42, 53, -1, null, "Mo", false); + public static final RegistryEntry Tc = REGISTRATE.element("Technetium", 43, 55, -1, null, "Tc", false); + public static final RegistryEntry Ru = REGISTRATE.element("Ruthenium", 44, 57, -1, null, "Ru", false); + public static final RegistryEntry Rh = REGISTRATE.element("Rhodium", 45, 58, -1, null, "Rh", false); + public static final RegistryEntry Pd = REGISTRATE.element("Palladium", 46, 60, -1, null, "Pd", false); + public static final RegistryEntry Ag = REGISTRATE.element("Silver", 47, 60, -1, null, "Ag", false); + public static final RegistryEntry Cd = REGISTRATE.element("Cadmium", 48, 64, -1, null, "Cd", false); + public static final RegistryEntry In = REGISTRATE.element("Indium", 49, 65, -1, null, "In", false); + public static final RegistryEntry Sn = REGISTRATE.element("Tin", 50, 68, -1, null, "Sn", false); + public static final RegistryEntry Sb = REGISTRATE.element("Antimony", 51, 70, -1, null, "Sb", false); + public static final RegistryEntry Te = REGISTRATE.element("Tellurium", 52, 75, -1, null, "Te", false); + public static final RegistryEntry I = REGISTRATE.element("Iodine", 53, 74, -1, null, "I", false); + public static final RegistryEntry Xe = REGISTRATE.element("Xenon", 54, 77, -1, null, "Xe", false); + public static final RegistryEntry Cs = REGISTRATE.element("Caesium", 55, 77, -1, null, "Cs", false); + public static final RegistryEntry Ba = REGISTRATE.element("Barium", 56, 81, -1, null, "Ba", false); + public static final RegistryEntry La = REGISTRATE.element("Lanthanum", 57, 81, -1, null, "La", false); + public static final RegistryEntry Ce = REGISTRATE.element("Cerium", 58, 82, -1, null, "Ce", false); + public static final RegistryEntry Pr = REGISTRATE.element("Praseodymium", 59, 81, -1, null, "Pr", false); + public static final RegistryEntry Nd = REGISTRATE.element("Neodymium", 60, 84, -1, null, "Nd", false); + public static final RegistryEntry Pm = REGISTRATE.element("Promethium", 61, 83, -1, null, "Pm", false); + public static final RegistryEntry Sm = REGISTRATE.element("Samarium", 62, 88, -1, null, "Sm", false); + public static final RegistryEntry Eu = REGISTRATE.element("Europium", 63, 88, -1, null, "Eu", false); + public static final RegistryEntry Gd = REGISTRATE.element("Gadolinium", 64, 93, -1, null, "Gd", false); + public static final RegistryEntry Tb = REGISTRATE.element("Terbium", 65, 93, -1, null, "Tb", false); + public static final RegistryEntry Dy = REGISTRATE.element("Dysprosium", 66, 96, -1, null, "Dy", false); + public static final RegistryEntry Ho = REGISTRATE.element("Holmium", 67, 97, -1, null, "Ho", false); + public static final RegistryEntry Er = REGISTRATE.element("Erbium", 68, 99, -1, null, "Er", false); + public static final RegistryEntry Tm = REGISTRATE.element("Thulium", 69, 99, -1, null, "Tm", false); + public static final RegistryEntry Yb = REGISTRATE.element("Ytterbium", 70, 103, -1, null, "Yb", false); + public static final RegistryEntry Lu = REGISTRATE.element("Lutetium", 71, 103, -1, null, "Lu", false); + public static final RegistryEntry Hf = REGISTRATE.element("Hafnium", 72, 106, -1, null, "Hf", false); + public static final RegistryEntry Ta = REGISTRATE.element("Tantalum", 73, 107, -1, null, "Ta", false); + public static final RegistryEntry W = REGISTRATE.element("Tungsten", 74, 109, -1, null, "W", false); + public static final RegistryEntry Re = REGISTRATE.element("Rhenium", 75, 111, -1, null, "Re", false); + public static final RegistryEntry Os = REGISTRATE.element("Osmium", 76, 114, -1, null, "Os", false); + public static final RegistryEntry Ir = REGISTRATE.element("Iridium", 77, 115, -1, null, "Ir", false); + public static final RegistryEntry Pt = REGISTRATE.element("Platinum", 78, 117, -1, null, "Pt", false); + public static final RegistryEntry Au = REGISTRATE.element("Gold", 79, 117, -1, null, "Au", false); + public static final RegistryEntry Hg = REGISTRATE.element("Mercury", 80, 120, -1, null, "Hg", false); + public static final RegistryEntry Tl = REGISTRATE.element("Thallium", 81, 123, -1, null, "Tl", false); + public static final RegistryEntry Pb = REGISTRATE.element("Lead", 82, 125, -1, null, "Pb", false); + public static final RegistryEntry Bi = REGISTRATE.element("Bismuth", 83, 125, -1, null, "Bi", false); + public static final RegistryEntry Po = REGISTRATE.element("Polonium", 84, 124, -1, null, "Po", false); + public static final RegistryEntry At = REGISTRATE.element("Astatine", 85, 124, -1, null, "At", false); + public static final RegistryEntry Rn = REGISTRATE.element("Radon", 86, 134, -1, null, "Rn", false); + public static final RegistryEntry Fr = REGISTRATE.element("Francium", 87, 134, -1, null, "Fr", false); + public static final RegistryEntry Ra = REGISTRATE.element("Radium", 88, 136, -1, null, "Ra", false); + public static final RegistryEntry Ac = REGISTRATE.element("Actinium", 89, 136, -1, null, "Ac", false); + public static final RegistryEntry Th = REGISTRATE.element("Thorium", 90, 140, -1, null, "Th", false); + public static final RegistryEntry Pa = REGISTRATE.element("Protactinium", 91, 138, -1, null, "Pa", false); + public static final RegistryEntry U = REGISTRATE.element("Uranium", 92, 146, -1, null, "U", false); + public static final RegistryEntry U238 = REGISTRATE.element("Uranium-238", 92, 146, -1, null, "U-238", false); + public static final RegistryEntry U235 = REGISTRATE.element("Uranium-235", 92, 143, -1, null, "U-235", true); + public static final RegistryEntry Np = REGISTRATE.element("Neptunium", 93, 144, -1, null, "Np", false); + public static final RegistryEntry Pu = REGISTRATE.element("Plutonium", 94, 152, -1, null, "Pu", false); + public static final RegistryEntry Pu239 = REGISTRATE.element("Plutonium-239", 94, 145, -1, null, "Pu-239", false); + public static final RegistryEntry Pu241 = REGISTRATE.element("Plutonium-241", 94, 149, -1, null, "Pu-241", true); + public static final RegistryEntry Am = REGISTRATE.element("Americium", 95, 150, -1, null, "Am", false); + public static final RegistryEntry Cm = REGISTRATE.element("Curium", 96, 153, -1, null, "Cm", false); + public static final RegistryEntry Bk = REGISTRATE.element("Berkelium", 97, 152, -1, null, "Bk", false); + public static final RegistryEntry Cf = REGISTRATE.element("Californium", 98, 153, -1, null, "Cf", false); + public static final RegistryEntry Es = REGISTRATE.element("Einsteinium", 99, 153, -1, null, "Es", false); + public static final RegistryEntry Fm = REGISTRATE.element("Fermium", 100, 157, -1, null, "Fm", false); + public static final RegistryEntry Md = REGISTRATE.element("Mendelevium", 101, 157, -1, null, "Md", false); + public static final RegistryEntry No = REGISTRATE.element("Nobelium", 102, 157, -1, null, "No", false); + public static final RegistryEntry Lr = REGISTRATE.element("Lawrencium", 103, 159, -1, null, "Lr", false); + public static final RegistryEntry Rf = REGISTRATE.element("Rutherfordium", 104, 161, -1, null, "Rf", false); + public static final RegistryEntry Db = REGISTRATE.element("Dubnium", 105, 163, -1, null, "Db", false); + public static final RegistryEntry Sg = REGISTRATE.element("Seaborgium", 106, 165, -1, null, "Sg", false); + public static final RegistryEntry Bh = REGISTRATE.element("Bohrium", 107, 163, -1, null, "Bh", false); + public static final RegistryEntry Hs = REGISTRATE.element("Hassium", 108, 169, -1, null, "Hs", false); + public static final RegistryEntry Mt = REGISTRATE.element("Meitnerium", 109, 167, -1, null, "Mt", false); + public static final RegistryEntry Ds = REGISTRATE.element("Darmstadtium", 110, 171, -1, null, "Ds", false); + public static final RegistryEntry Rg = REGISTRATE.element("Roentgenium", 111, 169, -1, null, "Rg", false); + public static final RegistryEntry Cn = REGISTRATE.element("Copernicium", 112, 173, -1, null, "Cn", false); + public static final RegistryEntry Nh = REGISTRATE.element("Nihonium", 113, 171, -1, null, "Nh", false); + public static final RegistryEntry Fl = REGISTRATE.element("Flerovium", 114, 175, -1, null, "Fl", false); + public static final RegistryEntry Mc = REGISTRATE.element("Moscovium", 115, 173, -1, null, "Mc", false); + public static final RegistryEntry Lv = REGISTRATE.element("Livermorium", 116, 177, -1, null, "Lv", false); + public static final RegistryEntry Ts = REGISTRATE.element("Tennessine", 117, 177, -1, null, "Ts", false); + public static final RegistryEntry Og = REGISTRATE.element("Oganesson", 118, 176, -1, null, "Og", false); + public static final RegistryEntry Tr = REGISTRATE.element("Tritanium", 119, 178, -1, null, "Tr", false); + public static final RegistryEntry Dr = REGISTRATE.element("Duranium", 120, 180, -1, null, "Dr", false); + public static final RegistryEntry Ke = REGISTRATE.element("Trinium", 125, 198, -1, null, "Ke", false); + public static final RegistryEntry Nq = REGISTRATE.element("Naquadah", 174, 352, 140, null, "Nq", true); + public static final RegistryEntry Nq1 = REGISTRATE.element("NaquadahEnriched", 174, 354, 140, null, "Nq+", true); + public static final RegistryEntry Nq2 = REGISTRATE.element("Naquadria", 174, 348, 140, null, "*Nq*", true); + public static final RegistryEntry Nt = REGISTRATE.element("Neutronium", 0, 1000, -1, null, "Nt", false); + public static final RegistryEntry Sp = REGISTRATE.element("Space", 1, 0, -1, null, "Sp", false); + public static final RegistryEntry Ma = REGISTRATE.element("Magic", 1, 0, -1, null, "Ma", false); public static void init() {} } From 0a52e493a8164e5f2334e5dd8f7ef114e4fea435 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sun, 28 Jun 2026 18:52:16 +0300 Subject: [PATCH 24/33] Make machine registration use holders --- .../gtceu/api/cover/filter/FilterHandler.java | 3 +- .../gtceu/api/machine/MachineDefinition.java | 16 +- .../machine/MultiblockMachineDefinition.java | 5 +- .../recipe/gui/GTRecipeTypeMachineWidget.java | 2 +- .../api/recipe/modifier/RecipeModifier.java | 4 +- .../registry/registrate/GTBlockBuilder.java | 18 +- .../api/registry/registrate/GTRegistrate.java | 58 +++-- .../registry/registrate/MachineBuilder.java | 234 ++++++++---------- .../registrate/MultiblockMachineBuilder.java | 37 +-- .../registrate/SingleblockMachineBuilder.java | 25 ++ .../machine/impl/QuantumTankFluidRender.java | 2 +- .../gtceu/common/cover/ItemFilterCover.java | 3 +- .../common/data/machines/GTMachineUtils.java | 212 ++++++++-------- .../gtceu/common/item/DrumMachineItem.java | 4 +- .../common/item/QuantumTankMachineItem.java | 20 +- .../machine/storage/QuantumTankMachine.java | 3 +- .../mui/GTSingleblockMachinePanels.java | 8 +- .../recipe/misc/MetaTileEntityLoader.java | 5 +- .../integration/kjs/GregTechKubeJSPlugin.java | 11 +- .../builders/machine/IMachineBuilderKJS.java | 2 +- .../machine/KJSMultiblockMachineBuilder.java | 153 ++++++------ .../machine/KJSSteamMachineBuilder.java | 21 +- .../machine/KJSTieredMachineBuilder.java | 8 +- .../machine/KJSTieredMultiblockBuilder.java | 12 +- .../machine/MachineBuilderWrapper.java | 3 +- 25 files changed, 449 insertions(+), 420 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java index 9ff9aed219d..f2dc09ebc38 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/cover/filter/FilterHandler.java @@ -139,7 +139,8 @@ private void loadFilterFromItem() { cover.coverHolder instanceof MachineCoverContainer mcc) { var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getBlockPos()); if (machine != null) { - smart.setModeFromMachine(machine.getDefinition().getName()); + // TODO make this use machines' definitions or full IDs? + smart.setModeFromMachine(machine.getDefinition().getId().getPath()); } } this.onFilterLoaded.accept(this.filter); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index 524bffa8d12..aa1345b4f7e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -9,15 +9,16 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.utils.GTUtil; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; import net.minecraft.core.IdMapper; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -52,10 +53,9 @@ public class MachineDefinition implements Supplier { // This is only stored here for KJS use. @Getter @Setter - @Nullable - private String langValue; + private @Nullable String langValue; @Setter - private Supplier blockSupplier; + private Supplier blockSupplier; @Setter private Supplier itemSupplier; @Setter @@ -146,7 +146,7 @@ public final void registerDefaultState(MachineRenderState state) { this.defaultRenderState = state; } - public Block getBlock() { + public MetaMachineBlock getBlock() { return blockSupplier.get(); } @@ -173,7 +173,7 @@ public VoxelShape getShape(Direction direction) { @Override public MetaMachineBlock get() { - return (MetaMachineBlock) blockSupplier.get(); + return getBlock(); } public String getName() { @@ -193,6 +193,10 @@ public BlockState defaultBlockState() { return getBlock().defaultBlockState(); } + public Holder getHolder() { + return GTRegistries.MACHINES.wrapAsHolder(this); + } + @Override public boolean equals(@Nullable Object o) { if (this == o) return true; diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java index f49db792843..aac1fa5802d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MultiblockMachineDefinition.java @@ -26,7 +26,7 @@ public class MultiblockMachineDefinition extends MachineDefinition { @Setter private boolean generator; @Getter - private Map> structurePatterns = new HashMap<>(); + private final Map> structurePatterns = new HashMap<>(); @Getter @Setter private boolean allowFlip; @@ -35,8 +35,7 @@ public class MultiblockMachineDefinition extends MachineDefinition { private boolean renderXEIPreview; @Setter @Getter - @Nullable - private Supplier recoveryItems; + private @Nullable Supplier recoveryItems; @Setter @Getter private Function> partSorter; diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/gui/GTRecipeTypeMachineWidget.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/gui/GTRecipeTypeMachineWidget.java index 9b2d1641292..be712333e71 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/gui/GTRecipeTypeMachineWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/gui/GTRecipeTypeMachineWidget.java @@ -36,7 +36,7 @@ public GTRecipeTypeMachineWidget(GTRecipeType recipeType, PanelSyncManager syncM if (recipeType.getUiLayout() == null) { GTCEu.LOGGER.error( "Tried to draw a singleblock recipe type UI for {}, but it does not have a recipe type UI", - machine.getDefinition().getName()); + machine.getDefinition().getId()); return; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifier.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifier.java index ea3e7230946..7210c7cee33 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifier.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/modifier/RecipeModifier.java @@ -51,8 +51,8 @@ public interface RecipeModifier { * @return {@link ModifierFunction#NULL} */ static ModifierFunction nullWrongType(Class type, MetaMachine actual) { - GTCEu.LOGGER.error("Incorrect use of modifier, expected machine of type {}, received {}", type.getSimpleName(), - actual.getDefinition().getName()); + GTCEu.LOGGER.error("Incorrect use of modifier, expected machine of type {}, received {} (id {})", type.getSimpleName(), + actual.getClass().getSimpleName(), actual.getDefinition().getId()); return ModifierFunction.NULL; } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java index 17dfee8d336..8518428c278 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java @@ -15,6 +15,7 @@ import com.tterrag.registrate.providers.*; import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables; import com.tterrag.registrate.util.nullness.*; +import org.jetbrains.annotations.Nullable; import java.util.function.Supplier; @@ -96,8 +97,14 @@ public GTBlockBuilder defaultLang() { } @Override - public GTBlockBuilder lang(String name) { - return (GTBlockBuilder) super.lang(name); + public GTBlockBuilder lang(@Nullable String name) { + return lang(Block::getDescriptionId, name); + } + + @Override + public GTBlockBuilder lang(NonNullFunction langKeyProvider, @Nullable String name) { + if (name == null) return this; + return (GTBlockBuilder) super.lang(langKeyProvider, name); } @Override @@ -127,10 +134,15 @@ public GTBlockBuilder setDataGeneric(Provid } @Override - public GTBlockBuilder setData(ProviderType type, NonNullBiConsumer, D> cons) { + public GTBlockBuilder setData(ProviderType type, NonNullBiConsumer, D> cons) { return (GTBlockBuilder) super.setData(type, cons); } + @Override + public GTBlockBuilder onRegister(NonNullConsumer callback) { + return (GTBlockBuilder) super.onRegister(callback); + } + // spotless:on // endregion } 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 86af1b79982..80635ab54ef 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 @@ -189,31 +189,55 @@ protected

NoConfigBuilder createCreativ // Machines - public > MachineBuilder machine(String name, - Function definitionFactory, - BiFunction blockFactory, - BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - return new MachineBuilder<>(this, name, definitionFactory, blockFactory, itemFactory, blockEntityFactory); + public SingleblockMachineBuilder machine(String name, + Function definitionFactory, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return machine(this, name, definitionFactory, blockFactory, itemFactory, blockEntityFactory); } - public > MachineBuilder machine(String name, - MachineInstanceFactory blockEntityFactory) { - return new MachineBuilder<>(this, name, MachineDefinition::new, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); + public SingleblockMachineBuilder machine(P parent, String name, + Function definitionFactory, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return entry(name, callback -> new SingleblockMachineBuilder<>(this, parent, name, callback, definitionFactory, blockFactory, itemFactory, blockEntityFactory)); + } + + public SingleblockMachineBuilder machine(String name, MachineInstanceFactory blockEntityFactory) { + return machine(this, name, blockEntityFactory); + } + + public SingleblockMachineBuilder machine(P parent, String name, + MachineInstanceFactory blockEntityFactory) { + return entry(name, callback -> new SingleblockMachineBuilder<>(this, parent, name, callback, MachineDefinition::new, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory)); } // Multiblock machines - public MultiblockMachineBuilder multiblock(String name, - BiFunction blockFactory, - BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - return new MultiblockMachineBuilder<>(this, name, blockFactory, itemFactory, blockEntityFactory); + public MultiblockMachineBuilder multiblock(String name, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return multiblock(this, name, blockFactory, itemFactory, blockEntityFactory); + } + + public MultiblockMachineBuilder multiblock(P parent, String name, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + return entry(name, callback -> new MultiblockMachineBuilder<>(this, parent, name, callback, blockFactory, itemFactory, blockEntityFactory)); + } + + public MultiblockMachineBuilder multiblock(String name, + MachineInstanceFactory blockEntityFactory) { + return multiblock(this, name, blockEntityFactory); } - public MultiblockMachineBuilder multiblock(String name, - MachineInstanceFactory blockEntityFactory) { - return new MultiblockMachineBuilder<>(this, name, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory); + public MultiblockMachineBuilder multiblock(P parent, String name, + MachineInstanceFactory blockEntityFactory) { + return entry(name, callback -> new MultiblockMachineBuilder<>(this, parent, name, callback, MetaMachineBlock::new, MetaMachineItem::new, blockEntityFactory)); } // Recipe types diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index ccd0f651754..5276fefc006 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -29,16 +29,21 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.model.builder.MachineModelBuilder; +import com.tterrag.registrate.builders.AbstractBuilder; +import com.tterrag.registrate.builders.BlockEntityBuilder; +import com.tterrag.registrate.util.entry.BlockEntityEntry; +import com.tterrag.registrate.util.entry.BlockEntry; +import com.tterrag.registrate.util.entry.ItemEntry; import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.RenderType; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; @@ -50,15 +55,11 @@ import net.neoforged.neoforge.client.model.generators.BlockModelBuilder; import brachy.modularui.theme.ThemeAPI; -import com.tterrag.registrate.AbstractRegistrate; -import com.tterrag.registrate.builders.BlockBuilder; +import com.tterrag.registrate.builders.BuilderCallback; import com.tterrag.registrate.builders.ItemBuilder; import com.tterrag.registrate.providers.DataGenContext; import com.tterrag.registrate.providers.ProviderType; -import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullConsumer; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; +import com.tterrag.registrate.util.nullness.*; import dev.latvian.mods.rhino.util.HideFromJS; import dev.latvian.mods.rhino.util.RemapPrefixForJS; import it.unimi.dsi.fastutil.objects.Reference2IntMap; @@ -82,14 +83,13 @@ @MethodsReturnNonnullByDefault @RemapPrefixForJS("kjs$") @Accessors(chain = true, fluent = true) -public class MachineBuilder> { - - protected final GTRegistrate registrate; - protected final String name; +public class MachineBuilder> extends AbstractBuilder { protected final BiFunction blockFactory; protected final BiFunction itemFactory; + protected boolean defaultBlock = true, defaultItem = true, defaultBlockEntity = false; + @Setter(onMethod_ = @ApiStatus.Internal) protected MachineInstanceFactory instanceFactory; @Setter(onMethod_ = @ApiStatus.Internal) @@ -113,9 +113,7 @@ public class MachineBuilder blockProp = p -> p; private NonNullUnaryOperator itemProp = p -> p; - private @Nullable Consumer> blockBuilder; - private @Nullable Consumer> itemBuilder; - private NonNullConsumer> onBlockEntityRegister = NonNullConsumer.noop(); + private NonNullConsumer> onBlockEntityRegister = NonNullConsumer.noop(); @Getter // getter for KJS private GTRecipeType[] recipeTypes = new GTRecipeType[0]; @Getter // getter for KJS @@ -148,13 +146,12 @@ public class MachineBuilder definition, BiFunction blockFactory, BiFunction itemFactory, MachineInstanceFactory instanceFactory) { - this.registrate = registrate; - this.name = name; + super(owner, parent, name, callback, GTRegistries.Keys.MACHINE); this.blockFactory = blockFactory; this.itemFactory = itemFactory; this.instanceFactory = instanceFactory; @@ -166,6 +163,11 @@ public S getThis() { return (S) this; } + @Override + public GTRegistrate getOwner() { + return (GTRegistrate) super.getOwner(); + } + public S blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { this.blockModel = blockModel; return getThis(); @@ -211,17 +213,7 @@ public S itemProp(NonNullUnaryOperator itemProp) { return getThis(); } - public S blockBuilder(@Nullable Consumer> blockBuilder) { - this.blockBuilder = blockBuilder; - return getThis(); - } - - public S itemBuilder(@Nullable Consumer> itemBuilder) { - this.itemBuilder = itemBuilder; - return getThis(); - } - - public S onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { + public S onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { this.onBlockEntityRegister = onBlockEntityRegister; return getThis(); } @@ -306,7 +298,7 @@ public S recipeType(GTRecipeType type) { if (type == null) { GTCEu.LOGGER.error( "Tried to set null recipe type on machine {}. Did you create the recipe type before this machine?", - this.registrate.makeResourceLocation(this.name)); + getOwner().makeResourceLocation(getName())); return getThis(); } this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); @@ -328,7 +320,7 @@ public S recipeTypes(GTRecipeType... types) { } else { GTCEu.LOGGER.error( "Tried to set null recipe type on machine {} (index {}). Did you create the recipe type before this machine?", - this.registrate.makeResourceLocation(this.name), i); + getOwner().makeResourceLocation(getName()), i); } } this.recipeTypes = typeList.toArray(GTRecipeType[]::new); @@ -354,7 +346,7 @@ public S simpleModel(ResourceLocation modelName) { } public S defaultModel() { - return simpleModel(registrate.makeResourceLocation("block/machine/template/" + name)); + return simpleModel(getOwner().makeResourceLocation("block/machine/template/" + getName())); } public S tieredHullModel(ResourceLocation model) { @@ -363,8 +355,7 @@ public S tieredHullModel(ResourceLocation model) { public S overlayTieredHullModel(String name) { modelProperty(GTMachineModelProperties.IS_FORMED, false); - return overlayTieredHullModel( - ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/machine/part/" + name)); + return overlayTieredHullModel(getOwner().makeResourceLocation("block/machine/part/" + name)); } public S overlayTieredHullModel(ResourceLocation overlayModel) { @@ -379,12 +370,11 @@ public S colorOverlayTieredHullModel(String overlay, @Nullable String pipeOverlay, @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); - ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), - "block/overlay/machine/" + overlay); + ResourceLocation overlayTex = getOwner().makeResourceLocation("block/overlay/machine/" + overlay); ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : - registrate.makeResourceLocation("block/overlay/machine/" + pipeOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + pipeOverlay); ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : - registrate.makeResourceLocation("block/overlay/machine/" + emissiveOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + emissiveOverlay); return colorOverlayTieredHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } @@ -402,8 +392,7 @@ public S colorOverlayTieredHullModel(ResourceLocation overlay, public S overlaySteamHullModel(String name) { modelProperty(GTMachineModelProperties.IS_FORMED, false); - return overlaySteamHullModel( - ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/machine/part/" + name)); + return overlaySteamHullModel(getOwner().makeResourceLocation("block/machine/part/" + name)); } public S overlaySteamHullModel(ResourceLocation overlayModel) { @@ -419,13 +408,11 @@ public S colorOverlaySteamHullModel(String overlay, @Nullable String pipeOverlay, @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); - ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), - "block/overlay/machine/" + overlay); + ResourceLocation overlayTex = getOwner().makeResourceLocation("block/overlay/machine/" + overlay); ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : - ResourceLocation.fromNamespaceAndPath(registrate.getModid(), "block/overlay/machine/" + pipeOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + pipeOverlay); ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : - ResourceLocation.fromNamespaceAndPath(registrate.getModid(), - "block/overlay/machine/" + emissiveOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + emissiveOverlay); return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } @@ -433,12 +420,11 @@ public S colorOverlaySteamHullModel(String overlay, @Nullable ResourceLocation pipeOverlay, @Nullable String emissiveOverlay) { modelProperty(GTMachineModelProperties.IS_FORMED, false); - ResourceLocation overlayTex = ResourceLocation.fromNamespaceAndPath(registrate.getModid(), - "block/overlay/machine/" + overlay); + ResourceLocation overlayTex = getOwner().makeResourceLocation("block/overlay/machine/" + overlay); ResourceLocation pipeOverlayTex = pipeOverlay == null ? null : - registrate.makeResourceLocation("block/overlay/machine/" + pipeOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + pipeOverlay); ResourceLocation emissiveOverlayTex = emissiveOverlay == null ? null : - registrate.makeResourceLocation("block/overlay/machine/" + emissiveOverlay); + getOwner().makeResourceLocation("block/overlay/machine/" + emissiveOverlay); return colorOverlaySteamHullModel(overlayTex, pipeOverlayTex, emissiveOverlayTex); } @@ -473,13 +459,11 @@ public S workableCasingModel(ResourceLocation baseCasing, ResourceLocation worka return model(createWorkableCasingMachineModel(baseCasing, workableModel)); } - public S sidedOverlayCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { + public S sidedOverlayCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { return model(createSidedOverlayCasingMachineModel(baseCasing, workableModel)); } - public S sidedWorkableCasingModel(ResourceLocation baseCasing, - ResourceLocation workableModel) { + public S sidedWorkableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { modelProperty(GTMachineModelProperties.RECIPE_LOGIC_STATUS, RecipeLogic.Status.IDLE); return model(createSidedWorkableCasingMachineModel(baseCasing, workableModel)); } @@ -494,7 +478,9 @@ public S tooltips(@Nullable Component... components) { } public S tooltips(List components) { - tooltips.addAll(components.stream().filter(Objects::nonNull).toList()); + components.stream() + .filter(Objects::nonNull) + .forEachOrdered(tooltips::add); return getThis(); } @@ -617,13 +603,12 @@ public S multiblockPreviewRenderer(boolean multiBlockWorldPreview, } protected D createDefinition() { - return definition.apply(registrate.makeResourceLocation(name)); + return this.definition.apply(getOwner().makeResourceLocation(getName())); } @SuppressWarnings({ "unchecked", "rawtypes" }) protected void setupStateDefinition(MachineDefinition definition) { - StateDefinition.Builder builder = new StateDefinition.Builder<>( - definition); + var builder = new StateDefinition.Builder(definition); this.modelProperties.keySet().forEach(builder::add); definition.setStateDefinition(builder.create(MachineDefinition::defaultRenderState, MachineRenderState::new)); @@ -637,48 +622,50 @@ protected void setupStateDefinition(MachineDefinition definition) { } @HideFromJS - public D register() { - this.registrate.object(name); - var definition = createDefinition(); + public D createEntry() { + this.getOwner().object(getName()); + + D definition = createDefinition(); definition.setRotationState(rotationState); setupStateDefinition(definition); if (model == null && blockModel == null) { - simpleModel(registrate.makeResourceLocation("block/machine/template/" + name)); - } - var blockBuilder = BlockBuilderWrapper.makeBlockBuilder(getThis(), definition); - if (this.langValue != null) { - blockBuilder.lang(langValue); - definition.setLangValue(langValue); + simpleModel(getOwner().makeResourceLocation("block/machine/template/" + getName())); } - if (this.blockBuilder != null) { - this.blockBuilder.accept(blockBuilder); + definition.setLangValue(langValue); + + final BlockEntry block; + if (defaultBlock) { + block = this.block().register(); + } else { + block = BlockEntry.cast(getOwner().get(getName(), Registries.BLOCK)); } - var block = blockBuilder.register(); + definition.setBlockSupplier(block); - var itemBuilder = ItemBuilderWrapper.makeItemBuilder(getThis(), block); - if (this.itemBuilder != null) { - this.itemBuilder.accept(itemBuilder); + final ItemEntry item; + if (defaultItem) { + item = this.item().register(); + } else { + item = ItemEntry.cast(getOwner().get(getName(), Registries.ITEM)); } - var item = itemBuilder.register(); + definition.setItemSupplier(item); - var blockEntityBuilder = registrate - .blockEntity( - (type, pos, state) -> instanceFactory - .buildMachine(new BlockEntityCreationInfo(type, pos, state))) - .onRegister(onBlockEntityRegister) - .validBlock(block); - if (hasBER) { - blockEntityBuilder = blockEntityBuilder.renderer(() -> BlockEntityWithBERModelRenderer::new); + final BlockEntityEntry blockEntity; + if (defaultBlockEntity) { + var blockEntityBuilder = blockEntity(); + if (hasBER) { + blockEntityBuilder = blockEntityBuilder.renderer(() -> BlockEntityWithBERModelRenderer::new); + } + blockEntity = blockEntityBuilder.register(); + } else { + blockEntity = BlockEntityEntry.cast(getOwner().get(getName(), Registries.BLOCK_ENTITY_TYPE)); } - var blockEntity = blockEntityBuilder.register(); + if (this.ui != null) { definition.setUI(ui); } definition.setThemeId(themeId); definition.setRecipeTypes(recipeTypes); - definition.setBlockSupplier(block); - definition.setItemSupplier(item); definition.setTier(tier); definition.setRecipeOutputLimits(recipeOutputLimits); definition.setBlockEntityTypeSupplier(blockEntity::get); @@ -710,11 +697,47 @@ public D register() { definition.setRenderXEIPreview(renderMultiblockXEIPreview); definition.setRenderWorldPreview(renderMultiblockWorldPreview); - this.registrate.generic(definition.getId().getPath(), GTRegistries.Keys.MACHINE, () -> definition).register(); - return definition; } + // spotless:off + public GTBlockBuilder block() { + this.defaultBlock = false; + return getOwner().block(getThis(), getName(), p -> BlockBuilderWrapper.makeBlock(getThis(), getEntry(), p)) + .lang(this.langValue) + .color(() -> () -> MetaMachineBlock::colorTinted) + .initialProperties(() -> Blocks.DISPENSER) + .properties(BlockBehaviour.Properties::noLootTable) + .addLayer(() -> RenderType::cutout) + .exBlockstate(blockModel != null ? blockModel : createMachineModel(model)) + .properties(blockProp) + .onRegister(b -> Arrays.stream(abilities).forEach(a -> a.register(tier, b))); + } + + public ItemBuilder item() { + this.defaultItem = false; + return getOwner().item(getThis(), getName(), properties -> this.itemFactory.apply(getEntry().get(), properties)) + .setData(ProviderType.LANG, NonNullBiConsumer.noop()) // do not gen any lang keys + // copied from BlockBuilder#item + .model((ctx, prov) -> prov.withExistingParent(ctx.getName(), getOwner().makeResourceLocation("block/machine/" + ctx.getName()))) + .clientExtension(() -> () -> new IClientItemExtensions() { + + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return ItemWithBERModelRenderer.INSTANCE; + } + }) + .color(() -> () -> this.itemColor::apply) + .properties(this.itemProp); + } + + public BlockEntityBuilder blockEntity() { + this.defaultBlockEntity = false; + return getOwner().blockEntity(getThis(), getName(), (type, pos, state) -> instanceFactory.buildMachine(new BlockEntityCreationInfo(type, pos, state))) + .onRegister(onBlockEntityRegister) + .validBlock(() -> getOwner().get(getName(), Registries.BLOCK).get()); + } + @FunctionalInterface public interface ModelInitializer { @@ -755,50 +778,13 @@ default ModelInitializer compose(UnaryOperator BlockBuilder> makeBlockBuilder(MachineBuilder builder, - DEFINITION definition) { - return builder.registrate.block(properties -> makeBlock(builder, definition, properties)) - .color(() -> () -> MetaMachineBlock::colorTinted) - .initialProperties(() -> Blocks.DISPENSER) - .properties(BlockBehaviour.Properties::noLootTable) - .addLayer(() -> RenderType::cutout) - .exBlockstate(builder.blockModel != null ? builder.blockModel : createMachineModel(builder.model)) - .properties(builder.blockProp) - .onRegister(b -> Arrays.stream(builder.abilities).forEach(a -> a.register(builder.tier, b))); - } - - private static Block makeBlock(MachineBuilder builder, DEFINITION definition, - BlockBehaviour.Properties properties) { + private static MetaMachineBlock makeBlock(MachineBuilder builder, + D definition, BlockBehaviour.Properties properties) { MachineDefinition.setBuilt(definition); var b = builder.blockFactory.apply(properties, definition); MachineDefinition.clearBuilt(); return b; } } - - protected static class ItemBuilderWrapper { - - public static ItemBuilder> makeItemBuilder(MachineBuilder builder, - BlockEntry block) { - return builder.registrate - .item(properties -> builder.itemFactory.apply((MetaMachineBlock) block.get(), properties)) - .setData(ProviderType.LANG, NonNullBiConsumer.noop()) // do not gen any lang keys - // copied from BlockBuilder#item - .model((ctx, prov) -> { - prov.withExistingParent(ctx.getName(), - ResourceLocation.fromNamespaceAndPath(builder.registrate.getModid(), - "block/machine/" + ctx.getName())); - }) - .clientExtension(() -> () -> new IClientItemExtensions() { - - @Override - public BlockEntityWithoutLevelRenderer getCustomRenderer() { - return ItemWithBERModelRenderer.INSTANCE; - } - }) - .color(() -> () -> builder.itemColor::apply) - .properties(builder.itemProp); - } - } // spotless:on } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index 40b529f9493..fa7190dc978 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import com.tterrag.registrate.builders.BuilderCallback; import dev.latvian.mods.rhino.util.HideFromJS; import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap; import lombok.Getter; @@ -30,7 +31,7 @@ import java.util.function.*; @Accessors(chain = true, fluent = true) -public class MultiblockMachineBuilder extends MachineBuilder> { +public class MultiblockMachineBuilder extends MachineBuilder> { private boolean generator; private final Map> patterns; @@ -42,77 +43,77 @@ public class MultiblockMachineBuilder ext @Getter private BiConsumer> additionalDisplay = (m, l) -> {}; - public MultiblockMachineBuilder(GTRegistrate registrate, String name, + public MultiblockMachineBuilder(GTRegistrate owner, P parent, String name, BuilderCallback callback, BiFunction blockFactory, BiFunction itemFactory, - MachineInstanceFactory blockEntityFactory) { - super(registrate, name, MultiblockMachineDefinition::new, blockFactory, itemFactory, blockEntityFactory); - patterns = new Object2ReferenceOpenHashMap<>(); + MachineInstanceFactory instanceFactory) { + super(owner, parent, name, callback, MultiblockMachineDefinition::new, blockFactory, itemFactory, instanceFactory); + this.patterns = new Object2ReferenceOpenHashMap<>(); allowExtendedFacing(true); allowCoverOnFront(true); // always add the formed property to multi controllers modelProperty(GTMachineModelProperties.IS_FORMED, false); } - public MultiblockMachineBuilder generator(boolean generator) { + public MultiblockMachineBuilder generator(boolean generator) { this.generator = generator; return getThis(); } - public MultiblockMachineBuilder pattern(Function pattern) { + public MultiblockMachineBuilder pattern(Function pattern) { this.patterns.put(MultiblockControllerMachine.DEFAULT_STRUCTURE, pattern); return getThis(); } - public MultiblockMachineBuilder pattern(String structureName, Function pattern) { + public MultiblockMachineBuilder pattern(String structureName, Function pattern) { this.patterns.put(structureName, pattern); return getThis(); } - public MultiblockMachineBuilder allowFlip(boolean allowFlip) { + public MultiblockMachineBuilder allowFlip(boolean allowFlip) { this.allowFlip = allowFlip; return getThis(); } - public MultiblockMachineBuilder partSorter(Function> partSorter) { + public MultiblockMachineBuilder partSorter(Function> partSorter) { this.partSorter = partSorter; return getThis(); } - public MultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { + public MultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { this.partAppearance = partAppearance; return getThis(); } - public MultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { + public MultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { this.additionalDisplay = additionalDisplay; return getThis(); } - public MultiblockMachineBuilder recoveryItems(Supplier items) { + public MultiblockMachineBuilder recoveryItems(Supplier items) { this.recoveryItems.add(() -> Arrays.stream(items.get()).map(ItemLike::asItem).map(Item::getDefaultInstance) .toArray(ItemStack[]::new)); return getThis(); } - public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { + public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { this.recoveryItems.add(stacks); return getThis(); } @Tolerate - public MultiblockMachineBuilder partSorter(Comparator sorter) { + public MultiblockMachineBuilder partSorter(Comparator sorter) { this.partSorter = $ -> sorter; return getThis(); } @Override @HideFromJS - public MultiblockMachineDefinition register() { - var definition = super.register(); + public MultiblockMachineDefinition createEntry() { + MultiblockMachineDefinition definition = super.createEntry(); definition.setGenerator(generator); if (patterns.isEmpty()) { - throw new IllegalStateException("Missing default structure pattern for " + name); + throw new IllegalStateException("Missing default structure pattern for " + getOwner().makeResourceLocation(getName())); } for (Map.Entry> entry : patterns.entrySet()) { definition.setPattern(entry.getKey(), GTMemoizer.memoize(() -> entry.getValue().apply(definition))); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java new file mode 100644 index 00000000000..3ca52d7addb --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.api.registry.registrate; + +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; +import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.tterrag.registrate.builders.BuilderCallback; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import java.util.function.BiFunction; +import java.util.function.Function; + +public class SingleblockMachineBuilder extends MachineBuilder> { + + public SingleblockMachineBuilder(GTRegistrate owner, P parent, String name, BuilderCallback callback, + Function definition, + BiFunction blockFactory, + BiFunction itemFactory, + MachineInstanceFactory blockEntityFactory) { + super(owner, parent, name, callback, definition, blockFactory, itemFactory, blockEntityFactory); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java index f097574497d..5b0fa2a0b1b 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java +++ b/src/main/java/com/gregtechceu/gtceu/client/renderer/machine/impl/QuantumTankFluidRender.java @@ -67,7 +67,7 @@ public void renderByItem(ItemStack stack, ItemDisplayContext displayContext, if (storedAmount == 0 && !stored.isEmpty()) storedAmount = stored.getAmount(); long maxAmount = 0; if (stack.getItem() instanceof MetaMachineItem machineItem) { - maxAmount = TANK_CAPACITY.getLong(machineItem.getDefinition()); + maxAmount = TANK_CAPACITY.getLong(machineItem.getDefinition().getHolder()); } // Don't need to handle locked fluids here since they don't get saved to the item renderTank(poseStack, buffer, Direction.NORTH, diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java index e5bb204e58c..29fba999467 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/ItemFilterCover.java @@ -54,7 +54,8 @@ public ItemFilter getItemFilter() { itemFilter = ItemFilter.loadFilter(attachItem); if (itemFilter instanceof SmartItemFilter smart && coverHolder instanceof MachineCoverContainer mcc) { var machine = MetaMachine.getMachine(mcc.getLevel(), mcc.getBlockPos()); - if (machine != null) smart.setModeFromMachine(machine.getDefinition().getName()); + // TODO make this use machines' definitions or full IDs? + if (machine != null) smart.setModeFromMachine(machine.getDefinition().getId().getPath()); } } return itemFilter; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index be8c323e5a6..74d27095b12 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -31,8 +31,8 @@ import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.SingleblockMachineBuilder; import com.gregtechceu.gtceu.client.renderer.machine.*; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.GTMaterialItems; @@ -71,6 +71,7 @@ import net.neoforged.neoforge.fluids.FluidType; import net.neoforged.neoforge.fluids.SimpleFluidContent; +import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -96,7 +97,6 @@ import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; import static com.gregtechceu.gtceu.common.data.models.GTMachineModels.*; import static com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine.AMPS_PER_BATTERY_NORMAL; -import static com.gregtechceu.gtceu.common.machine.storage.QuantumTankMachine.TANK_CAPACITY; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; public class GTMachineUtils { @@ -120,7 +120,7 @@ public class GTMachineUtils { public static final Int2IntFunction genericGeneratorTankSizeFunction = tier -> Math.min(4 * (1 << (tier - 1)), 16) * FluidType.BUCKET_VOLUME; - public static Object2IntMap DRUM_CAPACITY = new Object2IntArrayMap<>(); + public static Object2IntMap> DRUM_CAPACITY = new Object2IntArrayMap<>(); public static final PartAbility[] DUAL_INPUT_HATCH_ABILITIES = new PartAbility[] { PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, @@ -130,14 +130,15 @@ public class GTMachineUtils { PartAbility.EXPORT_ITEMS, PartAbility.EXPORT_FLUIDS, }; + // spotless:off /** * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, - GTRecipeType recipeType, - Int2IntFunction tankScalingFunction, - boolean hasPollutionDebuff, PanelFactory panelFactory) { + public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + boolean hasPollutionDebuff, PanelFactory panelFactory) { return new SimpleMachineBuilder(registrate, name, recipeType) .tankScalingFunction(tankScalingFunction) .hasPollutionDebuff(hasPollutionDebuff) @@ -149,10 +150,10 @@ public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, - GTRecipeType recipeType, - Int2IntFunction tankScalingFunction, - PanelFactory panelFactory) { + public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + PanelFactory panelFactory) { return new SimpleMachineBuilder(registrate, name, recipeType) .panelFactory(panelFactory) .tankScalingFunction(tankScalingFunction) @@ -163,20 +164,20 @@ public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, String name, + public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, GTRecipeType recipeType, PanelFactory panelFactory) { return new SimpleMachineBuilder(registrate, name, recipeType) .panelFactory(panelFactory) .register(); } - public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate, - String name, - GTRecipeType recipeType, - Int2IntFunction tankScalingFunction, - boolean hasPollutionDebuff, - PanelFactory panelFactory, - int... tiers) { + public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, + String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + boolean hasPollutionDebuff, + PanelFactory panelFactory, + int... tiers) { return new SimpleMachineBuilder(registrate, name, recipeType) .tankScalingFunction(tankScalingFunction) .hasPollutionDebuff(hasPollutionDebuff) @@ -185,12 +186,13 @@ public static MachineDefinition[] registerSimpleMachines(GTRegistrate registrate .register(); } - public static MachineDefinition[] registerTieredMachines(GTRegistrate registrate, - String name, - MachineInstanceFactory.Tiered factory, - BiFunction, MachineDefinition> builder, - int... tiers) { - MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; + @SuppressWarnings("unchecked") + public static RegistryEntry[] registerTieredMachines(GTRegistrate registrate, + String name, + MachineInstanceFactory.Tiered factory, + BiFunction, RegistryEntry> builder, + int... tiers) { + RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate .machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, @@ -201,26 +203,25 @@ public static MachineDefinition[] registerTieredMa return definitions; } - public static < - MACHINE extends MetaMachine> Pair registerSteamMachines(GTRegistrate registrate, - String name, - MachineInstanceFactory.Steam factory, - BiFunction, MachineDefinition> builder) { - MachineDefinition lowTier = builder.apply(false, + public static Pair, RegistryEntry> registerSteamMachines(GTRegistrate registrate, + String name, + MachineInstanceFactory.Steam factory, + BiFunction, RegistryEntry> builder) { + RegistryEntry lowTier = builder.apply(false, registrate.machine("lp_%s".formatted(name), holder -> factory.buildMachine(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(name)) .tier(0)); - MachineDefinition highTier = builder.apply(true, + RegistryEntry highTier = builder.apply(true, registrate.machine("hp_%s".formatted(name), holder -> factory.buildMachine(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(name)) .tier(1)); return Pair.of(lowTier, highTier); } - public static MachineDefinition[] registerFluidHatches(GTRegistrate registrate, String name, String displayName, - String tooltip, - IO io, int initialCapacity, int slots, - int[] tiers, PartAbility... abilities) { + public static RegistryEntry[] registerFluidHatches(GTRegistrate registrate, String name, + String displayName, String tooltip, + IO io, int initialCapacity, int slots, + int[] tiers, PartAbility... abilities) { final String pipeOverlay; if (slots >= 9) { pipeOverlay = "overlay_pipe_9x"; @@ -256,8 +257,7 @@ public static MachineDefinition[] registerFluidHatches(GTRegistrate registrate, tiers); } - public static MachineDefinition[] registerTransformerMachines(GTRegistrate registrate, String langName, - int baseAmp) { + public static RegistryEntry[] registerTransformerMachines(GTRegistrate registrate, String langName, int baseAmp) { return registerTieredMachines(registrate, "transformer_%da".formatted(baseAmp), (holder, tier) -> new TransformerMachine(holder, tier, baseAmp), (tier, builder) -> builder @@ -288,11 +288,11 @@ public static MachineDefinition[] registerTransformerMachines(GTRegistrate regis // UHV not needed, as a UV transformer transforms up to UHV } - public static MachineDefinition[] registerSimpleGenerator(GTRegistrate registrate, String name, - GTRecipeType recipeType, - Int2IntFunction tankScalingFunction, - float hazardStrengthPerOperation, - int... tiers) { + public static RegistryEntry[] registerSimpleGenerator(GTRegistrate registrate, String name, + GTRecipeType recipeType, + Int2IntFunction tankScalingFunction, + float hazardStrengthPerOperation, + int... tiers) { return registerTieredMachines(registrate, name, (holder, tier) -> new SimpleGeneratorMachine(holder, tier, hazardStrengthPerOperation * tier, tankScalingFunction), @@ -311,9 +311,7 @@ public static MachineDefinition[] registerSimpleGenerator(GTRegistrate registrat tiers); } - public static Pair registerSimpleSteamMachines(GTRegistrate registrate, - String name, - GTRecipeType recipeType) { + public static Pair, RegistryEntry> registerSimpleSteamMachines(GTRegistrate registrate, String name, GTRecipeType recipeType) { return registerSteamMachines(registrate, "steam_" + name, SimpleSteamMachine::new, (pressure, builder) -> builder .rotationState(RotationState.ALL) @@ -326,7 +324,7 @@ public static Pair registerSimpleSteamMach .register()); } - public static MachineDefinition[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { + public static RegistryEntry[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { return registerTieredMachines(registrate, "battery_buffer_" + batterySlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, batterySlotSize, AMPS_PER_BATTERY_NORMAL, batterySlotSize), @@ -349,7 +347,7 @@ public static MachineDefinition[] registerBatteryBuffer(GTRegistrate registrate, ALL_TIERS); } - public static MachineDefinition[] registerCharger(GTRegistrate registrate, int itemSlotSize) { + public static RegistryEntry[] registerCharger(GTRegistrate registrate, int itemSlotSize) { return registerTieredMachines(registrate, "charger_" + itemSlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, itemSlotSize, BatteryBufferMachine.AMPS_PER_BATTERY_CHARGER, 0), @@ -370,14 +368,14 @@ public static MachineDefinition[] registerCharger(GTRegistrate registrate, int i ALL_TIERS); } - public static MachineDefinition[] registerConverter(GTRegistrate registrate, int amperage) { + public static RegistryEntry[] registerConverter(GTRegistrate registrate, int amperage) { final var tab = registrate.creativeModeTab(); if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { registrate.creativeModeTab(() -> null); } - MachineDefinition[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", + RegistryEntry[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", (holder, tier) -> new ConverterMachine(holder, tier, amperage), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -404,8 +402,7 @@ public static MachineDefinition[] registerConverter(GTRegistrate registrate, int return converters; } - public static MachineDefinition[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, - PartAbility ability) { + public static RegistryEntry[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, PartAbility ability) { String name = io == IN ? "target" : "source"; return registerTieredMachines(registrate, amperage + "a_laser_" + name + "_hatch", (holder, tier) -> new LaserHatchPartMachine(holder, io, tier, amperage), (tier, builder) -> builder @@ -429,8 +426,8 @@ public static MachineDefinition[] registerLaserHatch(GTRegistrate registrate, IO HIGH_TIERS); } - public static MachineDefinition registerCrate(GTRegistrate registrate, Material material, int capacity, - int rowLength, String lang) { + public static RegistryEntry registerCrate(GTRegistrate registrate, Material material, + int capacity, int rowLength, String lang) { final boolean wooden = material.hasProperty(PropertyKey.WOOD); return registrate @@ -446,8 +443,8 @@ public static MachineDefinition registerCrate(GTRegistrate registrate, Material .register(); } - public static MachineDefinition registerDrum(GTRegistrate registrate, Material material, int capacity, - String lang) { + public static RegistryEntry registerDrum(GTRegistrate registrate, Material material, + int capacity, String lang) { boolean wooden = material.hasProperty(PropertyKey.WOOD); var definition = registrate .machine(material.getName() + "_drum", MachineDefinition::new, @@ -474,8 +471,9 @@ public static MachineDefinition registerDrum(GTRegistrate registrate, Material m return definition; } - public static MachineDefinition[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { - MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; + @SuppressWarnings("unchecked") + public static RegistryEntry[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { + RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; for (int tier : tiers) { long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); var register = registrate.machine( @@ -502,7 +500,7 @@ public static MachineDefinition[] registerQuantumTanks(GTRegistrate registrate, return definitions; } - public static MachineDefinition[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { + public static RegistryEntry[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { return registerTieredMachines(registrate, name, (holder, tier) -> new QuantumChestMachine(holder, tier, tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), @@ -528,13 +526,13 @@ public static MachineDefinition[] registerQuantumChests(GTRegistrate registrate, ////////////////////////////////////// // multi register helpers - public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate registrate, String name, - String displayName, int capacity, - Supplier casing, - Supplier valve, - @Nullable PropertyFluidFilter filter, - BiConsumer, ResourceLocation> rendererSetup) { - MultiblockMachineBuilder builder = registrate + public static RegistryEntry registerMultiblockTank(GTRegistrate registrate, String name, + String displayName, int capacity, + Supplier casing, + Supplier valve, + @Nullable PropertyFluidFilter filter, + BiConsumer, ResourceLocation> rendererSetup) { + MultiblockMachineBuilder builder = registrate .multiblock(name, holder -> new MultiblockTankMachine(holder, capacity, filter)) .langValue(displayName) .tooltips( @@ -548,7 +546,7 @@ public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate re .slice("CCC", "CCC", "CCC") .slice("CCC", "C#C", "CCC") .slice("CCC", "CSC", "CCC") - .where('S', controller(blocks(definition.get()))) + .where('S', controller(definition)) .where('C', blocks(casing.get()) .or(blocks(valve.get()).setMaxGlobalLimited(2, 0))) .where('#', air()) @@ -558,10 +556,10 @@ public static MultiblockMachineDefinition registerMultiblockTank(GTRegistrate re return builder.register(); } - public static MachineDefinition registerTankValve(GTRegistrate registrate, String name, String displayName, - boolean isMetal, - BiConsumer, ResourceLocation> rendererSetup) { - MachineBuilder builder = registrate + public static RegistryEntry registerTankValve(GTRegistrate registrate, String name, String displayName, + boolean isMetal, + BiConsumer, ResourceLocation> rendererSetup) { + var builder = registrate .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) .tooltips(Component.translatable("gtceu.machine.tank_valve.tooltip"), @@ -571,12 +569,12 @@ public static MachineDefinition registerTankValve(GTRegistrate registrate, Strin return builder.register(); } - public static MultiblockMachineDefinition[] registerTieredMultis(GTRegistrate registrate, - String name, - MachineInstanceFactory.Tiered factory, - BiFunction, MultiblockMachineDefinition> builder, - int... tiers) { - MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; + @SuppressWarnings("unchecked") + public static RegistryEntry[] registerTieredMultis(GTRegistrate registrate, String name, + MachineInstanceFactory.Tiered factory, + BiFunction, RegistryEntry> builder, + int... tiers) { + RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate .multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, @@ -587,12 +585,12 @@ public static MultiblockMachineDefinitio return definitions; } - public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate registrate, String name, - Supplier casing, - Supplier pipe, - Supplier fireBox, - ResourceLocation texture, BoilerFireboxType firebox, - int maxTemperature, int heatSpeed) { + public static RegistryEntry registerLargeBoiler(GTRegistrate registrate, String name, + Supplier casing, + Supplier pipe, + Supplier fireBox, + ResourceLocation texture, BoilerFireboxType firebox, + int maxTemperature, int heatSpeed) { // spotless:off return registrate .multiblock("%s_large_boiler".formatted(name), @@ -622,7 +620,7 @@ public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate regis .slice("XXX", "CCC", "CCC", "CCC") .slice("XXX", "CPC", "CPC", "CCC") .slice("XXX", "CSC", "CCC", "CCC") - .where('S', Predicates.controller(blocks(definition.getBlock()))) + .where('S', controller(definition)) .where('P', blocks(pipe.get())) .where('X', fireboxPred) .where('C', blocks(casing.get()).setMinGlobalLimited(20) @@ -648,13 +646,12 @@ public static MultiblockMachineDefinition registerLargeBoiler(GTRegistrate regis // spotless:on } - public static MultiblockMachineDefinition registerLargeCombustionEngine(GTRegistrate registrate, - String name, int tier, - Supplier casing, - Supplier gear, - Supplier intake, - ResourceLocation casingTexture, - ResourceLocation overlayModel) { + public static RegistryEntry registerLargeCombustionEngine(GTRegistrate registrate, String name, int tier, + Supplier casing, + Supplier gear, + Supplier intake, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { return registrate.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.COMBUSTION_GENERATOR_FUELS) @@ -681,7 +678,7 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(GTRegist .where('A', blocks(intake.get()) .addTooltips(Component.translatable("gtceu.multiblock.pattern.clear_amount_1"))) - .where('Y', controller(blocks(definition.getBlock()))) + .where('Y', controller(definition)) .build()) .recoveryItems( () -> new ItemLike[] { @@ -699,23 +696,23 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(GTRegist .register(); } - public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, - String name, int tier, GTRecipeType recipeType, - Supplier casing, - Supplier gear, - ResourceLocation casingTexture, - ResourceLocation overlayModel) { + public static RegistryEntry registerLargeTurbine(GTRegistrate registrate, String name, int tier, + GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { return registerLargeTurbine(registrate, name, tier, recipeType, casing, gear, casingTexture, overlayModel, true); } - public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate registrate, - String name, int tier, GTRecipeType recipeType, - Supplier casing, - Supplier gear, - ResourceLocation casingTexture, - ResourceLocation overlayModel, - boolean needsMuffler) { + public static RegistryEntry registerLargeTurbine(GTRegistrate registrate, String name, int tier, + GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel, + boolean needsMuffler) { return registrate.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(recipeType) @@ -726,7 +723,7 @@ public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate regi .slice("CCCC", "CHHC", "CCCC") .slice("CHHC", "RGGR", "CHHC") .slice("CCCC", "CSHC", "CCCC") - .where('S', controller(blocks(definition.getBlock()))) + .where('S', controller(definition)) .where('G', blocks(gear.get())) .where('C', blocks(casing.get())) .where('R', rotorHolder(tier).setExactLimit(1) @@ -744,6 +741,7 @@ public static MultiblockMachineDefinition registerLargeTurbine(GTRegistrate regi Component.translatable("gtceu.multiblock.turbine.efficiency_tooltip", VNF[tier])) .register(); } + // spotless:on private static PatternPredicate rotorHolder(int tier) { return new PatternPredicate(new BasePredicate((worldState) -> { @@ -850,7 +848,7 @@ public SimpleMachineBuilder(GTRegistrate registrate, String name, GTRecipeType r this.recipeType = recipeType; } - public MachineDefinition[] register() { + public RegistryEntry[] register() { if (panelFactory == null) { panelFactory = GTSingleblockMachinePanels.GENERAL_MACHINE; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/DrumMachineItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/DrumMachineItem.java index 66f667ae8e9..2b0d51385e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/DrumMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/DrumMachineItem.java @@ -34,7 +34,7 @@ public void attachCapabilities(RegisterCapabilitiesEvent event) { FluidPipeProperties property = mat.getProperty(PropertyKey.FLUID_PIPE); event.registerItem(Capabilities.FluidHandler.ITEM, (stack, ignored) -> new ThermalFluidHandlerItemStack(stack, - GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition()), + GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition().getHolder()), property.getMaxFluidTemperature(), property.isGasProof(), property.isAcidProof(), property.isCryoProof(), property.isPlasmaProof()), @@ -42,7 +42,7 @@ public void attachCapabilities(RegisterCapabilitiesEvent event) { } else { event.registerItem(Capabilities.FluidHandler.ITEM, (stack, ignored) -> new FluidHandlerItemStack(GTDataComponents.FLUID_CONTENT, stack, - GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition())), + GTMachineUtils.DRUM_CAPACITY.getInt(getDefinition().getHolder())), this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/QuantumTankMachineItem.java b/src/main/java/com/gregtechceu/gtceu/common/item/QuantumTankMachineItem.java index 61d58f2c2f3..7426f3f698c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/QuantumTankMachineItem.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/QuantumTankMachineItem.java @@ -20,21 +20,17 @@ public static QuantumTankMachineItem create(MetaMachineBlock block, Properties p } public void attachCapabilities(RegisterCapabilitiesEvent event) { - long capacity = 0L; - - if (!QuantumTankMachine.TANK_CAPACITY.containsKey(getDefinition())) { - GTCEu.LOGGER.error( - "Quantum tank " + getDefinition().getName() + - " does not have a registered TANK_CAPACITY, using capacity 0."); + final long capacity; + if (QuantumTankMachine.TANK_CAPACITY.containsKey(getDefinition().getHolder())) { + capacity = QuantumTankMachine.TANK_CAPACITY.getLong(getDefinition().getHolder()); } else { - capacity = QuantumTankMachine.TANK_CAPACITY.getLong(getDefinition()); + GTCEu.LOGGER.error("Quantum tank {} does not have a registered TANK_CAPACITY, will have capacity 0.", + getDefinition().getId()); + capacity = 0L; } - final long finalCapacity = capacity; - - event.registerItem( - Capabilities.FluidHandler.ITEM, - (stack, ignored) -> new QuantumFluidHandlerItemStack(stack, finalCapacity), + event.registerItem(Capabilities.FluidHandler.ITEM, + (stack, ignored) -> new QuantumFluidHandlerItemStack(stack, capacity), this); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java index 0a25898e27e..dc488b42a73 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/storage/QuantumTankMachine.java @@ -21,6 +21,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.Direction; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionResult; import net.neoforged.neoforge.fluids.FluidStack; @@ -52,7 +53,7 @@ public class QuantumTankMachine extends TieredMachine implements IControllable, IMuiMachine { - public static Object2LongMap TANK_CAPACITY = new Object2LongArrayMap<>(); + public static Object2LongMap> TANK_CAPACITY = new Object2LongArrayMap<>(); @SaveField @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTSingleblockMachinePanels.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTSingleblockMachinePanels.java index 5e53a85ddb1..d344326bd23 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTSingleblockMachinePanels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTSingleblockMachinePanels.java @@ -38,15 +38,15 @@ public class GTSingleblockMachinePanels { } else { GTCEu.LOGGER.error( "{} is not a SimpleTieredMachine/SimpleGeneratorMachine/SimpleSteamMachine, cannot add slots to its content", - machine.getDefinition().getName()); - return new ModularPanel<>(machine.getDefinition().getName()); + machine.getDefinition()); + return new ModularPanel<>(machine.getDefinition().getId().toString()); } if (type.getUiLayout() == null) { GTCEu.LOGGER.error( "Tried to draw a singleblock recipe type UI for {}, but it does not have a recipe type UI", - machine.getDefinition().getName()); - return new ModularPanel<>(machine.getDefinition().getName()); + machine.getDefinition()); + return new ModularPanel<>(machine.getDefinition().getId().toString()); } var builder = !isSteam ? MachineUIPanelBuilder.panelBuilder(machine).drawGTLogo(true) : diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index 0e0cf5e26f3..2d9fbad6c25 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -1227,10 +1227,7 @@ public static void registerMachineRecipe(RecipeOutput provider, boolean setMater // Leaves UHV+ machine recipes to be implemented by addons. if (machine != null) { Object[] prepRecipe = prepareRecipe(machine.getTier(), Arrays.copyOf(recipe, recipe.length)); - if (prepRecipe == null) { - return; - } - VanillaRecipeHelper.addShapedRecipe(provider, setMaterialInfoData, machine.getName(), machine.asStack(), + VanillaRecipeHelper.addShapedRecipe(provider, setMaterialInfoData, machine.getId(), machine.asStack(), prepRecipe); } } 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 c6b0f06876f..4515c945ca3 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -108,7 +108,6 @@ import dev.latvian.mods.kubejs.recipe.component.RecipeComponentTypeRegistry; import dev.latvian.mods.kubejs.recipe.schema.RecipeFactoryRegistry; import dev.latvian.mods.kubejs.recipe.schema.RecipeSchemaRegistry; -import dev.latvian.mods.kubejs.registry.BuilderBase; import dev.latvian.mods.kubejs.registry.BuilderTypeRegistry; import dev.latvian.mods.kubejs.registry.RegistryObjectStorage; import dev.latvian.mods.kubejs.registry.ServerRegistryRegistry; @@ -143,13 +142,9 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { reg.add(GTCEu.id("steam"), KJSSteamMachineBuilder.class, KJSSteamMachineBuilder::new); reg.add(GTCEu.id("generator"), KJSTieredMachineBuilder.class, (id) -> new KJSTieredMachineBuilder(id, SimpleGeneratorMachine::new, true)); - @SuppressWarnings("unchecked") - Class> multiblockBuilderClass = (Class>) KJSMultiblockMachineBuilder.class; - reg.add(GTCEu.id("multiblock"), multiblockBuilderClass, KJSMultiblockMachineBuilder::createKJSMulti); - @SuppressWarnings("unchecked") - Class> tieredMultiblockBuilderClass = (Class>) KJSTieredMultiblockBuilder.class; - reg.add(GTCEu.id("tiered_multiblock"), tieredMultiblockBuilderClass, KJSTieredMultiblockBuilder::new); - reg.add(GTCEu.id("primitive"), multiblockBuilderClass, (id) -> KJSMultiblockMachineBuilder.createKJSMulti(id, PrimitiveWorkableMachine::new)); + reg.add(GTCEu.id("multiblock"), KJSMultiblockMachineBuilder.class, KJSMultiblockMachineBuilder::create); + reg.add(GTCEu.id("tiered_multiblock"), KJSTieredMultiblockBuilder.class, KJSTieredMultiblockBuilder::new); + reg.add(GTCEu.id("primitive"), KJSMultiblockMachineBuilder.class, (id) -> KJSMultiblockMachineBuilder.create(id, PrimitiveWorkableMachine::new)); }); registry.of(Registries.BLOCK, reg -> { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java index 11755aee603..92d998ec437 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java @@ -15,7 +15,7 @@ public interface IMachineBuilderKJS { void generateMachineModels(); - default void generateMachineModel(@Nullable MachineBuilder builder, + default void generateMachineModel(@Nullable MachineBuilder builder, @Nullable MachineDefinition definition) { if (builder == null || definition == null) return; if (builder.model() == null && builder.blockModel() == null) return; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java index 111d3a85aaf..5ac5adc916b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.data.RotationState; import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; @@ -45,338 +44,338 @@ import java.util.function.*; @SuppressWarnings("unused") -public class KJSMultiblockMachineBuilder extends MachineBuilderWrapper> { +public class KJSMultiblockMachineBuilder extends MachineBuilderWrapper> { - public KJSMultiblockMachineBuilder(MultiblockMachineBuilder builder) { + public KJSMultiblockMachineBuilder(MultiblockMachineBuilder builder) { super(builder); } - public KJSMultiblockMachineBuilder generator(boolean generator) { + public static KJSMultiblockMachineBuilder create(ResourceLocation id) { + var baseBuilder = GTRegistrate.create(id.getNamespace(), false) + .multiblock(id.getPath(), WorkableElectricMultiblockMachine::new); + return new KJSMultiblockMachineBuilder(baseBuilder); + } + + public static KJSMultiblockMachineBuilder create(ResourceLocation id, + MachineInstanceFactory instanceFactory) { + var baseBuilder = GTRegistrate.create(id.getNamespace(), false) + .multiblock(id.getPath(), instanceFactory); + return new KJSMultiblockMachineBuilder(baseBuilder); + } + + public KJSMultiblockMachineBuilder generator(boolean generator) { builder.generator(generator); return this; } - public KJSMultiblockMachineBuilder pattern(Function pattern) { + public KJSMultiblockMachineBuilder pattern(Function pattern) { builder.pattern(pattern); return this; } - public KJSMultiblockMachineBuilder allowFlip(boolean allowFlip) { + public KJSMultiblockMachineBuilder allowFlip(boolean allowFlip) { builder.allowFlip(allowFlip); return this; } - public KJSMultiblockMachineBuilder partSorter(Comparator partSorter) { + public KJSMultiblockMachineBuilder partSorter(Comparator partSorter) { builder.partSorter(partSorter); return this; } - public KJSMultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { + public KJSMultiblockMachineBuilder partAppearance(@Nullable TriFunction partAppearance) { builder.partAppearance(partAppearance); return this; } - public KJSMultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { + public KJSMultiblockMachineBuilder additionalDisplay(BiConsumer> additionalDisplay) { builder.additionalDisplay(additionalDisplay); return this; } - public KJSMultiblockMachineBuilder recoveryItems(Supplier items) { + public KJSMultiblockMachineBuilder recoveryItems(Supplier items) { builder.recoveryItems(items); return this; } - public KJSMultiblockMachineBuilder recoveryStacks(Supplier stacks) { + public KJSMultiblockMachineBuilder recoveryStacks(Supplier stacks) { builder.recoveryStacks(stacks); return this; } - public KJSMultiblockMachineBuilder definition(Function definition) { + public KJSMultiblockMachineBuilder definition(Function definition) { builder.definition(definition); return this; } - public KJSMultiblockMachineBuilder instanceFactory(MachineInstanceFactory machine) { + public KJSMultiblockMachineBuilder instanceFactory(MachineInstanceFactory machine) { builder.instanceFactory(machine); return this; } - public KJSMultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { + public KJSMultiblockMachineBuilder model(@Nullable MachineBuilder.ModelInitializer model) { builder.model(model); return this; } - public KJSMultiblockMachineBuilder blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { + public KJSMultiblockMachineBuilder blockModel(@Nullable NonNullBiConsumer, GTBlockstateProvider> blockModel) { builder.blockModel(blockModel); return this; } - public KJSMultiblockMachineBuilder shape(VoxelShape shape) { + public KJSMultiblockMachineBuilder shape(VoxelShape shape) { builder.shape(shape); return this; } - public KJSMultiblockMachineBuilder multiblockPreviewRenderer(boolean multiBlockWorldPreview, + public KJSMultiblockMachineBuilder multiblockPreviewRenderer(boolean multiBlockWorldPreview, boolean multiBlockXEIPreview) { builder.multiblockPreviewRenderer(multiBlockWorldPreview, multiBlockXEIPreview); return this; } - public KJSMultiblockMachineBuilder rotationState(RotationState rotationState) { + public KJSMultiblockMachineBuilder rotationState(RotationState rotationState) { builder.rotationState(rotationState); return this; } - public KJSMultiblockMachineBuilder hasBER(boolean hasBER) { + public KJSMultiblockMachineBuilder hasBER(boolean hasBER) { builder.hasBER(hasBER); return this; } - public KJSMultiblockMachineBuilder blockProp(NonNullUnaryOperator blockProp) { + public KJSMultiblockMachineBuilder blockProp(NonNullUnaryOperator blockProp) { builder.blockProp(blockProp); return this; } - public KJSMultiblockMachineBuilder itemProp(NonNullUnaryOperator itemProp) { + public KJSMultiblockMachineBuilder itemProp(NonNullUnaryOperator itemProp) { builder.itemProp(itemProp); return this; } - public KJSMultiblockMachineBuilder recipeTypes(GTRecipeType... recipeTypes) { + public KJSMultiblockMachineBuilder recipeTypes(GTRecipeType... recipeTypes) { builder.recipeTypes(recipeTypes); return this; } - public KJSMultiblockMachineBuilder recipeType(GTRecipeType recipeTypes) { + public KJSMultiblockMachineBuilder recipeType(GTRecipeType recipeTypes) { builder.recipeType(recipeTypes); return this; } - public KJSMultiblockMachineBuilder tier(int tier) { + public KJSMultiblockMachineBuilder tier(int tier) { builder.tier(tier); return this; } - public KJSMultiblockMachineBuilder recipeOutputLimits(Reference2IntMap> map) { + public KJSMultiblockMachineBuilder recipeOutputLimits(Reference2IntMap> map) { builder.recipeOutputLimits(map); return this; } - public KJSMultiblockMachineBuilder addOutputLimit(RecipeCapability capability, int limit) { + public KJSMultiblockMachineBuilder addOutputLimit(RecipeCapability capability, int limit) { builder.addOutputLimit(capability, limit); return this; } - public KJSMultiblockMachineBuilder itemColor(BiFunction itemColor) { + public KJSMultiblockMachineBuilder itemColor(BiFunction itemColor) { builder.itemColor(itemColor); return this; } - public KJSMultiblockMachineBuilder simpleModel(ResourceLocation model) { + public KJSMultiblockMachineBuilder simpleModel(ResourceLocation model) { builder.simpleModel(model); return this; } - public KJSMultiblockMachineBuilder defaultModel() { + public KJSMultiblockMachineBuilder defaultModel() { builder.defaultModel(); return this; } - public KJSMultiblockMachineBuilder tieredHullModel(ResourceLocation model) { + public KJSMultiblockMachineBuilder tieredHullModel(ResourceLocation model) { builder.tieredHullModel(model); return this; } - public KJSMultiblockMachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { + public KJSMultiblockMachineBuilder overlayTieredHullModel(ResourceLocation overlayModel) { builder.overlayTieredHullModel(overlayModel); return this; } - public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { + public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay) { builder.colorOverlayTieredHullModel(overlay); return this; } - public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, + public KJSMultiblockMachineBuilder colorOverlayTieredHullModel(ResourceLocation overlay, @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { builder.colorOverlayTieredHullModel(overlay, pipeOverlay, emissiveOverlay); return this; } - public KJSMultiblockMachineBuilder workableTieredHullModel(ResourceLocation workableModel) { + public KJSMultiblockMachineBuilder workableTieredHullModel(ResourceLocation workableModel) { builder.workableTieredHullModel(workableModel); return this; } - public KJSMultiblockMachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { + public KJSMultiblockMachineBuilder simpleGeneratorModel(ResourceLocation workableModel) { builder.simpleGeneratorModel(workableModel); return this; } - public KJSMultiblockMachineBuilder workableCasingModel(ResourceLocation baseCasing, + public KJSMultiblockMachineBuilder workableCasingModel(ResourceLocation baseCasing, ResourceLocation overlayModel) { builder.workableCasingModel(baseCasing, overlayModel); return this; } - public KJSMultiblockMachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, + public KJSMultiblockMachineBuilder sidedOverlayCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { builder.sidedOverlayCasingModel(baseCasing, workableModel); return this; } - public KJSMultiblockMachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, + public KJSMultiblockMachineBuilder sidedWorkableCasingModel(ResourceLocation baseCasing, ResourceLocation workableModel) { builder.sidedWorkableCasingModel(baseCasing, workableModel); return this; } - public KJSMultiblockMachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { + public KJSMultiblockMachineBuilder overlaySteamHullModel(ResourceLocation overlayModel) { builder.overlaySteamHullModel(overlayModel); return this; } - public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, + public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay, @Nullable ResourceLocation pipeOverlay, @Nullable ResourceLocation emissiveOverlay) { builder.colorOverlaySteamHullModel(overlay, pipeOverlay, emissiveOverlay); return this; } - public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { + public KJSMultiblockMachineBuilder colorOverlaySteamHullModel(ResourceLocation overlay) { builder.colorOverlaySteamHullModel(overlay); return this; } - public KJSMultiblockMachineBuilder workableSteamHullModel(boolean isHighPressure, + public KJSMultiblockMachineBuilder workableSteamHullModel(boolean isHighPressure, ResourceLocation workableModel) { builder.workableSteamHullModel(isHighPressure, workableModel); return this; } - public KJSMultiblockMachineBuilder tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { + public KJSMultiblockMachineBuilder tooltipBuilder(@Nullable BiConsumer> tooltipBuilder) { builder.tooltipBuilder(tooltipBuilder); return this; } - public KJSMultiblockMachineBuilder appearance(@Nullable Supplier state) { + public KJSMultiblockMachineBuilder appearance(@Nullable Supplier state) { builder.appearance(state); return this; } - public KJSMultiblockMachineBuilder appearanceBlock(Supplier block) { + public KJSMultiblockMachineBuilder appearanceBlock(Supplier block) { builder.appearanceBlock(block); return this; } - public KJSMultiblockMachineBuilder langValue(@Nullable String langValue) { + public KJSMultiblockMachineBuilder langValue(@Nullable String langValue) { builder.langValue(langValue); return this; } - public KJSMultiblockMachineBuilder tooltips(Component... components) { + public KJSMultiblockMachineBuilder tooltips(Component... components) { builder.tooltips(components); return this; } - public KJSMultiblockMachineBuilder conditionalTooltip(Component component, Supplier condition) { + public KJSMultiblockMachineBuilder conditionalTooltip(Component component, Supplier condition) { builder.conditionalTooltip(component, condition.get()); return this; } - public KJSMultiblockMachineBuilder conditionalTooltip(Component component, boolean condition) { + public KJSMultiblockMachineBuilder conditionalTooltip(Component component, boolean condition) { builder.conditionalTooltip(component, condition); return this; } - public KJSMultiblockMachineBuilder abilities(PartAbility... abilities) { + public KJSMultiblockMachineBuilder abilities(PartAbility... abilities) { builder.abilities(abilities); return this; } - public KJSMultiblockMachineBuilder paintingColor(int paintingColor) { + public KJSMultiblockMachineBuilder paintingColor(int paintingColor) { builder.paintingColor(paintingColor); return this; } - public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier) { + public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier) { builder.recipeModifier(recipeModifier); return this; } - public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier, + public KJSMultiblockMachineBuilder recipeModifier(RecipeModifier recipeModifier, boolean alwaysTryModifyRecipe) { builder.recipeModifier(recipeModifier, alwaysTryModifyRecipe); return this; } - public KJSMultiblockMachineBuilder recipeModifiers(RecipeModifier... recipeModifiers) { + public KJSMultiblockMachineBuilder recipeModifiers(RecipeModifier... recipeModifiers) { builder.recipeModifiers(recipeModifiers); return this; } - public KJSMultiblockMachineBuilder recipeModifiers(boolean alwaysTryModifyRecipe, + public KJSMultiblockMachineBuilder recipeModifiers(boolean alwaysTryModifyRecipe, RecipeModifier... recipeModifiers) { builder.recipeModifiers(alwaysTryModifyRecipe, recipeModifiers); return this; } - public KJSMultiblockMachineBuilder noRecipeModifier() { + public KJSMultiblockMachineBuilder noRecipeModifier() { builder.noRecipeModifier(); return this; } - public KJSMultiblockMachineBuilder alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { + public KJSMultiblockMachineBuilder alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { builder.alwaysTryModifyRecipe(alwaysTryModifyRecipe); return this; } - public KJSMultiblockMachineBuilder beforeWorking(BiPredicate beforeWorking) { + public KJSMultiblockMachineBuilder beforeWorking(BiPredicate beforeWorking) { builder.beforeWorking(beforeWorking); return this; } - public KJSMultiblockMachineBuilder onWorking(Predicate onWorking) { + public KJSMultiblockMachineBuilder onWorking(Predicate onWorking) { builder.onWorking(onWorking); return this; } - public KJSMultiblockMachineBuilder onWaiting(Consumer onWaiting) { + public KJSMultiblockMachineBuilder onWaiting(Consumer onWaiting) { builder.onWaiting(onWaiting); return this; } - public KJSMultiblockMachineBuilder afterWorking(Consumer afterWorking) { + public KJSMultiblockMachineBuilder afterWorking(Consumer afterWorking) { builder.afterWorking(afterWorking); return this; } - public KJSMultiblockMachineBuilder regressWhenWaiting(boolean regressWhenWaiting) { + public KJSMultiblockMachineBuilder regressWhenWaiting(boolean regressWhenWaiting) { builder.regressWhenWaiting(regressWhenWaiting); return this; } - public KJSMultiblockMachineBuilder onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { + public KJSMultiblockMachineBuilder onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { builder.onBlockEntityRegister(onBlockEntityRegister); return this; } - public KJSMultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) { + public KJSMultiblockMachineBuilder allowExtendedFacing(boolean allowExtendedFacing) { builder.allowExtendedFacing(allowExtendedFacing); return this; } - - public static KJSMultiblockMachineBuilder createKJSMulti(ResourceLocation id) { - var baseBuilder = GTRegistrate.create(id.getNamespace(), false) - .multiblock(id.getPath(), WorkableElectricMultiblockMachine::new); - return new KJSMultiblockMachineBuilder<>(baseBuilder); - } - - public static KJSMultiblockMachineBuilder createKJSMulti(ResourceLocation id, - KJSTieredMachineBuilder.CreationFunction machine) { - var baseBuilder = GTRegistrate.create(id.getNamespace(), false) - .multiblock(id.getPath(), machine::create); - return new KJSMultiblockMachineBuilder<>(baseBuilder); - } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 30bb5b982f2..13212199888 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -1,19 +1,18 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; -import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.resources.ResourceLocation; -import dev.latvian.mods.kubejs.client.LangKubeEvent; -import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; import dev.latvian.mods.kubejs.registry.AdditionalObjectRegistry; import dev.latvian.mods.kubejs.registry.BuilderBase; import lombok.Setter; @@ -25,15 +24,17 @@ public class KJSSteamMachineBuilder extends BuilderBase { @Setter public transient boolean hasLowPressure = true, hasHighPressure = true; @Setter - public transient SteamCreationFunction machine = SimpleSteamMachine::new; + public transient MachineInstanceFactory.Steam machine = SimpleSteamMachine::new; @Setter public transient SteamDefinitionFunction definition = (isHP, def) -> def.tier(isHP ? 1 : 0); public KJSSteamMachineBuilder(ResourceLocation id) { super(id); + this.dummyBuilder = true; } + @SuppressWarnings("DataFlowIssue") @Override public MachineDefinition createObject() { // this method is never called on dummy builders (which this class is) @@ -45,7 +46,7 @@ public void createAdditionalObjects(AdditionalObjectRegistry registry) { if (hasLowPressure) { var lowPressureBuilder = GTRegistrate.create(id.getNamespace(), false) .machine(String.format("lp_%s", this.id.getPath()), - holder -> machine.create(holder, false)) + holder -> machine.buildMachine(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(0) .recipeModifier(SimpleSteamMachine::recipeModifier) @@ -59,7 +60,7 @@ public void createAdditionalObjects(AdditionalObjectRegistry registry) { if (hasHighPressure) { var highPressureBuilder = GTRegistrate.create(id.getNamespace(), false) .machine(String.format("hp_%s", this.id.getPath()), - holder -> machine.create(holder, true)) + holder -> machine.buildMachine(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(this.id.getPath())) .tier(1) .recipeModifier(SimpleSteamMachine::recipeModifier) @@ -71,15 +72,9 @@ public void createAdditionalObjects(AdditionalObjectRegistry registry) { } } - @FunctionalInterface - public interface SteamCreationFunction { - - MetaMachine create(BlockEntityCreationInfo info, boolean isHighPressure); - } - @FunctionalInterface public interface SteamDefinitionFunction { - void apply(boolean isHighPressure, MachineBuilder builder); + void apply(boolean isHighPressure, MachineBuilder builder); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 7a1698b441b..7c5dc50dbbb 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -111,15 +111,9 @@ public interface TieredCreationFunction { MetaMachine create(BlockEntityCreationInfo info, int tier, Int2IntFunction tankScaling); } - @FunctionalInterface - public interface CreationFunction { - - T create(BlockEntityCreationInfo info); - } - @FunctionalInterface public interface DefinitionFunction { - void apply(int tier, MachineBuilder builder); + void apply(int tier, MachineBuilder builder); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index a8ec4c0ee1b..aaf1d632a5a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; @@ -22,12 +21,12 @@ import static com.gregtechceu.gtceu.api.GTValues.*; @Accessors(fluent = true, chain = true) -public class KJSTieredMultiblockBuilder extends BuilderBase { +public class KJSTieredMultiblockBuilder extends BuilderBase { @Setter public transient int[] tiers = GTMachineUtils.ELECTRIC_TIERS; @Setter - public transient MachineInstanceFactory.Tiered machine; + public transient MachineInstanceFactory.Tiered machine; @Setter public transient DefinitionFunction definition = (tier, def) -> def.tier(tier); @@ -37,7 +36,8 @@ public KJSTieredMultiblockBuilder(ResourceLocation id) { this.dummyBuilder = true; } - public KJSTieredMultiblockBuilder(ResourceLocation id, MachineInstanceFactory.Tiered machine) { + public KJSTieredMultiblockBuilder(ResourceLocation id, + MachineInstanceFactory.Tiered machine) { this(id); this.machine = machine; } @@ -60,7 +60,7 @@ public void createAdditionalObjects(AdditionalObjectRegistry registry) { for (final int tier : tiers) { String tierName = VN[tier].toLowerCase(Locale.ROOT); - MultiblockMachineBuilder builder = GTRegistrate + MultiblockMachineBuilder builder = GTRegistrate .createIgnoringListenerErrors(this.id.getNamespace()) .multiblock(String.format("%s_%s", tierName, this.id.getPath()), holder -> machine.buildMachine(holder, tier)); @@ -75,6 +75,6 @@ public void createAdditionalObjects(AdditionalObjectRegistry registry) { @FunctionalInterface public interface DefinitionFunction { - void apply(int tier, MachineBuilder builder); + void apply(int tier, MultiblockMachineBuilder builder); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java index 4b8aeb9e20a..32ae70d2963 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java @@ -1,13 +1,14 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import dev.latvian.mods.kubejs.client.LangKubeEvent; import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; import dev.latvian.mods.kubejs.registry.BuilderBase; -public class MachineBuilderWrapper> extends BuilderBase implements IMachineBuilderKJS { +public class MachineBuilderWrapper> extends BuilderBase implements IMachineBuilderKJS { protected final B builder; From a6f5542d3789c6fa5af7da0f94c4f492572968e6 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 14:56:13 +0300 Subject: [PATCH 25/33] Move registrate builders to `api.registry.registrate.builder` --- docs/content/Modpacks/Examples/Parallel-Hatch-Part.md | 2 +- docs/content/Modpacks/Other-Topics/Ambiguous-Methods.md | 6 +++--- .../gtceu/api/registry/registrate/GTRegistrate.java | 4 ++++ .../registry/registrate/{ => builder}/GTBlockBuilder.java | 2 +- .../registry/registrate/{ => builder}/MachineBuilder.java | 3 ++- .../registrate/{ => builder}/MultiblockMachineBuilder.java | 3 ++- .../registrate/{ => builder}/SingleblockMachineBuilder.java | 4 +++- .../registrate/{ => builder}/SoundEntryBuilder.java | 2 +- .../gtceu/api/registry/registrate/builder/package-info.java | 4 ++++ .../com/gregtechceu/gtceu/client/model/pipe/PipeModel.java | 2 +- .../java/com/gregtechceu/gtceu/common/data/GTMachines.java | 3 ++- .../gtceu/common/data/machines/GTMachineUtils.java | 4 ++-- .../gtceu/common/data/machines/GTResearchMachines.java | 2 +- .../gtceu/common/data/models/GTMachineModels.java | 2 +- .../java/com/gregtechceu/gtceu/data/DataGenerators.java | 2 +- .../kjs/builders/machine/IMachineBuilderKJS.java | 2 +- .../kjs/builders/machine/KJSMultiblockMachineBuilder.java | 4 ++-- .../kjs/builders/machine/KJSSteamMachineBuilder.java | 2 +- .../kjs/builders/machine/KJSTieredMachineBuilder.java | 2 +- .../kjs/builders/machine/KJSTieredMultiblockBuilder.java | 2 +- .../kjs/builders/machine/MachineBuilderWrapper.java | 3 +-- 21 files changed, 36 insertions(+), 24 deletions(-) rename src/main/java/com/gregtechceu/gtceu/api/registry/registrate/{ => builder}/GTBlockBuilder.java (98%) rename src/main/java/com/gregtechceu/gtceu/api/registry/registrate/{ => builder}/MachineBuilder.java (99%) rename src/main/java/com/gregtechceu/gtceu/api/registry/registrate/{ => builder}/MultiblockMachineBuilder.java (97%) rename src/main/java/com/gregtechceu/gtceu/api/registry/registrate/{ => builder}/SingleblockMachineBuilder.java (91%) rename src/main/java/com/gregtechceu/gtceu/api/registry/registrate/{ => builder}/SoundEntryBuilder.java (98%) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/package-info.java diff --git a/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md b/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md index 2d10349200e..dfc463fdcfb 100644 --- a/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md +++ b/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md @@ -48,7 +48,7 @@ GTCEuStartupEvents.registry("gtceu:machine", (event) => { GTMachineModels.createWorkableTieredHullMachineModel( GTCEu.id("block/machines/parallel_hatch_mk4") // (6) )[ - "andThen(com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder$ModelInitializer)" + "andThen(com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder$ModelInitializer)" ]((ctx, prov, model) => { model.addReplaceableTextures("bottom", "top", "side"); }) diff --git a/docs/content/Modpacks/Other-Topics/Ambiguous-Methods.md b/docs/content/Modpacks/Other-Topics/Ambiguous-Methods.md index 53dceeb592b..2672c71976c 100644 --- a/docs/content/Modpacks/Other-Topics/Ambiguous-Methods.md +++ b/docs/content/Modpacks/Other-Topics/Ambiguous-Methods.md @@ -18,9 +18,9 @@ GTCEuStartupEvents.registry('gtceu:machine', event => { you'd get the error: ``` -Error in 'GTCEuStartupEvents.registry': The choice of Java method com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder.tooltips matching JavaScript argument types (net.minecraft.network.chat.MutableComponent) is ambiguous; candidate methods are: - class com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder tooltips(java.util.List) - class com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder tooltips(net.minecraft.network.chat.Component[]) +Error in 'GTCEuStartupEvents.registry': The choice of Java method com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder.tooltips matching JavaScript argument types (net.minecraft.network.chat.MutableComponent) is ambiguous; candidate methods are: + class com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder tooltips(java.util.List) + class com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder tooltips(net.minecraft.network.chat.Component[]) ``` In this case, there's ambiguity between the following 2 java functions: 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 80635ab54ef..9703ecb7678 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 @@ -22,6 +22,10 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.builder.GTBlockBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.SingleblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.SoundEntryBuilder; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.core.Registry; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/GTBlockBuilder.java similarity index 98% rename from src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java rename to src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/GTBlockBuilder.java index 8518428c278..9804eab870d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/GTBlockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/GTBlockBuilder.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.registry.registrate; +package com.gregtechceu.gtceu.api.registry.registrate.builder; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java similarity index 99% rename from src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java rename to src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java index 5276fefc006..207d8c44cb5 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.registry.registrate; +package com.gregtechceu.gtceu.api.registry.registrate.builder; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; @@ -20,6 +20,7 @@ import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.renderer.BlockEntityWithBERModelRenderer; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java rename to src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java index fa7190dc978..47e2ce69baa 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.registry.registrate; +package com.gregtechceu.gtceu.api.registry.registrate.builder; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.item.MetaMachineItem; @@ -8,6 +8,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.multiblock.pattern.IBlockPattern; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import net.minecraft.core.Direction; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java similarity index 91% rename from src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java rename to src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java index 3ca52d7addb..0dcf177923c 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SingleblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java @@ -1,10 +1,12 @@ -package com.gregtechceu.gtceu.api.registry.registrate; +package com.gregtechceu.gtceu.api.registry.registrate.builder; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.item.MetaMachineItem; import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MetaMachine; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; + import com.tterrag.registrate.builders.BuilderCallback; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SoundEntryBuilder.java similarity index 98% rename from src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java rename to src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SoundEntryBuilder.java index c925a93a33e..c8744fa9072 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/SoundEntryBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SoundEntryBuilder.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.api.registry.registrate; +package com.gregtechceu.gtceu.api.registry.registrate.builder; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.registry.GTRegistries; diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/package-info.java new file mode 100644 index 00000000000..8377158090c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.api.registry.registrate.builder; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/client/model/pipe/PipeModel.java b/src/main/java/com/gregtechceu/gtceu/client/model/pipe/PipeModel.java index 4d57f9c266e..e497516ab5f 100644 --- a/src/main/java/com/gregtechceu/gtceu/client/model/pipe/PipeModel.java +++ b/src/main/java/com/gregtechceu/gtceu/client/model/pipe/PipeModel.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.client.model.pipe; import com.gregtechceu.gtceu.api.block.PipeBlock; -import com.gregtechceu.gtceu.api.registry.registrate.GTBlockBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.GTBlockBuilder; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.data.model.builder.PipeModelBuilder; import com.gregtechceu.gtceu.data.pack.event.RegisterDynamicResourcesEvent; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index afd19c95554..30887ff35d4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -50,6 +50,7 @@ import net.neoforged.neoforge.fluids.FluidType; import com.google.common.math.IntMath; +import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.Pair; import java.util.List; @@ -76,7 +77,7 @@ public class GTMachines { ////////////////////////////////////// // ****** Steam Machine ******// ////////////////////////////////////// - public static final Pair STEAM_SOLID_BOILER = registerSteamMachines( + public static final Pair, RegistryEntry> STEAM_SOLID_BOILER = registerSteamMachines( REGISTRATE, "steam_solid_boiler", SteamSolidBoilerMachine::new, diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index 74d27095b12..a3120fe3a36 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -31,8 +31,8 @@ import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.SingleblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.SingleblockMachineBuilder; import com.gregtechceu.gtceu.client.renderer.machine.*; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.GTMaterialItems; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index 6674989578c..2171bd579dd 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -11,7 +11,7 @@ import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.recipe.RecipeLogic; import com.gregtechceu.gtceu.api.multiblock.pattern.MultiblockPatternBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java index 2116db238e0..b5f6e5d5961 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/models/GTMachineModels.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.recipe.RecipeLogic; import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.model.machine.overlays.EnergyIOOverlay; diff --git a/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java b/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java index 930a229ec9e..043fa7534e2 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java +++ b/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.api.registry.registrate.SoundEntryBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.SoundEntryBuilder; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.data.tags.BiomeTagsLoader; import com.gregtechceu.gtceu.data.tags.DamageTypeTagsLoader; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java index 92d998ec437..da1ad5657bf 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import com.gregtechceu.gtceu.common.data.models.GTMachineModels; import com.gregtechceu.gtceu.utils.data.RuntimeBlockstateProvider; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java index 5ac5adc916b..7e005bf2dfe 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSMultiblockMachineBuilder.java @@ -15,8 +15,8 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifier; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import net.minecraft.core.Direction; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 13212199888..7052397fa90 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java @@ -8,7 +8,7 @@ import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java index 7c5dc50dbbb..f095910d4fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMachineBuilder.java @@ -7,7 +7,7 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java index aaf1d632a5a..4a97c5d7966 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSTieredMultiblockBuilder.java @@ -5,7 +5,7 @@ import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; -import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java index 32ae70d2963..0f426dcfce1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineBuilderWrapper.java @@ -1,8 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.builders.machine; import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import dev.latvian.mods.kubejs.client.LangKubeEvent; import dev.latvian.mods.kubejs.generator.KubeAssetGenerator; From e4100dc5e419a56c7bf7607a7d84ddc068efb5db Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:12:34 +0300 Subject: [PATCH 26/33] Add a custom registry entry type for machines to simplify registering them --- .../gtceu/api/machine/MachineDefinition.java | 30 ++-- .../registrate/builder/MachineBuilder.java | 12 ++ .../builder/MultiblockMachineBuilder.java | 13 ++ .../builder/SingleblockMachineBuilder.java | 12 ++ .../registrate/entry/MachineEntry.java | 69 ++++++++ .../registrate/entry/package-info.java | 4 + .../common/data/machines/GTMachineUtils.java | 149 +++++++++--------- .../builders/machine/IMachineBuilderKJS.java | 2 +- 8 files changed, 202 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/package-info.java diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index aa1345b4f7e..59a9df12586 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -19,6 +19,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -44,7 +45,7 @@ /** * Representing basic information of a machine. */ -public class MachineDefinition implements Supplier { +public class MachineDefinition implements Supplier, ItemLike { public static final IdMapper RENDER_STATE_REGISTRY = new IdMapper<>(512); @@ -150,14 +151,28 @@ public MetaMachineBlock getBlock() { return blockSupplier.get(); } - public MetaMachineItem getItem() { - return itemSupplier.get(); + public MetaMachineBlock asBlock() { + return getBlock(); + } + + @Override + public MetaMachineBlock get() { + return getBlock(); } public BlockEntityType getBlockEntityType() { return blockEntityTypeSupplier.get(); } + public MetaMachineItem getItem() { + return itemSupplier.get(); + } + + @Override + public MetaMachineItem asItem() { + return getItem(); + } + public ItemStack asStack() { return new ItemStack(getItem()); } @@ -171,15 +186,6 @@ public VoxelShape getShape(Direction direction) { return this.cache.computeIfAbsent(direction, dir -> GTUtil.rotateVoxelShape(shape, dir)); } - @Override - public MetaMachineBlock get() { - return getBlock(); - } - - public String getName() { - return id.getPath(); - } - @Override public String toString() { return id.toString(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java index 207d8c44cb5..ec758791d84 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MachineBuilder.java @@ -21,6 +21,7 @@ import com.gregtechceu.gtceu.api.recipe.modifier.RecipeModifierList; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.api.registry.registrate.provider.GTBlockstateProvider; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.renderer.BlockEntityWithBERModelRenderer; @@ -54,6 +55,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.neoforge.client.extensions.common.IClientItemExtensions; import net.neoforged.neoforge.client.model.generators.BlockModelBuilder; +import net.neoforged.neoforge.registries.DeferredHolder; import brachy.modularui.theme.ThemeAPI; import com.tterrag.registrate.builders.BuilderCallback; @@ -739,6 +741,16 @@ public BlockEntityBuilder blockEntity() { .validBlock(() -> getOwner().get(getName(), Registries.BLOCK).get()); } + @Override + protected MachineEntry createEntryWrapper(DeferredHolder delegate) { + return new MachineEntry<>(getOwner(), delegate); + } + + @Override + public MachineEntry register() { + return (MachineEntry) super.register(); + } + @FunctionalInterface public interface ModelInitializer { diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java index 47e2ce69baa..336f366ec8d 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/MultiblockMachineBuilder.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.block.MetaMachineBlock; import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; @@ -9,6 +10,7 @@ import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.multiblock.pattern.IBlockPattern; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.utils.memoization.GTMemoizer; import net.minecraft.core.Direction; @@ -18,6 +20,7 @@ import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.registries.DeferredHolder; import com.tterrag.registrate.builders.BuilderCallback; import dev.latvian.mods.rhino.util.HideFromJS; @@ -133,4 +136,14 @@ public MultiblockMachineDefinition createEntry() { definition.setAdditionalDisplay(additionalDisplay); return definition; } + + @Override + protected MachineEntry.Multiblock createEntryWrapper(DeferredHolder delegate) { + return new MachineEntry.Multiblock(getOwner(), delegate); + } + + @Override + public MachineEntry.Multiblock register() { + return (MachineEntry.Multiblock) super.register(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java index 0dcf177923c..675d4427b76 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/SingleblockMachineBuilder.java @@ -6,11 +6,13 @@ import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.tterrag.registrate.builders.BuilderCallback; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.state.BlockBehaviour; +import net.neoforged.neoforge.registries.DeferredHolder; import java.util.function.BiFunction; import java.util.function.Function; @@ -24,4 +26,14 @@ public SingleblockMachineBuilder(GTRegistrate owner, P parent, String name, Buil MachineInstanceFactory blockEntityFactory) { super(owner, parent, name, callback, definition, blockFactory, itemFactory, blockEntityFactory); } + + @Override + protected MachineEntry.Singleblock createEntryWrapper(DeferredHolder delegate) { + return new MachineEntry.Singleblock(getOwner(), delegate); + } + + @Override + public MachineEntry.Singleblock register() { + return (MachineEntry.Singleblock) super.register(); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java new file mode 100644 index 00000000000..d785967c778 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java @@ -0,0 +1,69 @@ +package com.gregtechceu.gtceu.api.registry.registrate.entry; + +import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.item.MetaMachineItem; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; + +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import net.neoforged.neoforge.registries.DeferredHolder; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.util.entry.ItemProviderEntry; +import com.tterrag.registrate.util.entry.RegistryEntry; + +public class MachineEntry extends ItemProviderEntry { + + public MachineEntry(AbstractRegistrate owner, DeferredHolder key) { + super(owner, key); + } + + public boolean isTiered() { + return get().isTiered(); + } + + public MetaMachineBlock getBlock() { + return get().getBlock(); + } + + public MetaMachineItem getItem() { + return get().getItem(); + } + + @Override + public MetaMachineItem asItem() { + return get().asItem(); + } + + public BlockEntityType getBlockEntityType() { + return get().getBlockEntityType(); + } + + public BlockState getDefaultState() { + return get().defaultBlockState(); + } + + public boolean has(BlockState state) { + return is(state.getBlock()); + } + + public static MachineEntry cast(RegistryEntry entry) { + return RegistryEntry.cast(MachineEntry.class, entry); + } + + public static final class Singleblock extends MachineEntry { + + public Singleblock(AbstractRegistrate owner, DeferredHolder key) { + super(owner, key); + } + } + + public static final class Multiblock extends MachineEntry { + + public Multiblock(AbstractRegistrate owner, DeferredHolder key) { + super(owner, key); + } + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/package-info.java new file mode 100644 index 00000000000..690da38992c --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.api.registry.registrate.entry; + +import org.jetbrains.annotations.NotNullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index a3120fe3a36..cf657785284 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -33,6 +33,7 @@ import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.builder.SingleblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.client.renderer.machine.*; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.GTMaterialItems; @@ -71,7 +72,6 @@ import net.neoforged.neoforge.fluids.FluidType; import net.neoforged.neoforge.fluids.SimpleFluidContent; -import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; @@ -120,13 +120,13 @@ public class GTMachineUtils { public static final Int2IntFunction genericGeneratorTankSizeFunction = tier -> Math.min(4 * (1 << (tier - 1)), 16) * FluidType.BUCKET_VOLUME; - public static Object2IntMap> DRUM_CAPACITY = new Object2IntArrayMap<>(); + public static Object2IntMap DRUM_CAPACITY = new Object2IntArrayMap<>(); - public static final PartAbility[] DUAL_INPUT_HATCH_ABILITIES = new PartAbility[] { + public static final PartAbility[] DUAL_INPUT_HATCH_ABILITIES = new PartAbility[]{ PartAbility.IMPORT_ITEMS, PartAbility.IMPORT_FLUIDS, }; - public static final PartAbility[] DUAL_OUTPUT_HATCH_ABILITIES = new PartAbility[] { + public static final PartAbility[] DUAL_OUTPUT_HATCH_ABILITIES = new PartAbility[]{ PartAbility.EXPORT_ITEMS, PartAbility.EXPORT_FLUIDS, }; @@ -135,7 +135,7 @@ public class GTMachineUtils { * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, + public static MachineEntry.Singleblock[] registerSimpleMachines(GTRegistrate registrate, String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, boolean hasPollutionDebuff, PanelFactory panelFactory) { @@ -150,7 +150,7 @@ public static RegistryEntry[] registerSimp * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, + public static MachineEntry.Singleblock[] registerSimpleMachines(GTRegistrate registrate, String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, PanelFactory panelFactory) { @@ -164,14 +164,14 @@ public static RegistryEntry[] registerSimp * @deprecated Use {@link SimpleMachineBuilder} */ @Deprecated(since = "8.0.0") - public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, String name, + public static MachineEntry.Singleblock[] registerSimpleMachines(GTRegistrate registrate, String name, GTRecipeType recipeType, PanelFactory panelFactory) { return new SimpleMachineBuilder(registrate, name, recipeType) .panelFactory(panelFactory) .register(); } - public static RegistryEntry[] registerSimpleMachines(GTRegistrate registrate, + public static MachineEntry.Singleblock[] registerSimpleMachines(GTRegistrate registrate, String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, @@ -186,13 +186,12 @@ public static RegistryEntry[] registerSimp .register(); } - @SuppressWarnings("unchecked") - public static RegistryEntry[] registerTieredMachines(GTRegistrate registrate, + public static MachineEntry.Singleblock[] registerTieredMachines(GTRegistrate registrate, String name, MachineInstanceFactory.Tiered factory, - BiFunction, RegistryEntry> builder, + BiFunction, MachineEntry.Singleblock> builder, int... tiers) { - RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; + MachineEntry.Singleblock[] definitions = new MachineEntry.Singleblock[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate .machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, @@ -203,22 +202,22 @@ public static RegistryEntry Pair, RegistryEntry> registerSteamMachines(GTRegistrate registrate, + public static Pair registerSteamMachines(GTRegistrate registrate, String name, MachineInstanceFactory.Steam factory, - BiFunction, RegistryEntry> builder) { - RegistryEntry lowTier = builder.apply(false, + BiFunction, MachineEntry.Singleblock> builder) { + MachineEntry.Singleblock lowTier = builder.apply(false, registrate.machine("lp_%s".formatted(name), holder -> factory.buildMachine(holder, false)) .langValue("Low Pressure " + FormattingUtil.toEnglishName(name)) .tier(0)); - RegistryEntry highTier = builder.apply(true, + MachineEntry.Singleblock highTier = builder.apply(true, registrate.machine("hp_%s".formatted(name), holder -> factory.buildMachine(holder, true)) .langValue("High Pressure " + FormattingUtil.toEnglishName(name)) .tier(1)); return Pair.of(lowTier, highTier); } - public static RegistryEntry[] registerFluidHatches(GTRegistrate registrate, String name, + public static MachineEntry.Singleblock[] registerFluidHatches(GTRegistrate registrate, String name, String displayName, String tooltip, IO io, int initialCapacity, int slots, int[] tiers, PartAbility... abilities) { @@ -257,7 +256,7 @@ public static RegistryEntry[] registerFlui tiers); } - public static RegistryEntry[] registerTransformerMachines(GTRegistrate registrate, String langName, int baseAmp) { + public static MachineEntry.Singleblock[] registerTransformerMachines(GTRegistrate registrate, String langName, int baseAmp) { return registerTieredMachines(registrate, "transformer_%da".formatted(baseAmp), (holder, tier) -> new TransformerMachine(holder, tier, baseAmp), (tier, builder) -> builder @@ -288,7 +287,7 @@ public static RegistryEntry[] registerTran // UHV not needed, as a UV transformer transforms up to UHV } - public static RegistryEntry[] registerSimpleGenerator(GTRegistrate registrate, String name, + public static MachineEntry.Singleblock[] registerSimpleGenerator(GTRegistrate registrate, String name, GTRecipeType recipeType, Int2IntFunction tankScalingFunction, float hazardStrengthPerOperation, @@ -311,7 +310,7 @@ public static RegistryEntry[] registerSimp tiers); } - public static Pair, RegistryEntry> registerSimpleSteamMachines(GTRegistrate registrate, String name, GTRecipeType recipeType) { + public static Pair registerSimpleSteamMachines(GTRegistrate registrate, String name, GTRecipeType recipeType) { return registerSteamMachines(registrate, "steam_" + name, SimpleSteamMachine::new, (pressure, builder) -> builder .rotationState(RotationState.ALL) @@ -324,7 +323,7 @@ public static Pair, Registry .register()); } - public static RegistryEntry[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { + public static MachineEntry.Singleblock[] registerBatteryBuffer(GTRegistrate registrate, int batterySlotSize) { return registerTieredMachines(registrate, "battery_buffer_" + batterySlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, batterySlotSize, AMPS_PER_BATTERY_NORMAL, batterySlotSize), @@ -347,7 +346,7 @@ public static RegistryEntry[] registerBatt ALL_TIERS); } - public static RegistryEntry[] registerCharger(GTRegistrate registrate, int itemSlotSize) { + public static MachineEntry.Singleblock[] registerCharger(GTRegistrate registrate, int itemSlotSize) { return registerTieredMachines(registrate, "charger_" + itemSlotSize + "x", (holder, tier) -> new BatteryBufferMachine(holder, tier, itemSlotSize, BatteryBufferMachine.AMPS_PER_BATTERY_CHARGER, 0), @@ -368,14 +367,14 @@ public static RegistryEntry[] registerChar ALL_TIERS); } - public static RegistryEntry[] registerConverter(GTRegistrate registrate, int amperage) { + public static MachineEntry.Singleblock[] registerConverter(GTRegistrate registrate, int amperage) { final var tab = registrate.creativeModeTab(); if (!ConfigHolder.INSTANCE.compat.energy.enableFEConverters) { registrate.creativeModeTab(() -> null); } - RegistryEntry[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", + MachineEntry.Singleblock[] converters = registerTieredMachines(registrate, amperage + "a_energy_converter", (holder, tier) -> new ConverterMachine(holder, tier, amperage), (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -402,7 +401,7 @@ public static RegistryEntry[] registerConv return converters; } - public static RegistryEntry[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, PartAbility ability) { + public static MachineEntry.Singleblock[] registerLaserHatch(GTRegistrate registrate, IO io, int amperage, PartAbility ability) { String name = io == IN ? "target" : "source"; return registerTieredMachines(registrate, amperage + "a_laser_" + name + "_hatch", (holder, tier) -> new LaserHatchPartMachine(holder, io, tier, amperage), (tier, builder) -> builder @@ -426,7 +425,7 @@ public static RegistryEntry[] registerLase HIGH_TIERS); } - public static RegistryEntry registerCrate(GTRegistrate registrate, Material material, + public static MachineEntry.Singleblock registerCrate(GTRegistrate registrate, Material material, int capacity, int rowLength, String lang) { final boolean wooden = material.hasProperty(PropertyKey.WOOD); @@ -443,7 +442,7 @@ public static RegistryEntry registerCrate( .register(); } - public static RegistryEntry registerDrum(GTRegistrate registrate, Material material, + public static MachineEntry.Singleblock registerDrum(GTRegistrate registrate, Material material, int capacity, String lang) { boolean wooden = material.hasProperty(PropertyKey.WOOD); var definition = registrate @@ -471,9 +470,8 @@ public static RegistryEntry registerDrum(G return definition; } - @SuppressWarnings("unchecked") - public static RegistryEntry[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { - RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; + public static MachineEntry.Singleblock[] registerQuantumTanks(GTRegistrate registrate, String name, int... tiers) { + MachineEntry.Singleblock[] definitions = new MachineEntry.Singleblock[GTValues.TIER_COUNT]; for (int tier : tiers) { long maxAmount = 4000 * FluidType.BUCKET_VOLUME * (long) Math.pow(2, tier - 1); var register = registrate.machine( @@ -500,7 +498,7 @@ public static RegistryEntry[] registerQuan return definitions; } - public static RegistryEntry[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { + public static MachineEntry.Singleblock[] registerQuantumChests(GTRegistrate registrate, String name, int... tiers) { return registerTieredMachines(registrate, name, (holder, tier) -> new QuantumChestMachine(holder, tier, tier == MAX ? Long.MAX_VALUE : 4_000_000 * (long) Math.pow(2, tier - 1)), @@ -526,12 +524,12 @@ public static RegistryEntry[] registerQuan ////////////////////////////////////// // multi register helpers - public static RegistryEntry registerMultiblockTank(GTRegistrate registrate, String name, - String displayName, int capacity, - Supplier casing, - Supplier valve, - @Nullable PropertyFluidFilter filter, - BiConsumer, ResourceLocation> rendererSetup) { + public static MachineEntry.Multiblock registerMultiblockTank(GTRegistrate registrate, String name, + String displayName, int capacity, + Supplier casing, + Supplier valve, + @Nullable PropertyFluidFilter filter, + BiConsumer, ResourceLocation> rendererSetup) { MultiblockMachineBuilder builder = registrate .multiblock(name, holder -> new MultiblockTankMachine(holder, capacity, filter)) .langValue(displayName) @@ -556,9 +554,9 @@ public static RegistryEntry regi return builder.register(); } - public static RegistryEntry registerTankValve(GTRegistrate registrate, String name, String displayName, - boolean isMetal, - BiConsumer, ResourceLocation> rendererSetup) { + public static MachineEntry.Singleblock registerTankValve(GTRegistrate registrate, String name, String displayName, + boolean isMetal, + BiConsumer, ResourceLocation> rendererSetup) { var builder = registrate .machine(name, holder -> new TankValvePartMachine(holder, isMetal)) .langValue(displayName) @@ -569,12 +567,11 @@ public static RegistryEntry registerTankVa return builder.register(); } - @SuppressWarnings("unchecked") - public static RegistryEntry[] registerTieredMultis(GTRegistrate registrate, String name, - MachineInstanceFactory.Tiered factory, - BiFunction, RegistryEntry> builder, - int... tiers) { - RegistryEntry[] definitions = new RegistryEntry[GTValues.TIER_COUNT]; + public static MachineEntry.Multiblock[] registerTieredMultis(GTRegistrate registrate, String name, + MachineInstanceFactory.Tiered factory, + BiFunction, MachineEntry.Multiblock> builder, + int... tiers) { + MachineEntry.Multiblock[] definitions = new MachineEntry.Multiblock[GTValues.TIER_COUNT]; for (int tier : tiers) { var register = registrate .multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, @@ -585,12 +582,12 @@ public static RegistryEntry registerLargeBoiler(GTRegistrate registrate, String name, - Supplier casing, - Supplier pipe, - Supplier fireBox, - ResourceLocation texture, BoilerFireboxType firebox, - int maxTemperature, int heatSpeed) { + public static MachineEntry.Multiblock registerLargeBoiler(GTRegistrate registrate, String name, + Supplier casing, + Supplier pipe, + Supplier fireBox, + ResourceLocation texture, BoilerFireboxType firebox, + int maxTemperature, int heatSpeed) { // spotless:off return registrate .multiblock("%s_large_boiler".formatted(name), @@ -646,12 +643,12 @@ public static RegistryEntry regi // spotless:on } - public static RegistryEntry registerLargeCombustionEngine(GTRegistrate registrate, String name, int tier, - Supplier casing, - Supplier gear, - Supplier intake, - ResourceLocation casingTexture, - ResourceLocation overlayModel) { + public static MachineEntry.Multiblock registerLargeCombustionEngine(GTRegistrate registrate, String name, int tier, + Supplier casing, + Supplier gear, + Supplier intake, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { return registrate.multiblock(name, holder -> new LargeCombustionEngineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.COMBUSTION_GENERATOR_FUELS) @@ -681,7 +678,7 @@ public static RegistryEntry regi .where('Y', controller(definition)) .build()) .recoveryItems( - () -> new ItemLike[] { + () -> new ItemLike[]{ GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) .workableCasingModel(casingTexture, overlayModel) .tooltips( @@ -696,23 +693,23 @@ public static RegistryEntry regi .register(); } - public static RegistryEntry registerLargeTurbine(GTRegistrate registrate, String name, int tier, - GTRecipeType recipeType, - Supplier casing, - Supplier gear, - ResourceLocation casingTexture, - ResourceLocation overlayModel) { + public static MachineEntry.Multiblock registerLargeTurbine(GTRegistrate registrate, String name, int tier, + GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel) { return registerLargeTurbine(registrate, name, tier, recipeType, casing, gear, casingTexture, overlayModel, true); } - public static RegistryEntry registerLargeTurbine(GTRegistrate registrate, String name, int tier, - GTRecipeType recipeType, - Supplier casing, - Supplier gear, - ResourceLocation casingTexture, - ResourceLocation overlayModel, - boolean needsMuffler) { + public static MachineEntry.Multiblock registerLargeTurbine(GTRegistrate registrate, String name, int tier, + GTRecipeType recipeType, + Supplier casing, + Supplier gear, + ResourceLocation casingTexture, + ResourceLocation overlayModel, + boolean needsMuffler) { return registrate.multiblock(name, holder -> new LargeTurbineMachine(holder, tier)) .rotationState(RotationState.ALL) .recipeType(recipeType) @@ -733,7 +730,7 @@ public static RegistryEntry regi .or(autoAbilities(true, needsMuffler, false))) .build()) .recoveryItems( - () -> new ItemLike[] { + () -> new ItemLike[]{ GTMaterialItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get() }) .workableCasingModel(casingTexture, overlayModel) .tooltips( @@ -848,7 +845,7 @@ public SimpleMachineBuilder(GTRegistrate registrate, String name, GTRecipeType r this.recipeType = recipeType; } - public RegistryEntry[] register() { + public MachineEntry.Singleblock[] register() { if (panelFactory == null) { panelFactory = GTSingleblockMachinePanels.GENERAL_MACHINE; } @@ -856,8 +853,8 @@ public RegistryEntry[] register() { (holder, tier) -> new SimpleTieredMachine(holder, tier, tankScalingFunction), (tier, builder) -> { if (hasPollutionDebuff) { builder.recipeModifiers(GTRecipeModifiers.ENVIRONMENT_REQUIREMENT - .apply(GTMedicalConditions.CARBON_MONOXIDE_POISONING, 100 * tier), - GTRecipeModifiers.OC_NON_PERFECT) + .apply(GTMedicalConditions.CARBON_MONOXIDE_POISONING, 100 * tier), + GTRecipeModifiers.OC_NON_PERFECT) .conditionalTooltip(defaultEnvironmentRequirement(), ConfigHolder.INSTANCE.gameplay.environmentalHazards); } else { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java index da1ad5657bf..8cd3a3d98f1 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/IMachineBuilderKJS.java @@ -22,7 +22,7 @@ default void generateMachineModel(@Nullable MachineBuilder builder, // Fake a data provider for the GT model builders DataGenContext context = new DataGenContext<>(definition::get, - definition.getName(), definition.getId()); + definition.getId().getPath(), definition.getId()); if (builder.blockModel() != null) { builder.blockModel().accept(context, RuntimeBlockstateProvider.INSTANCE); } else { From 8f577f822392d2c65f16acbded3e3c537ca2c35e Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:26:02 +0300 Subject: [PATCH 27/33] Use that custom entry type for machine registration --- .../gtceu/api/multiblock/Predicates.java | 9 + .../gtceu/common/data/GTMachines.java | 280 +++++++++--------- .../common/data/machines/GCYMMachines.java | 59 ++-- .../common/data/machines/GTAEMachines.java | 18 +- .../common/data/machines/GTMachineUtils.java | 4 +- .../common/data/machines/GTMultiMachines.java | 81 ++--- .../data/machines/GTResearchMachines.java | 67 ++--- .../gtceu/common/mui/GTMuiWidgets.java | 9 + 8 files changed, 271 insertions(+), 256 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/multiblock/Predicates.java b/src/main/java/com/gregtechceu/gtceu/api/multiblock/Predicates.java index 5ed0639fe78..347039d8f2e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/multiblock/Predicates.java +++ b/src/main/java/com/gregtechceu/gtceu/api/multiblock/Predicates.java @@ -38,6 +38,7 @@ import java.util.*; import java.util.function.Function; +import java.util.function.Supplier; import java.util.stream.Stream; public class Predicates { @@ -88,6 +89,14 @@ public static PatternPredicate machines(@Nullable MachineDefinition... definitio .toArray(MetaMachineBlock[]::new)); } + @SafeVarargs + public static PatternPredicate machines(@Nullable Supplier... definitions) { + return blocks(Arrays.stream(definitions).filter(Objects::nonNull) + .map(Supplier::get) + .map(MachineDefinition::get) + .toArray(MetaMachineBlock[]::new)); + } + public static PatternPredicate blockTag(TagKey tag) { return new PatternPredicate(new PredicateBlockTag(tag)); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index 30887ff35d4..bc8d167de88 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -16,6 +16,7 @@ import com.gregtechceu.gtceu.api.machine.steam.SteamBoilerMachine; import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.client.model.machine.MachineRenderState; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; @@ -50,7 +51,6 @@ import net.neoforged.neoforge.fluids.FluidType; import com.google.common.math.IntMath; -import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.Pair; import java.util.List; @@ -77,7 +77,7 @@ public class GTMachines { ////////////////////////////////////// // ****** Steam Machine ******// ////////////////////////////////////// - public static final Pair, RegistryEntry> STEAM_SOLID_BOILER = registerSteamMachines( + public static final Pair STEAM_SOLID_BOILER = registerSteamMachines( REGISTRATE, "steam_solid_boiler", SteamSolidBoilerMachine::new, @@ -92,7 +92,7 @@ public class GTMachines { FluidType.BUCKET_VOLUME / 20000)) .register()); - public static final Pair STEAM_LIQUID_BOILER = registerSteamMachines( + public static final Pair STEAM_LIQUID_BOILER = registerSteamMachines( REGISTRATE, "steam_liquid_boiler", SteamLiquidBoilerMachine::new, @@ -107,7 +107,7 @@ public class GTMachines { FluidType.BUCKET_VOLUME / 20000)) .register()); - public static final Pair STEAM_SOLAR_BOILER = registerSteamMachines( + public static final Pair STEAM_SOLAR_BOILER = registerSteamMachines( REGISTRATE, "steam_solar_boiler", SteamSolarBoiler::new, @@ -122,11 +122,11 @@ public class GTMachines { FluidType.BUCKET_VOLUME / 20000)) .register()); - public static final Pair STEAM_EXTRACTOR = registerSimpleSteamMachines( + public static final Pair STEAM_EXTRACTOR = registerSimpleSteamMachines( REGISTRATE, "extractor", GTRecipeTypes.EXTRACTOR_RECIPES); - public static final Pair STEAM_MACERATOR = registerSteamMachines(REGISTRATE, + public static final Pair STEAM_MACERATOR = registerSteamMachines(REGISTRATE, "steam_macerator", SimpleSteamMachine::new, (pressure, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.MACERATOR_RECIPES) @@ -138,22 +138,22 @@ public class GTMachines { .workableSteamHullModel(pressure, GTCEu.id("block/machines/macerator")) .register()); - public static final Pair STEAM_COMPRESSOR = registerSimpleSteamMachines( + public static final Pair STEAM_COMPRESSOR = registerSimpleSteamMachines( REGISTRATE, "compressor", GTRecipeTypes.COMPRESSOR_RECIPES); - public static final Pair STEAM_HAMMER = registerSimpleSteamMachines( + public static final Pair STEAM_HAMMER = registerSimpleSteamMachines( REGISTRATE, "forge_hammer", GTRecipeTypes.FORGE_HAMMER_RECIPES); - public static final Pair STEAM_FURNACE = registerSimpleSteamMachines( + public static final Pair STEAM_FURNACE = registerSimpleSteamMachines( REGISTRATE, "furnace", GTRecipeTypes.FURNACE_RECIPES); - public static final Pair STEAM_ALLOY_SMELTER = registerSimpleSteamMachines( + public static final Pair STEAM_ALLOY_SMELTER = registerSimpleSteamMachines( REGISTRATE, "alloy_smelter", GTRecipeTypes.ALLOY_SMELTER_RECIPES); - public static final Pair STEAM_ROCK_CRUSHER = registerSimpleSteamMachines( + public static final Pair STEAM_ROCK_CRUSHER = registerSimpleSteamMachines( REGISTRATE, "rock_crusher", GTRecipeTypes.ROCK_BREAKER_RECIPES); - public static final Pair STEAM_MINER = registerSteamMachines(REGISTRATE, + public static final Pair STEAM_MINER = registerSteamMachines(REGISTRATE, "steam_miner", (holder, isHP) -> isHP ? new SteamMinerMachine(holder, true, 240, 6, 0, 32) : new SteamMinerMachine(holder, false, 320, 4, 0, 16), @@ -178,7 +178,7 @@ public class GTMachines { ////////////////////////////////////// // *** SimpleTieredMachine ***// ////////////////////////////////////// - public static final MachineDefinition[] HULL = GTMachineUtils.registerTieredMachines(REGISTRATE, "machine_hull", + public static final MachineEntry.Singleblock[] HULL = GTMachineUtils.registerTieredMachines(REGISTRATE, "machine_hull", HullMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -190,12 +190,12 @@ public class GTMachines { .register(), ALL_TIERS); - public static final MachineDefinition[] ELECTRIC_FURNACE = new SimpleMachineBuilder(REGISTRATE, "electric_furnace", + public static final MachineEntry.Singleblock[] ELECTRIC_FURNACE = new SimpleMachineBuilder(REGISTRATE, "electric_furnace", GTRecipeTypes.FURNACE_RECIPES).register(); - public static final MachineDefinition[] ALLOY_SMELTER = new SimpleMachineBuilder(REGISTRATE, "alloy_smelter", + public static final MachineEntry.Singleblock[] ALLOY_SMELTER = new SimpleMachineBuilder(REGISTRATE, "alloy_smelter", GTRecipeTypes.ALLOY_SMELTER_RECIPES).register(); - public static final MachineDefinition[] ARC_FURNACE = registerTieredMachines(REGISTRATE, "arc_furnace", + public static final MachineEntry.Singleblock[] ARC_FURNACE = registerTieredMachines(REGISTRATE, "arc_furnace", SimpleTieredMachine::new, (tier, builder) -> builder .langValue("%s Arc Furnace %s".formatted(VLVH[tier], VLVT[tier])) .rotationState(RotationState.NON_Y_AXIS) @@ -207,106 +207,106 @@ public class GTMachines { GTRecipeTypes.ARC_FURNACE_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .register(), ELECTRIC_TIERS); - public static final MachineDefinition[] ASSEMBLER = new SimpleMachineBuilder(REGISTRATE, "assembler", + public static final MachineEntry.Singleblock[] ASSEMBLER = new SimpleMachineBuilder(REGISTRATE, "assembler", GTRecipeTypes.ASSEMBLER_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .hasPollutionDebuff(true) .register(); - public static final MachineDefinition[] AUTOCLAVE = new SimpleMachineBuilder(REGISTRATE, "autoclave", + public static final MachineEntry.Singleblock[] AUTOCLAVE = new SimpleMachineBuilder(REGISTRATE, "autoclave", GTRecipeTypes.AUTOCLAVE_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] BENDER = new SimpleMachineBuilder(REGISTRATE, "bender", + public static final MachineEntry.Singleblock[] BENDER = new SimpleMachineBuilder(REGISTRATE, "bender", GTRecipeTypes.BENDER_RECIPES) .register(); - public static final MachineDefinition[] BREWERY = new SimpleMachineBuilder(REGISTRATE, "brewery", + public static final MachineEntry.Singleblock[] BREWERY = new SimpleMachineBuilder(REGISTRATE, "brewery", GTRecipeTypes.BREWING_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] CANNER = new SimpleMachineBuilder(REGISTRATE, "canner", + public static final MachineEntry.Singleblock[] CANNER = new SimpleMachineBuilder(REGISTRATE, "canner", GTRecipeTypes.CANNER_RECIPES) .register(); - public static final MachineDefinition[] CENTRIFUGE = new SimpleMachineBuilder(REGISTRATE, "centrifuge", + public static final MachineEntry.Singleblock[] CENTRIFUGE = new SimpleMachineBuilder(REGISTRATE, "centrifuge", GTRecipeTypes.CENTRIFUGE_RECIPES).tankScalingFunction(largeTankSizeFunction).register(); - public static final MachineDefinition[] CHEMICAL_BATH = new SimpleMachineBuilder(REGISTRATE, "chemical_bath", + public static final MachineEntry.Singleblock[] CHEMICAL_BATH = new SimpleMachineBuilder(REGISTRATE, "chemical_bath", GTRecipeTypes.CHEMICAL_BATH_RECIPES).tankScalingFunction(hvCappedTankSizeFunction).register(); - public static final MachineDefinition[] CHEMICAL_REACTOR = new SimpleMachineBuilder(REGISTRATE, "chemical_reactor", + public static final MachineEntry.Singleblock[] CHEMICAL_REACTOR = new SimpleMachineBuilder(REGISTRATE, "chemical_reactor", GTRecipeTypes.CHEMICAL_RECIPES) .tankScalingFunction(tier -> 16 * FluidType.BUCKET_VOLUME) .hasPollutionDebuff(true) .register(); - public static final MachineDefinition[] COMPRESSOR = new SimpleMachineBuilder(REGISTRATE, "compressor", + public static final MachineEntry.Singleblock[] COMPRESSOR = new SimpleMachineBuilder(REGISTRATE, "compressor", GTRecipeTypes.COMPRESSOR_RECIPES).register(); - public static final MachineDefinition[] CUTTER = new SimpleMachineBuilder(REGISTRATE, "cutter", + public static final MachineEntry.Singleblock[] CUTTER = new SimpleMachineBuilder(REGISTRATE, "cutter", GTRecipeTypes.CUTTER_RECIPES) .register(); - public static final MachineDefinition[] DISTILLERY = new SimpleMachineBuilder(REGISTRATE, "distillery", + public static final MachineEntry.Singleblock[] DISTILLERY = new SimpleMachineBuilder(REGISTRATE, "distillery", GTRecipeTypes.DISTILLERY_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] ELECTROLYZER = new SimpleMachineBuilder(REGISTRATE, "electrolyzer", + public static final MachineEntry.Singleblock[] ELECTROLYZER = new SimpleMachineBuilder(REGISTRATE, "electrolyzer", GTRecipeTypes.ELECTROLYZER_RECIPES) .tankScalingFunction(largeTankSizeFunction) .register(); - public static final MachineDefinition[] ELECTROMAGNETIC_SEPARATOR = new SimpleMachineBuilder(REGISTRATE, + public static final MachineEntry.Singleblock[] ELECTROMAGNETIC_SEPARATOR = new SimpleMachineBuilder(REGISTRATE, "electromagnetic_separator", GTRecipeTypes.ELECTROMAGNETIC_SEPARATOR_RECIPES).register(); - public static final MachineDefinition[] EXTRACTOR = new SimpleMachineBuilder(REGISTRATE, "extractor", + public static final MachineEntry.Singleblock[] EXTRACTOR = new SimpleMachineBuilder(REGISTRATE, "extractor", GTRecipeTypes.EXTRACTOR_RECIPES).register(); - public static final MachineDefinition[] EXTRUDER = new SimpleMachineBuilder(REGISTRATE, "extruder", + public static final MachineEntry.Singleblock[] EXTRUDER = new SimpleMachineBuilder(REGISTRATE, "extruder", GTRecipeTypes.EXTRUDER_RECIPES).register(); - public static final MachineDefinition[] FERMENTER = new SimpleMachineBuilder(REGISTRATE, "fermenter", + public static final MachineEntry.Singleblock[] FERMENTER = new SimpleMachineBuilder(REGISTRATE, "fermenter", GTRecipeTypes.FERMENTING_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] FLUID_HEATER = new SimpleMachineBuilder(REGISTRATE, "fluid_heater", + public static final MachineEntry.Singleblock[] FLUID_HEATER = new SimpleMachineBuilder(REGISTRATE, "fluid_heater", GTRecipeTypes.FLUID_HEATER_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] FLUID_SOLIDIFIER = new SimpleMachineBuilder(REGISTRATE, "fluid_solidifier", + public static final MachineEntry.Singleblock[] FLUID_SOLIDIFIER = new SimpleMachineBuilder(REGISTRATE, "fluid_solidifier", GTRecipeTypes.FLUID_SOLIDFICATION_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] FORGE_HAMMER = new SimpleMachineBuilder(REGISTRATE, "forge_hammer", + public static final MachineEntry.Singleblock[] FORGE_HAMMER = new SimpleMachineBuilder(REGISTRATE, "forge_hammer", GTRecipeTypes.FORGE_HAMMER_RECIPES).register(); - public static final MachineDefinition[] FORMING_PRESS = new SimpleMachineBuilder(REGISTRATE, "forming_press", + public static final MachineEntry.Singleblock[] FORMING_PRESS = new SimpleMachineBuilder(REGISTRATE, "forming_press", GTRecipeTypes.FORMING_PRESS_RECIPES).register(); - public static final MachineDefinition[] LATHE = new SimpleMachineBuilder(REGISTRATE, "lathe", + public static final MachineEntry.Singleblock[] LATHE = new SimpleMachineBuilder(REGISTRATE, "lathe", GTRecipeTypes.LATHE_RECIPES) .register(); - public static final MachineDefinition[] SCANNER = new SimpleMachineBuilder(REGISTRATE, "scanner", + public static final MachineEntry.Singleblock[] SCANNER = new SimpleMachineBuilder(REGISTRATE, "scanner", GTRecipeTypes.SCANNER_RECIPES) .register(); - public static final MachineDefinition[] MIXER = new SimpleMachineBuilder(REGISTRATE, "mixer", + public static final MachineEntry.Singleblock[] MIXER = new SimpleMachineBuilder(REGISTRATE, "mixer", GTRecipeTypes.MIXER_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .register(); - public static final MachineDefinition[] ORE_WASHER = new SimpleMachineBuilder(REGISTRATE, "ore_washer", + public static final MachineEntry.Singleblock[] ORE_WASHER = new SimpleMachineBuilder(REGISTRATE, "ore_washer", GTRecipeTypes.ORE_WASHER_RECIPES).register(); - public static final MachineDefinition[] PACKER = new SimpleMachineBuilder(REGISTRATE, "packer", + public static final MachineEntry.Singleblock[] PACKER = new SimpleMachineBuilder(REGISTRATE, "packer", GTRecipeTypes.PACKER_RECIPES) .register(); - public static final MachineDefinition[] POLARIZER = new SimpleMachineBuilder(REGISTRATE, "polarizer", + public static final MachineEntry.Singleblock[] POLARIZER = new SimpleMachineBuilder(REGISTRATE, "polarizer", GTRecipeTypes.POLARIZER_RECIPES).register(); - public static final MachineDefinition[] LASER_ENGRAVER = new SimpleMachineBuilder(REGISTRATE, "laser_engraver", + public static final MachineEntry.Singleblock[] LASER_ENGRAVER = new SimpleMachineBuilder(REGISTRATE, "laser_engraver", GTRecipeTypes.LASER_ENGRAVER_RECIPES) .tankScalingFunction(defaultTankSizeFunction) .hasPollutionDebuff(true) .register(); - public static final MachineDefinition[] SIFTER = new SimpleMachineBuilder(REGISTRATE, "sifter", + public static final MachineEntry.Singleblock[] SIFTER = new SimpleMachineBuilder(REGISTRATE, "sifter", GTRecipeTypes.SIFTER_RECIPES) .register(); - public static final MachineDefinition[] THERMAL_CENTRIFUGE = new SimpleMachineBuilder(REGISTRATE, + public static final MachineEntry.Singleblock[] THERMAL_CENTRIFUGE = new SimpleMachineBuilder(REGISTRATE, "thermal_centrifuge", GTRecipeTypes.THERMAL_CENTRIFUGE_RECIPES).register(); - public static final MachineDefinition[] WIREMILL = new SimpleMachineBuilder(REGISTRATE, "wiremill", + public static final MachineEntry.Singleblock[] WIREMILL = new SimpleMachineBuilder(REGISTRATE, "wiremill", GTRecipeTypes.WIREMILL_RECIPES).register(); - public static final MachineDefinition[] CIRCUIT_ASSEMBLER = new SimpleMachineBuilder(REGISTRATE, + public static final MachineEntry.Singleblock[] CIRCUIT_ASSEMBLER = new SimpleMachineBuilder(REGISTRATE, "circuit_assembler", GTRecipeTypes.CIRCUIT_ASSEMBLER_RECIPES) .tankScalingFunction(hvCappedTankSizeFunction) .hasPollutionDebuff(true) .register(); - public static final MachineDefinition[] MACERATOR = registerTieredMachines(REGISTRATE, "macerator", + public static final MachineEntry.Singleblock[] MACERATOR = registerTieredMachines(REGISTRATE, "macerator", SimpleTieredMachine::new, (tier, builder) -> builder .langValue("%s Macerator %s".formatted(VLVH[tier], VLVT[tier])) .rotationState(RotationState.NON_Y_AXIS) @@ -323,13 +323,13 @@ public class GTMachines { GTRecipeTypes.MACERATOR_RECIPES, defaultTankSizeFunction.applyAsInt(tier), true)) .register(), ELECTRIC_TIERS); - public static final MachineDefinition[] GAS_COLLECTOR = new SimpleMachineBuilder(REGISTRATE, "gas_collector", + public static final MachineEntry.Singleblock[] GAS_COLLECTOR = new SimpleMachineBuilder(REGISTRATE, "gas_collector", GTRecipeTypes.GAS_COLLECTOR_RECIPES) .tankScalingFunction(largeTankSizeFunction) .hasPollutionDebuff(true) .register(); - public static final MachineDefinition[] ROCK_CRUSHER = registerTieredMachines(REGISTRATE, "rock_crusher", + public static final MachineEntry.Singleblock[] ROCK_CRUSHER = registerTieredMachines(REGISTRATE, "rock_crusher", GTMachineInstanceFactories.ROCK_CRUSHER, (tier, builder) -> builder .langValue("%s Rock Crusher %s".formatted(VLVH[tier], VLVT[tier])) .ui(GTSingleblockMachinePanels.GENERAL_MACHINE) @@ -342,7 +342,7 @@ public class GTMachines { .tooltips(explosion()) .register(), ELECTRIC_TIERS); - public static final MachineDefinition[] AIR_SCRUBBER = registerTieredMachines(REGISTRATE, "air_scrubber", + public static final MachineEntry.Singleblock[] AIR_SCRUBBER = registerTieredMachines(REGISTRATE, "air_scrubber", AirScrubberMachine::new, (tier, builder) -> builder .langValue("%s Air Scrubber %s".formatted(VLVH[tier], VLVT[tier])) .ui(GTSingleblockMachinePanels.GENERAL_MACHINE) @@ -359,32 +359,32 @@ public class GTMachines { ////////////////////////////////////// // **** Simple Generator ****// ////////////////////////////////////// - public static final MachineDefinition[] COMBUSTION = registerSimpleGenerator(REGISTRATE, "combustion", + public static final MachineEntry.Singleblock[] COMBUSTION = registerSimpleGenerator(REGISTRATE, "combustion", GTRecipeTypes.COMBUSTION_GENERATOR_FUELS, genericGeneratorTankSizeFunction, 0.1f, GTValues.LV, GTValues.MV, GTValues.HV); - public static final MachineDefinition[] STEAM_TURBINE = registerSimpleGenerator(REGISTRATE, "steam_turbine", + public static final MachineEntry.Singleblock[] STEAM_TURBINE = registerSimpleGenerator(REGISTRATE, "steam_turbine", GTRecipeTypes.STEAM_TURBINE_FUELS, steamGeneratorTankSizeFunction, 0.0f, GTValues.LV, GTValues.MV, GTValues.HV); - public static final MachineDefinition[] GAS_TURBINE = registerSimpleGenerator(REGISTRATE, "gas_turbine", + public static final MachineEntry.Singleblock[] GAS_TURBINE = registerSimpleGenerator(REGISTRATE, "gas_turbine", GTRecipeTypes.GAS_TURBINE_FUELS, genericGeneratorTankSizeFunction, 0.1f, GTValues.LV, GTValues.MV, GTValues.HV); ////////////////////////////////////// // ******** Electric ********// ////////////////////////////////////// - public static final MachineDefinition[] TRANSFORMER = registerTransformerMachines(REGISTRATE, "", 1); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] TRANSFORMER = registerTransformerMachines(REGISTRATE, "", 1); + public static final MachineEntry.Singleblock[] HI_AMP_TRANSFORMER_2A = registerTransformerMachines(REGISTRATE, "Hi-Amp (2x)", 2); - public static final MachineDefinition[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] HI_AMP_TRANSFORMER_4A = registerTransformerMachines(REGISTRATE, "Hi-Amp (4x)", 4); - public static final MachineDefinition[] POWER_TRANSFORMER = registerTransformerMachines(REGISTRATE, "Power", 16); + public static final MachineEntry.Singleblock[] POWER_TRANSFORMER = registerTransformerMachines(REGISTRATE, "Power", 16); - public static final MachineDefinition[] ENERGY_CONVERTER_1A = registerConverter(REGISTRATE, 1); - public static final MachineDefinition[] ENERGY_CONVERTER_4A = registerConverter(REGISTRATE, 4); - public static final MachineDefinition[] ENERGY_CONVERTER_8A = registerConverter(REGISTRATE, 8); - public static final MachineDefinition[] ENERGY_CONVERTER_16A = registerConverter(REGISTRATE, 16); + public static final MachineEntry.Singleblock[] ENERGY_CONVERTER_1A = registerConverter(REGISTRATE, 1); + public static final MachineEntry.Singleblock[] ENERGY_CONVERTER_4A = registerConverter(REGISTRATE, 4); + public static final MachineEntry.Singleblock[] ENERGY_CONVERTER_8A = registerConverter(REGISTRATE, 8); + public static final MachineEntry.Singleblock[] ENERGY_CONVERTER_16A = registerConverter(REGISTRATE, 16); - public static final MachineDefinition LONG_DIST_ITEM_ENDPOINT = REGISTRATE + public static final MachineEntry.Singleblock LONG_DIST_ITEM_ENDPOINT = REGISTRATE .machine("long_distance_item_pipeline_endpoint", LDItemEndpointMachine::new) .langValue("Long Distance Item Pipeline Endpoint") .rotationState(RotationState.ALL) @@ -400,7 +400,7 @@ public class GTMachines { }) .register(); - public static final MachineDefinition LONG_DIST_FLUID_ENDPOINT = REGISTRATE + public static final MachineEntry.Singleblock LONG_DIST_FLUID_ENDPOINT = REGISTRATE .machine("long_distance_fluid_pipeline_endpoint", LDFluidEndpointMachine::new) .langValue("Long Distance Fluid Pipeline Endpoint") .rotationState(RotationState.ALL) @@ -418,15 +418,15 @@ public class GTMachines { }) .register(); - public static final MachineDefinition[] BATTERY_BUFFER_4 = registerBatteryBuffer(REGISTRATE, 4); + public static final MachineEntry.Singleblock[] BATTERY_BUFFER_4 = registerBatteryBuffer(REGISTRATE, 4); - public static final MachineDefinition[] BATTERY_BUFFER_8 = registerBatteryBuffer(REGISTRATE, 8); + public static final MachineEntry.Singleblock[] BATTERY_BUFFER_8 = registerBatteryBuffer(REGISTRATE, 8); - public static final MachineDefinition[] BATTERY_BUFFER_16 = registerBatteryBuffer(REGISTRATE, 16); + public static final MachineEntry.Singleblock[] BATTERY_BUFFER_16 = registerBatteryBuffer(REGISTRATE, 16); - public static final MachineDefinition[] CHARGER_4 = registerCharger(REGISTRATE, 4); + public static final MachineEntry.Singleblock[] CHARGER_4 = registerCharger(REGISTRATE, 4); - public static final MachineDefinition[] PUMP = registerTieredMachines(REGISTRATE, "pump", PumpMachine::new, + public static final MachineEntry.Singleblock[] PUMP = registerTieredMachines(REGISTRATE, "pump", PumpMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) .tieredHullModel(GTCEu.id("block/machine/template/pump_machine")) @@ -445,7 +445,7 @@ public class GTMachines { .register(), LV, MV, HV, EV); - public static final MachineDefinition[] FISHER = registerTieredMachines(REGISTRATE, "fisher", FisherMachine::new, + public static final MachineEntry.Singleblock[] FISHER = registerTieredMachines(REGISTRATE, "fisher", FisherMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) // .editableUI(FisherMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("fisher"), (tier + 1) * (tier + 1))) @@ -463,7 +463,7 @@ public class GTMachines { .register(), LV, MV, HV, EV, IV, LuV); - public static final MachineDefinition[] BLOCK_BREAKER = registerTieredMachines(REGISTRATE, "block_breaker", + public static final MachineEntry.Singleblock[] BLOCK_BREAKER = registerTieredMachines(REGISTRATE, "block_breaker", BlockBreakerMachine::new, (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) @@ -480,7 +480,7 @@ public class GTMachines { .register(), LV, MV, HV, EV); - public static final MachineDefinition[] MINER = registerTieredMachines(REGISTRATE, "miner", + public static final MachineEntry.Singleblock[] MINER = registerTieredMachines(REGISTRATE, "miner", (holder, tier) -> new MinerMachine(holder, tier, ConfigHolder.INSTANCE.machines.minerSpeed / (tier * 2), tier * 8, tier), (tier, builder) -> builder @@ -508,7 +508,7 @@ public class GTMachines { .register(), LV, MV, HV); - public static final MachineDefinition[] WORLD_ACCELERATOR = registerTieredMachines(REGISTRATE, "world_accelerator", + public static final MachineEntry.Singleblock[] WORLD_ACCELERATOR = registerTieredMachines(REGISTRATE, "world_accelerator", WorldAcceleratorMachine::new, (tier, builder) -> builder .rotationState(RotationState.NONE) @@ -537,7 +537,7 @@ public class GTMachines { .register(), LV, MV, HV, EV, IV, LuV, ZPM, UV); - public static final MachineDefinition[] ITEM_COLLECTOR = registerTieredMachines(REGISTRATE, "item_collector", + public static final MachineEntry.Singleblock[] ITEM_COLLECTOR = registerTieredMachines(REGISTRATE, "item_collector", ItemCollectorMachine::new, (tier, builder) -> builder .rotationState(RotationState.NONE) @@ -562,7 +562,7 @@ public class GTMachines { // ********* Storage *********// ////////////////////////////////////// - public static final MachineDefinition[] BUFFER = registerTieredMachines(REGISTRATE, "buffer", + public static final MachineEntry.Singleblock[] BUFFER = registerTieredMachines(REGISTRATE, "buffer", BufferMachine::new, (tier, builder) -> builder .langValue("%s Buffer %s".formatted(VLVH[tier], VLVT[tier])) @@ -586,7 +586,7 @@ public class GTMachines { .withStyle(TooltipHelper.RAINBOW_HSL_SLOW)) .append(Component.translatable("gtceu.creative_tooltip.3"))); - public static final MachineDefinition CREATIVE_ENERGY = REGISTRATE + public static final MachineEntry.Singleblock CREATIVE_ENERGY = REGISTRATE .machine("creative_energy", CreativeEnergyContainerMachine::new) .rotationState(RotationState.NONE) .model(createSingleOverlayTieredHullMachineModel(GTModels.BLANK_TEXTURE, @@ -595,7 +595,7 @@ public class GTMachines { .tier(MAX) .register(); - public static final MachineDefinition CREATIVE_COMPUTATION_PROVIDER = REGISTRATE + public static final MachineEntry.Singleblock CREATIVE_COMPUTATION_PROVIDER = REGISTRATE .machine("creative_computation_provider", CreativeComputationProviderMachine::new) .rotationState(RotationState.NONE) .model(createSingleOverlayTieredHullMachineModel( @@ -605,7 +605,7 @@ public class GTMachines { .tier(MAX) .register(); - public static final MachineDefinition CREATIVE_FLUID = REGISTRATE + public static final MachineEntry.Singleblock CREATIVE_FLUID = REGISTRATE .machine("creative_tank", CreativeTankMachine::new) .rotationState(RotationState.ALL) .allowExtendedFacing(true) @@ -625,7 +625,7 @@ public class GTMachines { .hasBER(true) .register(); - public static final MachineDefinition CREATIVE_ITEM = REGISTRATE + public static final MachineEntry.Singleblock CREATIVE_ITEM = REGISTRATE .machine("creative_chest", CreativeChestMachine::new) .rotationState(RotationState.ALL) .allowExtendedFacing(true) @@ -645,51 +645,51 @@ public class GTMachines { .hasBER(true) .register(); - public static final MachineDefinition[] SUPER_CHEST = registerQuantumChests(REGISTRATE, "super_chest", LOW_TIERS); - public static final MachineDefinition[] QUANTUM_CHEST = registerQuantumChests(REGISTRATE, "quantum_chest", + public static final MachineEntry.Singleblock[] SUPER_CHEST = registerQuantumChests(REGISTRATE, "super_chest", LOW_TIERS); + public static final MachineEntry.Singleblock[] QUANTUM_CHEST = registerQuantumChests(REGISTRATE, "quantum_chest", HIGH_TIERS); - public static final MachineDefinition[] SUPER_TANK = registerQuantumTanks(REGISTRATE, "super_tank", LOW_TIERS); - public static final MachineDefinition[] QUANTUM_TANK = registerQuantumTanks(REGISTRATE, "quantum_tank", HIGH_TIERS); + public static final MachineEntry.Singleblock[] SUPER_TANK = registerQuantumTanks(REGISTRATE, "super_tank", LOW_TIERS); + public static final MachineEntry.Singleblock[] QUANTUM_TANK = registerQuantumTanks(REGISTRATE, "quantum_tank", HIGH_TIERS); - public static MachineDefinition WOODEN_CRATE = registerCrate(REGISTRATE, GTMaterials.Wood, 27, 9, "Wooden Crate"); - public static MachineDefinition BRONZE_CRATE = registerCrate(REGISTRATE, GTMaterials.Bronze, 54, 9, "Bronze Crate"); - public static MachineDefinition STEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.Steel, 72, 9, "Steel Crate"); - public static MachineDefinition ALUMINIUM_CRATE = registerCrate(REGISTRATE, GTMaterials.Aluminium, 90, 10, + public static MachineEntry.Singleblock WOODEN_CRATE = registerCrate(REGISTRATE, GTMaterials.Wood, 27, 9, "Wooden Crate"); + public static MachineEntry.Singleblock BRONZE_CRATE = registerCrate(REGISTRATE, GTMaterials.Bronze, 54, 9, "Bronze Crate"); + public static MachineEntry.Singleblock STEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.Steel, 72, 9, "Steel Crate"); + public static MachineEntry.Singleblock ALUMINIUM_CRATE = registerCrate(REGISTRATE, GTMaterials.Aluminium, 90, 10, "Aluminium Crate"); - public static MachineDefinition STAINLESS_STEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.StainlessSteel, 108, + public static MachineEntry.Singleblock STAINLESS_STEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.StainlessSteel, 108, 12, "Stainless Steel Crate"); - public static MachineDefinition TITANIUM_CRATE = registerCrate(REGISTRATE, GTMaterials.Titanium, 126, 14, + public static MachineEntry.Singleblock TITANIUM_CRATE = registerCrate(REGISTRATE, GTMaterials.Titanium, 126, 14, "Titanium Crate"); - public static MachineDefinition TUNGSTENSTEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.TungstenSteel, 144, 16, + public static MachineEntry.Singleblock TUNGSTENSTEEL_CRATE = registerCrate(REGISTRATE, GTMaterials.TungstenSteel, 144, 16, "Tungstensteel Crate"); - public static MachineDefinition WOODEN_DRUM = registerDrum(REGISTRATE, GTMaterials.Wood, + public static MachineEntry.Singleblock WOODEN_DRUM = registerDrum(REGISTRATE, GTMaterials.Wood, (16 * FluidType.BUCKET_VOLUME), "Wooden Barrel"); - public static MachineDefinition BRONZE_DRUM = registerDrum(REGISTRATE, GTMaterials.Bronze, + public static MachineEntry.Singleblock BRONZE_DRUM = registerDrum(REGISTRATE, GTMaterials.Bronze, (32 * FluidType.BUCKET_VOLUME), "Bronze Drum"); - public static MachineDefinition STEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.Steel, + public static MachineEntry.Singleblock STEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.Steel, (64 * FluidType.BUCKET_VOLUME), "Steel Drum"); - public static MachineDefinition ALUMINIUM_DRUM = registerDrum(REGISTRATE, GTMaterials.Aluminium, + public static MachineEntry.Singleblock ALUMINIUM_DRUM = registerDrum(REGISTRATE, GTMaterials.Aluminium, (128 * FluidType.BUCKET_VOLUME), "Aluminium Drum"); - public static MachineDefinition STAINLESS_STEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.StainlessSteel, + public static MachineEntry.Singleblock STAINLESS_STEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.StainlessSteel, (256 * FluidType.BUCKET_VOLUME), "Stainless Steel Drum"); - public static MachineDefinition GOLD_DRUM = registerDrum(REGISTRATE, GTMaterials.Gold, + public static MachineEntry.Singleblock GOLD_DRUM = registerDrum(REGISTRATE, GTMaterials.Gold, (32 * FluidType.BUCKET_VOLUME), "Gold Drum"); - public static MachineDefinition TITANIUM_DRUM = registerDrum(REGISTRATE, GTMaterials.Titanium, + public static MachineEntry.Singleblock TITANIUM_DRUM = registerDrum(REGISTRATE, GTMaterials.Titanium, (512 * FluidType.BUCKET_VOLUME), "Titanium Drum"); - public static MachineDefinition TUNGSTENSTEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.TungstenSteel, + public static MachineEntry.Singleblock TUNGSTENSTEEL_DRUM = registerDrum(REGISTRATE, GTMaterials.TungstenSteel, (1024 * FluidType.BUCKET_VOLUME), "Tungstensteel Drum"); ////////////////////////////////////// // ********** Part **********// ////////////////////////////////////// - public static final MachineDefinition[] ITEM_IMPORT_BUS = registerTieredMachines(REGISTRATE, "input_bus", + public static final MachineEntry.Singleblock[] ITEM_IMPORT_BUS = registerTieredMachines(REGISTRATE, "input_bus", (holder, tier) -> new ItemBusPartMachine(holder, tier, IN), (tier, builder) -> builder .langValue(VNF[tier] + " Input Bus") @@ -704,7 +704,7 @@ public class GTMachines { .register(), ALL_TIERS); - public static final MachineDefinition[] ITEM_EXPORT_BUS = registerTieredMachines(REGISTRATE, "output_bus", + public static final MachineEntry.Singleblock[] ITEM_EXPORT_BUS = registerTieredMachines(REGISTRATE, "output_bus", (holder, tier) -> new ItemBusPartMachine(holder, tier, OUT), (tier, builder) -> builder .langValue(VNF[tier] + " Output Bus") @@ -719,43 +719,43 @@ public class GTMachines { .register(), ALL_TIERS); - public final static MachineDefinition[] FLUID_IMPORT_HATCH = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_IMPORT_HATCH = registerFluidHatches(REGISTRATE, "input_hatch", "Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_1X); - public final static MachineDefinition[] FLUID_IMPORT_HATCH_4X = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_IMPORT_HATCH_4X = registerFluidHatches(REGISTRATE, "input_hatch_4x", "Quadruple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_4X); - public final static MachineDefinition[] FLUID_IMPORT_HATCH_9X = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_IMPORT_HATCH_9X = registerFluidHatches(REGISTRATE, "input_hatch_9x", "Nonuple Input Hatch", "fluid_hatch.import", IN, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.IMPORT_FLUIDS, PartAbility.IMPORT_FLUIDS_9X); - public final static MachineDefinition[] FLUID_EXPORT_HATCH = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_EXPORT_HATCH = registerFluidHatches(REGISTRATE, "output_hatch", "Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1, ALL_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_1X); - public final static MachineDefinition[] FLUID_EXPORT_HATCH_4X = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_EXPORT_HATCH_4X = registerFluidHatches(REGISTRATE, "output_hatch_4x", "Quadruple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_4X, 4, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_4X); - public final static MachineDefinition[] FLUID_EXPORT_HATCH_9X = registerFluidHatches(REGISTRATE, + public final static MachineEntry.Singleblock[] FLUID_EXPORT_HATCH_9X = registerFluidHatches(REGISTRATE, "output_hatch_9x", "Nonuple Output Hatch", "fluid_hatch.export", OUT, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_9X, 9, MULTI_HATCH_TIERS, PartAbility.EXPORT_FLUIDS, PartAbility.EXPORT_FLUIDS_9X); - public static final MachineDefinition[] ENERGY_INPUT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_INPUT_HATCH = registerTieredMachines(REGISTRATE, "energy_input_hatch", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, IN, 2), (tier, builder) -> builder @@ -774,7 +774,7 @@ public class GTMachines { .register(), ALL_TIERS); - public static final MachineDefinition[] ENERGY_OUTPUT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_OUTPUT_HATCH = registerTieredMachines(REGISTRATE, "energy_output_hatch", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, OUT, 2), (tier, builder) -> builder @@ -793,7 +793,7 @@ public class GTMachines { .register(), ALL_TIERS); - public static final MachineDefinition[] ENERGY_INPUT_HATCH_4A = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_INPUT_HATCH_4A = registerTieredMachines(REGISTRATE, "energy_input_hatch_4a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, IN, 4), (tier, builder) -> builder @@ -812,7 +812,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] ENERGY_OUTPUT_HATCH_4A = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_OUTPUT_HATCH_4A = registerTieredMachines(REGISTRATE, "energy_output_hatch_4a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, OUT, 4), (tier, builder) -> builder @@ -831,7 +831,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] ENERGY_INPUT_HATCH_16A = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_INPUT_HATCH_16A = registerTieredMachines(REGISTRATE, "energy_input_hatch_16a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, IN, 16), (tier, builder) -> builder @@ -850,7 +850,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] ENERGY_OUTPUT_HATCH_16A = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ENERGY_OUTPUT_HATCH_16A = registerTieredMachines(REGISTRATE, "energy_output_hatch_16a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, OUT, 16), (tier, builder) -> builder @@ -869,7 +869,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] SUBSTATION_ENERGY_INPUT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] SUBSTATION_ENERGY_INPUT_HATCH = registerTieredMachines(REGISTRATE, "substation_input_hatch_64a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, IN, 64), (tier, builder) -> builder @@ -888,7 +888,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] SUBSTATION_ENERGY_OUTPUT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] SUBSTATION_ENERGY_OUTPUT_HATCH = registerTieredMachines(REGISTRATE, "substation_output_hatch_64a", (holder, tier) -> new EnergyHatchPartMachine(holder, tier, OUT, 64), (tier, builder) -> builder @@ -907,7 +907,7 @@ public class GTMachines { .register(), GTValues.tiersBetween(EV, GTCEuAPI.isHighTier() ? MAX : UHV)); - public static final MachineDefinition[] MUFFLER_HATCH = registerTieredMachines(REGISTRATE, "muffler_hatch", + public static final MachineEntry.Singleblock[] MUFFLER_HATCH = registerTieredMachines(REGISTRATE, "muffler_hatch", MufflerPartMachine::new, (tier, builder) -> builder .langValue("Muffler Hatch " + VNF[tier]) @@ -923,7 +923,7 @@ public class GTMachines { .register(), ELECTRIC_TIERS); - public static final MachineDefinition STEAM_IMPORT_BUS = REGISTRATE + public static final MachineEntry.Singleblock STEAM_IMPORT_BUS = REGISTRATE .machine("steam_input_bus", holder -> new SteamItemBusPartMachine(holder, IN)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_IMPORT_ITEMS) @@ -937,7 +937,7 @@ public class GTMachines { .allowCoverOnFront(true) .register(); - public static final MachineDefinition STEAM_EXPORT_BUS = REGISTRATE + public static final MachineEntry.Singleblock STEAM_EXPORT_BUS = REGISTRATE .machine("steam_output_bus", holder -> new SteamItemBusPartMachine(holder, OUT)) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM_EXPORT_ITEMS) @@ -951,7 +951,7 @@ public class GTMachines { .allowCoverOnFront(true) .register(); - public static final MachineDefinition STEAM_HATCH = REGISTRATE + public static final MachineEntry.Singleblock STEAM_HATCH = REGISTRATE .machine("steam_input_hatch", SteamHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.STEAM) @@ -964,7 +964,7 @@ public class GTMachines { .allowCoverOnFront(true) .register(); - public static final MachineDefinition COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) + public static final MachineEntry.Singleblock COKE_OVEN_HATCH = REGISTRATE.machine("coke_oven_hatch", CokeOvenHatch::new) .rotationState(RotationState.ALL) .modelProperty(IS_FORMED, false) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) @@ -972,7 +972,7 @@ public class GTMachines { .themeId(GTGuiTheme.PRIMITIVE.getId()) .register(); - public static final MachineDefinition PUMP_HATCH = REGISTRATE.machine("pump_hatch", PumpHatchPartMachine::new) + public static final MachineEntry.Singleblock PUMP_HATCH = REGISTRATE.machine("pump_hatch", PumpHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.PUMP_FLUID_HATCH) .modelProperty(IS_FORMED, false) @@ -991,7 +991,7 @@ public class GTMachines { .themeId(GTGuiTheme.PRIMITIVE.getId()) .register(); - public static final MachineDefinition MAINTENANCE_HATCH = REGISTRATE + public static final MachineEntry.Singleblock MAINTENANCE_HATCH = REGISTRATE .machine("maintenance_hatch", (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, false)) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) @@ -1002,7 +1002,7 @@ public class GTMachines { .tier(LV) .register(); - public static final MachineDefinition CONFIGURABLE_MAINTENANCE_HATCH = REGISTRATE + public static final MachineEntry.Singleblock CONFIGURABLE_MAINTENANCE_HATCH = REGISTRATE .machine("configurable_maintenance_hatch", (blockEntity) -> new MaintenanceHatchPartMachine(blockEntity, true)) .rotationState(RotationState.ALL) @@ -1014,7 +1014,7 @@ public class GTMachines { .tier(HV) .register(); - public static final MachineDefinition CLEANING_MAINTENANCE_HATCH = REGISTRATE + public static final MachineEntry.Singleblock CLEANING_MAINTENANCE_HATCH = REGISTRATE .machine("cleaning_maintenance_hatch", holder -> new CleaningMaintenanceHatchPartMachine(holder, CleanroomType.CLEANROOM)) .rotationState(RotationState.ALL) @@ -1031,7 +1031,7 @@ public class GTMachines { .tier(HV) .register(); - public static final MachineDefinition AUTO_MAINTENANCE_HATCH = REGISTRATE + public static final MachineEntry.Singleblock AUTO_MAINTENANCE_HATCH = REGISTRATE .machine("auto_maintenance_hatch", AutoMaintenanceHatchPartMachine::new) .rotationState(RotationState.ALL) .abilities(PartAbility.MAINTENANCE) @@ -1041,7 +1041,7 @@ public class GTMachines { .tier(HV) .register(); - public static final MachineDefinition[] ITEM_PASSTHROUGH_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] ITEM_PASSTHROUGH_HATCH = registerTieredMachines(REGISTRATE, "item_passthrough_hatch", (holder, tier) -> new ItemBusPartMachine(holder, tier, IO.BOTH), (tier, builder) -> builder @@ -1057,7 +1057,7 @@ public class GTMachines { .register(), ELECTRIC_TIERS); - public static final MachineDefinition[] FLUID_PASSTHROUGH_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] FLUID_PASSTHROUGH_HATCH = registerTieredMachines(REGISTRATE, "fluid_passthrough_hatch", (holder, tier) -> new FluidHatchPartMachine(holder, tier, IO.BOTH, FluidHatchPartMachine.INITIAL_TANK_CAPACITY_1X, 1), @@ -1074,7 +1074,7 @@ public class GTMachines { .register(), ELECTRIC_TIERS); - public static final MachineDefinition RESERVOIR_HATCH = REGISTRATE + public static final MachineEntry.Singleblock RESERVOIR_HATCH = REGISTRATE .machine("reservoir_hatch", ReservoirHatchPartMachine::new) .langValue("Reservoir Hatch") .tier(EV) @@ -1088,7 +1088,7 @@ public class GTMachines { .overlayTieredHullModel("reservoir_hatch") .register(); - public static final MachineDefinition[] DUAL_IMPORT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] DUAL_IMPORT_HATCH = registerTieredMachines(REGISTRATE, "dual_input_hatch", (holder, tier) -> new DualHatchPartMachine(holder, tier, IN), (tier, builder) -> builder @@ -1111,7 +1111,7 @@ public class GTMachines { .register(), DUAL_HATCH_TIERS); - public static final MachineDefinition[] DUAL_EXPORT_HATCH = registerTieredMachines(REGISTRATE, + public static final MachineEntry.Singleblock[] DUAL_EXPORT_HATCH = registerTieredMachines(REGISTRATE, "dual_output_hatch", (holder, tier) -> new DualHatchPartMachine(holder, tier, OUT), (tier, builder) -> builder @@ -1134,7 +1134,7 @@ public class GTMachines { .register(), DUAL_HATCH_TIERS); - public static final MachineDefinition[] DIODE = registerTieredMachines(REGISTRATE, "diode", + public static final MachineEntry.Singleblock[] DIODE = registerTieredMachines(REGISTRATE, "diode", DiodePartMachine::new, (tier, builder) -> builder .langValue("%s Diode".formatted(VNF[tier])) @@ -1153,7 +1153,7 @@ public class GTMachines { .register(), ELECTRIC_TIERS); - public static final MachineDefinition[] ROTOR_HOLDER = registerTieredMachines(REGISTRATE, "rotor_holder", + public static final MachineEntry.Singleblock[] ROTOR_HOLDER = registerTieredMachines(REGISTRATE, "rotor_holder", RotorHolderPartMachine::new, (tier, builder) -> builder .langValue("%s Rotor Holder".formatted(VNF[tier])) @@ -1169,25 +1169,25 @@ public class GTMachines { .register(), GTValues.tiersBetween(HV, GTCEuAPI.isHighTier() ? OpV : UV)); - public static final MachineDefinition[] LASER_INPUT_HATCH_256 = registerLaserHatch(REGISTRATE, IN, 256, + public static final MachineEntry.Singleblock[] LASER_INPUT_HATCH_256 = registerLaserHatch(REGISTRATE, IN, 256, PartAbility.INPUT_LASER); - public static final MachineDefinition[] LASER_OUTPUT_HATCH_256 = registerLaserHatch(REGISTRATE, OUT, 256, + public static final MachineEntry.Singleblock[] LASER_OUTPUT_HATCH_256 = registerLaserHatch(REGISTRATE, OUT, 256, PartAbility.OUTPUT_LASER); - public static final MachineDefinition[] LASER_INPUT_HATCH_1024 = registerLaserHatch(REGISTRATE, IN, 1024, + public static final MachineEntry.Singleblock[] LASER_INPUT_HATCH_1024 = registerLaserHatch(REGISTRATE, IN, 1024, PartAbility.INPUT_LASER); - public static final MachineDefinition[] LASER_OUTPUT_HATCH_1024 = registerLaserHatch(REGISTRATE, OUT, 1024, + public static final MachineEntry.Singleblock[] LASER_OUTPUT_HATCH_1024 = registerLaserHatch(REGISTRATE, OUT, 1024, PartAbility.OUTPUT_LASER); - public static final MachineDefinition[] LASER_INPUT_HATCH_4096 = registerLaserHatch(REGISTRATE, IN, 4096, + public static final MachineEntry.Singleblock[] LASER_INPUT_HATCH_4096 = registerLaserHatch(REGISTRATE, IN, 4096, PartAbility.INPUT_LASER); - public static final MachineDefinition[] LASER_OUTPUT_HATCH_4096 = registerLaserHatch(REGISTRATE, OUT, 4096, + public static final MachineEntry.Singleblock[] LASER_OUTPUT_HATCH_4096 = registerLaserHatch(REGISTRATE, OUT, 4096, PartAbility.OUTPUT_LASER); - public static final MachineDefinition MONITOR = REGISTRATE.machine("monitor", MonitorPartMachine::new) + public static final MachineEntry.Singleblock MONITOR = REGISTRATE.machine("monitor", MonitorPartMachine::new) .rotationState(RotationState.ALL) .model(createOverlayCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), GTCEu.id("block/machine/part/computer_monitor"))) .tier(MV) .register(); - public static final MachineDefinition ADVANCED_MONITOR = REGISTRATE + public static final MachineEntry.Singleblock ADVANCED_MONITOR = REGISTRATE .machine("advanced_monitor", AdvancedMonitorPartMachine::new) .rotationState(RotationState.ALL) .model(createOverlayCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), @@ -1196,7 +1196,7 @@ public class GTMachines { .allowExtendedFacing(true) .register(); - public static final MachineDefinition MUI_TEST = REGISTRATE + public static final MachineEntry.Singleblock MUI_TEST = REGISTRATE .machine("test_mui", TestMuiMachine::new) .rotationState(RotationState.ALL) .model(createOverlayCasingMachineModel(GTCEu.id("block/casings/solid/machine_casing_clean_stainless_steel"), diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java index f81c88f2836..d89f1b44d10 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GCYMMachines.java @@ -3,8 +3,6 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; -import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; @@ -13,6 +11,7 @@ import com.gregtechceu.gtceu.api.multiblock.PatternPredicate; import com.gregtechceu.gtceu.api.multiblock.Predicates; import com.gregtechceu.gtceu.api.multiblock.pattern.MultiblockPatternBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeModifiers; @@ -49,7 +48,7 @@ public class GCYMMachines { public static void init() {} - public static final MachineDefinition[] PARALLEL_HATCH = registerTieredMachines(REGISTRATE, "parallel_hatch", + public static final MachineEntry.Singleblock[] PARALLEL_HATCH = registerTieredMachines(REGISTRATE, "parallel_hatch", ParallelHatchPartMachine::new, (tier, builder) -> builder .langValue(switch (tier) { @@ -73,7 +72,7 @@ public static void init() {} .register(), IV, LuV, ZPM, UV); - public final static MultiblockMachineDefinition LARGE_MACERATION_TOWER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_MACERATION_TOWER = REGISTRATE .multiblock("large_maceration_tower", LargeMacerationTowerMachine::new) .langValue("Large Maceration Tower") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -100,7 +99,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_maceration_tower")) .register(); - public final static MultiblockMachineDefinition LARGE_CHEMICAL_BATH = REGISTRATE + public final static MachineEntry.Multiblock LARGE_CHEMICAL_BATH = REGISTRATE .multiblock("large_chemical_bath", GTMachineInstanceFactories.LARGE_CHEM_BATH) .langValue("Large Chemical Bath") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -132,7 +131,7 @@ public static void init() {} .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); - public final static MultiblockMachineDefinition LARGE_CENTRIFUGE = REGISTRATE + public final static MachineEntry.Multiblock LARGE_CENTRIFUGE = REGISTRATE .multiblock("large_centrifuge", WorkableElectricMultiblockMachine::new) .langValue("Large Centrifugal Unit") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -160,7 +159,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_centrifuge")) .register(); - public final static MultiblockMachineDefinition LARGE_MIXER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_MIXER = REGISTRATE .multiblock("large_mixer", GTMachineInstanceFactories.LARGE_MIXER) .langValue("Large Mixing Vessel") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -193,7 +192,7 @@ public static void init() {} .andThen(b -> b.addDynamicRenderer(DynamicRenderHelper::makeRecipeFluidAreaRender))) .register(); - public final static MultiblockMachineDefinition LARGE_ELECTROLYZER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_ELECTROLYZER = REGISTRATE .multiblock("large_electrolyzer", WorkableElectricMultiblockMachine::new) .langValue("Large Electrolysis Chamber") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -218,7 +217,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); - public final static MultiblockMachineDefinition LARGE_ELECTROMAGNET = REGISTRATE + public final static MachineEntry.Multiblock LARGE_ELECTROMAGNET = REGISTRATE .multiblock("large_electromagnet", WorkableElectricMultiblockMachine::new) .langValue("Large Electromagnet") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -244,12 +243,12 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_electrolyzer")) .register(); - public final static MultiblockMachineDefinition LARGE_PACKER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_PACKER = REGISTRATE .multiblock("large_packer", WorkableElectricMultiblockMachine::new) .langValue("Large Packaging Machine") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", - Component.translatable("gtceu.packer"))) + Component.translatable("recipe_type.gtceu.packer"))) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PACKER_RECIPES) .recipeModifiers(GTRecipeModifiers.PARALLEL_HATCH, OC_NON_PERFECT_SUBTICK, BATCH_MODE) @@ -271,12 +270,12 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_packer")) .register(); - public final static MultiblockMachineDefinition LARGE_ASSEMBLER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_ASSEMBLER = REGISTRATE .multiblock("large_assembler", WorkableElectricMultiblockMachine::new) .langValue("Large Assembling Factory") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", - Component.translatable("gtceu.assembler"))) + Component.translatable("recipe_type.gtceu.assembler"))) .tooltips(Component.translatable("gtceu.multiblock.exact_hatch_1.tooltip")) .conditionalTooltip(GTMachineUtils.defaultEnvironmentRequirement(), ConfigHolder.INSTANCE.gameplay.environmentalHazards) @@ -303,7 +302,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_assembler")) .register(); - public final static MultiblockMachineDefinition LARGE_CIRCUIT_ASSEMBLER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_CIRCUIT_ASSEMBLER = REGISTRATE .multiblock("large_circuit_assembler", WorkableElectricMultiblockMachine::new) .langValue("Large Circuit Assembling Facility") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -339,7 +338,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_circuit_assembler")) .register(); - public final static MultiblockMachineDefinition LARGE_ARC_SMELTER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_ARC_SMELTER = REGISTRATE .multiblock("large_arc_smelter", WorkableElectricMultiblockMachine::new) .langValue("Large Arc Smelter") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -368,7 +367,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_arc_smelter")) .register(); - public final static MultiblockMachineDefinition LARGE_ENGRAVING_LASER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_ENGRAVING_LASER = REGISTRATE .multiblock("large_engraving_laser", WorkableElectricMultiblockMachine::new) .langValue("Large Engraving Laser") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -400,7 +399,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_engraving_laser")) .register(); - public final static MultiblockMachineDefinition LARGE_SIFTING_FUNNEL = REGISTRATE + public final static MachineEntry.Multiblock LARGE_SIFTING_FUNNEL = REGISTRATE .multiblock("large_sifting_funnel", WorkableElectricMultiblockMachine::new) .langValue("Large Sifting Funnel") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -428,7 +427,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_sifting_funnel")) .register(); - public final static MultiblockMachineDefinition BLAST_ALLOY_SMELTER = REGISTRATE + public final static MachineEntry.Multiblock BLAST_ALLOY_SMELTER = REGISTRATE .multiblock("alloy_blast_smelter", CoilWorkableElectricMultiblockMachine::new) .langValue("Alloy Blast Smelter") .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", @@ -472,7 +471,7 @@ public static void init() {} }) .register(); - public final static MultiblockMachineDefinition LARGE_AUTOCLAVE = REGISTRATE + public final static MachineEntry.Multiblock LARGE_AUTOCLAVE = REGISTRATE .multiblock("large_autoclave", WorkableElectricMultiblockMachine::new) .langValue("Large Crystallization Chamber") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -499,7 +498,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_autoclave")) .register(); - public final static MultiblockMachineDefinition LARGE_MATERIAL_PRESS = REGISTRATE + public final static MachineEntry.Multiblock LARGE_MATERIAL_PRESS = REGISTRATE .multiblock("large_material_press", WorkableElectricMultiblockMachine::new) .langValue("Large Material Press") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -526,7 +525,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_material_press")) .register(); - public final static MultiblockMachineDefinition LARGE_BREWER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_BREWER = REGISTRATE .multiblock("large_brewer", WorkableElectricMultiblockMachine::new) .langValue("Large Brewing Vat") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -556,7 +555,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_brewer")) .register(); - public final static MultiblockMachineDefinition LARGE_CUTTER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_CUTTER = REGISTRATE .multiblock("large_cutter", WorkableElectricMultiblockMachine::new) .langValue("Large Cutting Saw") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -584,7 +583,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_cutter")) .register(); - public final static MultiblockMachineDefinition LARGE_DISTILLERY = REGISTRATE + public final static MachineEntry.Multiblock LARGE_DISTILLERY = REGISTRATE .multiblock("large_distillery", DistillationTowerMachine::new) .langValue("Large Fractionating Distillery") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -598,7 +597,7 @@ public static void init() {} PatternPredicate casingPredicate = blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(40); PatternPredicate exportPredicate = abilities(PartAbility.EXPORT_FLUIDS_1X); if (GTCEu.Mods.isAE2Loaded()) - exportPredicate = exportPredicate.or(blocks(GTAEMachines.FLUID_EXPORT_HATCH_ME.get())); + exportPredicate = exportPredicate.or(machines(GTAEMachines.FLUID_EXPORT_HATCH_ME)); exportPredicate.setMaxLayerLimited(1); return MultiblockPatternBuilder.start(UP, BACK, RIGHT) .slice("#YYY#", "YYYYY", "YYYYY", "YYYYY", "#YYY#") @@ -624,7 +623,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_distillery")) .register(); - public final static MultiblockMachineDefinition LARGE_EXTRACTOR = REGISTRATE + public final static MachineEntry.Multiblock LARGE_EXTRACTOR = REGISTRATE .multiblock("large_extractor", WorkableElectricMultiblockMachine::new) .langValue("Large Extraction Machine") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -649,7 +648,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_extractor")) .register(); - public final static MultiblockMachineDefinition LARGE_EXTRUDER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_EXTRUDER = REGISTRATE .multiblock("large_extruder", WorkableElectricMultiblockMachine::new) .langValue("Large Extrusion Machine") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -678,7 +677,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_extruder")) .register(); - public final static MultiblockMachineDefinition LARGE_SOLIDIFIER = REGISTRATE + public final static MachineEntry.Multiblock LARGE_SOLIDIFIER = REGISTRATE .multiblock("large_solidifier", WorkableElectricMultiblockMachine::new) .langValue("Large Solidification Array") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -706,7 +705,7 @@ public static void init() {} GTCEu.id("block/multiblock/gcym/large_solidifier")) .register(); - public final static MultiblockMachineDefinition LARGE_WIREMILL = REGISTRATE + public final static MachineEntry.Multiblock LARGE_WIREMILL = REGISTRATE .multiblock("large_wiremill", WorkableElectricMultiblockMachine::new) .langValue("Large Wire Factory") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -732,7 +731,7 @@ public static void init() {} .register(); // spotless:off - public static final MultiblockMachineDefinition ROTARY_HEARTH_FURNACE = REGISTRATE + public static final MachineEntry.Multiblock ROTARY_HEARTH_FURNACE = REGISTRATE .multiblock("rotary_hearth_furnace", CoilWorkableElectricMultiblockMachine::new) .langValue("Rotary Hearth Furnace") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) @@ -792,7 +791,7 @@ public static void init() {} }) .register(); - public final static MultiblockMachineDefinition MEGA_VACUUM_FREEZER = REGISTRATE + public final static MachineEntry.Multiblock MEGA_VACUUM_FREEZER = REGISTRATE .multiblock("mega_vacuum_freezer", WorkableElectricMultiblockMachine::new) .langValue("Bulk Blast Chiller") .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java index 58e86286821..b5e52f9ad44 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTAEMachines.java @@ -2,8 +2,8 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.integration.ae2.machine.*; import net.minecraft.network.chat.Component; @@ -16,7 +16,7 @@ @SuppressWarnings("unused") public class GTAEMachines { - public final static MachineDefinition ITEM_IMPORT_BUS_ME = REGISTRATE + public final static MachineEntry.Singleblock ITEM_IMPORT_BUS_ME = REGISTRATE .machine("me_input_bus", MEInputBusPartMachine::new) .langValue("ME Input Bus") .tier(EV) @@ -30,7 +30,7 @@ public class GTAEMachines { Component.translatable("gtceu.part_sharing.enabled")) .register(); - public final static MachineDefinition STOCKING_IMPORT_BUS_ME = REGISTRATE + public final static MachineEntry.Singleblock STOCKING_IMPORT_BUS_ME = REGISTRATE .machine("me_stocking_input_bus", MEStockingBusPartMachine::new) .langValue("ME Stocking Input Bus") .tier(IV) @@ -46,7 +46,7 @@ public class GTAEMachines { Component.translatable("gtceu.part_sharing.enabled")) .register(); - public final static MachineDefinition ITEM_EXPORT_BUS_ME = REGISTRATE + public final static MachineEntry.Singleblock ITEM_EXPORT_BUS_ME = REGISTRATE .machine("me_output_bus", MEOutputBusPartMachine::new) .langValue("ME Output Bus") .tier(EV) @@ -60,7 +60,7 @@ public class GTAEMachines { Component.translatable("gtceu.part_sharing.enabled")) .register(); - public final static MachineDefinition FLUID_IMPORT_HATCH_ME = REGISTRATE + public final static MachineEntry.Singleblock FLUID_IMPORT_HATCH_ME = REGISTRATE .machine("me_input_hatch", MEInputHatchPartMachine::new) .langValue("ME Input Hatch") .tier(EV) @@ -74,7 +74,7 @@ public class GTAEMachines { Component.translatable("gtceu.part_sharing.enabled")) .register(); - public final static MachineDefinition STOCKING_IMPORT_HATCH_ME = REGISTRATE + public final static MachineEntry.Singleblock STOCKING_IMPORT_HATCH_ME = REGISTRATE .machine("me_stocking_input_hatch", MEStockingHatchPartMachine::new) .langValue("ME Stocking Input Hatch") .tier(IV) @@ -90,7 +90,7 @@ public class GTAEMachines { Component.translatable("gtceu.part_sharing.enabled")) .register(); - public final static MachineDefinition FLUID_EXPORT_HATCH_ME = REGISTRATE + public final static MachineEntry.Singleblock FLUID_EXPORT_HATCH_ME = REGISTRATE .machine("me_output_hatch", MEOutputHatchPartMachine::new) .langValue("ME Output Hatch") .tier(EV) @@ -103,7 +103,7 @@ public class GTAEMachines { Component.translatable("gtceu.machine.me.export.tooltip"), Component.translatable("gtceu.part_sharing.enabled")) .register(); - public static final MachineDefinition ME_PATTERN_BUFFER = REGISTRATE + public static final MachineEntry.Singleblock ME_PATTERN_BUFFER = REGISTRATE .machine("me_pattern_buffer", MEPatternBufferPartMachine::new) .tier(LuV) .rotationState(RotationState.ALL) @@ -117,7 +117,7 @@ public class GTAEMachines { Component.translatable("block.gtceu.pattern_buffer.desc.2"), Component.translatable("gtceu.part_sharing.enabled")) .register(); - public static final MachineDefinition ME_PATTERN_BUFFER_PROXY = REGISTRATE + public static final MachineEntry.Singleblock ME_PATTERN_BUFFER_PROXY = REGISTRATE .machine("me_pattern_buffer_proxy", MEPatternBufferProxyPartMachine::new) .tier(LuV) .rotationState(RotationState.ALL) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java index cf657785284..bfda8e9ca92 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMachineUtils.java @@ -527,7 +527,7 @@ public static MachineEntry.Singleblock[] registerQuantumChests(GTRegistrate regi public static MachineEntry.Multiblock registerMultiblockTank(GTRegistrate registrate, String name, String displayName, int capacity, Supplier casing, - Supplier valve, + Supplier valve, @Nullable PropertyFluidFilter filter, BiConsumer, ResourceLocation> rendererSetup) { MultiblockMachineBuilder builder = registrate @@ -546,7 +546,7 @@ public static MachineEntry.Multiblock registerMultiblockTank(GTRegistrate regist .slice("CCC", "CSC", "CCC") .where('S', controller(definition)) .where('C', blocks(casing.get()) - .or(blocks(valve.get()).setMaxGlobalLimited(2, 0))) + .or(machines(valve).setMaxGlobalLimited(2, 0))) .where('#', air()) .build()) .appearanceBlock(casing); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index 5365d08289a..c7f1c90409c 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -16,6 +16,7 @@ import com.gregtechceu.gtceu.api.multiblock.PatternPredicate; import com.gregtechceu.gtceu.api.multiblock.Predicates; import com.gregtechceu.gtceu.api.multiblock.pattern.MultiblockPatternBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.client.renderer.machine.DynamicRenderHelper; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; @@ -70,22 +71,22 @@ public class GTMultiMachines { ////////////////////////////////////// // ******* Multiblock *******// ////////////////////////////////////// - public static final MultiblockMachineDefinition LARGE_BOILER_BRONZE = registerLargeBoiler(REGISTRATE, "bronze", + public static final MachineEntry.Multiblock LARGE_BOILER_BRONZE = registerLargeBoiler(REGISTRATE, "bronze", CASING_BRONZE_BRICKS, CASING_BRONZE_PIPE, FIREBOX_BRONZE, GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), BoilerFireboxType.BRONZE_FIREBOX, ConfigHolder.INSTANCE.machines.largeBoilers.bronzeBoilerMaxTemperature, ConfigHolder.INSTANCE.machines.largeBoilers.bronzeBoilerHeatSpeed); - public static final MultiblockMachineDefinition LARGE_BOILER_STEEL = registerLargeBoiler(REGISTRATE, "steel", + public static final MachineEntry.Multiblock LARGE_BOILER_STEEL = registerLargeBoiler(REGISTRATE, "steel", CASING_STEEL_SOLID, CASING_STEEL_PIPE, FIREBOX_STEEL, GTCEu.id("block/casings/solid/machine_casing_solid_steel"), BoilerFireboxType.STEEL_FIREBOX, ConfigHolder.INSTANCE.machines.largeBoilers.steelBoilerMaxTemperature, ConfigHolder.INSTANCE.machines.largeBoilers.steelBoilerHeatSpeed); - public static final MultiblockMachineDefinition LARGE_BOILER_TITANIUM = registerLargeBoiler(REGISTRATE, "titanium", + public static final MachineEntry.Multiblock LARGE_BOILER_TITANIUM = registerLargeBoiler(REGISTRATE, "titanium", CASING_TITANIUM_STABLE, CASING_TITANIUM_PIPE, FIREBOX_TITANIUM, GTCEu.id("block/casings/solid/machine_casing_stable_titanium"), BoilerFireboxType.TITANIUM_FIREBOX, ConfigHolder.INSTANCE.machines.largeBoilers.titaniumBoilerMaxTemperature, ConfigHolder.INSTANCE.machines.largeBoilers.titaniumBoilerHeatSpeed); - public static final MultiblockMachineDefinition LARGE_BOILER_TUNGSTENSTEEL = registerLargeBoiler(REGISTRATE, + public static final MachineEntry.Multiblock LARGE_BOILER_TUNGSTENSTEEL = registerLargeBoiler(REGISTRATE, "tungstensteel", CASING_TUNGSTENSTEEL_ROBUST, CASING_TUNGSTENSTEEL_PIPE, FIREBOX_TUNGSTENSTEEL, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), @@ -93,7 +94,7 @@ public class GTMultiMachines { ConfigHolder.INSTANCE.machines.largeBoilers.tungstensteelBoilerMaxTemperature, ConfigHolder.INSTANCE.machines.largeBoilers.tungstensteelBoilerHeatSpeed); - public static final MultiblockMachineDefinition COKE_OVEN = REGISTRATE.multiblock("coke_oven", CokeOvenMachine::new) + public static final MachineEntry.Multiblock COKE_OVEN = REGISTRATE.multiblock("coke_oven", CokeOvenMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.COKE_OVEN_RECIPES) .appearanceBlock(CASING_COKE_BRICKS) @@ -102,7 +103,7 @@ public class GTMultiMachines { .slice("XXX", "X#X", "XXX") .slice("XXX", "XYX", "XXX") .where('X', - blocks(CASING_COKE_BRICKS.get()).or(blocks(COKE_OVEN_HATCH.get()).setMaxGlobalLimited(5))) + blocks(CASING_COKE_BRICKS.get()).or(machines(COKE_OVEN_HATCH).setMaxGlobalLimited(5))) .where('#', Predicates.air()) .where('Y', Predicates.controller(blocks(definition.getBlock()))) .build()) @@ -111,7 +112,7 @@ public class GTMultiMachines { .themeId((i) -> GTGuiTheme.PRIMITIVE.getId()) .register(); - public static final MultiblockMachineDefinition PRIMITIVE_BLAST_FURNACE = REGISTRATE + public static final MachineEntry.Multiblock PRIMITIVE_BLAST_FURNACE = REGISTRATE .multiblock("primitive_blast_furnace", PrimitiveBlastFurnaceMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PRIMITIVE_BLAST_FURNACE_RECIPES) @@ -135,7 +136,7 @@ public class GTMultiMachines { .themeId((i) -> GTGuiTheme.PRIMITIVE.getId()) .register(); - public static final MultiblockMachineDefinition ELECTRIC_BLAST_FURNACE = REGISTRATE + public static final MachineEntry.Multiblock ELECTRIC_BLAST_FURNACE = REGISTRATE .multiblock("electric_blast_furnace", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.BLAST_RECIPES) @@ -174,7 +175,7 @@ public class GTMultiMachines { }) .register(); - public static final MultiblockMachineDefinition LARGE_CHEMICAL_REACTOR = REGISTRATE + public static final MachineEntry.Multiblock LARGE_CHEMICAL_REACTOR = REGISTRATE .multiblock("large_chemical_reactor", WorkableElectricMultiblockMachine::new) .conditionalTooltip(defaultEnvironmentRequirement(), ConfigHolder.INSTANCE.gameplay.environmentalHazards) @@ -202,7 +203,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/large_chemical_reactor")) .register(); - public static final MultiblockMachineDefinition IMPLOSION_COMPRESSOR = REGISTRATE + public static final MachineEntry.Multiblock IMPLOSION_COMPRESSOR = REGISTRATE .multiblock("implosion_compressor", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.IMPLOSION_RECIPES) @@ -222,7 +223,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/implosion_compressor")) .register(); - public static final MultiblockMachineDefinition PYROLYSE_OVEN = REGISTRATE + public static final MachineEntry.Multiblock PYROLYSE_OVEN = REGISTRATE .multiblock("pyrolyse_oven", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.PYROLYSE_RECIPES) @@ -252,7 +253,7 @@ public class GTMultiMachines { }) .register(); - public static final MultiblockMachineDefinition MULTI_SMELTER = REGISTRATE + public static final MachineEntry.Multiblock MULTI_SMELTER = REGISTRATE .multiblock("multi_smelter", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeTypes(GTRecipeTypes.FURNACE_RECIPES, GTRecipeTypes.ALLOY_SMELTER_RECIPES) @@ -287,7 +288,7 @@ public class GTMultiMachines { }) .register(); - public static final MultiblockMachineDefinition CRACKER = REGISTRATE + public static final MachineEntry.Multiblock CRACKER = REGISTRATE .multiblock("cracker", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.CRACKING_RECIPES) @@ -315,7 +316,7 @@ public class GTMultiMachines { }) .register(); - public static final MultiblockMachineDefinition DISTILLATION_TOWER = REGISTRATE + public static final MachineEntry.Multiblock DISTILLATION_TOWER = REGISTRATE .multiblock("distillation_tower", DistillationTowerMachine::new) .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.DISTILLATION_RECIPES) @@ -354,7 +355,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/distillation_tower")) .register(); - public static final MultiblockMachineDefinition VACUUM_FREEZER = REGISTRATE + public static final MachineEntry.Multiblock VACUUM_FREEZER = REGISTRATE .multiblock("vacuum_freezer", WorkableElectricMultiblockMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.VACUUM_RECIPES) @@ -374,7 +375,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/vacuum_freezer")) .register(); - public static final MultiblockMachineDefinition ASSEMBLY_LINE = REGISTRATE + public static final MachineEntry.Multiblock ASSEMBLY_LINE = REGISTRATE .multiblock("assembly_line", AssemblyLineMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.ASSEMBLY_LINE_RECIPES) @@ -410,7 +411,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/assembly_line")) .register(); - public static final MultiblockMachineDefinition PRIMITIVE_PUMP = REGISTRATE + public static final MachineEntry.Multiblock PRIMITIVE_PUMP = REGISTRATE .multiblock("primitive_pump", PrimitivePumpMachine::new) .rotationState(RotationState.NON_Y_AXIS) .appearanceBlock(CASING_PUMP_DECK) @@ -424,7 +425,7 @@ public class GTMultiMachines { .where('F', Predicates.frames(GTMaterials.TreatedWood)) .where('H', Predicates.abilities(PartAbility.PUMP_FLUID_HATCH) - .or(blocks(FLUID_EXPORT_HATCH[ULV].get(), FLUID_EXPORT_HATCH[LV].get()))) + .or(machines(FLUID_EXPORT_HATCH[ULV], FLUID_EXPORT_HATCH[LV]))) .where('#', Predicates.any()) .build()) .allowExtendedFacing(false) @@ -444,7 +445,7 @@ public class GTMultiMachines { })) .register(); - public static final MultiblockMachineDefinition STEAM_GRINDER = REGISTRATE + public static final MachineEntry.Multiblock STEAM_GRINDER = REGISTRATE .multiblock("steam_grinder", SteamParallelMultiblockMachine::new) .rotationState(RotationState.ALL) .appearanceBlock(CASING_BRONZE_BRICKS) @@ -468,7 +469,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/steam_grinder")) .register(); - public static final MultiblockMachineDefinition STEAM_OVEN = REGISTRATE + public static final MachineEntry.Multiblock STEAM_OVEN = REGISTRATE .multiblock("steam_oven", SteamParallelMultiblockMachine::new) .rotationState(RotationState.ALL) .appearanceBlock(CASING_BRONZE_BRICKS) @@ -498,7 +499,7 @@ public class GTMultiMachines { BoilerFireboxType.BRONZE_FIREBOX, CASING_BRONZE_BRICKS)))) .register(); - public static final MultiblockMachineDefinition[] FUSION_REACTOR = registerTieredMultis(REGISTRATE, + public static final MachineEntry.Multiblock[] FUSION_REACTOR = registerTieredMultis(REGISTRATE, "fusion_reactor", FusionReactorMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) @@ -552,7 +553,7 @@ public class GTMultiMachines { .register(), LuV, ZPM, UV); - public static final MultiblockMachineDefinition[] FLUID_DRILLING_RIG = registerTieredMultis(REGISTRATE, + public static final MachineEntry.Multiblock[] FLUID_DRILLING_RIG = registerTieredMultis(REGISTRATE, "fluid_drilling_rig", FluidDrillMachine::new, (tier, builder) -> builder .rotationState(RotationState.ALL) .langValue("%s Fluid Drilling Rig %s".formatted(VLVH[tier], VLVT[tier])) @@ -585,7 +586,7 @@ public class GTMultiMachines { .register(), MV, HV, EV); - public static final MultiblockMachineDefinition[] LARGE_MINER = registerTieredMultis(REGISTRATE, "large_miner", + public static final MachineEntry.Multiblock[] LARGE_MINER = registerTieredMultis(REGISTRATE, "large_miner", (holder, tier) -> new LargeMinerMachine(holder, tier, 64 / tier, 2 * tier - 5, tier, 8 - (tier - 5)), (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) @@ -644,7 +645,7 @@ public class GTMultiMachines { .register(), EV, IV, LuV); - public static final MultiblockMachineDefinition CLEANROOM = REGISTRATE + public static final MachineEntry.Multiblock CLEANROOM = REGISTRATE .multiblock("cleanroom", CleanroomMachine::new) .rotationState(RotationState.NONE) .recipeType(DUMMY_RECIPES) @@ -679,20 +680,20 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/cleanroom")) .register(); - public static final MultiblockMachineDefinition LARGE_COMBUSTION_ENGINE = registerLargeCombustionEngine(REGISTRATE, + public static final MachineEntry.Multiblock LARGE_COMBUSTION_ENGINE = registerLargeCombustionEngine(REGISTRATE, "large_combustion_engine", EV, CASING_TITANIUM_STABLE, CASING_TITANIUM_GEARBOX, CASING_ENGINE_INTAKE, GTCEu.id("block/casings/solid/machine_casing_stable_titanium"), GTCEu.id("block/multiblock/generator/large_combustion_engine")); - public static final MultiblockMachineDefinition EXTREME_COMBUSTION_ENGINE = registerLargeCombustionEngine( + public static final MachineEntry.Multiblock EXTREME_COMBUSTION_ENGINE = registerLargeCombustionEngine( REGISTRATE, "extreme_combustion_engine", IV, CASING_TUNGSTENSTEEL_ROBUST, CASING_TUNGSTENSTEEL_GEARBOX, CASING_EXTREME_ENGINE_INTAKE, GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), GTCEu.id("block/multiblock/generator/extreme_combustion_engine")); - public static final MultiblockMachineDefinition LARGE_STEAM_TURBINE = registerLargeTurbine(REGISTRATE, + public static final MachineEntry.Multiblock LARGE_STEAM_TURBINE = registerLargeTurbine(REGISTRATE, "steam_large_turbine", HV, GTRecipeTypes.STEAM_TURBINE_FUELS, @@ -701,7 +702,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/generator/large_steam_turbine"), false); - public static final MultiblockMachineDefinition LARGE_GAS_TURBINE = registerLargeTurbine(REGISTRATE, + public static final MachineEntry.Multiblock LARGE_GAS_TURBINE = registerLargeTurbine(REGISTRATE, "gas_large_turbine", EV, GTRecipeTypes.GAS_TURBINE_FUELS, @@ -710,7 +711,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/generator/large_gas_turbine"), true); - public static final MultiblockMachineDefinition LARGE_PLASMA_TURBINE = registerLargeTurbine(REGISTRATE, + public static final MachineEntry.Multiblock LARGE_PLASMA_TURBINE = registerLargeTurbine(REGISTRATE, "plasma_large_turbine", IV, GTRecipeTypes.PLASMA_GENERATOR_FUELS, @@ -719,7 +720,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/generator/large_plasma_turbine"), false); - public static final MultiblockMachineDefinition ACTIVE_TRANSFORMER = REGISTRATE + public static final MachineEntry.Multiblock ACTIVE_TRANSFORMER = REGISTRATE .multiblock("active_transformer", ActiveTransformerMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.DUMMY_RECIPES) @@ -744,7 +745,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/data_bank")) .register(); - public static final MultiblockMachineDefinition POWER_SUBSTATION = REGISTRATE + public static final MachineEntry.Multiblock POWER_SUBSTATION = REGISTRATE .multiblock("power_substation", PowerSubstationMachine::new) .rotationState(RotationState.ALL) .recipeType(GTRecipeTypes.DUMMY_RECIPES) @@ -784,7 +785,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/power_substation")) .register(); - public static final MultiblockMachineDefinition CHARCOAL_PILE_IGNITER = REGISTRATE + public static final MachineEntry.Multiblock CHARCOAL_PILE_IGNITER = REGISTRATE .multiblock("charcoal_pile_igniter", CharcoalPileIgniterMachine::new) .rotationState(RotationState.NONE) .recipeType(DUMMY_RECIPES) @@ -800,7 +801,7 @@ public class GTMultiMachines { GTCEu.id("block/multiblock/charcoal_pile_igniter")) .register(); - public static MultiblockMachineDefinition[] BEDROCK_ORE_MINER = registerTieredMultis(REGISTRATE, + public static MachineEntry.Multiblock[] BEDROCK_ORE_MINER = registerTieredMultis(REGISTRATE, "bedrock_ore_miner", BedrockOreMinerMachine::new, (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) .langValue("%s Bedrock Ore Miner %s".formatted(VLVH[tier], VLVT[tier])) @@ -837,38 +838,38 @@ public class GTMultiMachines { MV, HV, EV); // Multiblock Tanks - public static final MachineDefinition WOODEN_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, + public static final MachineEntry.Singleblock WOODEN_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, "wooden_tank_valve", "Wooden Tank Valve", false, (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); - public static final MultiblockMachineDefinition WOODEN_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, + public static final MachineEntry.Multiblock WOODEN_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, "wooden_multiblock_tank", "Wooden Multiblock Tank", 250 * 1000, CASING_WOOD_WALL, WOODEN_TANK_VALVE, new PropertyFluidFilter(340, false, false, false, false), (builder, overlay) -> builder.sidedWorkableCasingModel(GTCEu.id("block/casings/wood_wall"), overlay)); - public static final MachineDefinition BRONZE_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, + public static final MachineEntry.Singleblock BRONZE_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, "bronze_tank_valve", "Bronze Tank Valve", true, (builder, overlay) -> builder .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), overlay)); - public static final MultiblockMachineDefinition BRONZE_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, + public static final MachineEntry.Multiblock BRONZE_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, "bronze_multiblock_tank", "Bronze Multiblock Tank", 500 * 1000, CASING_BRONZE_BRICKS, BRONZE_TANK_VALVE, new PropertyFluidFilter(1696, true, false, false, false), (builder, overlay) -> builder .workableCasingModel(GTCEu.id("block/casings/solid/machine_casing_bronze_plated_bricks"), overlay)); - public static final MachineDefinition STEEL_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, + public static final MachineEntry.Singleblock STEEL_TANK_VALVE = GTMachineUtils.registerTankValve(REGISTRATE, "steel_tank_valve", "Steel Tank Valve", true, (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); - public static final MultiblockMachineDefinition STEEL_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, + public static final MachineEntry.Multiblock STEEL_MULTIBLOCK_TANK = registerMultiblockTank(REGISTRATE, "steel_multiblock_tank", "Steel Multiblock Tank", 1000 * 1000, CASING_STEEL_SOLID, STEEL_TANK_VALVE, null, (builder, overlay) -> builder.workableCasingModel( GTCEu.id("block/casings/solid/machine_casing_solid_steel"), overlay)); - public static final MultiblockMachineDefinition CENTRAL_MONITOR = REGISTRATE + public static final MachineEntry.Multiblock CENTRAL_MONITOR = REGISTRATE .multiblock("central_monitor", CentralMonitorMachine::new) .rotationState(RotationState.ALL) .recipeType(DUMMY_RECIPES) diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java index 2171bd579dd..0272ec79769 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTResearchMachines.java @@ -3,15 +3,15 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.RotationState; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.MachineInstanceFactory; import com.gregtechceu.gtceu.api.machine.MetaMachine; -import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; import com.gregtechceu.gtceu.api.machine.trait.recipe.RecipeLogic; import com.gregtechceu.gtceu.api.multiblock.pattern.MultiblockPatternBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; +import com.gregtechceu.gtceu.api.registry.registrate.builder.SingleblockMachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.client.util.TooltipHelper; import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.common.data.GTRecipeTypes; @@ -50,7 +50,7 @@ @ParametersAreNonnullByDefault public class GTResearchMachines { - public static final MultiblockMachineDefinition RESEARCH_STATION = REGISTRATE + public static final MachineEntry.Multiblock RESEARCH_STATION = REGISTRATE .multiblock("research_station", ResearchStationMachine::new) .rotationState(RotationState.NON_Y_AXIS) .recipeType(GTRecipeTypes.RESEARCH_STATION_RECIPES) @@ -80,7 +80,7 @@ public class GTResearchMachines { GTCEu.id("block/multiblock/research_station")) .register(); - public static final MachineDefinition OBJECT_HOLDER = REGISTRATE.machine("object_holder", ObjectHolderMachine::new) + public static final MachineEntry.Singleblock OBJECT_HOLDER = REGISTRATE.machine("object_holder", ObjectHolderMachine::new) .langValue("Object Holder") .tier(ZPM) .rotationState(RotationState.ALL) @@ -91,7 +91,7 @@ public class GTResearchMachines { .andThen((ctx, prov, model) -> model.addReplaceableTextures("bottom", "top", "side"))) .register(); - public static final MultiblockMachineDefinition DATA_BANK = REGISTRATE.multiblock("data_bank", DataBankMachine::new) + public static final MachineEntry.Multiblock DATA_BANK = REGISTRATE.multiblock("data_bank", DataBankMachine::new) .langValue("Data Bank") .rotationState(RotationState.NON_Y_AXIS) .appearanceBlock(COMPUTER_CASING) @@ -122,7 +122,7 @@ public class GTResearchMachines { GTCEu.id("block/multiblock/data_bank")) .register(); - public static final MultiblockMachineDefinition NETWORK_SWITCH = REGISTRATE + public static final MachineEntry.Multiblock NETWORK_SWITCH = REGISTRATE .multiblock("network_switch", NetworkSwitchMachine::new) .langValue("Network Switch") .rotationState(RotationState.NON_Y_AXIS) @@ -149,7 +149,7 @@ public class GTResearchMachines { GTCEu.id("block/multiblock/network_switch")) .register(); - public static final MultiblockMachineDefinition HIGH_PERFORMANCE_COMPUTING_ARRAY = REGISTRATE + public static final MachineEntry.Multiblock HIGH_PERFORMANCE_COMPUTING_ARRAY = REGISTRATE .multiblock("high_performance_computation_array", HPCAMachine::new) .langValue("High Performance Computation Array (HPCA)") .rotationState(RotationState.NON_Y_AXIS) @@ -182,35 +182,35 @@ public class GTResearchMachines { // ******** MULTIBLOCK PARTS ********// //////////////////////////////////////////// - public static final MachineDefinition COMPUTATION_HATCH_TRANSMITTER = registerDataHatch( + public static final MachineEntry.Singleblock COMPUTATION_HATCH_TRANSMITTER = registerDataHatch( "computation_transmitter_hatch", "Computation Data Transmission Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, true), "computation_data_hatch", PartAbility.COMPUTATION_DATA_TRANSMISSION) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition COMPUTATION_HATCH_RECEIVER = registerDataHatch( + public static final MachineEntry.Singleblock COMPUTATION_HATCH_RECEIVER = registerDataHatch( "computation_receiver_hatch", "Computation Data Reception Hatch", ZPM, (holder) -> new OpticalComputationHatchMachine(holder, false), "computation_data_hatch", PartAbility.COMPUTATION_DATA_RECEPTION) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition DATA_HATCH_TRANSMITTER = registerDataHatch( + public static final MachineEntry.Singleblock DATA_HATCH_TRANSMITTER = registerDataHatch( "data_transmitter_hatch", "Optical Data Transmission Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, true), "optical_data_hatch", PartAbility.OPTICAL_DATA_TRANSMISSION) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition DATA_HATCH_RECEIVER = registerDataHatch( + public static final MachineEntry.Singleblock DATA_HATCH_RECEIVER = registerDataHatch( "data_receiver_hatch", "Optical Data Reception Hatch", LuV, (holder) -> new OpticalDataHatchMachine(holder, false), "optical_data_hatch", PartAbility.OPTICAL_DATA_RECEPTION) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition BASIC_DATA_ACCESS_HATCH = REGISTRATE + public static final MachineEntry.Singleblock BASIC_DATA_ACCESS_HATCH = REGISTRATE .machine("basic_data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, HV, false)) .langValue("Basic Data Access Hatch") .tier(HV) @@ -222,7 +222,7 @@ public class GTResearchMachines { .overlayTieredHullModel("data_access_hatch") .register(); - public static final MachineDefinition DATA_ACCESS_HATCH = REGISTRATE + public static final MachineEntry.Singleblock DATA_ACCESS_HATCH = REGISTRATE .machine("data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, EV, false)) .langValue("Data Access Hatch") .tier(EV) @@ -234,7 +234,7 @@ public class GTResearchMachines { .overlayTieredHullModel("data_access_hatch") .register(); - public static final MachineDefinition ADVANCED_DATA_ACCESS_HATCH = REGISTRATE + public static final MachineEntry.Singleblock ADVANCED_DATA_ACCESS_HATCH = REGISTRATE .machine("advanced_data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, LuV, false)) .langValue("Advanced Data Access Hatch") .tier(LuV) @@ -246,7 +246,7 @@ public class GTResearchMachines { .overlayTieredHullModel("data_access_hatch") .register(); - public static final MachineDefinition CREATIVE_DATA_ACCESS_HATCH = REGISTRATE + public static final MachineEntry.Singleblock CREATIVE_DATA_ACCESS_HATCH = REGISTRATE .machine("creative_data_access_hatch", (holder) -> new DataAccessHatchMachine(holder, MAX, true)) .langValue("Creative Data Access Hatch") .tier(MAX) @@ -269,13 +269,13 @@ public class GTResearchMachines { .add(Component.translatable("gtceu.machine.hpca.component_type.damaged") .withStyle(style -> style.withColor(TooltipHelper.BLINKING_ORANGE.getCurrent()))); - public static final MachineDefinition HPCA_EMPTY_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_EMPTY_COMPONENT = registerHPCAPart( "hpca_empty_component", "Empty HPCA Component", GTMachineInstanceFactories.HPCA_EMPTY, "empty", false) .tooltips(Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition HPCA_COMPUTATION_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_computation_component", "HPCA Computation Component", GTMachineInstanceFactories.HPCA_COMPUTATION, "computation", false) .tooltips( @@ -286,7 +286,7 @@ public class GTResearchMachines { Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); - public static final MachineDefinition HPCA_ADVANCED_COMPUTATION_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_ADVANCED_COMPUTATION_COMPONENT = registerHPCAPart( "hpca_advanced_computation_component", "HPCA Advanced Computation Component", GTMachineInstanceFactories.HPCA_COMPUTATION_ADVANCED, "advanced_computation", true) .tooltips( @@ -297,14 +297,14 @@ public class GTResearchMachines { Component.translatable("gtceu.part_sharing.disabled")) .tooltipBuilder(OVERHEAT_TOOLTIPS) .register(); - public static final MachineDefinition HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_HEAT_SINK_COMPONENT = registerHPCAPart( "hpca_heat_sink_component", "HPCA Heat Sink Component", GTMachineInstanceFactories.HPCA_HEAT_SINK, "heat_sink", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.cooler_passive"), Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 1), Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition HPCA_ACTIVE_COOLER_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_ACTIVE_COOLER_COMPONENT = registerHPCAPart( "hpca_active_cooler_component", "HPCA Active Cooling Component", GTMachineInstanceFactories.HPCA_COOLER_ADVANCED, "active_cooler", true) .tooltips(Component.translatable("gtceu.machine.hpca.component_general.max_eut", GTValues.VA[GTValues.IV]), @@ -314,7 +314,7 @@ public class GTResearchMachines { Component.translatable("gtceu.machine.hpca.component_type.cooler_cooling", 2), Component.translatable("gtceu.part_sharing.disabled")) .register(); - public static final MachineDefinition HPCA_BRIDGE_COMPONENT = registerHPCAPart( + public static final MachineEntry.Singleblock HPCA_BRIDGE_COMPONENT = registerHPCAPart( "hpca_bridge_component", "HPCA Bridge Component", GTMachineInstanceFactories.HPCA_BRIDGE, "bridge", false) .tooltips(Component.translatable("gtceu.machine.hpca.component_type.bridge"), @@ -322,13 +322,12 @@ public class GTResearchMachines { Component.translatable("gtceu.part_sharing.disabled")) .register(); - private static < - MACHINE extends MetaMachine> MachineBuilder registerDataHatch(String name, - String displayName, - int tier, - MachineInstanceFactory constructor, - String model, - PartAbility... abilities) { + // spotless:off + private static SingleblockMachineBuilder registerDataHatch(String name, String displayName, + int tier, + MachineInstanceFactory constructor, + String model, + PartAbility... abilities) { return REGISTRATE.machine(name, constructor) .langValue(displayName) .tier(tier) @@ -337,12 +336,9 @@ public class GTResearchMachines { .overlayTieredHullModel(model); } - private static < - MACHINE extends MetaMachine> MachineBuilder registerHPCAPart(String name, - String displayName, - MachineInstanceFactory constructor, - String texture, - boolean isAdvanced) { + private static SingleblockMachineBuilder registerHPCAPart(String name, String displayName, + MachineInstanceFactory constructor, + String texture, boolean isAdvanced) { return REGISTRATE.machine(name, constructor) .langValue(displayName) .rotationState(RotationState.ALL) @@ -354,6 +350,7 @@ public class GTResearchMachines { GTCEu.id("block/overlay/machine/hpca/" + texture), GTCEu.id("block/overlay/machine/hpca/damaged" + (isAdvanced ? "_advanced" : "")))); } + // spotless:on public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/mui/GTMuiWidgets.java b/src/main/java/com/gregtechceu/gtceu/common/mui/GTMuiWidgets.java index d3e685df2b0..c5aeb9adc91 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/mui/GTMuiWidgets.java +++ b/src/main/java/com/gregtechceu/gtceu/common/mui/GTMuiWidgets.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; import com.gregtechceu.gtceu.api.machine.feature.IVoidable; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDistinctPart; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.cover.data.BucketMode; import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour; import com.gregtechceu.gtceu.common.machine.trait.AutoOutputTrait; @@ -69,10 +70,18 @@ public static Flow createTitleBar(MachineDefinition definition, int panelWidth) return createTitleBar(definition, panelWidth, background); } + public static Flow createTitleBar(Supplier definition, int panelWidth) { + return createTitleBar(definition.get(), panelWidth); + } + public static Flow createTitleBar(MachineDefinition definition, int panelWidth, UITexture background) { return createTitleBar(definition::asStack, panelWidth, background); } + public static Flow createTitleBar(MachineEntry definition, int panelWidth, UITexture background) { + return createTitleBar(definition.get(), panelWidth, background); + } + public static Flow createTitleBar(Supplier stackSupplier, int panelWidth, UITexture background) { ItemStack stack = stackSupplier.get(); var name = stack.getHoverName().getString(); From 09b5e038d576245646df3449b90919f95b3cba30 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:29:21 +0300 Subject: [PATCH 28/33] Add a plain (+noconfig) builder/entry type that only has the registry type for types that don't allow subclasses --- .../api/registry/registrate/GTRegistrate.java | 24 +++++++++++++--- .../registrate/builder/PlainBuilder.java | 28 +++++++++++++++++++ .../builder/PlainNoConfigBuilder.java | 24 ++++++++++++++++ .../registry/registrate/entry/PlainEntry.java | 13 +++++++++ 4 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainBuilder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainNoConfigBuilder.java create mode 100644 src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/PlainEntry.java 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 2ae9782b7b5..b385d62fc07 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 @@ -22,10 +22,8 @@ import com.gregtechceu.gtceu.api.recipe.GTRecipeType; import com.gregtechceu.gtceu.api.recipe.category.GTRecipeCategory; import com.gregtechceu.gtceu.api.registry.GTRegistries; -import com.gregtechceu.gtceu.api.registry.registrate.builder.GTBlockBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.builder.SingleblockMachineBuilder; -import com.gregtechceu.gtceu.api.registry.registrate.builder.SoundEntryBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.*; +import com.gregtechceu.gtceu.api.registry.registrate.entry.PlainEntry; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; import net.minecraft.MethodsReturnNonnullByDefault; @@ -378,6 +376,24 @@ public GTBlockBuilder block(P parent, String name, callback -> GTBlockBuilder.create(this, parent, name, callback, factory)); } + // Plain + public PlainEntry plain(ResourceKey> registryType, NonNullSupplier factory) { + return plain(currentName(), registryType, factory); + } + + public PlainEntry plain(String name, ResourceKey> registryType, NonNullSupplier factory) { + return plain(this, name, registryType, factory); + } + + public PlainEntry plain(P parent, ResourceKey> registryType, NonNullSupplier factory) { + return plain(parent, currentName(), registryType, factory); + } + + public PlainEntry plain(P parent, String name, ResourceKey> registryType, NonNullSupplier factory) { + return entry(name, callback -> new PlainNoConfigBuilder<>(this, parent, name, callback, registryType, factory)) + .register(); + } + private @Nullable RegistryEntry currentTab; private static final Map, @Nullable RegistryEntry> TAB_LOOKUP = new IdentityHashMap<>(); diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainBuilder.java new file mode 100644 index 00000000000..e30320608ad --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainBuilder.java @@ -0,0 +1,28 @@ +package com.gregtechceu.gtceu.api.registry.registrate.builder; + +import com.gregtechceu.gtceu.api.registry.registrate.entry.PlainEntry; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.neoforged.neoforge.registries.DeferredHolder; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.AbstractBuilder; +import com.tterrag.registrate.builders.BuilderCallback; + +public abstract class PlainBuilder> extends AbstractBuilder { + + public PlainBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, ResourceKey> registryKey) { + super(owner, parent, name, callback, registryKey); + } + + @Override + protected PlainEntry createEntryWrapper(DeferredHolder delegate) { + return new PlainEntry<>(getOwner(), delegate); + } + + @Override + public PlainEntry register() { + return (PlainEntry) super.register(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainNoConfigBuilder.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainNoConfigBuilder.java new file mode 100644 index 00000000000..5da24a06c59 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/builder/PlainNoConfigBuilder.java @@ -0,0 +1,24 @@ +package com.gregtechceu.gtceu.api.registry.registrate.builder; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.BuilderCallback; +import com.tterrag.registrate.util.nullness.NonNullSupplier; + +public class PlainNoConfigBuilder extends PlainBuilder> { + + private final NonNullSupplier factory; + + public PlainNoConfigBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, + ResourceKey> registryType, NonNullSupplier factory) { + super(owner, parent, name, callback, registryType); + this.factory = factory; + } + + @Override + protected R createEntry() { + return this.factory.get(); + } +} diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/PlainEntry.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/PlainEntry.java new file mode 100644 index 00000000000..8a86685ced5 --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/PlainEntry.java @@ -0,0 +1,13 @@ +package com.gregtechceu.gtceu.api.registry.registrate.entry; + +import net.neoforged.neoforge.registries.DeferredHolder; + +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.util.entry.RegistryEntry; + +public class PlainEntry extends RegistryEntry { + + public PlainEntry(AbstractRegistrate owner, DeferredHolder key) { + super(owner, key); + } +} From bbb5928d9a6e6f7968f08ae16a4dd63208a51a44 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:41:00 +0300 Subject: [PATCH 29/33] Make world gen layer registration deferred --- .../api/data/worldgen/GTOreDefinition.java | 4 ++++ .../api/data/worldgen/WorldGenLayers.java | 23 +++++++++---------- .../api/registry/registrate/GTRegistrate.java | 9 ++++---- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java index a4518ec74b8..1f4e9bc321f 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/GTOreDefinition.java @@ -175,6 +175,10 @@ public GTOreDefinition layer(IWorldGenLayer layer) { return this; } + public GTOreDefinition layer(Supplier layer) { + return layer(layer.get()); + } + public GTOreDefinition dimensions(Set> dimensions) { this.dimensionFilter = dimensions; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java index 13da4e3b7d3..bb7db463479 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/worldgen/WorldGenLayers.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.api.data.worldgen; +import com.gregtechceu.gtceu.api.registry.registrate.entry.PlainEntry; import com.gregtechceu.gtceu.common.registry.GTRegistration; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.Level; @@ -10,23 +11,21 @@ public class WorldGenLayers { - - public static void init(IEventBus modBus) { - } - - public static final SimpleWorldGenLayer STONE = GTRegistration.REGISTRATE.simpleWorldGenLayer( - "stone", () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), + public static final PlainEntry STONE = GTRegistration.REGISTRATE.worldGenLayer("stone", + () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), Set.of(Level.OVERWORLD)); - public static final SimpleWorldGenLayer DEEPSLATE = GTRegistration.REGISTRATE.simpleWorldGenLayer( - "deepslate", () -> new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES), + public static final PlainEntry DEEPSLATE = GTRegistration.REGISTRATE.worldGenLayer("deepslate", + () -> new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES), Set.of(Level.OVERWORLD)); - public static final SimpleWorldGenLayer NETHERRACK = GTRegistration.REGISTRATE.simpleWorldGenLayer( - "netherrack", () -> new TagMatchTest(BlockTags.NETHER_CARVER_REPLACEABLES), + public static final PlainEntry NETHERRACK = GTRegistration.REGISTRATE.worldGenLayer("netherrack", + () -> new TagMatchTest(BlockTags.NETHER_CARVER_REPLACEABLES), Set.of(Level.NETHER)); - public static final SimpleWorldGenLayer ENDSTONE = GTRegistration.REGISTRATE.simpleWorldGenLayer( - "endstone", () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, + public static final PlainEntry ENDSTONE = GTRegistration.REGISTRATE.worldGenLayer("endstone", + () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, Set.of(Level.END)); + + public static void init(IEventBus modBus) {} } 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 b385d62fc07..e0fc46aecce 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 @@ -344,11 +344,10 @@ public SoundEntryBuilder sound(String name) { // World gen layers - public SimpleWorldGenLayer simpleWorldGenLayer(String id, IWorldGenLayer.RuleTestSupplier target, - Set> levels) { - var worldGenLayer = new SimpleWorldGenLayer(makeResourceLocation(id), target, levels); - this.generic(id, GTRegistries.Keys.WORLD_GEN_LAYER, () -> worldGenLayer).build(); - return worldGenLayer; + public PlainEntry worldGenLayer(String id, IWorldGenLayer.RuleTestSupplier target, + Set> levels) { + return this.plain(id, GTRegistries.Keys.WORLD_GEN_LAYER, + () -> new SimpleWorldGenLayer(makeResourceLocation(id), target, levels)); } // Blocks From b4052fe1ae81ed9cfcd8641db6b67932d775a9fc Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:41:00 +0300 Subject: [PATCH 30/33] Make world gen layer registration deferred --- .../kjs/builders/worldgen/OreVeinDefinitionBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilder.java index 52ef7a87e9d..fac82e3b787 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilder.java @@ -41,7 +41,7 @@ public class OreVeinDefinitionBuilder extends BuilderBase { private float density; @Setter private int weight; - private IWorldGenLayer layer = WorldGenLayers.STONE; + private IWorldGenLayer layer = WorldGenLayers.STONE.get(); @Setter private Set> dimensionFilter = Set.of(); @Setter From e605565da9ca9f0ed0ea39200f6a2bd078354f78 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:56:01 +0300 Subject: [PATCH 31/33] fix compilation errors --- .../registrate/entry/MachineEntry.java | 4 +++ .../gregtechceu/gtceu/common/CommonProxy.java | 8 ++++-- .../common/data/machines/GTMultiMachines.java | 2 +- .../multiblock/part/DualHatchPartMachine.java | 5 ++-- .../part/FluidHatchPartMachine.java | 5 ++-- .../multiblock/part/ItemBusPartMachine.java | 4 +-- .../part/SteamItemBusPartMachine.java | 4 +-- .../data/recipe/misc/MachineRecipeLoader.java | 10 +++---- .../recipe/misc/MetaTileEntityLoader.java | 8 +++--- .../MetaTileEntityMachineRecipeLoader.java | 26 ++++++++++--------- .../machine/MEPatternBufferPartMachine.java | 2 +- .../helpers/KubeGTRegistryEventHandler.java | 2 +- 12 files changed, 44 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java index d785967c778..a9aa3cc00e6 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/entry/MachineEntry.java @@ -24,6 +24,10 @@ public boolean isTiered() { return get().isTiered(); } + public int getTier() { + return get().getTier(); + } + public MetaMachineBlock getBlock() { return get().getBlock(); } diff --git a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index 46de6243f5b..6f95972cf65 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java +++ b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java @@ -40,6 +40,7 @@ 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.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.block.*; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.common.data.GTBlocks; @@ -377,9 +378,12 @@ public static void loadComplete(FMLLoadCompleteEvent event) {} public static void registerCapabilities(RegisterCapabilitiesEvent event) { event.registerItem(FluidHandler.ITEM, BottleItemFluidHandler::new, Items.GLASS_BOTTLE); - Stream quantumTanks = Stream.of(GTMachines.SUPER_TANK, GTMachines.QUANTUM_TANK) + Stream quantumTanks = Stream.of(GTMachines.SUPER_TANK, GTMachines.QUANTUM_TANK) .flatMap(Arrays::stream); quantumTanks = Stream.concat(quantumTanks, Stream.of(GTMachines.CREATIVE_FLUID)); + Item[] items = quantumTanks.filter(Objects::nonNull) + .map(MachineEntry.Singleblock::asItem) + .toArray(Item[]::new); event.registerItem(FluidHandler.ITEM, (stack, ctx) -> { if (!(stack.getItem() instanceof MetaMachineItem machineItem)) { return null; @@ -389,7 +393,7 @@ public static void registerCapabilities(RegisterCapabilitiesEvent event) { return null; } return new QuantumFluidHandlerItemStack(stack, capacity); - }, quantumTanks.filter(Objects::nonNull).map(MachineDefinition::getItem).toArray(Item[]::new)); + }, items); for (Block block : BuiltInRegistries.BLOCK) { if (ConfigHolder.INSTANCE.compat.energy.nativeEUToFE && diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java index c7f1c90409c..ba44583e721 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/machines/GTMultiMachines.java @@ -325,7 +325,7 @@ public class GTMultiMachines { .pattern(definition -> { PatternPredicate exportPredicate = abilities(PartAbility.EXPORT_FLUIDS_1X); if (GTCEu.Mods.isAE2Loaded()) { - exportPredicate = exportPredicate.or(blocks(GTAEMachines.FLUID_EXPORT_HATCH_ME.get())); + exportPredicate = exportPredicate.or(machines(GTAEMachines.FLUID_EXPORT_HATCH_ME)); } exportPredicate.setMaxLayerLimited(1); PatternPredicate maint = autoAbilities(true, false, false) diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java index dc6fc000ccf..738ba2021c4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/DualHatchPartMachine.java @@ -2,9 +2,9 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.trait.notifiable.NotifiableFluidTank; import com.gregtechceu.gtceu.api.machine.trait.notifiable.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.common.mui.GTMuiMachineUtil; @@ -133,8 +133,7 @@ protected void autoIO() { @Override public boolean swapIO() { BlockPos blockPos = getBlockPos(); - MachineDefinition newDefinition = null; - + MachineEntry.Singleblock newDefinition = null; if (io == IO.IN) { newDefinition = GTMachines.DUAL_EXPORT_HATCH[this.getTier()]; } else if (io == IO.OUT) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java index 322c3238c0e..d5cdcef69e7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/FluidHatchPartMachine.java @@ -3,12 +3,12 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.blockentity.IPaintable; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; import com.gregtechceu.gtceu.api.machine.mui.MachineUIPanel; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.notifiable.NotifiableFluidTank; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.common.data.GTMachines; @@ -202,8 +202,7 @@ protected InteractionResult onScrewdriverClick(ExtendedUseOnContext context) { public boolean swapIO() { BlockPos blockPos = getBlockPos(); - MachineDefinition newDefinition = null; - + MachineEntry.Singleblock newDefinition = null; if (io == IO.IN) { if (this.slots == 1) newDefinition = GTMachines.FLUID_EXPORT_HATCH[this.getTier()]; else if (this.slots == 4) newDefinition = GTMachines.FLUID_EXPORT_HATCH_4X[this.getTier()]; diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java index 9996e5a405c..b425ecb4834 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ItemBusPartMachine.java @@ -6,12 +6,12 @@ import com.gregtechceu.gtceu.api.cover.filter.FilterHandler; import com.gregtechceu.gtceu.api.cover.filter.FilterHandlers; import com.gregtechceu.gtceu.api.cover.filter.ItemFilter; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDistinctPart; import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredIOPartMachine; import com.gregtechceu.gtceu.api.machine.trait.notifiable.NotifiableItemStackHandler; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.common.data.GTMachines; @@ -214,7 +214,7 @@ protected InteractionResult onScrewdriverClick(ExtendedUseOnContext context) { public boolean swapIO() { BlockPos blockPos = getBlockPos(); - MachineDefinition newDefinition = null; + MachineEntry.Singleblock newDefinition = null; if (io == IO.IN) { newDefinition = GTMachines.ITEM_EXPORT_BUS[this.getTier()]; } else if (io == IO.OUT) { diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java index c0075572bc8..f2d8866ce24 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/SteamItemBusPartMachine.java @@ -2,7 +2,7 @@ import com.gregtechceu.gtceu.api.blockentity.BlockEntityCreationInfo; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.data.GTMachines; import net.minecraft.core.BlockPos; @@ -18,7 +18,7 @@ public SteamItemBusPartMachine(BlockEntityCreationInfo info, IO io) { @Override public boolean swapIO() { BlockPos blockPos = getBlockPos(); - MachineDefinition newDefinition = null; + MachineEntry.Singleblock newDefinition = null; if (io == IO.IN) { newDefinition = GTMachines.STEAM_EXPORT_BUS; } else if (io == IO.OUT) { diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index 162b6ea0783..9fdf435e5b5 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -9,8 +9,8 @@ import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.block.LampBlock; import com.gregtechceu.gtceu.common.block.StoneBlockType; import com.gregtechceu.gtceu.common.data.GTBlocks; @@ -1474,28 +1474,28 @@ private static void registerMossRecipe(RecipeOutput provider, List re } private static void registerNBTRemoval(RecipeOutput provider) { - for (MachineDefinition chest : GTMachines.SUPER_CHEST) { + for (MachineEntry.Singleblock chest : GTMachines.SUPER_CHEST) { if (chest != null) { VanillaRecipeHelper.addShapelessNBTClearingRecipe(provider, "super_chest_nbt_" + chest.getTier(), chest.asStack(), chest.asStack()); } } - for (MachineDefinition tank : GTMachines.SUPER_TANK) { + for (MachineEntry.Singleblock tank : GTMachines.SUPER_TANK) { if (tank != null) { VanillaRecipeHelper.addShapelessNBTClearingRecipe(provider, "super_tank_nbt_" + tank.getTier(), tank.asStack(), tank.asStack()); } } - for (MachineDefinition chest : GTMachines.QUANTUM_CHEST) { + for (MachineEntry.Singleblock chest : GTMachines.QUANTUM_CHEST) { if (chest != null) { VanillaRecipeHelper.addShapelessNBTClearingRecipe(provider, "quantum_chest_nbt_" + chest.getTier(), chest.asStack(), chest.asStack()); } } - for (MachineDefinition tank : GTMachines.QUANTUM_TANK) { + for (MachineEntry.Singleblock tank : GTMachines.QUANTUM_TANK) { if (tank != null) { VanillaRecipeHelper.addShapelessNBTClearingRecipe(provider, "quantum_tank_nbt_" + tank.getTier(), tank.asStack(), tank.asStack()); diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index 2d9fbad6c25..2db64428990 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -5,7 +5,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTItems; import com.gregtechceu.gtceu.common.data.GTMachines; @@ -1220,8 +1220,8 @@ public static void init(RecipeOutput provider) { // - MaterialEntry // - TagKey public static void registerMachineRecipe(RecipeOutput provider, boolean setMaterialInfoData, - MachineDefinition[] machines, Object... recipe) { - for (MachineDefinition machine : machines) { + MachineEntry[] machines, Object... recipe) { + for (MachineEntry machine : machines) { // Needed to skip certain tiers if not enabled. // Leaves UHV+ machine recipes to be implemented by addons. @@ -1233,7 +1233,7 @@ public static void registerMachineRecipe(RecipeOutput provider, boolean setMater } } - public static void registerMachineRecipe(RecipeOutput provider, MachineDefinition[] machines, + public static void registerMachineRecipe(RecipeOutput provider, MachineEntry[] machines, Object... recipe) { registerMachineRecipe(provider, true, machines, recipe); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java index 3b307662ba7..f1d2ecbfcf0 100644 --- a/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java +++ b/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialEntry; -import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.registry.registrate.entry.MachineEntry; import com.gregtechceu.gtceu.common.data.machines.GTAEMachines; import com.gregtechceu.gtceu.common.data.machines.GTMultiMachines; import com.gregtechceu.gtceu.data.recipe.CustomTags; @@ -379,7 +379,7 @@ public static void init(RecipeOutput provider) { // Power Transformers for (int tier = 0; tier < POWER_TRANSFORMER.length; tier++) { - var hatch = POWER_TRANSFORMER[tier]; + MachineEntry.Singleblock hatch = POWER_TRANSFORMER[tier]; if (hatch == null) continue; ASSEMBLER_RECIPES.recipeBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_power_transformer") @@ -397,7 +397,7 @@ public static void init(RecipeOutput provider) { // 4A Energy Hatches for (int tier = 0; tier < ENERGY_INPUT_HATCH_4A.length; tier++) { - var hatch = ENERGY_INPUT_HATCH_4A[tier]; + MachineEntry.Singleblock hatch = ENERGY_INPUT_HATCH_4A[tier]; if (hatch == null) continue; ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_" + GTValues.VN[tier].toLowerCase(Locale.ROOT)) @@ -411,15 +411,16 @@ public static void init(RecipeOutput provider) { // 16A Energy Hatches for (int tier = 0; tier < ENERGY_INPUT_HATCH_16A.length; tier++) { - var hatch = ENERGY_INPUT_HATCH_16A[tier]; + MachineEntry.Singleblock hatch = ENERGY_INPUT_HATCH_16A[tier]; if (hatch == null) continue; - MachineDefinition transformer; + MachineEntry.Singleblock transformer; if (tier == (GTCEuAPI.isHighTier() ? MAX : UHV)) { transformer = HI_AMP_TRANSFORMER_4A[tier - 1]; } else { transformer = TRANSFORMER[tier]; } + if (transformer == null) continue; ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_" + GTValues.VN[tier].toLowerCase(Locale.ROOT)) .inputItems(transformer) @@ -433,10 +434,10 @@ public static void init(RecipeOutput provider) { // 64A Substation Energy Hatches for (int tier = 0; tier < SUBSTATION_ENERGY_INPUT_HATCH.length; tier++) { - var hatch = SUBSTATION_ENERGY_INPUT_HATCH[tier]; + MachineEntry.Singleblock hatch = SUBSTATION_ENERGY_INPUT_HATCH[tier]; if (hatch == null) continue; - MachineDefinition transformer; + MachineEntry.Singleblock transformer; if (tier == (GTCEuAPI.isHighTier() ? MAX : UHV)) { transformer = POWER_TRANSFORMER[tier - 1]; } else { @@ -455,7 +456,7 @@ public static void init(RecipeOutput provider) { // 4A Dynamo Hatches for (int tier = 0; tier < ENERGY_OUTPUT_HATCH_4A.length; tier++) { - var hatch = ENERGY_OUTPUT_HATCH_4A[tier]; + MachineEntry.Singleblock hatch = ENERGY_OUTPUT_HATCH_4A[tier]; if (hatch == null) continue; ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_" + GTValues.VN[tier].toLowerCase(Locale.ROOT)) @@ -469,15 +470,16 @@ public static void init(RecipeOutput provider) { // 16A Dynamo Hatches for (int tier = 0; tier < ENERGY_OUTPUT_HATCH_16A.length; tier++) { - var hatch = ENERGY_OUTPUT_HATCH_16A[tier]; + MachineEntry.Singleblock hatch = ENERGY_OUTPUT_HATCH_16A[tier]; if (hatch == null) continue; - MachineDefinition transformer; + MachineEntry.Singleblock transformer; if (tier == (GTCEuAPI.isHighTier() ? MAX : UHV)) { transformer = HI_AMP_TRANSFORMER_4A[tier - 1]; } else { transformer = TRANSFORMER[tier]; } + if (transformer == null) continue; ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_16a_" + GTValues.VN[tier].toLowerCase(Locale.ROOT)) .inputItems(transformer) @@ -491,10 +493,10 @@ public static void init(RecipeOutput provider) { // 64A Substation Dynamo Hatches for (int tier = 0; tier < SUBSTATION_ENERGY_OUTPUT_HATCH.length; tier++) { - var hatch = SUBSTATION_ENERGY_OUTPUT_HATCH[tier]; + MachineEntry.Singleblock hatch = SUBSTATION_ENERGY_OUTPUT_HATCH[tier]; if (hatch == null) continue; - MachineDefinition transformer; + MachineEntry.Singleblock transformer; if (tier == (GTCEuAPI.isHighTier() ? MAX : UHV)) { transformer = POWER_TRANSFORMER[tier - 1]; } else { diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java index c4465b1c4e9..e2626b7d58d 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEPatternBufferPartMachine.java @@ -506,7 +506,7 @@ public PatternContainerGroup getTerminalGroup() { } else { return new PatternContainerGroup( AEItemKey.of(GTAEMachines.ME_PATTERN_BUFFER.getItem()), - GTAEMachines.ME_PATTERN_BUFFER.get().getDefinition().getItem().getDescription(), + GTAEMachines.ME_PATTERN_BUFFER.asItem().getDescription(), Collections.emptyList()); } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java index e0eff079a0d..5f18d25e366 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/helpers/KubeGTRegistryEventHandler.java @@ -31,7 +31,7 @@ public class KubeGTRegistryEventHandler { @SubscribeEvent(priority = EventPriority.LOW) public static void registerAll(RegisterEvent event) { // only post the GT registry event for GT registries (and the recipe type registry) - if (!GTRegistries.getRegistrationOrder().contains(event.getRegistryKey().location())) { + if (!GTRegistries.getRegistryOrder().contains(event.getRegistryKey().location())) { return; } From 38fa0a1ed96f8d16e013b42d2b5e579c10208d4b Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Sat, 18 Jul 2026 15:56:13 +0300 Subject: [PATCH 32/33] Remove unnecessary registry type wrappers --- .../integration/kjs/GregTechKubeJSPlugin.java | 34 ------------------- 1 file changed, 34 deletions(-) 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 f4d6799cdbf..21cef016167 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -310,52 +310,18 @@ public void registerBindings(BindingRegistry event) { event.add("CapeRegistry", CapeRegistry.class); } - private void registryObjectTypeWrapper(TypeWrapperRegistry typeWrappers, Class clazz, ResourceKey> registry) { - typeWrappers.register(clazz, (RegistryAccessContainer registries, Object o) -> { - o = Wrapper.unwrapped(o); - if (clazz.isInstance(o)) return clazz.cast(o); - GTResourceLocation wrapper = GTResourceLocation.wrap(o); - if (wrapper == null) return null; - return registries.access().registryOrThrow(registry).get(wrapper.wrapped()); - }); - } - @Override public void registerTypeWrappers(TypeWrapperRegistry registry) { registry.register(GTResourceLocation.class, GTResourceLocation::wrap); - registryObjectTypeWrapper(registry, Material.class, GTRegistries.Keys.MATERIAL); - registryObjectTypeWrapper(registry, Element.class, GTRegistries.Keys.ELEMENT); - registryObjectTypeWrapper(registry, TagPrefix.class, GTRegistries.Keys.TAG_PREFIX); - registryObjectTypeWrapper(registry, MaterialIconSet.class, GTRegistries.Keys.MATERIAL_ICON_SET); - - registryObjectTypeWrapper(registry, GTRecipeType.class, GTRegistries.Keys.RECIPE_TYPE); - registryObjectTypeWrapper(registry, GTRecipeCategory.class, GTRegistries.Keys.RECIPE_CATEGORY); - registryObjectTypeWrapper(registry, ChanceLogic.class, GTRegistries.Keys.CHANCE_LOGIC); - - registryObjectTypeWrapper(registry, MachineDefinition.class, GTRegistries.Keys.MACHINE); - registryObjectTypeWrapper(registry, IWorldGenLayer.class, GTRegistries.Keys.WORLD_GEN_LAYER); - - registry.register(RecipeCapability.class, (RegistryAccessContainer registries, Object o) -> { - o = Wrapper.unwrapped(o); - if (o instanceof RecipeCapability capability) return capability; - GTResourceLocation wrapper = GTResourceLocation.wrap(o); - if (wrapper == null) return null; - return registries.access().registryOrThrow(GTRegistries.Keys.RECIPE_CAPABILITY).get(wrapper.wrapped()); - }); - - registry.register(MaterialEntry.class, MaterialEntry::of); - registry.register(MaterialStack.class, o -> { - o = Wrapper.unwrapped(o); if (o instanceof MaterialStack stack) return stack; if (o instanceof Material material) return new MaterialStack(material, 1); if (o instanceof CharSequence chars) return MaterialStack.fromString(chars); return null; }); registry.register(MaterialStackWrapper.class, o -> { - o = Wrapper.unwrapped(o); if (o instanceof MaterialStackWrapper wrapper) return wrapper; if (o instanceof MaterialStack stack) return new MaterialStackWrapper(stack::material, stack.amount()); if (o instanceof Material material) return new MaterialStackWrapper(() -> material, 1); From f39e96d3377c0dc3c336b6993c27be366cc388e6 Mon Sep 17 00:00:00 2001 From: Gustavo Date: Sat, 18 Jul 2026 23:11:30 +1000 Subject: [PATCH 33/33] oops --- .../api/registry/registrate/GTRegistrate.java | 7 +- .../gtceu/common/data/GTElements.java | 268 +++++++++--------- 2 files changed, 138 insertions(+), 137 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 1b50472f3c0..a37416be4fd 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 @@ -272,13 +272,14 @@ public Material.Builder material(String name) { // Elements - public RegistryEntry element(String name, long protons, long neutrons, long halfLifeSeconds, @Nullable String decayTo, + public Element element(String name, long protons, long neutrons, long halfLifeSeconds, @Nullable String decayTo, String symbol, boolean isIsotope) { var element = new Element(protons, neutrons, halfLifeSeconds, decayTo, name, symbol, isIsotope); - return this.generic(name.toLowerCase(), GTRegistries.Keys.ELEMENT, () -> element).register(); + this.generic(name.toLowerCase(), GTRegistries.Keys.ELEMENT, () -> element).register(); + return element; } - public RegistryEntry element(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, + public Element element(long protons, long neutrons, long halfLifeSeconds, String decayTo, String name, String symbol, boolean isIsotope) { return element(name, protons, neutrons, halfLifeSeconds, decayTo, symbol, isIsotope); diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java index 145e9befac3..3d6fd4e1697 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTElements.java @@ -10,140 +10,140 @@ public class GTElements { // spotless:off - public static final RegistryEntry H = REGISTRATE.element("Hydrogen", 1, 0, -1, null, "H", false); - public static final RegistryEntry D = REGISTRATE.element("Deuterium", 1, 1, -1, "H", "D", true); - public static final RegistryEntry T = REGISTRATE.element("Tritium", 1, 2, -1, "D", "T", true); - public static final RegistryEntry He = REGISTRATE.element("Helium", 2, 2, -1, null, "He", false); - public static final RegistryEntry He3 = REGISTRATE.element("Helium-3", 2, 1, -1, "H&D", "He-3", true); - public static final RegistryEntry Li = REGISTRATE.element("Lithium", 3, 4, -1, null, "Li", false); - public static final RegistryEntry Be = REGISTRATE.element("Beryllium", 4, 5, -1, null, "Be", false); - public static final RegistryEntry B = REGISTRATE.element("Boron", 5, 5, -1, null, "B", false); - public static final RegistryEntry C = REGISTRATE.element("Carbon", 6, 6, -1, null, "C", false); - public static final RegistryEntry N = REGISTRATE.element("Nitrogen", 7, 7, -1, null, "N", false); - public static final RegistryEntry O = REGISTRATE.element("Oxygen", 8, 8, -1, null, "O", false); - public static final RegistryEntry F = REGISTRATE.element("Fluorine", 9, 9, -1, null, "F", false); - public static final RegistryEntry Ne = REGISTRATE.element("Neon", 10, 10, -1, null, "Ne", false); - public static final RegistryEntry Na = REGISTRATE.element("Sodium", 11, 11, -1, null, "Na", false); - public static final RegistryEntry Mg = REGISTRATE.element("Magnesium", 12, 12, -1, null, "Mg", false); - public static final RegistryEntry Al = REGISTRATE.element("Aluminium", 13, 13, -1, null, "Al", false); - public static final RegistryEntry Si = REGISTRATE.element("Silicon", 14, 14, -1, null, "Si", false); - public static final RegistryEntry P = REGISTRATE.element("Phosphorus", 15, 15, -1, null, "P", false); - public static final RegistryEntry S = REGISTRATE.element("Sulfur", 16, 16, -1, null, "S", false); - public static final RegistryEntry Cl = REGISTRATE.element("Chlorine", 17, 18, -1, null, "Cl", false); - public static final RegistryEntry Ar = REGISTRATE.element("Argon", 18, 22, -1, null, "Ar", false); - public static final RegistryEntry K = REGISTRATE.element("Potassium", 19, 20, -1, null, "K", false); - public static final RegistryEntry Ca = REGISTRATE.element("Calcium", 20, 20, -1, null, "Ca", false); - public static final RegistryEntry Sc = REGISTRATE.element("Scandium", 21, 24, -1, null, "Sc", false); - public static final RegistryEntry Ti = REGISTRATE.element("Titanium", 22, 26, -1, null, "Ti", false); - public static final RegistryEntry V = REGISTRATE.element("Vanadium", 23, 28, -1, null, "V", false); - public static final RegistryEntry Cr = REGISTRATE.element("Chrome", 24, 28, -1, null, "Cr", false); - public static final RegistryEntry Mn = REGISTRATE.element("Manganese", 25, 30, -1, null, "Mn", false); - public static final RegistryEntry Fe = REGISTRATE.element("Iron", 26, 30, -1, null, "Fe", false); - public static final RegistryEntry Co = REGISTRATE.element("Cobalt", 27, 32, -1, null, "Co", false); - public static final RegistryEntry Ni = REGISTRATE.element("Nickel", 28, 30, -1, null, "Ni", false); - public static final RegistryEntry Cu = REGISTRATE.element("Copper", 29, 34, -1, null, "Cu", false); - public static final RegistryEntry Zn = REGISTRATE.element("Zinc", 30, 35, -1, null, "Zn", false); - public static final RegistryEntry Ga = REGISTRATE.element("Gallium", 31, 39, -1, null, "Ga", false); - public static final RegistryEntry Ge = REGISTRATE.element("Germanium", 32, 40, -1, null, "Ge", false); - public static final RegistryEntry As = REGISTRATE.element("Arsenic", 33, 42, -1, null, "As", false); - public static final RegistryEntry Se = REGISTRATE.element("Selenium", 34, 45, -1, null, "Se", false); - public static final RegistryEntry Br = REGISTRATE.element("Bromine", 35, 45, -1, null, "Br", false); - public static final RegistryEntry Kr = REGISTRATE.element("Krypton", 36, 48, -1, null, "Kr", false); - public static final RegistryEntry Rb = REGISTRATE.element("Rubidium", 37, 48, -1, null, "Rb", false); - public static final RegistryEntry Sr = REGISTRATE.element("Strontium", 38, 49, -1, null, "Sr", false); - public static final RegistryEntry Y = REGISTRATE.element("Yttrium", 39, 50, -1, null, "Y", false); - public static final RegistryEntry Zr = REGISTRATE.element("Zirconium", 40, 51, -1, null, "Zr", false); - public static final RegistryEntry Nb = REGISTRATE.element("Niobium", 41, 53, -1, null, "Nb", false); - public static final RegistryEntry Mo = REGISTRATE.element("Molybdenum", 42, 53, -1, null, "Mo", false); - public static final RegistryEntry Tc = REGISTRATE.element("Technetium", 43, 55, -1, null, "Tc", false); - public static final RegistryEntry Ru = REGISTRATE.element("Ruthenium", 44, 57, -1, null, "Ru", false); - public static final RegistryEntry Rh = REGISTRATE.element("Rhodium", 45, 58, -1, null, "Rh", false); - public static final RegistryEntry Pd = REGISTRATE.element("Palladium", 46, 60, -1, null, "Pd", false); - public static final RegistryEntry Ag = REGISTRATE.element("Silver", 47, 60, -1, null, "Ag", false); - public static final RegistryEntry Cd = REGISTRATE.element("Cadmium", 48, 64, -1, null, "Cd", false); - public static final RegistryEntry In = REGISTRATE.element("Indium", 49, 65, -1, null, "In", false); - public static final RegistryEntry Sn = REGISTRATE.element("Tin", 50, 68, -1, null, "Sn", false); - public static final RegistryEntry Sb = REGISTRATE.element("Antimony", 51, 70, -1, null, "Sb", false); - public static final RegistryEntry Te = REGISTRATE.element("Tellurium", 52, 75, -1, null, "Te", false); - public static final RegistryEntry I = REGISTRATE.element("Iodine", 53, 74, -1, null, "I", false); - public static final RegistryEntry Xe = REGISTRATE.element("Xenon", 54, 77, -1, null, "Xe", false); - public static final RegistryEntry Cs = REGISTRATE.element("Caesium", 55, 77, -1, null, "Cs", false); - public static final RegistryEntry Ba = REGISTRATE.element("Barium", 56, 81, -1, null, "Ba", false); - public static final RegistryEntry La = REGISTRATE.element("Lanthanum", 57, 81, -1, null, "La", false); - public static final RegistryEntry Ce = REGISTRATE.element("Cerium", 58, 82, -1, null, "Ce", false); - public static final RegistryEntry Pr = REGISTRATE.element("Praseodymium", 59, 81, -1, null, "Pr", false); - public static final RegistryEntry Nd = REGISTRATE.element("Neodymium", 60, 84, -1, null, "Nd", false); - public static final RegistryEntry Pm = REGISTRATE.element("Promethium", 61, 83, -1, null, "Pm", false); - public static final RegistryEntry Sm = REGISTRATE.element("Samarium", 62, 88, -1, null, "Sm", false); - public static final RegistryEntry Eu = REGISTRATE.element("Europium", 63, 88, -1, null, "Eu", false); - public static final RegistryEntry Gd = REGISTRATE.element("Gadolinium", 64, 93, -1, null, "Gd", false); - public static final RegistryEntry Tb = REGISTRATE.element("Terbium", 65, 93, -1, null, "Tb", false); - public static final RegistryEntry Dy = REGISTRATE.element("Dysprosium", 66, 96, -1, null, "Dy", false); - public static final RegistryEntry Ho = REGISTRATE.element("Holmium", 67, 97, -1, null, "Ho", false); - public static final RegistryEntry Er = REGISTRATE.element("Erbium", 68, 99, -1, null, "Er", false); - public static final RegistryEntry Tm = REGISTRATE.element("Thulium", 69, 99, -1, null, "Tm", false); - public static final RegistryEntry Yb = REGISTRATE.element("Ytterbium", 70, 103, -1, null, "Yb", false); - public static final RegistryEntry Lu = REGISTRATE.element("Lutetium", 71, 103, -1, null, "Lu", false); - public static final RegistryEntry Hf = REGISTRATE.element("Hafnium", 72, 106, -1, null, "Hf", false); - public static final RegistryEntry Ta = REGISTRATE.element("Tantalum", 73, 107, -1, null, "Ta", false); - public static final RegistryEntry W = REGISTRATE.element("Tungsten", 74, 109, -1, null, "W", false); - public static final RegistryEntry Re = REGISTRATE.element("Rhenium", 75, 111, -1, null, "Re", false); - public static final RegistryEntry Os = REGISTRATE.element("Osmium", 76, 114, -1, null, "Os", false); - public static final RegistryEntry Ir = REGISTRATE.element("Iridium", 77, 115, -1, null, "Ir", false); - public static final RegistryEntry Pt = REGISTRATE.element("Platinum", 78, 117, -1, null, "Pt", false); - public static final RegistryEntry Au = REGISTRATE.element("Gold", 79, 117, -1, null, "Au", false); - public static final RegistryEntry Hg = REGISTRATE.element("Mercury", 80, 120, -1, null, "Hg", false); - public static final RegistryEntry Tl = REGISTRATE.element("Thallium", 81, 123, -1, null, "Tl", false); - public static final RegistryEntry Pb = REGISTRATE.element("Lead", 82, 125, -1, null, "Pb", false); - public static final RegistryEntry Bi = REGISTRATE.element("Bismuth", 83, 125, -1, null, "Bi", false); - public static final RegistryEntry Po = REGISTRATE.element("Polonium", 84, 124, -1, null, "Po", false); - public static final RegistryEntry At = REGISTRATE.element("Astatine", 85, 124, -1, null, "At", false); - public static final RegistryEntry Rn = REGISTRATE.element("Radon", 86, 134, -1, null, "Rn", false); - public static final RegistryEntry Fr = REGISTRATE.element("Francium", 87, 134, -1, null, "Fr", false); - public static final RegistryEntry Ra = REGISTRATE.element("Radium", 88, 136, -1, null, "Ra", false); - public static final RegistryEntry Ac = REGISTRATE.element("Actinium", 89, 136, -1, null, "Ac", false); - public static final RegistryEntry Th = REGISTRATE.element("Thorium", 90, 140, -1, null, "Th", false); - public static final RegistryEntry Pa = REGISTRATE.element("Protactinium", 91, 138, -1, null, "Pa", false); - public static final RegistryEntry U = REGISTRATE.element("Uranium", 92, 146, -1, null, "U", false); - public static final RegistryEntry U238 = REGISTRATE.element("Uranium-238", 92, 146, -1, null, "U-238", false); - public static final RegistryEntry U235 = REGISTRATE.element("Uranium-235", 92, 143, -1, null, "U-235", true); - public static final RegistryEntry Np = REGISTRATE.element("Neptunium", 93, 144, -1, null, "Np", false); - public static final RegistryEntry Pu = REGISTRATE.element("Plutonium", 94, 152, -1, null, "Pu", false); - public static final RegistryEntry Pu239 = REGISTRATE.element("Plutonium-239", 94, 145, -1, null, "Pu-239", false); - public static final RegistryEntry Pu241 = REGISTRATE.element("Plutonium-241", 94, 149, -1, null, "Pu-241", true); - public static final RegistryEntry Am = REGISTRATE.element("Americium", 95, 150, -1, null, "Am", false); - public static final RegistryEntry Cm = REGISTRATE.element("Curium", 96, 153, -1, null, "Cm", false); - public static final RegistryEntry Bk = REGISTRATE.element("Berkelium", 97, 152, -1, null, "Bk", false); - public static final RegistryEntry Cf = REGISTRATE.element("Californium", 98, 153, -1, null, "Cf", false); - public static final RegistryEntry Es = REGISTRATE.element("Einsteinium", 99, 153, -1, null, "Es", false); - public static final RegistryEntry Fm = REGISTRATE.element("Fermium", 100, 157, -1, null, "Fm", false); - public static final RegistryEntry Md = REGISTRATE.element("Mendelevium", 101, 157, -1, null, "Md", false); - public static final RegistryEntry No = REGISTRATE.element("Nobelium", 102, 157, -1, null, "No", false); - public static final RegistryEntry Lr = REGISTRATE.element("Lawrencium", 103, 159, -1, null, "Lr", false); - public static final RegistryEntry Rf = REGISTRATE.element("Rutherfordium", 104, 161, -1, null, "Rf", false); - public static final RegistryEntry Db = REGISTRATE.element("Dubnium", 105, 163, -1, null, "Db", false); - public static final RegistryEntry Sg = REGISTRATE.element("Seaborgium", 106, 165, -1, null, "Sg", false); - public static final RegistryEntry Bh = REGISTRATE.element("Bohrium", 107, 163, -1, null, "Bh", false); - public static final RegistryEntry Hs = REGISTRATE.element("Hassium", 108, 169, -1, null, "Hs", false); - public static final RegistryEntry Mt = REGISTRATE.element("Meitnerium", 109, 167, -1, null, "Mt", false); - public static final RegistryEntry Ds = REGISTRATE.element("Darmstadtium", 110, 171, -1, null, "Ds", false); - public static final RegistryEntry Rg = REGISTRATE.element("Roentgenium", 111, 169, -1, null, "Rg", false); - public static final RegistryEntry Cn = REGISTRATE.element("Copernicium", 112, 173, -1, null, "Cn", false); - public static final RegistryEntry Nh = REGISTRATE.element("Nihonium", 113, 171, -1, null, "Nh", false); - public static final RegistryEntry Fl = REGISTRATE.element("Flerovium", 114, 175, -1, null, "Fl", false); - public static final RegistryEntry Mc = REGISTRATE.element("Moscovium", 115, 173, -1, null, "Mc", false); - public static final RegistryEntry Lv = REGISTRATE.element("Livermorium", 116, 177, -1, null, "Lv", false); - public static final RegistryEntry Ts = REGISTRATE.element("Tennessine", 117, 177, -1, null, "Ts", false); - public static final RegistryEntry Og = REGISTRATE.element("Oganesson", 118, 176, -1, null, "Og", false); - public static final RegistryEntry Tr = REGISTRATE.element("Tritanium", 119, 178, -1, null, "Tr", false); - public static final RegistryEntry Dr = REGISTRATE.element("Duranium", 120, 180, -1, null, "Dr", false); - public static final RegistryEntry Ke = REGISTRATE.element("Trinium", 125, 198, -1, null, "Ke", false); - public static final RegistryEntry Nq = REGISTRATE.element("Naquadah", 174, 352, 140, null, "Nq", true); - public static final RegistryEntry Nq1 = REGISTRATE.element("NaquadahEnriched", 174, 354, 140, null, "Nq+", true); - public static final RegistryEntry Nq2 = REGISTRATE.element("Naquadria", 174, 348, 140, null, "*Nq*", true); - public static final RegistryEntry Nt = REGISTRATE.element("Neutronium", 0, 1000, -1, null, "Nt", false); - public static final RegistryEntry Sp = REGISTRATE.element("Space", 1, 0, -1, null, "Sp", false); - public static final RegistryEntry Ma = REGISTRATE.element("Magic", 1, 0, -1, null, "Ma", false); + public static final Element H = REGISTRATE.element("Hydrogen", 1, 0, -1, null, "H", false); + public static final Element D = REGISTRATE.element("Deuterium", 1, 1, -1, "H", "D", true); + public static final Element T = REGISTRATE.element("Tritium", 1, 2, -1, "D", "T", true); + public static final Element He = REGISTRATE.element("Helium", 2, 2, -1, null, "He", false); + public static final Element He3 = REGISTRATE.element("Helium-3", 2, 1, -1, "H&D", "He-3", true); + public static final Element Li = REGISTRATE.element("Lithium", 3, 4, -1, null, "Li", false); + public static final Element Be = REGISTRATE.element("Beryllium", 4, 5, -1, null, "Be", false); + public static final Element B = REGISTRATE.element("Boron", 5, 5, -1, null, "B", false); + public static final Element C = REGISTRATE.element("Carbon", 6, 6, -1, null, "C", false); + public static final Element N = REGISTRATE.element("Nitrogen", 7, 7, -1, null, "N", false); + public static final Element O = REGISTRATE.element("Oxygen", 8, 8, -1, null, "O", false); + public static final Element F = REGISTRATE.element("Fluorine", 9, 9, -1, null, "F", false); + public static final Element Ne = REGISTRATE.element("Neon", 10, 10, -1, null, "Ne", false); + public static final Element Na = REGISTRATE.element("Sodium", 11, 11, -1, null, "Na", false); + public static final Element Mg = REGISTRATE.element("Magnesium", 12, 12, -1, null, "Mg", false); + public static final Element Al = REGISTRATE.element("Aluminium", 13, 13, -1, null, "Al", false); + public static final Element Si = REGISTRATE.element("Silicon", 14, 14, -1, null, "Si", false); + public static final Element P = REGISTRATE.element("Phosphorus", 15, 15, -1, null, "P", false); + public static final Element S = REGISTRATE.element("Sulfur", 16, 16, -1, null, "S", false); + public static final Element Cl = REGISTRATE.element("Chlorine", 17, 18, -1, null, "Cl", false); + public static final Element Ar = REGISTRATE.element("Argon", 18, 22, -1, null, "Ar", false); + public static final Element K = REGISTRATE.element("Potassium", 19, 20, -1, null, "K", false); + public static final Element Ca = REGISTRATE.element("Calcium", 20, 20, -1, null, "Ca", false); + public static final Element Sc = REGISTRATE.element("Scandium", 21, 24, -1, null, "Sc", false); + public static final Element Ti = REGISTRATE.element("Titanium", 22, 26, -1, null, "Ti", false); + public static final Element V = REGISTRATE.element("Vanadium", 23, 28, -1, null, "V", false); + public static final Element Cr = REGISTRATE.element("Chrome", 24, 28, -1, null, "Cr", false); + public static final Element Mn = REGISTRATE.element("Manganese", 25, 30, -1, null, "Mn", false); + public static final Element Fe = REGISTRATE.element("Iron", 26, 30, -1, null, "Fe", false); + public static final Element Co = REGISTRATE.element("Cobalt", 27, 32, -1, null, "Co", false); + public static final Element Ni = REGISTRATE.element("Nickel", 28, 30, -1, null, "Ni", false); + public static final Element Cu = REGISTRATE.element("Copper", 29, 34, -1, null, "Cu", false); + public static final Element Zn = REGISTRATE.element("Zinc", 30, 35, -1, null, "Zn", false); + public static final Element Ga = REGISTRATE.element("Gallium", 31, 39, -1, null, "Ga", false); + public static final Element Ge = REGISTRATE.element("Germanium", 32, 40, -1, null, "Ge", false); + public static final Element As = REGISTRATE.element("Arsenic", 33, 42, -1, null, "As", false); + public static final Element Se = REGISTRATE.element("Selenium", 34, 45, -1, null, "Se", false); + public static final Element Br = REGISTRATE.element("Bromine", 35, 45, -1, null, "Br", false); + public static final Element Kr = REGISTRATE.element("Krypton", 36, 48, -1, null, "Kr", false); + public static final Element Rb = REGISTRATE.element("Rubidium", 37, 48, -1, null, "Rb", false); + public static final Element Sr = REGISTRATE.element("Strontium", 38, 49, -1, null, "Sr", false); + public static final Element Y = REGISTRATE.element("Yttrium", 39, 50, -1, null, "Y", false); + public static final Element Zr = REGISTRATE.element("Zirconium", 40, 51, -1, null, "Zr", false); + public static final Element Nb = REGISTRATE.element("Niobium", 41, 53, -1, null, "Nb", false); + public static final Element Mo = REGISTRATE.element("Molybdenum", 42, 53, -1, null, "Mo", false); + public static final Element Tc = REGISTRATE.element("Technetium", 43, 55, -1, null, "Tc", false); + public static final Element Ru = REGISTRATE.element("Ruthenium", 44, 57, -1, null, "Ru", false); + public static final Element Rh = REGISTRATE.element("Rhodium", 45, 58, -1, null, "Rh", false); + public static final Element Pd = REGISTRATE.element("Palladium", 46, 60, -1, null, "Pd", false); + public static final Element Ag = REGISTRATE.element("Silver", 47, 60, -1, null, "Ag", false); + public static final Element Cd = REGISTRATE.element("Cadmium", 48, 64, -1, null, "Cd", false); + public static final Element In = REGISTRATE.element("Indium", 49, 65, -1, null, "In", false); + public static final Element Sn = REGISTRATE.element("Tin", 50, 68, -1, null, "Sn", false); + public static final Element Sb = REGISTRATE.element("Antimony", 51, 70, -1, null, "Sb", false); + public static final Element Te = REGISTRATE.element("Tellurium", 52, 75, -1, null, "Te", false); + public static final Element I = REGISTRATE.element("Iodine", 53, 74, -1, null, "I", false); + public static final Element Xe = REGISTRATE.element("Xenon", 54, 77, -1, null, "Xe", false); + public static final Element Cs = REGISTRATE.element("Caesium", 55, 77, -1, null, "Cs", false); + public static final Element Ba = REGISTRATE.element("Barium", 56, 81, -1, null, "Ba", false); + public static final Element La = REGISTRATE.element("Lanthanum", 57, 81, -1, null, "La", false); + public static final Element Ce = REGISTRATE.element("Cerium", 58, 82, -1, null, "Ce", false); + public static final Element Pr = REGISTRATE.element("Praseodymium", 59, 81, -1, null, "Pr", false); + public static final Element Nd = REGISTRATE.element("Neodymium", 60, 84, -1, null, "Nd", false); + public static final Element Pm = REGISTRATE.element("Promethium", 61, 83, -1, null, "Pm", false); + public static final Element Sm = REGISTRATE.element("Samarium", 62, 88, -1, null, "Sm", false); + public static final Element Eu = REGISTRATE.element("Europium", 63, 88, -1, null, "Eu", false); + public static final Element Gd = REGISTRATE.element("Gadolinium", 64, 93, -1, null, "Gd", false); + public static final Element Tb = REGISTRATE.element("Terbium", 65, 93, -1, null, "Tb", false); + public static final Element Dy = REGISTRATE.element("Dysprosium", 66, 96, -1, null, "Dy", false); + public static final Element Ho = REGISTRATE.element("Holmium", 67, 97, -1, null, "Ho", false); + public static final Element Er = REGISTRATE.element("Erbium", 68, 99, -1, null, "Er", false); + public static final Element Tm = REGISTRATE.element("Thulium", 69, 99, -1, null, "Tm", false); + public static final Element Yb = REGISTRATE.element("Ytterbium", 70, 103, -1, null, "Yb", false); + public static final Element Lu = REGISTRATE.element("Lutetium", 71, 103, -1, null, "Lu", false); + public static final Element Hf = REGISTRATE.element("Hafnium", 72, 106, -1, null, "Hf", false); + public static final Element Ta = REGISTRATE.element("Tantalum", 73, 107, -1, null, "Ta", false); + public static final Element W = REGISTRATE.element("Tungsten", 74, 109, -1, null, "W", false); + public static final Element Re = REGISTRATE.element("Rhenium", 75, 111, -1, null, "Re", false); + public static final Element Os = REGISTRATE.element("Osmium", 76, 114, -1, null, "Os", false); + public static final Element Ir = REGISTRATE.element("Iridium", 77, 115, -1, null, "Ir", false); + public static final Element Pt = REGISTRATE.element("Platinum", 78, 117, -1, null, "Pt", false); + public static final Element Au = REGISTRATE.element("Gold", 79, 117, -1, null, "Au", false); + public static final Element Hg = REGISTRATE.element("Mercury", 80, 120, -1, null, "Hg", false); + public static final Element Tl = REGISTRATE.element("Thallium", 81, 123, -1, null, "Tl", false); + public static final Element Pb = REGISTRATE.element("Lead", 82, 125, -1, null, "Pb", false); + public static final Element Bi = REGISTRATE.element("Bismuth", 83, 125, -1, null, "Bi", false); + public static final Element Po = REGISTRATE.element("Polonium", 84, 124, -1, null, "Po", false); + public static final Element At = REGISTRATE.element("Astatine", 85, 124, -1, null, "At", false); + public static final Element Rn = REGISTRATE.element("Radon", 86, 134, -1, null, "Rn", false); + public static final Element Fr = REGISTRATE.element("Francium", 87, 134, -1, null, "Fr", false); + public static final Element Ra = REGISTRATE.element("Radium", 88, 136, -1, null, "Ra", false); + public static final Element Ac = REGISTRATE.element("Actinium", 89, 136, -1, null, "Ac", false); + public static final Element Th = REGISTRATE.element("Thorium", 90, 140, -1, null, "Th", false); + public static final Element Pa = REGISTRATE.element("Protactinium", 91, 138, -1, null, "Pa", false); + public static final Element U = REGISTRATE.element("Uranium", 92, 146, -1, null, "U", false); + public static final Element U238 = REGISTRATE.element("Uranium-238", 92, 146, -1, null, "U-238", false); + public static final Element U235 = REGISTRATE.element("Uranium-235", 92, 143, -1, null, "U-235", true); + public static final Element Np = REGISTRATE.element("Neptunium", 93, 144, -1, null, "Np", false); + public static final Element Pu = REGISTRATE.element("Plutonium", 94, 152, -1, null, "Pu", false); + public static final Element Pu239 = REGISTRATE.element("Plutonium-239", 94, 145, -1, null, "Pu-239", false); + public static final Element Pu241 = REGISTRATE.element("Plutonium-241", 94, 149, -1, null, "Pu-241", true); + public static final Element Am = REGISTRATE.element("Americium", 95, 150, -1, null, "Am", false); + public static final Element Cm = REGISTRATE.element("Curium", 96, 153, -1, null, "Cm", false); + public static final Element Bk = REGISTRATE.element("Berkelium", 97, 152, -1, null, "Bk", false); + public static final Element Cf = REGISTRATE.element("Californium", 98, 153, -1, null, "Cf", false); + public static final Element Es = REGISTRATE.element("Einsteinium", 99, 153, -1, null, "Es", false); + public static final Element Fm = REGISTRATE.element("Fermium", 100, 157, -1, null, "Fm", false); + public static final Element Md = REGISTRATE.element("Mendelevium", 101, 157, -1, null, "Md", false); + public static final Element No = REGISTRATE.element("Nobelium", 102, 157, -1, null, "No", false); + public static final Element Lr = REGISTRATE.element("Lawrencium", 103, 159, -1, null, "Lr", false); + public static final Element Rf = REGISTRATE.element("Rutherfordium", 104, 161, -1, null, "Rf", false); + public static final Element Db = REGISTRATE.element("Dubnium", 105, 163, -1, null, "Db", false); + public static final Element Sg = REGISTRATE.element("Seaborgium", 106, 165, -1, null, "Sg", false); + public static final Element Bh = REGISTRATE.element("Bohrium", 107, 163, -1, null, "Bh", false); + public static final Element Hs = REGISTRATE.element("Hassium", 108, 169, -1, null, "Hs", false); + public static final Element Mt = REGISTRATE.element("Meitnerium", 109, 167, -1, null, "Mt", false); + public static final Element Ds = REGISTRATE.element("Darmstadtium", 110, 171, -1, null, "Ds", false); + public static final Element Rg = REGISTRATE.element("Roentgenium", 111, 169, -1, null, "Rg", false); + public static final Element Cn = REGISTRATE.element("Copernicium", 112, 173, -1, null, "Cn", false); + public static final Element Nh = REGISTRATE.element("Nihonium", 113, 171, -1, null, "Nh", false); + public static final Element Fl = REGISTRATE.element("Flerovium", 114, 175, -1, null, "Fl", false); + public static final Element Mc = REGISTRATE.element("Moscovium", 115, 173, -1, null, "Mc", false); + public static final Element Lv = REGISTRATE.element("Livermorium", 116, 177, -1, null, "Lv", false); + public static final Element Ts = REGISTRATE.element("Tennessine", 117, 177, -1, null, "Ts", false); + public static final Element Og = REGISTRATE.element("Oganesson", 118, 176, -1, null, "Og", false); + public static final Element Tr = REGISTRATE.element("Tritanium", 119, 178, -1, null, "Tr", false); + public static final Element Dr = REGISTRATE.element("Duranium", 120, 180, -1, null, "Dr", false); + public static final Element Ke = REGISTRATE.element("Trinium", 125, 198, -1, null, "Ke", false); + public static final Element Nq = REGISTRATE.element("Naquadah", 174, 352, 140, null, "Nq", true); + public static final Element Nq1 = REGISTRATE.element("NaquadahEnriched", 174, 354, 140, null, "Nq+", true); + public static final Element Nq2 = REGISTRATE.element("Naquadria", 174, 348, 140, null, "*Nq*", true); + public static final Element Nt = REGISTRATE.element("Neutronium", 0, 1000, -1, null, "Nt", false); + public static final Element Sp = REGISTRATE.element("Space", 1, 0, -1, null, "Sp", false); + public static final Element Ma = REGISTRATE.element("Magic", 1, 0, -1, null, "Ma", false); public static void init() {} }