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
return entry;
}
- public 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 super T> 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