diff --git a/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md b/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md index 6046c99e039..efae271bdf1 100644 --- a/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md +++ b/docs/content/Modpacks/Examples/Parallel-Hatch-Part.md @@ -75,7 +75,7 @@ title: "Custom Parallel Hatch" 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 8151c396cca..b60081afb1b 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/addon/IGTAddon.java b/src/main/java/com/gregtechceu/gtceu/api/addon/IGTAddon.java index 3b6bfe22d10..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,14 +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 VeinGenerator class(es) here */ 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 8ff961bc599..92089829216 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 @@ -1,6 +1,5 @@ package com.gregtechceu.gtceu.api.capability.recipe; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.trait.notifiable.NotifiableRecipeHandlerTrait; import com.gregtechceu.gtceu.api.recipe.GTRecipe; @@ -63,15 +62,6 @@ protected RecipeCapability(ResourceLocation id, int color, boolean doRenderSlot, this.serializer = serializer; } - /** - * @deprecated Use {@link #RecipeCapability(ResourceLocation, int, boolean, int, IContentSerializer)} - */ - @Deprecated(forRemoval = true, since = "8.0.0") - protected RecipeCapability(String name, int color, boolean doRenderSlot, int sortIndex, - IContentSerializer serializer) { - this(GTCEu.id(name), color, doRenderSlot, sortIndex, serializer); - } - public static Codec> contentCodec(RecipeCapability capability) { return Content.codec(capability).listOf().xmap(ArrayList::new, Function.identity()); } 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 227264f68b1..8b4158f5b8c 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 @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.utils.GTMath; import com.gregtechceu.gtceu.utils.TagUtil; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceKey; @@ -1488,7 +1489,7 @@ public Builder radioactiveHazard(float multiplier) { * @param trigger The trigger type for this hazard. * @param condition The condition applied by this hazard. */ - public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition) { + public Builder hazard(HazardProperty.HazardTrigger trigger, Holder condition) { properties.setProperty(PropertyKey.HAZARD, new HazardProperty(trigger, condition, 1, false)); return this; } @@ -1504,7 +1505,7 @@ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition con * @param condition The condition applied by this hazard. * @param progressionMultiplier Multiplier for how quickly the condition will progress. */ - public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, + public Builder hazard(HazardProperty.HazardTrigger trigger, Holder condition, float progressionMultiplier) { properties.setProperty(PropertyKey.HAZARD, new HazardProperty(trigger, condition, progressionMultiplier, false)); @@ -1521,7 +1522,7 @@ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition con * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its * components list. */ - public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, + public Builder hazard(HazardProperty.HazardTrigger trigger, Holder condition, float progressionMultiplier, boolean applyToDerivatives) { properties.setProperty(PropertyKey.HAZARD, new HazardProperty(trigger, condition, progressionMultiplier, applyToDerivatives)); @@ -1540,7 +1541,7 @@ public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition con * @param applyToDerivatives Whether the Hazard should be applied to materials with this Material in its * components list. */ - public Builder hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, + public Builder hazard(HazardProperty.HazardTrigger trigger, Holder condition, boolean applyToDerivatives) { properties.setProperty(PropertyKey.HAZARD, new HazardProperty(trigger, condition, 1, applyToDerivatives)); return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java index 50f710853d4..b0161cc22a4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/HazardProperty.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.data.recipe.CustomTags; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.StringRepresentable; @@ -31,12 +32,12 @@ public class HazardProperty implements IMaterialProperty { - public final MedicalCondition condition; + public final Holder condition; public final HazardTrigger hazardTrigger; public final boolean applyToDerivatives; public final float progressionMultiplier; - public HazardProperty(HazardTrigger hazardTrigger, MedicalCondition condition, float progressionMultiplier, + public HazardProperty(HazardTrigger hazardTrigger, Holder condition, float progressionMultiplier, boolean applyToDerivatives) { this.hazardTrigger = hazardTrigger; this.condition = condition; diff --git a/src/main/java/com/gregtechceu/gtceu/api/data/medicalcondition/MedicalCondition.java b/src/main/java/com/gregtechceu/gtceu/api/data/medicalcondition/MedicalCondition.java index 883d2bf7183..6c1290b610e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/data/medicalcondition/MedicalCondition.java +++ b/src/main/java/com/gregtechceu/gtceu/api/data/medicalcondition/MedicalCondition.java @@ -12,9 +12,7 @@ import net.minecraft.world.damagesource.DamageType; import lombok.Getter; -import lombok.Setter; import lombok.experimental.Accessors; -import org.jetbrains.annotations.NotNull; import java.util.*; import java.util.function.Consumer; @@ -47,13 +45,11 @@ public class MedicalCondition { * condition. */ @Getter - @Setter - @NotNull - public Consumer recipeModifier = builder -> {}; + public final Consumer recipeModifier; public MedicalCondition(ResourceLocation id, int color, int maxProgression, IdleProgressionType progressionType, float progressionRate, - boolean canBePermanent, + boolean canBePermanent, Consumer recipeModifier, Symptom.ConfiguredSymptom... symptoms) { this.id = id; this.color = color; @@ -67,6 +63,14 @@ public MedicalCondition(ResourceLocation id, int color, this.idleProgressionType = progressionType; this.idleProgressionRate = progressionRate; this.canBePermanent = canBePermanent; + this.recipeModifier = recipeModifier; + } + + public MedicalCondition(ResourceLocation id, int color, + int maxProgression, IdleProgressionType progressionType, float progressionRate, + boolean canBePermanent, + Symptom.ConfiguredSymptom... symptoms) { + this(id, color, maxProgression, progressionType, progressionRate, canBePermanent, $ -> {}, symptoms); } public ResourceKey getDamageType() { 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 709ea8e72c1..5939dfa1e27 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 @@ -177,6 +177,10 @@ public GTOreDefinition layer(IWorldGenLayer layer) { return this; } + public GTOreDefinition layer(Holder layer) { + return layer(layer.value()); + } + public GTOreDefinition dimensions(Set> dimensions) { this.dimensionFilter = dimensions; return this; 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 b6cc054cdf9..5ee00a02814 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,9 +1,11 @@ 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 com.gregtechceu.gtceu.common.registry.GTRegistration; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.Level; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; @@ -12,32 +14,27 @@ public class WorldGenLayers { - public static final SimpleWorldGenLayer STONE = new SimpleWorldGenLayer( - GTCEu.id("stone"), () -> new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES), + public static final Holder STONE = register("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 Holder DEEPSLATE = register("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 Holder NETHERRACK = register("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 Holder ENDSTONE = register("endstone", + () -> WorldGeneratorUtils.END_ORE_REPLACEABLES, Set.of(Level.END)); - public static void init() { - if (GTCEu.Mods.isKubeJSLoaded()) { - KJSCallWrapper.postEvent(); - } + private static Holder register(String name, IWorldGenLayer.RuleTestSupplier target, + Set> levels) { + return GTRegistration.REGISTRATE.simple(name, GTRegistries.Keys.WORLD_GEN_LAYER, + () -> new SimpleWorldGenLayer(GTCEu.id(name), target, levels)); } - private static final class KJSCallWrapper { - - private static void postEvent() { - GTCEuStartupEvents.WORLD_GEN_LAYERS.post(new WorldGenLayerEventJS()); - } - } + public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/events/ModifyMachineEvent.java b/src/main/java/com/gregtechceu/gtceu/api/events/ModifyMachineEvent.java index 8f2f23ebfbf..c29802709bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/events/ModifyMachineEvent.java +++ b/src/main/java/com/gregtechceu/gtceu/api/events/ModifyMachineEvent.java @@ -1,6 +1,6 @@ package com.gregtechceu.gtceu.api.events; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import net.neoforged.bus.api.Event; import net.neoforged.fml.event.IModBusEvent; 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..299e0d1b375 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/IGTTool.java @@ -89,7 +89,7 @@ public interface IGTTool extends IUIHolder>, ItemLike IGTToolDefinition getToolStats(); @Nullable - SoundEntry getSound(); + Holder getSound(); boolean playSoundOnBlockDestroy(); @@ -283,7 +283,7 @@ default int getTotalHarvestLevel() { return; } if (!areaOfEffectBlockBreakRoutine(stack, serverPlayer, pos)) { - var behavior = getBehaviorsComponent(stack).getBehavior(GTToolBehaviors.TREE_FELLING); + var behavior = getBehaviorsComponent(stack).getBehavior(GTToolBehaviors.TREE_FELLING.value()); if (behavior != null && behavior.isEnabled() && state.is(BlockTags.LOGS)) { TreeFellingHelper.fellTree(stack, player.level(), state, pos, player); } @@ -723,7 +723,7 @@ default boolean canPlaySound(ItemStack stack) { default void playSound(Player player) { if (ConfigHolder.INSTANCE.client.toolUseSounds && getSound() != null) { - player.level().playSound(null, player, getSound().getMainEvent(), SoundSource.PLAYERS, 1F, 1F); + player.level().playSound(null, player, getSound().value().getMainEvent(), SoundSource.PLAYERS, 1F, 1F); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java index 8696119e5b5..043b52a7cc9 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/armor/ArmorUtils.java @@ -130,7 +130,7 @@ public static void playJetpackSound(@NotNull Player player) { cons -= 0.4F; } - player.playSound(GTSoundEntries.JET_ENGINE.getMainEvent(), 0.3F, cons); + player.playSound(GTSoundEntries.JET_ENGINE.value().getMainEvent(), 0.3F, cons); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java index 7978571d49c..275ee056c64 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolItem.java @@ -108,7 +108,7 @@ public boolean isElectric() { @Nullable @Override - public SoundEntry getSound() { + public Holder getSound() { return toolType.soundEntry; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java index cbfafba6de3..5e7fb1698c1 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/GTToolType.java @@ -11,6 +11,7 @@ import com.gregtechceu.gtceu.common.item.tool.behavior.*; import com.gregtechceu.gtceu.data.recipe.CustomTags; +import net.minecraft.core.Holder; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -198,7 +199,7 @@ public class GTToolType { .definition(b -> b.blockBreaking().crafting() .attackDamage(2.0F).attackSpeed(-2.4F) .sneakBypassUse().behaviors(RotateRailBehavior.INSTANCE)) - .sound(new ExistingSoundEntry(SoundEvents.ITEM_BREAK, SoundSource.BLOCKS), true) + .sound(Holder.direct(new ExistingSoundEntry(SoundEvents.ITEM_BREAK, SoundSource.BLOCKS)), true) .symbol('c') .defaultAbilities(GTItemAbilities.CROWBAR_DIG, GTItemAbilities.CROWBAR_REMOVE_COVER) .materialAmount(3 * GTValues.M / 2) @@ -571,7 +572,7 @@ public class GTToolType { public final Set toolClassNames; public final Set toolClasses; @Nullable - public final SoundEntry soundEntry; + public final Holder soundEntry; public final boolean playSoundOnBlockDestroy; public final char symbol; public final long materialAmount; @@ -585,7 +586,7 @@ public GTToolType(String name, String idFormat, char symbol, List> itemTags, List> matchTags, List> craftingTags, List> harvestTags, Set defaultAbilities, Set toolClassNames, ResourceLocation modelLocation, - @Nullable SoundEntry soundEntry, boolean playSoundOnBlockDestroy, + @Nullable Holder soundEntry, boolean playSoundOnBlockDestroy, int electricTier, long materialAmount) { this.name = name; this.idFormat = idFormat; @@ -661,7 +662,7 @@ public static class Builder { private ToolConstructor constructor = GTToolItem::new; @Setter private ResourceLocation modelLocation; - private SoundEntry sound; + private Holder sound; private boolean playSoundOnBlockDestroy; public Builder(String name) { @@ -727,11 +728,11 @@ public Builder definition(UnaryOperator builder) { return this; } - public Builder sound(SoundEntry sound) { + public Builder sound(Holder sound) { return this.sound(sound, false); } - public Builder sound(SoundEntry sound, boolean playSoundOnBlockDestroy) { + public Builder sound(Holder sound, boolean playSoundOnBlockDestroy) { this.sound = sound; this.playSoundOnBlockDestroy = playSoundOnBlockDestroy; return this; diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java index 38a2fc34a4a..a16ce91ea68 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/ToolHelper.java @@ -212,7 +212,7 @@ public static void damageItem(ItemStack stack, @Nullable LivingEntity user, int public static void playToolSound(@Nullable GTToolType toolType, ServerPlayer player) { if (toolType != null && toolType.soundEntry != null) { - toolType.soundEntry.playOnServer(player.level(), player.blockPosition()); + toolType.soundEntry.value().playOnServer(player.level(), player.blockPosition()); } } @@ -563,7 +563,7 @@ public static void onActionDone(@Nullable Player player, ItemStack stack, Level IGTTool tool = (IGTTool) stack.getItem(); ToolHelper.damageItem(stack, player); if (tool.getSound() != null) { - level.playSound(player, pos.x, pos.y, pos.z, tool.getSound().getMainEvent(), + level.playSound(player, pos.x, pos.y, pos.z, tool.getSound().value().getMainEvent(), SoundSource.PLAYERS, 1.0F, 1.0F); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/item/tool/TreeFellingHelper.java b/src/main/java/com/gregtechceu/gtceu/api/item/tool/TreeFellingHelper.java index ae53be60be6..a667ed8d696 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/item/tool/TreeFellingHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/api/item/tool/TreeFellingHelper.java @@ -91,7 +91,7 @@ public static void onWorldTick(LevelTickEvent.Pre event) { if (event.getLevel() == helper.player.level()) { ItemStack held = helper.player.getMainHandItem(); if (helper.player.isRemoved() || helper.orderedBlocks.isEmpty() || helper.tool.isEmpty() || - !getBehaviorsComponent(held).hasBehavior(GTToolBehaviors.TREE_FELLING)) { + !getBehaviorsComponent(held).hasBehavior(GTToolBehaviors.TREE_FELLING.value())) { iterator.remove(); continue; } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/customlogic/SteamBoilerLogic.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/customlogic/SteamBoilerLogic.java index d5ce1d4e2d3..fe1d214435e 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/customlogic/SteamBoilerLogic.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/customlogic/SteamBoilerLogic.java @@ -24,6 +24,7 @@ import net.neoforged.neoforge.items.wrapper.CombinedInvWrapper; import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; import java.util.HashSet; import java.util.Map; @@ -70,7 +71,7 @@ private GTRecipe makeRecipe(ItemStack input, int burnTime) { } @Override - public @Nullable GTRecipe createCustomRecipe(IRecipeCapabilityHolder holder) { + public @Nullable GTRecipe createCustomRecipe(@NonNull IRecipeCapabilityHolder holder) { var itemInputs = holder.getCapabilitiesFlat(IO.IN, ItemRecipeCapability.CAP).stream() .filter(IItemHandlerModifiable.class::isInstance).map(IItemHandlerModifiable.class::cast) .toArray(IItemHandlerModifiable[]::new); diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableFluidTank.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableFluidTank.java index 3add7234775..56735d0a6fc 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableFluidTank.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableFluidTank.java @@ -1,9 +1,6 @@ package com.gregtechceu.gtceu.api.machine.trait.notifiable; -import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; -import com.gregtechceu.gtceu.api.capability.recipe.IFilteredHandler; -import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.*; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; import com.gregtechceu.gtceu.api.machine.trait.ICapabilityTrait; @@ -15,7 +12,6 @@ import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.api.transfer.fluid.CustomFluidTank; import com.gregtechceu.gtceu.api.transfer.fluid.IFluidHandlerModifiable; -import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; import com.gregtechceu.gtceu.utils.GTTransferUtils; import net.minecraft.core.Direction; @@ -202,14 +198,14 @@ public List handleRecipeInner(IO io, @Nullable GTRecipe re for (MultiblockControllerMachine controller : partMachine.getControllers()) { RecipeLogic logic = controller.getTrait(RecipeLogic.class); if (logic != null && logic.getStartingRecipe() == recipe) { - logic.getConsumedInputs().addConsumedInput(GTRecipeCapabilities.FLUID, + logic.getConsumedInputs().addConsumedInput(FluidRecipeCapability.CAP, SizedFluidIngredient.of(copied)); } } } else { getMachine().getTraitOptional(RecipeLogic.class) .map(RecipeLogic::getConsumedInputs) - .ifPresent(inputs -> inputs.addConsumedInput(GTRecipeCapabilities.FLUID, + .ifPresent(inputs -> inputs.addConsumedInput(FluidRecipeCapability.CAP, SizedFluidIngredient.of(copied))); } } diff --git a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableItemStackHandler.java b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableItemStackHandler.java index 8256b94d10a..18f8b3af1f3 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableItemStackHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/machine/trait/notifiable/NotifiableItemStackHandler.java @@ -18,7 +18,6 @@ import com.gregtechceu.gtceu.api.sync_system.annotations.SaveField; import com.gregtechceu.gtceu.api.sync_system.annotations.SyncToClient; import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; -import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; import com.gregtechceu.gtceu.utils.GTTransferUtils; import net.minecraft.core.Direction; @@ -153,13 +152,13 @@ public static List handleRecipe(IO io, @Nullable GTRecipe recip for (MultiblockControllerMachine controller : partMachine.getControllers()) { RecipeLogic logic = controller.getTrait(RecipeLogic.class); if (logic != null && logic.getStartingRecipe() == recipe) { - logic.getConsumedInputs().addConsumedInput(GTRecipeCapabilities.ITEM, + logic.getConsumedInputs().addConsumedInput(ItemRecipeCapability.CAP, new SizedIngredient(Ingredient.of(copied), 1)); } } } else if (machine != null) machine.getTraitOptional(RecipeLogic.class) .map(RecipeLogic::getConsumedInputs) - .ifPresent(inputs -> inputs.addConsumedInput(GTRecipeCapabilities.ITEM, + .ifPresent(inputs -> inputs.addConsumedInput(ItemRecipeCapability.CAP, new SizedIngredient(Ingredient.of(copied), 1))); } } 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 d1b94ff269f..e9bb8c941a7 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 @@ -676,7 +676,7 @@ public void updateSound() { workingSound = null; } if (sound != null) { - workingSound = sound.playAutoReleasedSound( + workingSound = sound.value().playAutoReleasedSound( () -> getRLMachine().shouldWorkingPlaySound() && isWorking() && !getMachine().isRemoved() && getMachine().getLevel().isLoaded(getMachine().getBlockPos()) && MetaMachine.getMachine(getMachine().getLevel(), getMachine().getBlockPos()) == diff --git a/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java index 94ece51b375..f8a4778080b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/Placeholder.java @@ -3,13 +3,13 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException; import com.gregtechceu.gtceu.common.capability.PlaceholderSavedData; -import com.gregtechceu.gtceu.utils.FormattingUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import lombok.Getter; +import org.jetbrains.annotations.ApiStatus; import java.util.List; @@ -24,8 +24,9 @@ public abstract class Placeholder { public abstract MultiLineComponent apply(PlaceholderContext ctx, List args) throws PlaceholderException; + @ApiStatus.Internal public Placeholder(String str) { - this(GTCEu.id(FormattingUtil.toLowerCaseUnderscore(str))); + this(GTCEu.id(str)); } public Placeholder(ResourceLocation id) { 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 df17d8d47e4..3d638c260d4 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/api/placeholder/PlaceholderHandler.java @@ -67,10 +67,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/GTRecipe.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java index a872e2963c2..b058dc6748b 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipe.java @@ -325,18 +325,18 @@ public boolean hasTick() { public ChanceLogic getChanceLogicForCapability(RecipeCapability cap, IO io, boolean isTick) { if (io == IO.OUT) { if (isTick) { - return tickOutputChanceLogics.getOrDefault(cap, ChanceLogic.OR); + return tickOutputChanceLogics.getOrDefault(cap, ChanceLogic.OR.value()); } else { - return outputChanceLogics.getOrDefault(cap, ChanceLogic.OR); + return outputChanceLogics.getOrDefault(cap, ChanceLogic.OR.value()); } } else if (io == IO.IN) { if (isTick) { - return tickInputChanceLogics.getOrDefault(cap, ChanceLogic.OR); + return tickInputChanceLogics.getOrDefault(cap, ChanceLogic.OR.value()); } else { - return inputChanceLogics.getOrDefault(cap, ChanceLogic.OR); + return inputChanceLogics.getOrDefault(cap, ChanceLogic.OR.value()); } } - return ChanceLogic.OR; + return ChanceLogic.OR.value(); } public GTRecipeSerializer.RecipeIO getRecipeIO() { 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 c89242c5c06..bf1a8f3b3e8 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/GTRecipeType.java @@ -10,6 +10,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.data.recipes.RecipeOutput; @@ -24,8 +25,8 @@ import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import lombok.experimental.Tolerate; import org.jetbrains.annotations.ApiStatus; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -60,7 +61,7 @@ public class GTRecipeType implements RecipeType { @Nullable @Setter @Getter - protected SoundEntry sound; + protected Holder sound; @Getter protected List> dataInfos = new ArrayList<>(); @Getter @@ -137,6 +138,11 @@ public GTRecipeType setMaxSize(IO io, RecipeCapability cap, int max) { return this; } + @Tolerate + public GTRecipeType setSound(SoundEntry sound) { + return setSound(Holder.direct(sound)); + } + public GTRecipeType UI(UnaryOperator builder) { uiLayout = builder.apply(new GTRecipeTypeUILayout.Builder(this)).build(); return this; @@ -170,7 +176,7 @@ public String toString() { return registryName.toString(); } - public @NotNull Iterator searchRecipe(IRecipeCapabilityHolder holder, Predicate canHandle) { + public Iterator searchRecipe(IRecipeCapabilityHolder holder, Predicate canHandle) { if (!holder.hasCapabilityProxies()) return Collections.emptyIterator(); var iterator = db.iterator(holder, canHandle); if (iterator == null) { @@ -251,17 +257,17 @@ public GTRecipeType onRecipeBuild(BiConsumer onBu return this; } - public void addDataStickEntry(@NotNull String researchId, @NotNull GTRecipe recipe) { + public void addDataStickEntry(String researchId, GTRecipe recipe) { Collection collection = researchEntries.computeIfAbsent(researchId, (k) -> new ObjectOpenHashSet<>()); collection.add(recipe); } @Nullable - public Collection getDataStickEntry(@NotNull String researchId) { + public Collection getDataStickEntry(String researchId) { return researchEntries.get(researchId); } - public boolean removeDataStickEntry(@NotNull String researchId, @NotNull GTRecipe recipe) { + public boolean removeDataStickEntry(String researchId, GTRecipe recipe) { Collection collection = researchEntries.get(researchId); if (collection == null) return false; if (collection.remove(recipe)) { @@ -317,7 +323,7 @@ public Component getName() { return Component.translatable(getTranslationKey()); } - public @NotNull RecipeDB db() { + public RecipeDB db() { return db; } 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..ba531a40812 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 @@ -1,14 +1,14 @@ package com.gregtechceu.gtceu.api.recipe.chance.logic; -import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.api.recipe.content.ContentModifier; import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.neoforged.neoforge.registries.DeferredHolder; import com.google.common.collect.ImmutableList; import it.unimi.dsi.fastutil.ints.IntArrayList; @@ -31,7 +31,7 @@ public abstract class ChanceLogic { /** * Chanced Output Logic where any ingredients succeeding their roll will be produced */ - public static final ChanceLogic OR = new ChanceLogic("or") { + public static final DeferredHolder OR = register("or", new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -71,12 +71,12 @@ public abstract class ChanceLogic { public String toString() { return "ChanceLogic{OR}"; } - }; + }); /** * 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 DeferredHolder AND = register("and", new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -108,14 +108,14 @@ public String toString() { public String toString() { return "ChanceLogic{AND}"; } - }; + }); /** * Chanced Output Logic where only the first ingredient succeeding its roll will be produced * Deprecated following the rewrite of XOR */ @Deprecated - public static final ChanceLogic FIRST = new ChanceLogic("first") { + public static final DeferredHolder FIRST = register("first", new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -149,12 +149,12 @@ public String toString() { public String toString() { return "ChanceLogic{FIRST}"; } - }; + }); /** * 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 DeferredHolder XOR = register("xor", new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -245,12 +245,12 @@ public String toString() { public String toString() { return "ChanceLogic{XOR}"; } - }; + }); /** * Chanced Output Logic where nothing is produced */ - public static final ChanceLogic NONE = new ChanceLogic("none") { + public static final DeferredHolder NONE = register("none", new ChanceLogic() { @Override public @Unmodifiable List<@NotNull Content> roll(RecipeCapability cap, @@ -268,15 +268,7 @@ public String toString() { public String toString() { return "ChanceLogic{NONE}"; } - }; - - public ChanceLogic(ResourceLocation id) { - GTRegistries.register(GTRegistries.CHANCE_LOGICS, id, this); - } - - private ChanceLogic(String id) { - this(GTCEu.id(id)); - } + }); /** * @param entry the entry to get the complete chance for @@ -354,6 +346,10 @@ static void updateCachedChance(Object ingredient, @Nullable Object2IntMap cac @NotNull public abstract Component getTranslation(); + private static DeferredHolder register(String name, ChanceLogic logic) { + return GTRegistration.REGISTRATE.simple(name, GTRegistries.Keys.CHANCE_LOGIC, () -> logic); + } + @ApiStatus.Internal public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java index b01d57384c4..f06fd728115 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/content/Content.java @@ -91,7 +91,7 @@ public static void addChanceTooltips(RichTooltip tooltip, Content content, Chanc } else { float baseChanceFloat = 100f * content.chance() / content.maxChance(); - if (logic != ChanceLogic.NONE && logic != ChanceLogic.OR) { + if (logic != ChanceLogic.NONE.value() && logic != ChanceLogic.OR.value()) { tooltip.addLine(Component.translatable("gtceu.gui.content.chance_no_boost_logic", FormattingUtil.formatNumber2Places(baseChanceFloat), logic.getTranslation()) .withStyle(ChatFormatting.YELLOW)); diff --git a/src/main/java/com/gregtechceu/gtceu/api/recipe/package-info.java b/src/main/java/com/gregtechceu/gtceu/api/recipe/package-info.java new file mode 100644 index 00000000000..3ada506f7ec --- /dev/null +++ b/src/main/java/com/gregtechceu/gtceu/api/recipe/package-info.java @@ -0,0 +1,4 @@ +@NotNullByDefault +package com.gregtechceu.gtceu.api.recipe; + +import org.jetbrains.annotations.NotNullByDefault; 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..e64558a19a1 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,13 +2,24 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.block.MetaMachineBlock; +import com.gregtechceu.gtceu.api.cover.CoverDefinition; +import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; +import com.gregtechceu.gtceu.api.data.medicalcondition.Symptom; 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.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.builder.GTBlockBuilder; +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.builder.SoundEntryBuilder; +import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer; +import com.gregtechceu.gtceu.client.renderer.cover.SimpleCoverRenderer; import com.gregtechceu.gtceu.core.mixins.registrate.AbstractRegistrateAccessor; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; @@ -40,6 +51,7 @@ import com.tterrag.registrate.util.nullness.NonNullSupplier; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; @@ -157,16 +169,7 @@ public GTRegistrate registerEventListeners(IEventBus bus) { return this; } - protected

NoConfigBuilder createCreativeModeTab(P parent, String name, - Consumer config) { - return this.generic(parent, name, Registries.CREATIVE_MODE_TAB, () -> { - var builder = CreativeModeTab.builder() - .icon(() -> getAll(Registries.ITEM).stream().findFirst().map(ItemEntry::cast) - .map(ItemEntry::asStack).orElse(new ItemStack(Items.AIR))); - config.accept(builder); - return builder.build(); - }); - } + /// Machine Builders public MachineBuilder machine(String name, @@ -198,15 +201,33 @@ protected

NoConfigBuilder createCreativ blockEntityFactory); } - public SoundEntryBuilder sound(String name) { - return new SoundEntryBuilder(GTCEu.id(name)); + /// Cover Registration + + public RegistryEntry cover(String name, + CoverDefinition.CoverBehaviourProvider behaviorCreator, + Supplier> coverRenderer) { + return simple(name, GTRegistries.Keys.COVER, + () -> new CoverDefinition(makeResourceLocation(name), behaviorCreator, coverRenderer)); + } + + public RegistryEntry cover(String name, + CoverDefinition.CoverBehaviourProvider behaviorCreator) { + return cover(name, behaviorCreator, () -> () -> new SimpleCoverRenderer( + ResourceLocation.fromNamespaceAndPath(getModid(), "block/cover/" + name))); } - public SoundEntryBuilder sound(ResourceLocation name) { - return new SoundEntryBuilder(name); + /// Sound Builder + + public SoundEntryBuilder sound(String name) { + return sound(this, name); + } + + public

SoundEntryBuilder

sound(P parent, String name) { + return entry(name, callback -> new SoundEntryBuilder<>(this, parent, name, callback)); } - // Blocks + /// Block Builder + @Override public GTBlockBuilder block(NonNullFunction factory) { return block(this, factory); @@ -219,20 +240,47 @@ public GTBlockBuilder block(String name, } @Override - public GTBlockBuilder block(P parent, + @SuppressWarnings("NullableProblems") + public GTBlockBuilder block(@NotNull P parent, NonNullFunction factory) { return block(parent, currentName(), factory); } @Override - public GTBlockBuilder block(P parent, String name, + @SuppressWarnings("NullableProblems") + public GTBlockBuilder block(@NotNull P parent, String name, NonNullFunction factory) { return (GTBlockBuilder) entry(name, callback -> GTBlockBuilder.create(this, parent, name, callback, factory)); } + /// Medical Conditions + + public RegistryEntry medicalCondition(String name, int color, + int maxProgression, + MedicalCondition.IdleProgressionType progressionType, + float progressionRate, + boolean canBePermanent, + Consumer recipeModifier, + Symptom.ConfiguredSymptom... symptoms) { + return simple(name, GTRegistries.Keys.MEDICAL_CONDITION, () -> new MedicalCondition(makeResourceLocation(name), + color, maxProgression, progressionType, progressionRate, canBePermanent, recipeModifier, symptoms)); + } + + public RegistryEntry medicalCondition(String name, int color, + int maxProgression, + MedicalCondition.IdleProgressionType progressionType, + float progressionRate, + boolean canBePermanent, + Symptom.ConfiguredSymptom... symptoms) { + return simple(name, GTRegistries.Keys.MEDICAL_CONDITION, () -> new MedicalCondition(makeResourceLocation(name), + color, maxProgression, progressionType, progressionRate, canBePermanent, symptoms)); + } + + /// Creative Mode Tabs + 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; @@ -273,7 +321,20 @@ protected RegistryEntry accept(String name, ResourceKey NoConfigBuilder defaultCreativeTab(P parent, String name, + protected

NoConfigBuilder createCreativeModeTab(P parent, String name, + Consumer config) { + return this.generic(parent, name, Registries.CREATIVE_MODE_TAB, () -> { + var builder = CreativeModeTab.builder() + .icon(() -> getAll(Registries.ITEM).stream().findFirst().map(ItemEntry::cast) + .map(ItemEntry::asStack).orElse(new ItemStack(Items.AIR))); + config.accept(builder); + return builder.build(); + }); + } + + @Override + @SuppressWarnings("NullableProblems") + public

NoConfigBuilder defaultCreativeTab(@NotNull P parent, String name, Consumer config) { return createCreativeModeTab(parent, name, config); } 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 97% 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 17dfee8d336..f45deecd9c1 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; @@ -18,6 +18,9 @@ import java.util.function.Supplier; +import javax.annotation.ParametersAreNonnullByDefault; + +@ParametersAreNonnullByDefault public class GTBlockBuilder extends BlockBuilder { // spotless:off 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 dcfdfc24aa5..dfd71b4536a 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; @@ -21,6 +21,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 98% 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 9ae220fe055..cc0ef64ccda 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.MethodsReturnNonnullByDefault; 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 58% 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 39a709fbee2..0e6582622a8 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; @@ -7,6 +7,8 @@ import com.gregtechceu.gtceu.api.sound.SoundEntry; import com.gregtechceu.gtceu.api.sound.WrappedSoundEntry; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; @@ -15,6 +17,10 @@ import net.minecraft.sounds.SoundSource; import com.google.gson.JsonObject; +import com.tterrag.registrate.AbstractRegistrate; +import com.tterrag.registrate.builders.AbstractBuilder; +import com.tterrag.registrate.builders.BuilderCallback; +import com.tterrag.registrate.util.entry.RegistryEntry; import org.jetbrains.annotations.Nullable; import java.nio.file.Path; @@ -22,7 +28,8 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; -public class SoundEntryBuilder { +@SuppressWarnings("unused") +public class SoundEntryBuilder

extends AbstractBuilder> { public static class SoundEntryProvider implements DataProvider { @@ -55,7 +62,6 @@ public CompletableFuture generate(Path path, CachedOutput cache) { } } - protected ResourceLocation id; @Nullable protected String subtitle = "unregistered"; protected SoundSource category = SoundSource.BLOCKS; @@ -63,59 +69,69 @@ public CompletableFuture generate(Path path, CachedOutput cache) { protected List variants; protected int attenuationDistance; - public SoundEntryBuilder(ResourceLocation id) { + public SoundEntryBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback) { + super(owner, parent, name, callback, GTRegistries.Keys.SOUND); wrappedEvents = new ArrayList<>(); variants = new ArrayList<>(); - this.id = id; } - public SoundEntryBuilder subtitle(String subtitle) { + public SoundEntryBuilder

subtitle(String subtitle) { this.subtitle = subtitle; return this; } - public SoundEntryBuilder attenuationDistance(int distance) { + public SoundEntryBuilder

attenuationDistance(int distance) { this.attenuationDistance = distance; return this; } - public SoundEntryBuilder noSubtitle() { + public SoundEntryBuilder

noSubtitle() { this.subtitle = null; return this; } - public SoundEntryBuilder category(SoundSource category) { + public SoundEntryBuilder

category(SoundSource category) { this.category = category; return this; } - public SoundEntryBuilder addVariant(String name) { + public SoundEntryBuilder

addVariant(String name) { return addVariant(GTCEu.id(name)); } - public SoundEntryBuilder addVariant(ResourceLocation id) { + public SoundEntryBuilder

addVariant(ResourceLocation id) { variants.add(id); return this; } - public SoundEntryBuilder playExisting(Supplier event, float volume, float pitch) { + public SoundEntryBuilder

playExisting(Supplier event, float volume, float pitch) { wrappedEvents.add(new ConfiguredSoundEvent(event, volume, pitch)); return this; } - public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) { + public SoundEntryBuilder

playExisting(SoundEvent event, float volume, float pitch) { return playExisting(() -> event, volume, pitch); } - public SoundEntryBuilder playExisting(SoundEvent event) { + public SoundEntryBuilder

playExisting(SoundEvent event) { return playExisting(event, 1, 1); } - public SoundEntry build() { + @Override + protected SoundEntry createEntry() { 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); + new CustomSoundEntry(ResourceLocation.fromNamespaceAndPath(getOwner().getModid(), getName()), variants, + subtitle, category, attenuationDistance) : + new WrappedSoundEntry(ResourceLocation.fromNamespaceAndPath(getOwner().getModid(), getName()), subtitle, + wrappedEvents, category, attenuationDistance); + entry.prepare(); + entry.register( + soundEvent -> Registry.register(BuiltInRegistries.SOUND_EVENT, soundEvent.getLocation(), soundEvent)); return entry; } + + @Override + public RegistryEntry register() { + return super.register(); + } } 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/api/sound/SoundEntry.java b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java index cbc2701fc4c..127d86fe406 100644 --- a/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java +++ b/src/main/java/com/gregtechceu/gtceu/api/sound/SoundEntry.java @@ -14,13 +14,16 @@ import net.neoforged.api.distmarker.OnlyIn; import com.google.gson.JsonObject; +import lombok.Getter; import java.util.function.BooleanSupplier; import java.util.function.Consumer; public abstract class SoundEntry { + @Getter protected ResourceLocation id; + @Getter protected String subtitle; protected SoundSource category; protected int attenuationDistance; @@ -41,21 +44,13 @@ public SoundEntry(ResourceLocation id, String subtitle, SoundSource category, in public abstract SoundEvent getMainEvent(); public String getSubtitleKey() { - return id.getNamespace() + ".subtitle." + id.getPath(); - } - - public ResourceLocation getId() { - return id; + return id.toLanguageKey("subtitle"); } public boolean hasSubtitle() { return subtitle != null; } - public String getSubtitle() { - return subtitle; - } - public void playOnServer(Level world, Vec3i pos) { playOnServer(world, pos, 1, 1); } 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 50184f06b4f..a5167f367a8 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/CommonProxy.java b/src/main/java/com/gregtechceu/gtceu/common/CommonProxy.java index ddac1fae085..50a342f286d 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; @@ -119,7 +117,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; @@ -143,14 +140,15 @@ public static void init(final IEventBus modBus) { GTRegistries.init(modBus); REGISTRATE.registerEventListeners(modBus); + GTElements.init(); MaterialIconSet.init(); MaterialIconType.init(); - initMaterials(); + GTMaterials.init(); GTMedicalConditions.init(); TagPrefix.init(); - GTSoundEntries.init(modBus); + GTSoundEntries.init(); GTDamageTypes.init(); GTPlaceholders.init(); @@ -164,7 +162,7 @@ public static void init(final IEventBus modBus) { GTBlocks.init(); GTFluids.init(); - GTDimensionMarkers.init(); + GTDimensionMarkers.init(modBus); GTRecipeCapabilities.init(); GTRecipeConditions.init(); ChanceLogic.init(); @@ -175,8 +173,8 @@ public static void init(final IEventBus modBus) { GTFoods.init(); GTToolTiers.init(); GTToolBehaviors.init(); - GTDataComponents.DATA_COMPONENTS.register(modBus); - GTArmorMaterials.ARMOR_MATERIALS.register(modBus); + GTDataComponents.init(modBus); + GTArmorMaterials.init(modBus); GTItems.init(); GTMachineUtils.init(); @@ -184,13 +182,11 @@ public static void init(final IEventBus modBus) { GTMachines.init(); GTEntityTypes.init(); - GTIngredientTypes.ITEM_INGREDIENT_TYPES.register(modBus); - GTIngredientTypes.FLUID_INGREDIENT_TYPES.register(modBus); - GTRecipeSerializers.RECIPE_SERIALIZERS.register(modBus); + GTIngredientTypes.init(modBus); + GTRecipeSerializers.init(modBus); - GTCommandArguments.COMMAND_ARGUMENT_TYPES.register(modBus); - GTMobEffects.MOB_EFFECTS.register(modBus); - GTParticleTypes.PARTICLE_TYPES.register(modBus); + GTMobEffects.init(modBus); + GTParticleTypes.init(modBus); WorldGenLayers.init(); GregTechDatagen.initPost(); @@ -206,9 +202,7 @@ public static void init(final IEventBus modBus) { CustomBlockRotations.init(); SyncedKeyMappings.init(); MachineOwner.init(); - - GTCreativeModeTabs.init(); - GTAttachmentTypes.ATTACHMENT_TYPES.register(modBus); + GTAttachmentTypes.init(modBus); FusionReactorMachine.registerFusionTier(GTValues.LuV, "MKI"); FusionReactorMachine.registerFusionTier(GTValues.ZPM, "MKII"); @@ -220,14 +214,6 @@ public static void init(final IEventBus modBus) { GTGuiTheme.registerThemes(); SpoilableBehavior.init(); - - AddonFinder.getAddonList().forEach(IGTAddon::gtInitComplete); - } - - @ApiStatus.Internal - public static void initMaterials() { - GTCEu.LOGGER.info("Registering GTCEu Materials"); - GTMaterials.init(); } // Fire post material events after all other material registry events. diff --git a/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java b/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java index 172080e6f5b..3a47cb62e50 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java +++ b/src/main/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTracker.java @@ -80,7 +80,7 @@ public void progressRelatedCondition(@NotNull MaterialEntry materialEntry, int c HazardProperty materialHazard = materialEntry.material().getProperty(PropertyKey.HAZARD); float strength = (float) (materialEntry.getMaterialAmount() / GTValues.M) * count * materialHazard.progressionMultiplier; - progressCondition(materialHazard.condition, strength); + progressCondition(materialHazard.condition.value(), strength); } /** 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..ac2789fe29b 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,7 +12,7 @@ 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 final DeferredHolder, AttachmentType> MEDICAL_CONDITION_TRACKER = ATTACHMENT_TYPES @@ -21,4 +22,8 @@ public class GTAttachmentTypes { } return null; }).build()); + + public static void init(IEventBus modBus) { + ATTACHMENT_TYPES.register(modBus); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java deleted file mode 100644 index cd7e8a47632..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCommandArguments.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.gregtechceu.gtceu.common.data; - -import com.gregtechceu.gtceu.GTCEu; - -import net.minecraft.commands.synchronization.ArgumentTypeInfo; -import net.minecraft.core.registries.Registries; -import net.neoforged.bus.api.IEventBus; -import net.neoforged.neoforge.registries.DeferredRegister; - -import com.mojang.brigadier.arguments.ArgumentType; - -@SuppressWarnings("unused") -public class GTCommandArguments { - - public static final DeferredRegister> COMMAND_ARGUMENT_TYPES = DeferredRegister - .create(Registries.COMMAND_ARGUMENT_TYPE, GTCEu.MOD_ID); - - @SuppressWarnings({ "SameParameterValue", "unchecked" }) - private static > Class fixClassType(Class type) { - return (Class) type; - } - - public static void init(IEventBus modBus) { - COMMAND_ARGUMENT_TYPES.register(modBus); - } -} 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..b9504cbf052 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTCovers.java @@ -4,7 +4,7 @@ import com.gregtechceu.gtceu.api.GTCEuAPI; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.cover.CoverDefinition; -import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate; import com.gregtechceu.gtceu.client.renderer.cover.*; import com.gregtechceu.gtceu.common.cover.*; import com.gregtechceu.gtceu.common.cover.detector.*; @@ -16,14 +16,18 @@ import com.gregtechceu.gtceu.common.cover.voiding.FluidVoidingCover; import com.gregtechceu.gtceu.common.cover.voiding.ItemVoidingCover; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.core.Holder; +import com.tterrag.registrate.util.entry.RegistryEntry; import it.unimi.dsi.fastutil.ints.Int2ObjectFunction; import java.util.Arrays; import java.util.Locale; import java.util.function.Supplier; +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; + +@SuppressWarnings("unused") public class GTCovers { public static final int[] ALL_TIERS = GTValues.tiersBetween(GTValues.LV, @@ -31,23 +35,26 @@ 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, + public static final Holder FACADE = REGISTRATE.cover("facade", FacadeCover::new, () -> () -> FacadeCoverRenderer.INSTANCE); - public final static CoverDefinition ITEM_FILTER = register("item_filter", ItemFilterCover::new); - public final static CoverDefinition FLUID_FILTER = register("fluid_filter", FluidFilterCover::new); + public static final Holder ITEM_FILTER = REGISTRATE.cover("item_filter", ItemFilterCover::new); + public static final Holder FLUID_FILTER = REGISTRATE.cover("fluid_filter", FluidFilterCover::new); - 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 static final Holder INFINITE_WATER = REGISTRATE.cover("infinite_water", + InfiniteWaterCover::new); + public static final Holder ENDER_FLUID_LINK = REGISTRATE.cover("ender_fluid_link", + EnderFluidLinkCover::new); + public static final Holder ENDER_ITEM_LINK = REGISTRATE.cover("ender_item_link", + EnderItemLinkCover::new); + public static final Holder ENDER_REDSTONE_LINK = REGISTRATE.cover("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", + public static final Holder SHUTTER = REGISTRATE.cover("shutter", ShutterCover::new); + public static final Holder COVER_STORAGE = REGISTRATE.cover("storage", StorageCover::new); + public static final Holder WIRELESS_TRANSMITTER = REGISTRATE.cover("wireless_transmitter", WirelessTransmitterCover::new); - public final static CoverDefinition[] CONVEYORS = registerTiered("conveyor", ConveyorCover::new, + public static final Holder[] CONVEYORS = registerTiered(REGISTRATE, "conveyor", ConveyorCover::new, () -> tier -> new IOCoverRenderer( GTCEu.id("block/cover/conveyor"), null, @@ -55,7 +62,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 static final Holder[] ROBOT_ARMS = registerTiered(REGISTRATE, "robot_arm", + RobotArmCover::new, () -> tier -> new IOCoverRenderer( GTCEu.id("block/cover/arm"), null, @@ -63,84 +71,70 @@ public class GTCovers { GTCEu.id("block/cover/arm_inverted_emissive")), ALL_TIERS); - public final static CoverDefinition[] PUMPS = registerTiered("pump", PumpCover::new, + public static final Holder[] PUMPS = registerTiered(REGISTRATE, "pump", PumpCover::new, () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition[] FLUID_REGULATORS = registerTiered("fluid_regulator", FluidRegulatorCover::new, + public static final Holder[] FLUID_REGULATORS = registerTiered(REGISTRATE, "fluid_regulator", + FluidRegulatorCover::new, () -> tier -> IOCoverRenderer.PUMP_LIKE_COVER_RENDERER, ALL_TIERS); - public final static CoverDefinition COMPUTER_MONITOR = register("computer_monitor", ComputerMonitorCover::new); + public static final Holder COMPUTER_MONITOR = REGISTRATE.cover("computer_monitor", + ComputerMonitorCover::new); - public final static CoverDefinition MACHINE_CONTROLLER = register("machine_controller", + public static final Holder MACHINE_CONTROLLER = REGISTRATE.cover("machine_controller", MachineControllerCover::new); // Voiding - public final static CoverDefinition ITEM_VOIDING = register("item_voiding", ItemVoidingCover::new); - public final static CoverDefinition ITEM_VOIDING_ADVANCED = register("item_voiding_advanced", + public static final Holder ITEM_VOIDING = REGISTRATE.cover("item_voiding", ItemVoidingCover::new); + public static final Holder ITEM_VOIDING_ADVANCED = REGISTRATE.cover("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 static final Holder FLUID_VOIDING = REGISTRATE.cover("fluid_voiding", + FluidVoidingCover::new); + public static final Holder FLUID_VOIDING_ADVANCED = REGISTRATE.cover("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 static final Holder ACTIVITY_DETECTOR = REGISTRATE.cover("activity_detector", + ActivityDetectorCover::new); + public static final Holder ACTIVITY_DETECTOR_ADVANCED = REGISTRATE.cover( + "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 static final Holder FLUID_DETECTOR = REGISTRATE.cover("fluid_detector", + FluidDetectorCover::new); + public static final Holder FLUID_DETECTOR_ADVANCED = REGISTRATE.cover("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 static final Holder ITEM_DETECTOR = REGISTRATE.cover("item_detector", + ItemDetectorCover::new); + public static final Holder ITEM_DETECTOR_ADVANCED = REGISTRATE.cover("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 static final Holder ENERGY_DETECTOR = REGISTRATE.cover("energy_detector", + EnergyDetectorCover::new); + public static final Holder ENERGY_DETECTOR_ADVANCED = REGISTRATE.cover("energy_detector_advanced", AdvancedEnergyDetectorCover::new); - public final static CoverDefinition MAINTENANCE_DETECTOR = register("maintenance_detector", + public static final Holder MAINTENANCE_DETECTOR = REGISTRATE.cover("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 static final Holder SOLAR_PANEL_BASIC = REGISTRATE.cover("solar_panel", + CoverSolarPanel::new); + public static final Holder[] SOLAR_PANEL = registerTiered(REGISTRATE, "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); - } - - 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 CoverDefinition[] registerTiered(String id, - CoverDefinition.TieredCoverBehaviourProvider behaviorCreator, - Supplier> coverRenderer, - int... tiers) { + @SuppressWarnings("unchecked") + public static Holder[] registerTiered(GTRegistrate registrate, 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), + return registrate.cover(name, (def, coverable, side) -> behaviorCreator.create(def, coverable, side, tier), () -> () -> coverRenderer.get().apply(tier)); - }).toArray(CoverDefinition[]::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); + }).toArray(RegistryEntry[]::new); } 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..61c658f22cb 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,15 @@ 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.core.Holder; import net.minecraft.world.level.block.Block; +import net.neoforged.bus.api.IEventBus; +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; @@ -26,28 +21,19 @@ public class GTDimensionMarkers { REGISTRATE.resetCreativeModeTab(); } + private static final DeferredRegister BASE_MC_DIMENSION_MARKERS = DeferredRegister + .create(GTRegistries.Keys.DIMENSION_MARKER, "minecraft"); + 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 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); - } - - DimensionMarker marker = new DimensionMarker(tier, supplier, overrideName); - GTRegistries.register(GTRegistries.DIMENSION_MARKERS, dimension.location(), marker); - return marker; - } + public static final Holder OVERWORLD = BASE_MC_DIMENSION_MARKERS.register("overworld", + () -> new DimensionMarker(0, () -> OVERWORLD_MARKER, null)); + public static final Holder NETHER = BASE_MC_DIMENSION_MARKERS.register("nether", + () -> new DimensionMarker(0, () -> NETHER_MARKER, null)); + public static final Holder END = BASE_MC_DIMENSION_MARKERS.register("end", + () -> new DimensionMarker(0, () -> END_MARKER, null)); private static BlockEntry createMarker(String name) { return REGISTRATE.block("%s_marker".formatted(name), Block::new) @@ -65,5 +51,7 @@ private static BlockEntry createMarker(String name) { .register(); } - public static void init() {} + public static void init(IEventBus modBus) { + BASE_MC_DIMENSION_MARKERS.register(modBus); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTJukeboxSongs.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTJukeboxSongs.java index 4b13d8c26da..f797e94e6ed 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTJukeboxSongs.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTJukeboxSongs.java @@ -15,7 +15,7 @@ public class GTJukeboxSongs { public static void bootstrap(BootstrapContext ctx) { ctx.register(SUS, new JukeboxSong( - BuiltInRegistries.SOUND_EVENT.wrapAsHolder(GTSoundEntries.SUS_RECORD.getMainEvent()), + BuiltInRegistries.SOUND_EVENT.wrapAsHolder(GTSoundEntries.SUS_RECORD.value().getMainEvent()), Component.translatable("item.gtceu.sus_record.desc"), 820, 1)); } 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..7fe39ca8802 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMedicalConditions.java @@ -1,61 +1,64 @@ 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 net.neoforged.neoforge.registries.DeferredHolder; 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 { + // spotless:off + // General Conditions - public static final MedicalCondition NONE = register("none", 0xffffff, 0, + public static final DeferredHolder 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 DeferredHolder CHEMICAL_BURNS = REGISTRATE.medicalCondition("chemical_burns", 0xbc305a, 300, MedicalCondition.IdleProgressionType.HEAL, 2, false, - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS)) - .setRecipeModifier(builder -> builder + builder -> builder .outputFluids(DilutedHydrochloricAcid.getFluid(500)) - .outputFluids(DilutedSulfuricAcid.getFluid(750))); + .outputFluids(DilutedSulfuricAcid.getFluid(750)), + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS)); + // 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 DeferredHolder POISON = REGISTRATE.medicalCondition("poison", 0xA36300, 600, MedicalCondition.IdleProgressionType.HEAL, 2, true, + builder -> builder.outputFluids(SulfurTrioxide.getFluid(1000)), new Symptom.ConfiguredSymptom(Symptom.WEAK_POISONING), - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)) - .setRecipeModifier(builder -> builder - .outputFluids(SulfurTrioxide.getFluid(1000))); + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)); + // 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 DeferredHolder 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))); + builder -> builder.outputFluids(NitricOxide.getFluid(1000)), + new Symptom.ConfiguredSymptom(Symptom.WEAK_POISONING, 6, 1800)); + // 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 DeferredHolder IRRITANT = REGISTRATE.medicalCondition("irritant", 0x02512f, 600, MedicalCondition.IdleProgressionType.HEAL, 5, false, + builder -> builder.outputItems(dust, DarkAsh, 4), new Symptom.ConfiguredSymptom(Symptom.RANDOM_DAMAGE), - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)) - .setRecipeModifier(builder -> builder - .outputItems(dust, DarkAsh, 4)); + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 300, 600)); + // 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 DeferredHolder NAUSEA = REGISTRATE.medicalCondition("nausea", 0x1D4A00, 600, MedicalCondition.IdleProgressionType.HEAL, 5, false, - new Symptom.ConfiguredSymptom(Symptom.NAUSEA, 1, 420, 600)) - .setRecipeModifier(builder -> builder - .outputFluids(CarbonMonoxide.getFluid(50))); + builder -> builder.outputFluids(CarbonMonoxide.getFluid(50)), + new Symptom.ConfiguredSymptom(Symptom.NAUSEA, 1, 420, 600)); + /** * All effects: *

    @@ -75,7 +78,7 @@ 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 DeferredHolder 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,58 +89,41 @@ 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 DeferredHolder ASBESTOSIS = REGISTRATE.medicalCondition("asbestosis", 0xe3e3e3, 5000, MedicalCondition.IdleProgressionType.HEAL, 1, true, + builder -> builder.outputItems(dust, Asbestos, 4), // 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, + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 1200, 5000)); + + public static final DeferredHolder ARSENICOSIS = REGISTRATE.medicalCondition("arsenicosis", 0xbd4b15, 1000, MedicalCondition.IdleProgressionType.HEAL, 1, true, + builder -> builder.outputItems(dust, Arsenic, 4), new Symptom.ConfiguredSymptom(Symptom.WITHER), new Symptom.ConfiguredSymptom(Symptom.NAUSEA), new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 2, 500, 1000), - new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 330, 1000)) + new Symptom.ConfiguredSymptom(Symptom.WEAKNESS, 2, 330, 1000)); // 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, + + public static final DeferredHolder METHANOL_POISONING = REGISTRATE.medicalCondition("methanol_poisoning", 0xaa8800, 600, MedicalCondition.IdleProgressionType.HEAL, .5f, true, + builder -> builder.outputFluids(Methanol.getFluid(1000)), 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", + new Symptom.ConfiguredSymptom(Symptom.SLOWNESS, 1, 150, 600)); + + public static final DeferredHolder CARBON_MONOXIDE_POISONING = REGISTRATE.medicalCondition("carbon_monoxide_poisoning", 0x041525, 2000, MedicalCondition.IdleProgressionType.HEAL, 1, true, + builder -> builder.outputFluids(CarbonMonoxide.getFluid(1000)), 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)); + + + // spotless:on 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 8ac0dca2a3a..15f93c9ab28 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTMobEffects.java @@ -12,7 +12,7 @@ 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", 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..a21306aa601 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTParticleTypes.java @@ -17,7 +17,7 @@ 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 final DeferredHolder, ParticleType> HAZARD_PARTICLE = PARTICLE_TYPES 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 c36b7883561..cc2380c96a7 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTPlaceholders.java @@ -13,6 +13,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; @@ -24,6 +25,7 @@ import com.gregtechceu.gtceu.common.item.modules.ImageModuleBehaviour; import com.gregtechceu.gtceu.common.machine.multiblock.part.MaintenanceHatchPartMachine; import com.gregtechceu.gtceu.common.machine.multiblock.part.monitor.AdvancedMonitorPartMachine; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.integration.ae2.GTAEPlaceholders; import com.gregtechceu.gtceu.integration.cctweaked.CCTweakedPlugin; @@ -98,9 +100,13 @@ public static int countItems(@Nullable Filter filter, @Nullable IItem return cnt; } + private static void registerPlaceholder(Placeholder placeholder) { + GTRegistration.REGISTRATE.simple(placeholder.getName(), GTRegistries.Keys.PLACEHOLDER, () -> placeholder); + } + public static void init() { RegistrateDistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> GTPlaceholders::initRenderers); - PlaceholderHandler.addPlaceholder(new Placeholder("energy") { + registerPlaceholder(new Placeholder("energy") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -119,7 +125,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("energyCapacity") { + registerPlaceholder(new Placeholder("energy_capacity") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -137,7 +143,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("calc") { + registerPlaceholder(new Placeholder("calc") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -154,7 +160,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("itemCount") { + registerPlaceholder(new Placeholder("item_count") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -188,7 +194,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("fluidCount") { + registerPlaceholder(new Placeholder("fluid_count") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -208,7 +214,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("if") { + registerPlaceholder(new Placeholder("if") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -232,7 +238,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("color") { + registerPlaceholder(new Placeholder("color") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -243,7 +249,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return new MultiLineComponent(args.get(1).stream().map(c -> c.withStyle(color)).toList()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("underline") { + registerPlaceholder(new Placeholder("underline") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -253,7 +259,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.UNDERLINE)).toList()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("strike") { + registerPlaceholder(new Placeholder("strike") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -263,7 +269,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.STRIKETHROUGH)).toList()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("obf") { + registerPlaceholder(new Placeholder("obf") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -273,7 +279,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, args.getFirst().stream().map(c -> c.withStyle(ChatFormatting.OBFUSCATED)).toList()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("random") { + registerPlaceholder(new Placeholder("random") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -283,7 +289,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, PlaceholderUtils.toInt(args.getFirst()), PlaceholderUtils.toInt(args.get(1)))); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("repeat") { + registerPlaceholder(new Placeholder("repeat") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -306,7 +312,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("block") { + registerPlaceholder(new Placeholder("block") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -320,7 +326,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("tick") { + registerPlaceholder(new Placeholder("tick") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -334,7 +340,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("select") { + registerPlaceholder(new Placeholder("select") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -352,7 +358,7 @@ public boolean isPure() { }); if (!GTCEu.Mods.isCreateLoaded() || !ConfigHolder.INSTANCE.compat.createCompat) { - PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { + registerPlaceholder(new Placeholder("redstone") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -374,9 +380,8 @@ public MultiLineComponent apply(PlaceholderContext ctx, throw new InvalidArgsException(); } }); - } - PlaceholderHandler.addPlaceholder(new Placeholder("previousText") { + registerPlaceholder(new Placeholder("previous_text") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -393,7 +398,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("progress") { + registerPlaceholder(new Placeholder("progress") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -411,7 +416,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("maxProgress") { + registerPlaceholder(new Placeholder("max_progress") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -429,7 +434,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("maintenance") { + registerPlaceholder(new Placeholder("maintenance") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -447,7 +452,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("active") { + registerPlaceholder(new Placeholder("active") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -465,7 +470,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("voltage") { + registerPlaceholder(new Placeholder("voltage") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -483,7 +488,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("amperage") { + registerPlaceholder(new Placeholder("amperage") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -501,7 +506,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("count") { + registerPlaceholder(new Placeholder("count") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -520,7 +525,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("data") { + registerPlaceholder(new Placeholder("data") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -533,15 +538,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, 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); + stack = ctx.itemStackHandler().getStackInSlot(slot - 1); int capacity = -1; DataItem component = stack.get(GTDataComponents.DATA_ITEM); if (component != null) capacity = component.capacity(); @@ -585,7 +582,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, } } }); - PlaceholderHandler.addPlaceholder(new Placeholder("combine") { + registerPlaceholder(new Placeholder("combine") { @Override public MultiLineComponent apply(PlaceholderContext ctx, List args) { @@ -602,7 +599,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("nbt") { + registerPlaceholder(new Placeholder("nbt") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -620,7 +617,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("toChars") { + registerPlaceholder(new Placeholder("to_chars") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -638,7 +635,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("toAscii") { + registerPlaceholder(new Placeholder("to_ascii") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -654,7 +651,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("fromAscii") { + registerPlaceholder(new Placeholder("from_ascii") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -668,7 +665,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("subList") { + registerPlaceholder(new Placeholder("sub_list") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -690,7 +687,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("cmp") { + registerPlaceholder(new Placeholder("cmp") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -715,7 +712,7 @@ public boolean isPure() { } }); - PlaceholderHandler.addPlaceholder(new Placeholder("bf") { + registerPlaceholder(new Placeholder("bf") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -800,7 +797,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, default -> throw new PlaceholderException(Component .translatable("gtceu.computer_monitor_cover.error.bf_invalid", i).getString()); } - } catch (Exception e) { + } catch (Exception ignored) { } if (Character.isDigit(code.charAt(i))) { @@ -812,7 +809,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, } }); - PlaceholderHandler.addPlaceholder(new Placeholder("cmd") { + registerPlaceholder(new Placeholder("cmd") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -877,7 +874,7 @@ public boolean shouldInformAdmins() { return output; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("tm") { + registerPlaceholder(new Placeholder("tm") { @Override public MultiLineComponent apply(PlaceholderContext ctx, List args) { @@ -889,7 +886,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("formatInt") { + registerPlaceholder(new Placeholder("format_int") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -915,7 +912,7 @@ public boolean isPure() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("click") { + registerPlaceholder(new Placeholder("click") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -936,7 +933,7 @@ public boolean isView() { return true; } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ender") { + registerPlaceholder(new Placeholder("ender") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1028,7 +1025,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, } } }); - PlaceholderHandler.addPlaceholder(new Placeholder("eval") { + registerPlaceholder(new Placeholder("eval") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1042,7 +1039,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, } }); - PlaceholderHandler.addPlaceholder(new Placeholder("module") { + registerPlaceholder(new Placeholder("module") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1065,7 +1062,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, (CompoundTag) stack.save(ctx.level().registryAccess()))); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("setImage") { + registerPlaceholder(new Placeholder("set_image") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1086,7 +1083,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.empty(); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("rect") { + registerPlaceholder(new Placeholder("rect") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1110,7 +1107,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, renderData)); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("quad") { + registerPlaceholder(new Placeholder("quad") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1144,7 +1141,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, renderData)); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("item") { + registerPlaceholder(new Placeholder("item") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1156,7 +1153,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.literal(ctx.itemStackHandler().getStackInSlot(slot - 1).toString()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("blockNbt") { + registerPlaceholder(new Placeholder("block_nbt") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1180,7 +1177,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return tag == null ? MultiLineComponent.empty() : MultiLineComponent.literal(tag.toString()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("setTargetSlot") { + registerPlaceholder(new Placeholder("set_target_slot") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -1199,7 +1196,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.empty(); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("targetSlot") { + registerPlaceholder(new Placeholder("target_slot") { @Override public MultiLineComponent apply(PlaceholderContext ctx, 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..ea3f1d41792 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeCapabilities.java @@ -8,19 +8,23 @@ import net.neoforged.neoforge.common.crafting.SizedIngredient; import net.neoforged.neoforge.fluids.crafting.SizedFluidIngredient; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; + public class GTRecipeCapabilities { - 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); + // spotless:off + public final static RegistryEntry, RecipeCapability> ITEM = register(ItemRecipeCapability.CAP); + public final static RegistryEntry, RecipeCapability> FLUID = register(FluidRecipeCapability.CAP); + public final static RegistryEntry, RecipeCapability> BLOCK_STATE = register(BlockStateRecipeCapability.CAP); + public final static RegistryEntry, RecipeCapability> EU = register(EURecipeCapability.CAP); + public final static RegistryEntry, RecipeCapability> CWU = register(CWURecipeCapability.CAP); + //spotless:on + + public static void init() {} + + private static > RegistryEntry, T> register(T cap) { + return REGISTRATE.simple(cap.id.getPath(), GTRegistries.Keys.RECIPE_CAPABILITY, () -> cap); } } 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..cc98474af51 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeConditions.java @@ -5,31 +5,33 @@ import com.gregtechceu.gtceu.api.recipe.condition.RecipeConditionType; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.recipe.condition.*; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.mojang.serialization.MapCodec; +import com.tterrag.registrate.util.entry.RegistryEntry; public final class GTRecipeConditions { private GTRecipeConditions() {} // 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 final RegistryEntry, RecipeConditionType> BIOME = register("biome", BiomeCondition::new, BiomeCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> DIMENSION = register("dimension", DimensionCondition::new, DimensionCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> BIOME_TAG = register("biome_tag", BiomeTagCondition::new, BiomeTagCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> POSITION_Y = register("pos_y", PositionYCondition::new, PositionYCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> RAINING = register("rain", RainingCondition::new, RainingCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> ADJACENT_FLUID = register("adjacent_fluid", AdjacentFluidCondition::new, AdjacentFluidCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> ADJACENT_BLOCK = register("adjacent_block", AdjacentBlockCondition::new, AdjacentBlockCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> THUNDER = register("thunder", ThunderCondition::new, ThunderCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> VENT = register("steam_vent", VentCondition::new, VentCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> CLEANROOM = register("cleanroom", CleanroomCondition::new, CleanroomCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> EU_TO_START = register("eu_to_start", EUToStartCondition::new, EUToStartCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> RESEARCH = register("research", ResearchCondition::new, ResearchCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> ENVIRONMENTAL_HAZARD = register("environmental_hazard", EnvironmentalHazardCondition::new, EnvironmentalHazardCondition.CODEC); + public static final RegistryEntry, RecipeConditionType> DAYTIME = register("daytime", DaytimeCondition::new, DaytimeCondition.CODEC); + public static RegistryEntry, RecipeConditionType> FTB_QUEST; // public static RecipeConditionType GAMESTAGE; - public static RecipeConditionType HERACLES_QUEST; + public static RegistryEntry, RecipeConditionType> HERACLES_QUEST; public static void init() { if (GTCEu.Mods.isFTBQuestsLoaded()) { @@ -44,10 +46,11 @@ public static void init() { } // 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)); + private static < + T extends RecipeCondition> RegistryEntry, RecipeConditionType> register(String name, + RecipeConditionType.ConditionFactory factory, + MapCodec codec) { + return GTRegistration.REGISTRATE.simple(name, GTRegistries.Keys.RECIPE_CONDITION, + () -> new RecipeConditionType<>(factory, codec)); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index a4bb514ea17..d3ade870231 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; +import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.item.component.ISpoilableItem; import com.gregtechceu.gtceu.api.item.component.SpoilContext; @@ -26,6 +27,7 @@ import net.minecraft.Util; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; @@ -70,7 +72,7 @@ public class GTRecipeModifiers { ConsumedInputsData inputs = machine.getTraitOptional(RecipeLogic.class) .map(RecipeLogic::getConsumedInputs).orElse(null); if (inputs == null) return; - for (Object inObject : inputs.getConsumedInputs(GTRecipeCapabilities.ITEM)) { + for (Object inObject : inputs.getConsumedInputs(ItemRecipeCapability.CAP)) { if (!(inObject instanceof SizedIngredient ingredient)) continue; if (ingredient.getItems().length == 0) continue; ItemStack in = ingredient.getItems()[0]; @@ -87,14 +89,14 @@ public class GTRecipeModifiers { } }).build(); - public static final BiFunction ENVIRONMENT_REQUIREMENT = Util - .memoize((condition, maxAllowedStrength) -> (machine, recipe) -> { + public static final BiFunction, Integer, RecipeModifier> ENVIRONMENT_REQUIREMENT = Util + .memoize((conditionHolder, maxAllowedStrength) -> (machine, recipe) -> { if (!ConfigHolder.INSTANCE.gameplay.environmentalHazards) return ModifierFunction.IDENTITY; if (!(machine.getLevel() instanceof ServerLevel serverLevel)) return ModifierFunction.NULL; EnvironmentalHazardSavedData data = EnvironmentalHazardSavedData.getOrCreate(serverLevel); BlockPos machinePos = machine.getBlockPos(); - var zone = data.getZoneByContainedPosAndCondition(machinePos, condition); + var zone = data.getZoneByContainedPosAndCondition(machinePos, conditionHolder.value()); if (zone == null) return ModifierFunction.IDENTITY; float strength = zone.strength(); 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..dc18df6fae0 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeSerializers.java @@ -6,12 +6,13 @@ 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 final DeferredHolder, StrictShapedRecipe.Serializer> CRAFTING_SHAPED_STRICT = RECIPE_SERIALIZERS @@ -27,4 +28,8 @@ public class GTRecipeSerializers { public static final DeferredHolder, SimpleCraftingRecipeSerializer> CRAFTING_FACADE_COVER = RECIPE_SERIALIZERS .register("crafting_facade_cover", () -> new SimpleCraftingRecipeSerializer<>(FacadeCoverRecipe::new)); + + public static void init(IEventBus modBus) { + RECIPE_SERIALIZERS.register(modBus); + } } 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 724386d6819..d7731655aed 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.recipe.CWURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -468,7 +469,7 @@ public class GTRecipeTypes { public static final GTRecipeType RESEARCH_STATION_RECIPES = register("research_station", ELECTRIC) .setEUIO(IO.IN) - .setMaxSize(IO.IN, GTRecipeCapabilities.CWU, 1) + .setMaxSize(IO.IN, CWURecipeCapability.CAP, 1) .setMaxIOSize(2, 1, 0, 0) .UI(builder -> builder.setProgressBar(GTGuiTextures.PROGRESS_ARROW) .setItemSlotOverlay(IO.IN, 0, GTGuiTextures.SCANNER_OVERLAY) 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 5f910b59dbb..b7b740bf29e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundEntries.java @@ -1,71 +1,55 @@ package com.gregtechceu.gtceu.common.data; -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.IEventBus; -import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.neoforge.registries.RegisterEvent; +import net.neoforged.neoforge.registries.DeferredHolder; import static com.gregtechceu.gtceu.common.registry.GTRegistration.REGISTRATE; public class GTSoundEntries { // Machine Sounds - public static final SoundEntry FORGE_HAMMER = REGISTRATE.sound("forge_hammer").build(); - public static final SoundEntry MACERATOR = REGISTRATE.sound("macerator").build(); - public static final SoundEntry CHEMICAL = REGISTRATE.sound("chemical").build(); - public static final SoundEntry ASSEMBLER = REGISTRATE.sound("assembler").build(); - public static final SoundEntry CENTRIFUGE = REGISTRATE.sound("centrifuge").build(); - public static final SoundEntry COMPRESSOR = REGISTRATE.sound("compressor").build(); - public static final SoundEntry ELECTROLYZER = REGISTRATE.sound("electrolyzer").build(); - public static final SoundEntry MIXER = REGISTRATE.sound("mixer").build(); - public static final SoundEntry REPLICATOR = REGISTRATE.sound("replicator").build(); - public static final SoundEntry ARC = REGISTRATE.sound("arc").build(); - public static final SoundEntry BOILER = REGISTRATE.sound("boiler").build(); - public static final SoundEntry FURNACE = REGISTRATE.sound("furnace").build(); - public static final SoundEntry COOLING = REGISTRATE.sound("cooling").build(); - public static final SoundEntry FIRE = REGISTRATE.sound("fire").build(); - public static final SoundEntry BATH = REGISTRATE.sound("bath").build(); - public static final SoundEntry MOTOR = REGISTRATE.sound("motor").build(); - public static final SoundEntry CUT = REGISTRATE.sound("cut").build(); - public static final SoundEntry TURBINE = REGISTRATE.sound("turbine").build(); - public static final SoundEntry COMBUSTION = REGISTRATE.sound("combustion").build(); - public static final SoundEntry COMPUTATION = REGISTRATE.sound("computation").build(); - public static final SoundEntry MINER = REGISTRATE.sound("miner").build(); - public static final SoundEntry SCIENCE = REGISTRATE.sound("science").build(); - public static final SoundEntry JET_ENGINE = REGISTRATE.sound("jet_engine").build(); - public static final SoundEntry WRENCH_TOOL = REGISTRATE.sound("wrench").build(); - public static final SoundEntry SOFT_MALLET_TOOL = REGISTRATE.sound("soft_hammer").build(); - public static final SoundEntry DRILL_TOOL = REGISTRATE.sound("drill").build(); - public static final SoundEntry PLUNGER_TOOL = REGISTRATE.sound("plunger").build(); - public static final SoundEntry FILE_TOOL = REGISTRATE.sound("file").build(); - public static final SoundEntry SAW_TOOL = REGISTRATE.sound("saw").build(); - public static final SoundEntry SCREWDRIVER_TOOL = REGISTRATE.sound("screwdriver").build(); - public static final SoundEntry CHAINSAW_TOOL = REGISTRATE.sound("chainsaw").build(); - public static final SoundEntry WIRECUTTER_TOOL = REGISTRATE.sound("wirecutter").build(); - public static final SoundEntry SPRAY_CAN_TOOL = REGISTRATE.sound("spray_can").build(); - public static final SoundEntry PORTABLE_SCANNER = REGISTRATE.sound("portable_scanner").build(); - public static final SoundEntry MORTAR_TOOL = REGISTRATE.sound("mortar").build(); - public static final SoundEntry SUS_RECORD = REGISTRATE.sound("sus").build(); - public static final SoundEntry PORTAL_OPENING = REGISTRATE.sound("portal_opening").build(); - 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(IEventBus modBus) { - modBus.register(GTSoundEntries.class); - } - - @SubscribeEvent - private static void registerSounds(RegisterEvent event) { - if (event.getRegistryKey() != Registries.SOUND_EVENT) return; - - for (SoundEntry entry : GTRegistries.SOUNDS) { - entry.prepare(); - entry.register(soundEvent -> GTRegistries.register(BuiltInRegistries.SOUND_EVENT, soundEvent.getLocation(), - soundEvent)); - } - } + // spotless:off + public static final DeferredHolder FORGE_HAMMER = REGISTRATE.sound("forge_hammer").register(); + public static final DeferredHolder MACERATOR = REGISTRATE.sound("macerator").register(); + public static final DeferredHolder CHEMICAL = REGISTRATE.sound("chemical").register(); + public static final DeferredHolder ASSEMBLER = REGISTRATE.sound("assembler").register(); + public static final DeferredHolder CENTRIFUGE = REGISTRATE.sound("centrifuge").register(); + public static final DeferredHolder COMPRESSOR = REGISTRATE.sound("compressor").register(); + public static final DeferredHolder ELECTROLYZER = REGISTRATE.sound("electrolyzer").register(); + public static final DeferredHolder MIXER = REGISTRATE.sound("mixer").register(); + public static final DeferredHolder REPLICATOR = REGISTRATE.sound("replicator").register(); + public static final DeferredHolder ARC = REGISTRATE.sound("arc").register(); + public static final DeferredHolder BOILER = REGISTRATE.sound("boiler").register(); + public static final DeferredHolder FURNACE = REGISTRATE.sound("furnace").register(); + public static final DeferredHolder COOLING = REGISTRATE.sound("cooling").register(); + public static final DeferredHolder FIRE = REGISTRATE.sound("fire").register(); + public static final DeferredHolder BATH = REGISTRATE.sound("bath").register(); + public static final DeferredHolder MOTOR = REGISTRATE.sound("motor").register(); + public static final DeferredHolder CUT = REGISTRATE.sound("cut").register(); + public static final DeferredHolder TURBINE = REGISTRATE.sound("turbine").register(); + public static final DeferredHolder COMBUSTION = REGISTRATE.sound("combustion").register(); + public static final DeferredHolder COMPUTATION = REGISTRATE.sound("computation").register(); + public static final DeferredHolder MINER = REGISTRATE.sound("miner").register(); + public static final DeferredHolder SCIENCE = REGISTRATE.sound("science").register(); + public static final DeferredHolder JET_ENGINE = REGISTRATE.sound("jet_engine").register(); + public static final DeferredHolder WRENCH_TOOL = REGISTRATE.sound("wrench").register(); + public static final DeferredHolder SOFT_MALLET_TOOL = REGISTRATE.sound("soft_hammer").register(); + public static final DeferredHolder DRILL_TOOL = REGISTRATE.sound("drill").register(); + public static final DeferredHolder PLUNGER_TOOL = REGISTRATE.sound("plunger").register(); + public static final DeferredHolder FILE_TOOL = REGISTRATE.sound("file").register(); + public static final DeferredHolder SAW_TOOL = REGISTRATE.sound("saw").register(); + public static final DeferredHolder SCREWDRIVER_TOOL = REGISTRATE.sound("screwdriver").register(); + public static final DeferredHolder CHAINSAW_TOOL = REGISTRATE.sound("chainsaw").register(); + public static final DeferredHolder WIRECUTTER_TOOL = REGISTRATE.sound("wirecutter").register(); + public static final DeferredHolder SPRAY_CAN_TOOL = REGISTRATE.sound("spray_can").register(); + public static final DeferredHolder PORTABLE_SCANNER = REGISTRATE.sound("portable_scanner").register(); + public static final DeferredHolder MORTAR_TOOL = REGISTRATE.sound("mortar").register(); + public static final DeferredHolder SUS_RECORD = REGISTRATE.sound("sus").register(); + public static final DeferredHolder PORTAL_OPENING = REGISTRATE.sound("portal_opening").register(); + public static final DeferredHolder PORTAL_CLOSING = REGISTRATE.sound("portal_closing").register(); + public static final DeferredHolder METAL_PIPE = REGISTRATE.sound("metal_pipe").register(); + //spotless:on + + public static void init() {} } diff --git a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundTypes.java b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundTypes.java index 29dd6768837..41a27812be4 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundTypes.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTSoundTypes.java @@ -7,6 +7,6 @@ public class GTSoundTypes { public static final SoundType METAL_PIPE = new SoundType(1.0f, 1.0f, - GTSoundEntries.METAL_PIPE.getMainEvent(), + GTSoundEntries.METAL_PIPE.value().getMainEvent(), SoundEvents.STONE_STEP, SoundEvents.STONE_PLACE, SoundEvents.STONE_HIT, SoundEvents.STONE_FALL); } 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..7fffcfa5888 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java +++ b/src/main/java/com/gregtechceu/gtceu/common/data/GTToolBehaviors.java @@ -1,49 +1,47 @@ package com.gregtechceu.gtceu.common.data; -import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.item.tool.behavior.IToolBehavior; import com.gregtechceu.gtceu.api.item.tool.behavior.ToolBehaviorType; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.item.tool.behavior.*; +import com.gregtechceu.gtceu.common.registry.GTRegistration; + +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; + +import com.mojang.serialization.Codec; +import com.tterrag.registrate.util.entry.RegistryEntry; public class GTToolBehaviors { private GTToolBehaviors() {} // 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 RegistryEntry, ToolBehaviorType> AOE_CONFIG_UI = register("aoe_config_ui", AOEConfigUIBehavior.CODEC, AOEConfigUIBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> BLOCK_ROTATING = register("rotate_block", BlockRotatingBehavior.CODEC, BlockRotatingBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> DISABLE_SHIELD = register("disable_shield", DisableShieldBehavior.CODEC, DisableShieldBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> ENTITY_DAMAGE = register("entity_damage", EntityDamageBehavior.CODEC, EntityDamageBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> PATH = register("path", GrassPathBehavior.CODEC, GrassPathBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> HARVEST_CROPS = register("harvest_crops", HarvestCropsBehavior.CODEC, HarvestCropsBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> HARVEST_ICE = register("harvest_ice", HarvestIceBehavior.CODEC, HarvestIceBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> HOE_GROUND = register("hoe_ground", HoeGroundBehavior.CODEC, HoeGroundBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> STRIP_LOG = register("strip_log", LogStripBehavior.CODEC, LogStripBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> PLUNGER = register("plunger", PlungerBehavior.CODEC, PlungerBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> ROTATE_RAIL = register("rotate_rail", RotateRailBehavior.CODEC, RotateRailBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> SCRAPE = register("scrape", ScrapeBehavior.CODEC, ScrapeBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> TORCH_PLACE = register("torch_place", TorchPlaceBehavior.CODEC, TorchPlaceBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> TREE_FELLING = register("tree_felling", TreeFellingBehavior.CODEC, TreeFellingBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> WAX_OFF = register("wax_off", WaxOffBehavior.CODEC, WaxOffBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> MODE_SWITCH = register("mode_switch", ToolModeSwitchBehavior.CODEC, ToolModeSwitchBehavior.STREAM_CODEC); + public static final RegistryEntry, ToolBehaviorType> PROSPECTING = register("prospecting", ProspectingBehavior.CODEC, ProspectingBehavior.STREAM_CODEC); // spotless:on public static void init() {} + + private static < + T extends IToolBehavior> RegistryEntry, ToolBehaviorType> register(String name, + Codec codec, + StreamCodec streamCodec) { + return GTRegistration.REGISTRATE.simple(name, GTRegistries.Keys.TOOL_BEHAVIOR, + () -> new ToolBehaviorType<>(codec, streamCodec)); + } } 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 ec21f58b6c5..f4876dd1f3c 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 @@ -25,6 +25,7 @@ import net.minecraft.world.item.component.CustomData; import net.minecraft.world.item.enchantment.ItemEnchantments; import net.minecraft.world.level.material.Fluid; +import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.fluids.SimpleFluidContent; import net.neoforged.neoforge.registries.DeferredHolder; @@ -38,7 +39,7 @@ 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); // Tool-related @@ -207,4 +208,8 @@ public class GTDataComponents { public static final DeferredHolder, DataComponentType> LIGHTER_OPEN = DATA_COMPONENTS .registerComponentType("lighter_open", builder -> builder.persistent(Codec.BOOL).networkSynchronized(ByteBufCodecs.BOOL)); + + public static void init(IEventBus modBus) { + DATA_COMPONENTS.register(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 114d8d63771..f937bb40107 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 @@ -30,8 +30,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.builder.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MultiblockMachineBuilder; import com.gregtechceu.gtceu.client.renderer.machine.*; import com.gregtechceu.gtceu.common.block.BoilerFireboxType; import com.gregtechceu.gtceu.common.data.GTMaterialItems; @@ -95,7 +95,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 { @@ -779,7 +778,8 @@ public static Component environmentRequirement(MedicalCondition condition) { } public static Component defaultEnvironmentRequirement() { - return environmentRequirement(GTMedicalConditions.CARBON_MONOXIDE_POISONING); + // TODO fix + return Component.empty();// environmentRequirement(GTMedicalConditions.CARBON_MONOXIDE_POISONING); } public static BiConsumer> TANK_TOOLTIPS = (stack, list) -> { 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 eefb8023a7a..a3bf02a1c22 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/common/item/armor/GTArmorMaterials.java b/src/main/java/com/gregtechceu/gtceu/common/item/armor/GTArmorMaterials.java index bc7be737437..6b45f55e6f5 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,7 +17,7 @@ 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 final List BLANK_LAYERS = List.of(new ArmorMaterial.Layer(GTCEu.id("armor"))); @@ -58,4 +59,8 @@ public class GTArmorMaterials { map.put(ArmorItem.Type.CHESTPLATE, 6); map.put(ArmorItem.Type.HELMET, 2); }), 10, SoundEvents.ARMOR_EQUIP_GENERIC, () -> Ingredient.EMPTY, BLANK_LAYERS, 0.0F, 0.0F)); + + public static void init(IEventBus modBus) { + ARMOR_MATERIALS.register(modBus); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/AntidoteBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/AntidoteBehavior.java index 4b24296e47b..9ba0c15037e 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/AntidoteBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/AntidoteBehavior.java @@ -4,10 +4,13 @@ import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.api.item.component.IAddInformation; import com.gregtechceu.gtceu.api.item.component.IInteractionItem; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.capability.MedicalConditionTracker; import com.gregtechceu.gtceu.config.ConfigHolder; import com.gregtechceu.gtceu.utils.GTUtil; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -18,10 +21,7 @@ import org.jetbrains.annotations.Nullable; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; -import java.util.Set; /** * Defines an antidote for a hazard (e.g. poisoning) @@ -30,12 +30,12 @@ * @param removePercent how many 'counts' should be removed from the chosen condition(s), * as a percentage of the current 'counts' in the range [0, 100]. -1 for all. */ -public record AntidoteBehavior(Set types, int removePercent) +public record AntidoteBehavior(HolderSet types, int removePercent) implements IInteractionItem, IAddInformation { - public AntidoteBehavior(int removePercent, MedicalCondition... types) { - this(new HashSet<>(), removePercent); - this.types.addAll(Arrays.asList(types)); + @SafeVarargs + public AntidoteBehavior(int removePercent, Holder... types) { + this(HolderSet.direct(types), removePercent); } @Override @@ -53,7 +53,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level level, LivingEntity livi if (condition == null) { continue; } - if (!this.types.contains(condition)) { + if (!this.types.contains(GTRegistries.MEDICAL_CONDITIONS.wrapAsHolder(condition))) { continue; } if (removePercent == -1) { @@ -76,7 +76,7 @@ public void appendHoverText(ItemStack stack, @Nullable Item.TooltipContext conte if (GTUtil.isShiftDown()) { tooltipComponents.add(Component.translatable("tooltip.gtceu.antidote.description_shift")); for (var type : types) { - tooltipComponents.add(type.getAffectedName()); + tooltipComponents.add(type.value().getAffectedName()); } if (removePercent == -1) { tooltipComponents diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java index 636e62d8d07..a27db580019 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/ColorSprayBehaviour.java @@ -183,7 +183,7 @@ public InteractionResult onItemUseFirst(ItemStack itemStack, UseOnContext contex if (first == null || !handleSpecialBlockEntities(first, maxBlocksToRecolor, context)) { handleBlocks(pos, maxBlocksToRecolor, context); } - GTSoundEntries.SPRAY_CAN_TOOL.play(level, null, player.position(), 1.0f, 1.0f); + GTSoundEntries.SPRAY_CAN_TOOL.value().play(level, null, player.position(), 1.0f, 1.0f); return InteractionResult.SUCCESS; } 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/behavior/PortableScannerBehavior.java b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java index efedb320f21..62491f41fdb 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/behavior/PortableScannerBehavior.java @@ -108,7 +108,7 @@ public InteractionResult useOn(UseOnContext context) { player.sendSystemMessage(line); } - GTSoundEntries.PORTABLE_SCANNER.play(level, null, player.position(), 1.0f, 1.0f); + GTSoundEntries.PORTABLE_SCANNER.value().play(level, null, player.position(), 1.0f, 1.0f); return InteractionResult.CONSUME; } diff --git a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java index afaced1e396..03a97c2e473 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java +++ b/src/main/java/com/gregtechceu/gtceu/common/item/tool/ToolEventHandlers.java @@ -122,7 +122,7 @@ public static List onHarvestDrops(Player player, ItemStack tool, Serv ToolBehaviors behaviorTag = ToolHelper.getBehaviorsComponent(tool); Block block = state.getBlock(); - if (!isSilkTouch && state.is(BlockTags.ICE) && behaviorTag.hasBehavior(GTToolBehaviors.HARVEST_ICE)) { + if (!isSilkTouch && state.is(BlockTags.ICE) && behaviorTag.hasBehavior(GTToolBehaviors.HARVEST_ICE.value())) { Item iceBlock = block.asItem(); if (drops.stream().noneMatch(drop -> drop.getItem() == iceBlock)) { drops.add(new ItemStack(iceBlock)); 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..cf8ca55567c 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.value(); } } 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..77dda604c48 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.value(); } 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..7ae91132479 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.value(); } @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..d0335aa33c5 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.value(); } @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..6b0c7cfe85d 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.value(); } } 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..62bf6e05bc3 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.value(); } } 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..de3b2511c0c 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.value(); } @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..c9a74de50f9 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.value(); } } 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..8a085d8e4d2 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.value(); } } 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..8a03164b6eb 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.value(); } @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..761f4e663e7 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.value(); } } 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..91a6678772a 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.value(); } } 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..8570a2e72d5 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.value(); } } 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..c0b59f69e25 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 @@ -80,7 +80,7 @@ public boolean canPerformAction(ItemStack stack, ItemAbility action) { .forEach(stack -> player.getInventory().placeItemBackInInventory(stack)); state.spawnAfterBreak(serverLevel, pos, ItemStack.EMPTY, true); world.destroyBlock(pos, false); - GTSoundEntries.WRENCH_TOOL.playOnServer(serverLevel, pos, 1, GTValues.RNG.nextFloat() * .5f + .5f); + GTSoundEntries.WRENCH_TOOL.value().playOnServer(serverLevel, pos, 1, GTValues.RNG.nextFloat() * .5f + .5f); return InteractionResult.SUCCESS; } @@ -110,7 +110,7 @@ public boolean canPerformAction(ItemStack stack, ItemAbility action) { @Override public ToolBehaviorType getType() { - return GTToolBehaviors.MODE_SWITCH; + return GTToolBehaviors.MODE_SWITCH.value(); } @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..2d2a6d450a7 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.value(); } @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..9e459e42123 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.value(); } @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..b527e14e36c 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.value(); } } diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/hazard/EnvironmentalHazardEmitterTrait.java b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/hazard/EnvironmentalHazardEmitterTrait.java index 8037624b80f..46846ccf403 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/trait/hazard/EnvironmentalHazardEmitterTrait.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/trait/hazard/EnvironmentalHazardEmitterTrait.java @@ -9,6 +9,7 @@ import com.gregtechceu.gtceu.common.capability.EnvironmentalHazardSavedData; import com.gregtechceu.gtceu.config.ConfigHolder; +import net.minecraft.core.Holder; import net.minecraft.server.level.ServerLevel; import lombok.Getter; @@ -36,6 +37,13 @@ public EnvironmentalHazardEmitterTrait(MedicalCondition conditionToEmit, this.emissionStrength = emissionStrength; } + public EnvironmentalHazardEmitterTrait(Holder conditionToEmit, + float emissionStrength) { + super(); + this.conditionToEmit = conditionToEmit.value(); + this.emissionStrength = emissionStrength; + } + @Override public void afterWorking() { if (emitHazardOnRecipeFinished) emitHazard(); 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..56998ae23ed 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.value(); } @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..01973508bed 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.value(); } @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..003be22a9f8 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.value(); } @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..3d31ada848d 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.value(); } @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 4bc13e47946..b730126b289 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.value(); } @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..8699e286147 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.value(); } @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..35029b2615d 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.value(); } @Override 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..a81317dbc68 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.value(); } @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..00f0fd2dc5b 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 @@ -32,7 +32,7 @@ public class EnvironmentalHazardCondition extends RecipeCondition getType() { - return GTRecipeConditions.ENVIRONMENTAL_HAZARD; + return GTRecipeConditions.ENVIRONMENTAL_HAZARD.value(); } @Override @@ -59,7 +59,7 @@ public boolean testCondition(@NotNull GTRecipe recipe, @NotNull RecipeLogic reci } EnvironmentalHazardSavedData savedData = EnvironmentalHazardSavedData.getOrCreate(serverLevel); var zone = savedData.getZoneByContainedPos(recipeLogic.getMachine().getBlockPos()); - return zone != null && zone.strength() > 0; + return zone != null && zone.strength() > 0 && zone.condition() == condition; } @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..9680dc9e222 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.value(); } @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..19b0e3e6d1e 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.value(); } @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..d37f9601ebe 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.value(); } @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..ae75168e503 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.value(); } @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..9b9e773fdb7 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.value(); } @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..3e1bd399a09 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.value(); } @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 27eb62de373..7a0f6ec2786 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.value(); } @Override diff --git a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ItemEntityMixin.java b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ItemEntityMixin.java index e2d9c6e8cd3..d4a03093325 100644 --- a/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ItemEntityMixin.java +++ b/src/main/java/com/gregtechceu/gtceu/core/mixins/client/ItemEntityMixin.java @@ -25,7 +25,7 @@ public void beforeTick(CallbackInfo ci) { ItemEntity entity = (ItemEntity) (Object) this; if (GTValues.FOOLS.getAsBoolean() && !gtceu$wasOnGround && entity.onGround() && ChemicalHelper.getPrefix(entity.getItem().getItem()) == TagPrefix.rodLong) { - GTSoundEntries.METAL_PIPE.playFrom(entity, 10, 1); + GTSoundEntries.METAL_PIPE.value().playFrom(entity, 10, 1); } gtceu$wasOnGround = entity.onGround(); } diff --git a/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java b/src/main/java/com/gregtechceu/gtceu/data/DataGenerators.java index fe5362da09d..77b49af92e1 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.common.data.worldgen.*; import com.gregtechceu.gtceu.data.loot.GTLootModifications; 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..269d8d4a2ff 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,9 +12,9 @@ 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 final DeferredHolder, IngredientType> INT_CIRCUIT_INGREDIENT = ITEM_INGREDIENT_TYPES @@ -33,4 +34,9 @@ public class GTIngredientTypes { public static final DeferredHolder, FluidIngredientType> INT_PROVIDER_FLUID_INGREDIENT = FLUID_INGREDIENT_TYPES .register("int_provider", () -> new FluidIngredientType<>(IntProviderFluidIngredient.CODEC)); + + public static void init(IEventBus modBus) { + ITEM_INGREDIENT_TYPES.register(modBus); + FLUID_INGREDIENT_TYPES.register(modBus); + } } 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 0b6f154cf2f..4328cf8b804 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 @@ -29,6 +29,7 @@ import com.gregtechceu.gtceu.utils.ResearchManager; import com.gregtechceu.gtceu.utils.codec.CodecUtils; +import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; @@ -1229,6 +1230,14 @@ public GTRecipeBuilder environmentalHazard(MedicalCondition condition) { return environmentalHazard(condition, false); } + public GTRecipeBuilder environmentalHazard(Holder condition, boolean reverse) { + return addCondition(new EnvironmentalHazardCondition(condition.value()).setReverse(reverse)); + } + + public GTRecipeBuilder environmentalHazard(Holder condition) { + return environmentalHazard(condition, false); + } + public final GTRecipeBuilder adjacentFluids(Fluid... fluids) { return adjacentFluids(false, fluids); } 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 07e32d30178..a5a244dc922 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/GTAEPlaceholders.java @@ -4,6 +4,8 @@ import com.gregtechceu.gtceu.api.cover.filter.Filters; import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.utils.GTStringUtils; import net.minecraft.MethodsReturnNonnullByDefault; @@ -103,8 +105,12 @@ private static Vector3i getSpatialSize(IGrid grid) { return new Vector3i(tmp.getX(), tmp.getY(), tmp.getZ()).absolute(); } + private static void registerPlaceholder(Placeholder placeholder) { + GTRegistration.REGISTRATE.simple(placeholder.getName(), GTRegistries.Keys.PLACEHOLDER, () -> placeholder); + } + public static void init() { - PlaceholderHandler.addPlaceholder(new Placeholder("ae2itemCount") { + registerPlaceholder(new Placeholder("ae2_item_count") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -127,7 +133,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, throw new InvalidArgsException(); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2fluidCount") { + registerPlaceholder(new Placeholder("ae2_fluid_count") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -139,7 +145,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, throw new WrongNumberOfArgsException(1, args.size()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2power") { + registerPlaceholder(new Placeholder("ae2_power") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -149,7 +155,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.literal(grid.getEnergyService().getStoredPower()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2maxPower") { + registerPlaceholder(new Placeholder("ae2_max_power") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -159,7 +165,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.literal(grid.getEnergyService().getMaxStoredPower()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2powerUsage") { + registerPlaceholder(new Placeholder("ae2_power_usage") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -169,7 +175,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, return MultiLineComponent.literal(grid.getEnergyService().getAvgPowerUsage()); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2spatial") { + registerPlaceholder(new Placeholder("ae2_spatial") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -189,7 +195,7 @@ public MultiLineComponent apply(PlaceholderContext ctx, } else throw new InvalidArgsException(); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("ae2crafting") { + registerPlaceholder(new Placeholder("ae2_crafting") { @Override public MultiLineComponent apply(PlaceholderContext ctx, 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..548dba76b40 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java @@ -4,6 +4,8 @@ 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.common.registry.GTRegistration; import com.gregtechceu.gtceu.integration.cctweaked.peripherals.*; import dan200.computercraft.api.ComputerCraftAPI; @@ -28,17 +30,19 @@ public static void init() { } public static void initPlaceholders() { - PlaceholderHandler.addPlaceholder(new Placeholder("bufferText") { + GTRegistration.REGISTRATE.simple("buffer_text", GTRegistries.Keys.PLACEHOLDER, + () -> new Placeholder("buffer_text") { - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) throw new NotSupportedException(); - int i = PlaceholderUtils.toInt(args.get(0)); - PlaceholderUtils.checkRange("line number", 1, 100, i); - return MultiLineComponent.of(cover.getComputerCraftTextBuffer().get(i - 1)); - } - }); + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) + throw new NotSupportedException(); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("line number", 1, 100, i); + return MultiLineComponent.of(cover.getComputerCraftTextBuffer().get(i - 1)); + } + }); } } 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..6438bd3c39c 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,8 @@ import com.gregtechceu.gtceu.api.placeholder.*; import com.gregtechceu.gtceu.api.placeholder.exceptions.*; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.gregtechceu.gtceu.common.registry.GTRegistration; import com.gregtechceu.gtceu.utils.GTStringUtils; import net.createmod.catnip.data.Couple; @@ -36,7 +38,7 @@ public static void init() { } public static void initPlaceholders() { - PlaceholderHandler.addPlaceholder(new Placeholder("redstone") { + GTRegistration.REGISTRATE.simple("redstone", GTRegistries.Keys.PLACEHOLDER, () -> new Placeholder("redstone") { @Override public MultiLineComponent apply(PlaceholderContext ctx, @@ -44,18 +46,20 @@ public MultiLineComponent apply(PlaceholderContext ctx, return processRedstonePlaceholder(ctx, args); } }); - PlaceholderHandler.addPlaceholder(new Placeholder("displayTarget") { - - @Override - public MultiLineComponent apply(PlaceholderContext ctx, - List args) throws PlaceholderException { - PlaceholderUtils.checkArgs(args, 1); - if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) throw new NotSupportedException(); - int i = PlaceholderUtils.toInt(args.get(0)); - PlaceholderUtils.checkRange("line number", 1, 100, i); - return MultiLineComponent.of(cover.getCreateDisplayTargetBuffer().get(i - 1)); - } - }); + GTRegistration.REGISTRATE.simple("display_target", GTRegistries.Keys.PLACEHOLDER, + () -> new Placeholder("display_target") { + + @Override + public MultiLineComponent apply(PlaceholderContext ctx, + List args) throws PlaceholderException { + PlaceholderUtils.checkArgs(args, 1); + if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) + throw new NotSupportedException(); + int i = PlaceholderUtils.toInt(args.get(0)); + PlaceholderUtils.checkRange("line number", 1, 100, i); + return MultiLineComponent.of(cover.getCreateDisplayTargetBuffer().get(i - 1)); + } + }); } private static int getRedstoneLinkPower(PlaceholderContext ctx, 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 9283b6752ff..1513971a428 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GTCEuStartupEvents.java @@ -25,7 +25,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(REGISTRY_ASSUME_GT); 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 7a67fc2a5d8..7d552768575 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -86,10 +86,7 @@ import com.gregtechceu.gtceu.integration.kjs.builders.material.TagPrefixBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.recipe.GTRecipeCategoryBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.recipe.GTRecipeTypeBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockFluidDefinitionBuilderJS; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.BedrockOreDefinitionBuilderJS; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.DimensionMarkerBuilder; -import com.gregtechceu.gtceu.integration.kjs.builders.worldgen.OreVeinDefinitionBuilderJS; +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; @@ -171,6 +168,9 @@ public void registerBuilderTypes(BuilderTypeRegistry registry) { reg.add(GTCEu.id("coil"), CoilBlockBuilder.class, CoilBlockBuilder::new); }); + registry.addDefault(GTRegistries.Keys.WORLD_GEN_LAYER, WorldGenLayerBuilderJS.class, + WorldGenLayerBuilderJS::new); + registry.addDefault(GTRegistries.Keys.ORE_VEIN, OreVeinDefinitionBuilderJS.class, OreVeinDefinitionBuilderJS::new); registry.addDefault(GTRegistries.Keys.BEDROCK_FLUID, BedrockFluidDefinitionBuilderJS.class, 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..d8895ad1dc9 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/KJSSteamMachineBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KJSSteamMachineBuilder.java index 2b20e6ccc80..cf1759f4236 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.machine.steam.SimpleSteamMachine; import com.gregtechceu.gtceu.api.multiblock.util.RelativeDirection; 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 c0368f0d59d..caf8cdb2c85 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.machine.MetaMachine; 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.builder.MachineBuilder; import com.gregtechceu.gtceu.common.data.machines.GTMachineUtils; import com.gregtechceu.gtceu.common.mui.GTSingleblockMachinePanels; 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..c91f796a2d9 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,8 +5,8 @@ import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; import com.gregtechceu.gtceu.api.machine.multiblock.MultiblockControllerMachine; 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.common.data.machines.GTMachineUtils; import net.minecraft.resources.ResourceLocation; 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 index 1151318da31..b947118866b 100644 --- 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 @@ -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/material/MaterialBuilderWrapper.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/material/MaterialBuilderWrapper.java index c9107ed135f..8ca3d9ee81b 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.GTRegistries; import com.gregtechceu.gtceu.integration.kjs.helpers.MaterialStackWrapper; import net.minecraft.resources.ResourceLocation; @@ -538,25 +539,26 @@ public MaterialBuilderWrapper radioactiveHazard(float multiplier) { } public MaterialBuilderWrapper hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition) { - internal.hazard(trigger, condition); + internal.hazard(trigger, GTRegistries.MEDICAL_CONDITIONS.wrapAsHolder(condition)); return this; } public MaterialBuilderWrapper hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier) { - internal.hazard(trigger, condition, progressionMultiplier); + internal.hazard(trigger, GTRegistries.MEDICAL_CONDITIONS.wrapAsHolder(condition), progressionMultiplier); return this; } public MaterialBuilderWrapper hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, float progressionMultiplier, boolean applyToDerivatives) { - internal.hazard(trigger, condition, progressionMultiplier, applyToDerivatives); + internal.hazard(trigger, GTRegistries.MEDICAL_CONDITIONS.wrapAsHolder(condition), progressionMultiplier, + applyToDerivatives); return this; } public MaterialBuilderWrapper hazard(HazardProperty.HazardTrigger trigger, MedicalCondition condition, boolean applyToDerivatives) { - internal.hazard(trigger, condition, applyToDerivatives); + internal.hazard(trigger, GTRegistries.MEDICAL_CONDITIONS.wrapAsHolder(condition), applyToDerivatives); return this; } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilderJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilderJS.java index d47ee7d68e0..117e8583b3a 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilderJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/OreVeinDefinitionBuilderJS.java @@ -42,7 +42,7 @@ public class OreVeinDefinitionBuilderJS extends BuilderBase { private float density; @Setter private int weight; - private IWorldGenLayer layer = WorldGenLayers.STONE; + private IWorldGenLayer layer = WorldGenLayers.STONE.value(); @Setter private Set> dimensionFilter = Set.of(); @Setter diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilder.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilderJS.java similarity index 73% rename from src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilder.java rename to src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilderJS.java index 74dcfa99765..29b4d91b2bd 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilder.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/worldgen/WorldGenLayerBuilderJS.java @@ -8,6 +8,7 @@ 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; @@ -16,30 +17,30 @@ import java.util.Set; @Accessors(fluent = true, chain = true) -public class WorldGenLayerBuilder { +public class WorldGenLayerBuilderJS 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; + public WorldGenLayerBuilderJS(ResourceLocation id) { + super(id); } - public SimpleWorldGenLayer build() { - return new SimpleWorldGenLayer( - this.id, - () -> new AnyMatchRuleTest(targets.stream().map(IWorldGenLayer.RuleTestSupplier::get).toList()), - Set.copyOf(dimensions)); - } - - public WorldGenLayerBuilder targets(IWorldGenLayer.RuleTestSupplier... targets) { + public WorldGenLayerBuilderJS targets(IWorldGenLayer.RuleTestSupplier... targets) { Collections.addAll(this.targets, targets); return this; } - public WorldGenLayerBuilder dimensions(List> dimensions) { + public WorldGenLayerBuilderJS dimensions(List> dimensions) { this.dimensions.addAll(dimensions); return this; } + + @Override + public IWorldGenLayer createObject() { + return new SimpleWorldGenLayer( + this.id, + () -> new AnyMatchRuleTest(targets.stream().map(IWorldGenLayer.RuleTestSupplier::get).toList()), + Set.copyOf(dimensions)); + } } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/ModifyMachineEventJS.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/ModifyMachineEventJS.java index 7af9f38bda2..71718644dd7 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/ModifyMachineEventJS.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/events/ModifyMachineEventJS.java @@ -1,7 +1,7 @@ package com.gregtechceu.gtceu.integration.kjs.events; import com.gregtechceu.gtceu.api.events.ModifyMachineEvent; -import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; +import com.gregtechceu.gtceu.api.registry.registrate.builder.MachineBuilder; import dev.latvian.mods.kubejs.event.KubeEvent; 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 998150e4eb7..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.worldgen.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(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java index 95a3d2ff1f4..7dc3f243fc6 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/kjs/recipe/components/GTRecipeComponents.java @@ -5,7 +5,6 @@ import com.gregtechceu.gtceu.api.recipe.RecipeCondition; import com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic; import com.gregtechceu.gtceu.api.recipe.ingredient.EnergyStack; -import com.gregtechceu.gtceu.common.data.GTRecipeCapabilities; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -28,10 +27,10 @@ public class GTRecipeComponents { public static final RecipeComponent ENERGY_STACK = EnergyStackComponent.ENERGY_STACK.instance(); - public static final ContentJS ITEM = ContentJS.create(SizedIngredientComponent.SIZED_INGREDIENT, GTRecipeCapabilities.ITEM); - public static final ContentJS FLUID = ContentJS.create(SizedFluidIngredientComponent.NESTED, GTRecipeCapabilities.FLUID); - public static final ContentJS EU = ContentJS.create(EnergyStackComponent.ENERGY_STACK, GTRecipeCapabilities.EU); - public static final ContentJS CWU = ContentJS.create(NumberComponent.NON_NEGATIVE_INT, GTRecipeCapabilities.CWU); + public static final ContentJS ITEM = ContentJS.create(SizedIngredientComponent.SIZED_INGREDIENT, ItemRecipeCapability.CAP); + public static final ContentJS FLUID = ContentJS.create(SizedFluidIngredientComponent.NESTED, FluidRecipeCapability.CAP); + public static final ContentJS EU = ContentJS.create(EnergyStackComponent.ENERGY_STACK, EURecipeCapability.CAP); + public static final ContentJS CWU = ContentJS.create(NumberComponent.NON_NEGATIVE_INT, CWURecipeCapability.CAP); public static final RecipeComponent, ChanceLogic>> CHANCE_LOGIC_MAP = new JavaMapRecipeComponent<>(RECIPE_CAPABILITY, CHANCE_LOGIC); // spotless:on @@ -42,10 +41,10 @@ public class GTRecipeComponents { public static final Map, ContentJS> VALID_CAPS = new IdentityHashMap<>(); static { - VALID_CAPS.put(GTRecipeCapabilities.ITEM, ITEM); - VALID_CAPS.put(GTRecipeCapabilities.FLUID, FLUID); - VALID_CAPS.put(GTRecipeCapabilities.EU, EU); - VALID_CAPS.put(GTRecipeCapabilities.CWU, CWU); + VALID_CAPS.put(ItemRecipeCapability.CAP, ITEM); + VALID_CAPS.put(FluidRecipeCapability.CAP, FLUID); + VALID_CAPS.put(EURecipeCapability.CAP, EU); + VALID_CAPS.put(CWURecipeCapability.CAP, CWU); KJSRecipeKeyEvent event = new KJSRecipeKeyEvent(); ModLoader.postEvent(event); diff --git a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 6411e557e89..3c93e921d88 100644 --- a/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -562,7 +562,7 @@ public static void appendHazardTooltips(Material material, List toolt if (GTUtil.isShiftDown()) { tooltipComponents.add(Component.translatable("tooltip.gtceu.medical_condition.description_shift")); - tooltipComponents.add(material.getProperty(HAZARD).condition.getTranslatableName()); + tooltipComponents.add(material.getProperty(HAZARD).condition.value().getTranslatableName()); tooltipComponents.add(Component.translatable("tooltip.gtceu.hazard_trigger")); tooltipComponents.add(material.getProperty(HAZARD).hazardTrigger.getTranslatableName()); return; diff --git a/src/test/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTestHelpers.java b/src/test/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTestHelpers.java index 93504eebaa4..13d0bcc15fd 100644 --- a/src/test/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTestHelpers.java +++ b/src/test/java/com/gregtechceu/gtceu/common/capability/MedicalConditionTestHelpers.java @@ -4,6 +4,7 @@ import com.gregtechceu.gtceu.api.data.medicalcondition.MedicalCondition; import com.gregtechceu.gtceu.gametest.util.TestUtils; +import net.minecraft.core.Holder; import net.minecraft.gametest.framework.GameTestHelper; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; @@ -14,19 +15,19 @@ public class MedicalConditionTestHelpers { public static void addMedicalConditionCounts(GameTestHelper helper, Player player, - MedicalCondition condition, float counts) { - getMedicalConditionTracker(helper, player).progressCondition(condition, counts); + Holder condition, float counts) { + getMedicalConditionTracker(helper, player).progressCondition(condition.value(), counts); } public static void setMedicalConditionCounts(GameTestHelper helper, Player player, - MedicalCondition condition, float counts) { + Holder condition, float counts) { MedicalConditionTracker tracker = getMedicalConditionTracker(helper, player); - tracker.medicalConditions.put(condition, counts); + tracker.medicalConditions.put(condition.value(), counts); tracker.updateActiveSymptoms(); } - public static void clearMedicalCondition(GameTestHelper helper, Player player, MedicalCondition condition) { - getMedicalConditionTracker(helper, player).removeMedicalCondition(condition); + public static void clearMedicalCondition(GameTestHelper helper, Player player, Holder condition) { + getMedicalConditionTracker(helper, player).removeMedicalCondition(condition.value()); } public static MedicalConditionTracker getMedicalConditionTracker(GameTestHelper helper, Player player) { @@ -37,21 +38,21 @@ public static MedicalConditionTracker getMedicalConditionTracker(GameTestHelper return tracker; } - public static void assertHasCondition(GameTestHelper helper, Player player, MedicalCondition condition) { - helper.assertTrue(getMedicalConditionTracker(helper, player).medicalConditions.containsKey(condition), - "Player " + player + " should have medical condition " + condition.id); + public static void assertHasCondition(GameTestHelper helper, Player player, Holder condition) { + helper.assertTrue(getMedicalConditionTracker(helper, player).medicalConditions.containsKey(condition.value()), + "Player " + player + " should have medical condition " + condition.getKey()); } - public static void assertFreeOfCondition(GameTestHelper helper, Player player, MedicalCondition condition) { - helper.assertFalse(getMedicalConditionTracker(helper, player).medicalConditions.containsKey(condition), - "Player " + player + " should not have medical condition " + condition.id); + public static void assertFreeOfCondition(GameTestHelper helper, Player player, Holder condition) { + helper.assertFalse(getMedicalConditionTracker(helper, player).medicalConditions.containsKey(condition.value()), + "Player " + player + " should not have medical condition " + condition.getKey()); } public static void assertConditionCountEquals(GameTestHelper helper, Player player, - MedicalCondition condition, float expectedCounts) { - float counts = getMedicalConditionTracker(helper, player).medicalConditions.getFloat(condition); + Holder condition, float expectedCounts) { + float counts = getMedicalConditionTracker(helper, player).medicalConditions.getFloat(condition.value()); helper.assertTrue(Mth.equal(counts, expectedCounts), "Player " + player + " should have " + expectedCounts + " 'counts' of medical condition " + - condition.id + ", has " + counts); + condition.getKey() + ", has " + counts); } } 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 f1e10c39b29..47785acc9b3 100644 --- a/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java +++ b/src/test/java/com/gregtechceu/gtceu/gametest/util/TestUtils.java @@ -21,9 +21,7 @@ import com.gregtechceu.gtceu.common.item.behavior.CoverPlaceBehavior; import com.gregtechceu.gtceu.utils.fakeplayer.FakeServerGamePacketListenerImpl; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.MappedRegistry; +import net.minecraft.core.*; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.gametest.framework.GameTestAssertPosException; import net.minecraft.gametest.framework.GameTestHelper; @@ -247,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; @@ -275,9 +273,8 @@ public static CoverBehavior placeCover(GameTestHelper helper, MetaMachine machin CoverDefinition coverDefinition = null; if (stack.getItem() instanceof IComponentItem componentItem) { for (IItemComponent component : componentItem.getComponents()) { - if (component instanceof CoverPlaceBehavior coverPlaceBehavior) { - helper.assertTrue(coverDefinition == null, "stack has multiple coverPlaceBehaviours"); - coverDefinition = coverPlaceBehavior.coverDefinition(); + if (component instanceof CoverPlaceBehavior(Holder definition)) { + coverDefinition = definition.value(); } } }