From 8ab6c5249f7a60fed3226e085446a8e1eda68634 Mon Sep 17 00:00:00 2001 From: Sara Freimer Date: Sun, 21 Jul 2024 13:39:15 -0500 Subject: [PATCH] Opt-in to Neo's config gui to allow modifying our configs when the game is running (#5794) --- .../additions/client/AdditionsClient.java | 14 +++- .../common/config/AdditionsClientConfig.java | 5 +- .../common/config/AdditionsConfig.java | 41 +++++----- .../config/AdditionsConfigTranslations.java | 78 +++++++++++++++++++ .../client/AdditionsLangProvider.java | 13 ++++ .../defense/client/DefenseLangProvider.java | 2 + .../c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 | 6 +- .../mekanism/assets/mekanism/lang/en_ud.json | 1 + .../mekanism/assets/mekanism/lang/en_us.json | 1 + .../dfe6eafb7c0d05a49bee122125cab06c7b53ab0b | 6 +- .../assets/mekanismadditions/lang/en_ud.json | 63 +++++++++++++++ .../assets/mekanismadditions/lang/en_us.json | 63 +++++++++++++++ .../05ef9a63fd938838a6e55915f33fb7bc8aac26a1 | 6 +- .../assets/mekanismdefense/lang/en_ud.json | 1 + .../assets/mekanismdefense/lang/en_us.json | 1 + .../assets/mekanismgenerators/lang/en_ud.json | 7 ++ .../assets/mekanismgenerators/lang/en_us.json | 7 ++ .../client/GeneratorsLangProvider.java | 2 + .../client/lang/BaseLanguageProvider.java | 7 ++ .../client/lang/MekanismLangProvider.java | 2 + .../tools/client/ToolsLangProvider.java | 2 + .../defense/client/DefenseClient.java | 16 ++++ .../defense/common/config/DefenseConfig.java | 2 +- .../config/DefenseConfigTranslations.java | 32 ++++++++ .../generators/client/GeneratorsClient.java | 16 ++++ .../common/config/GeneratorsConfig.java | 4 +- .../config/GeneratorsConfigTranslations.java | 46 +++++++++++ .../common/config/GeneratorsGearConfig.java | 8 +- .../config/GeneratorsStorageConfig.java | 13 ++-- .../java/mekanism/client/MekanismClient.java | 9 ++- .../common/config/IConfigTranslation.java | 16 ++++ .../config/MekanismConfigTranslations.java | 34 ++++++++ .../mekanism/common/config/StorageConfig.java | 68 ++++++++-------- .../common/config/value/CachedLongValue.java | 13 ++++ .../mekanism/tools/client/ToolsClient.java | 16 ++++ .../config/ToolsConfigTranslations.java | 32 ++++++++ 36 files changed, 571 insertions(+), 82 deletions(-) create mode 100644 src/additions/java/mekanism/additions/common/config/AdditionsConfigTranslations.java create mode 100644 src/defense/java/mekanism/defense/client/DefenseClient.java create mode 100644 src/defense/java/mekanism/defense/common/config/DefenseConfigTranslations.java create mode 100644 src/generators/java/mekanism/generators/client/GeneratorsClient.java create mode 100644 src/generators/java/mekanism/generators/common/config/GeneratorsConfigTranslations.java create mode 100644 src/main/java/mekanism/common/config/IConfigTranslation.java create mode 100644 src/main/java/mekanism/common/config/MekanismConfigTranslations.java create mode 100644 src/tools/java/mekanism/tools/client/ToolsClient.java create mode 100644 src/tools/java/mekanism/tools/common/config/ToolsConfigTranslations.java diff --git a/src/additions/java/mekanism/additions/client/AdditionsClient.java b/src/additions/java/mekanism/additions/client/AdditionsClient.java index 962ceb9be9a..c165aa32b61 100644 --- a/src/additions/java/mekanism/additions/client/AdditionsClient.java +++ b/src/additions/java/mekanism/additions/client/AdditionsClient.java @@ -4,18 +4,26 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import mekanism.additions.client.voice.VoiceClient; +import mekanism.additions.common.MekanismAdditions; import mekanism.additions.common.config.MekanismAdditionsConfig; import mekanism.common.Mekanism; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; +@Mod(value = MekanismAdditions.MODID, dist = Dist.CLIENT) public class AdditionsClient { - private AdditionsClient() { - } - private static VoiceClient voiceClient; + public AdditionsClient(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); + } + public static void reset() { if (voiceClient != null) { voiceClient.disconnect(); diff --git a/src/additions/java/mekanism/additions/common/config/AdditionsClientConfig.java b/src/additions/java/mekanism/additions/common/config/AdditionsClientConfig.java index f703175a0e2..b5d395667f5 100644 --- a/src/additions/java/mekanism/additions/common/config/AdditionsClientConfig.java +++ b/src/additions/java/mekanism/additions/common/config/AdditionsClientConfig.java @@ -13,10 +13,9 @@ public class AdditionsClientConfig extends BaseMekanismConfig { AdditionsClientConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Mekanism Additions Client Config. This config only exists on the client.").push("additions-client"); + AdditionsConfigTranslations.CLIENT_TOP_LEVEL.applyToBuilder(builder).push("additions-client"); - voiceKeyIsToggle = CachedBooleanValue.wrap(this, builder.comment("If the voice server is enabled and voiceKeyIsToggle is also enabled, the voice key will " - + "act as a toggle instead of requiring to be held while talking.") + voiceKeyIsToggle = CachedBooleanValue.wrap(this, AdditionsConfigTranslations.CLIENT_VOICE_KEY_TOGGLE.applyToBuilder(builder) .define("voiceKeyIsToggle", false)); builder.pop(); configSpec = builder.build(); diff --git a/src/additions/java/mekanism/additions/common/config/AdditionsConfig.java b/src/additions/java/mekanism/additions/common/config/AdditionsConfig.java index 2cc09f0a9c7..450e1ff392b 100644 --- a/src/additions/java/mekanism/additions/common/config/AdditionsConfig.java +++ b/src/additions/java/mekanism/additions/common/config/AdditionsConfig.java @@ -4,6 +4,7 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; +import mekanism.additions.common.config.AdditionsConfigTranslations.BabySpawnTranslations; import mekanism.additions.common.entity.baby.BabyType; import mekanism.additions.common.registries.AdditionsEntityTypes; import mekanism.api.functions.ConstantPredicates; @@ -37,22 +38,22 @@ public class AdditionsConfig extends BaseMekanismConfig { AdditionsConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Mekanism Additions Config. This config is synced between server and client.").push("additions"); + AdditionsConfigTranslations.SERVER_TOP_LEVEL.applyToBuilder(builder).push("additions"); - obsidianTNTDelay = CachedIntValue.wrap(this, builder.comment("Fuse time for Obsidian TNT.") + obsidianTNTDelay = CachedIntValue.wrap(this, AdditionsConfigTranslations.SERVER_OBSIDIAN_DELAY.applyToBuilder(builder) .defineInRange("obsidianTNTDelay", 5 * SharedConstants.TICKS_PER_SECOND, 0, Integer.MAX_VALUE)); - obsidianTNTBlastRadius = CachedFloatValue.wrap(this, builder.comment("Radius of the explosion of Obsidian TNT.") + obsidianTNTBlastRadius = CachedFloatValue.wrap(this, AdditionsConfigTranslations.SERVER_OBSIDIAN_RADIUS.applyToBuilder(builder) .defineInRange("obsidianTNTBlastRadius", 12, 0.1, 1_000)); - babyArrowDamageMultiplier = CachedDoubleValue.wrap(this, builder.comment("Damage multiplier of arrows shot by baby mobs.") - .defineInRange("babyArrowDamageMultiplier", 0.25, 0.1, 10)); - - voiceServerEnabled = CachedBooleanValue.wrap(this, builder.comment("Enables the voice server for Walkie Talkies.").worldRestart() - .define("voiceServerEnabled", false)); - voicePort = CachedIntValue.wrap(this, builder.comment("TCP port for the Voice server to listen on.") + voiceServerEnabled = CachedBooleanValue.wrap(this, AdditionsConfigTranslations.SERVER_VOICE_ENABLED.applyToBuilder(builder) + .worldRestart() .define("voiceServerEnabled", false)); + voicePort = CachedIntValue.wrap(this, AdditionsConfigTranslations.SERVER_VOICE_PORT.applyToBuilder(builder) .defineInRange("VoicePort", 36_123, 1, 65_535)); - builder.comment("Config options regarding spawning of entities.").push("spawning"); + babyArrowDamageMultiplier = CachedDoubleValue.wrap(this, AdditionsConfigTranslations.SERVER_BABY_ARROW_DAMAGE.applyToBuilder(builder) + .defineInRange("babyArrowDamageMultiplier", 0.25, 0.1, 10)); + + AdditionsConfigTranslations.SERVER_BABY_SPAWNING.applyToBuilder(builder).push("spawning"); addBabyTypeConfig(BabyType.BOGGED, builder, AdditionsEntityTypes.BABY_BOGGED, EntityType.BOGGED); addBabyTypeConfig(BabyType.CREEPER, builder, AdditionsEntityTypes.BABY_CREEPER, EntityType.CREEPER); addBabyTypeConfig(BabyType.ENDERMAN, builder, AdditionsEntityTypes.BABY_ENDERMAN, EntityType.ENDERMAN); @@ -103,28 +104,30 @@ public static class SpawnConfig { private SpawnConfig(IMekanismConfig config, ModConfigSpec.Builder builder, String name, Holder> entityType, EntityType parentType) { this.entityType = entityType; this.parentType = parentType; - builder.comment("Config options regarding " + name + ".").push(name.replace(" ", "-")); - this.shouldSpawn = CachedBooleanValue.wrap(config, builder.comment("Enable the spawning of " + name + ". Think baby zombies.") + BabySpawnTranslations translations = BabySpawnTranslations.create(name); + + translations.topLevel().applyToBuilder(builder).push(name.replace(" ", "-")); + this.shouldSpawn = CachedBooleanValue.wrap(config, translations.shouldSpawn().applyToBuilder(builder) .worldRestart() .define("shouldSpawn", true)); - this.weightPercentage = CachedDoubleValue.wrap(config, builder.comment("The multiplier for weight of " + name + " spawns, compared to the adult mob.") + this.weightPercentage = CachedDoubleValue.wrap(config, translations.weight().applyToBuilder(builder) .worldRestart() .defineInRange("weightPercentage", 0.05, 0, 100)); - this.minSizePercentage = CachedDoubleValue.wrap(config, builder.comment("The multiplier for minimum group size of " + name + " spawns, compared to the adult mob.") + this.minSizePercentage = CachedDoubleValue.wrap(config, translations.minSize().applyToBuilder(builder) .worldRestart() .defineInRange("minSizePercentage", 0.5, 0, 100)); - this.maxSizePercentage = CachedDoubleValue.wrap(config, builder.comment("The multiplier for maximum group size of " + name + " spawns, compared to the adult mob.") + this.maxSizePercentage = CachedDoubleValue.wrap(config, translations.maxSize().applyToBuilder(builder) .worldRestart() .defineInRange("maxSizePercentage", 0.5, 0, 100)); - this.spawnCostPerEntityPercentage = CachedDoubleValue.wrap(config, builder.comment("The multiplier for spawn cost per entity of " + name + " spawns, compared to the adult mob.") + this.spawnCostPerEntityPercentage = CachedDoubleValue.wrap(config, translations.costPerEntity().applyToBuilder(builder) .worldRestart() .defineInRange("spawnCostPerEntityPercentage", 1D, 0, 100)); - this.maxSpawnCostPercentage = CachedDoubleValue.wrap(config, builder.comment("The multiplier for max spawn cost of " + name + " spawns, compared to the adult mob.") + this.maxSpawnCostPercentage = CachedDoubleValue.wrap(config, translations.maxCost().applyToBuilder(builder) .worldRestart() .defineInRange("maxSpawnCostPercentage", 1D, 0, 100)); - this.biomeBlackList = CachedResourceLocationListValue.define(config, builder.comment("The list of biome ids that " + name + " will not spawn in even if the normal mob variant can spawn.") + this.biomeBlackList = CachedResourceLocationListValue.define(config, translations.biomeBlacklist().applyToBuilder(builder) .worldRestart(), "biomeBlackList", ConstantPredicates.alwaysTrue()); - this.structureBlackList = CachedResourceLocationListValue.define(config, builder.comment("The list of structure ids that " + name + " will not spawn in even if the normal mob variant can spawn.") + this.structureBlackList = CachedResourceLocationListValue.define(config, translations.structureBlacklist().applyToBuilder(builder) .worldRestart(), "structureBlackList", BuiltInRegistries.STRUCTURE_TYPE::containsKey); builder.pop(); } diff --git a/src/additions/java/mekanism/additions/common/config/AdditionsConfigTranslations.java b/src/additions/java/mekanism/additions/common/config/AdditionsConfigTranslations.java new file mode 100644 index 00000000000..4244c91e0dd --- /dev/null +++ b/src/additions/java/mekanism/additions/common/config/AdditionsConfigTranslations.java @@ -0,0 +1,78 @@ +package mekanism.additions.common.config; + +import mekanism.additions.common.MekanismAdditions; +import mekanism.common.config.IConfigTranslation; +import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; + +public enum AdditionsConfigTranslations implements IConfigTranslation { + CLIENT_TOP_LEVEL("client", "Mekanism Additions Client Config. This config only exists on the client"), + + CLIENT_VOICE_KEY_TOGGLE("client.voice_key_is_toggle", "If the voice server is enabled and voiceKeyIsToggle is also enabled, the voice key will " + + "act as a toggle instead of requiring to be held while talking."), + + SERVER_TOP_LEVEL("server", "Mekanism Additions Config. This config is synced between server and client."), + + SERVER_OBSIDIAN_DELAY("server.obsidian_tnt.delay", "Fuse time for Obsidian TNT."), + SERVER_OBSIDIAN_RADIUS("server.obsidian_tnt.radius", "Radius of the explosion of Obsidian TNT."), + + SERVER_VOICE_ENABLED("server.voice.enabled", "Enables the voice server for Walkie Talkies."), + SERVER_VOICE_PORT("server.voice.port", "TCP port for the Voice server to listen on."), + + SERVER_BABY_ARROW_DAMAGE("server.baby.arrow_damage_multiplier", "Damage multiplier of arrows shot by baby mobs."), + SERVER_BABY_SPAWNING("server.baby.spawning", "Config options regarding spawning of entities."), + + ; + + private final String key; + private final String translation; + + AdditionsConfigTranslations(String path, String translation) { + this.key = Util.makeDescriptionId("configuration", MekanismAdditions.rl(path)); + this.translation = translation; + } + + @NotNull + @Override + public String getTranslationKey() { + return key; + } + + @Override + public String translation() { + return translation; + } + + public record BabySpawnTranslations( + IConfigTranslation topLevel, + IConfigTranslation shouldSpawn, + IConfigTranslation weight, + IConfigTranslation minSize, + IConfigTranslation maxSize, + IConfigTranslation costPerEntity, + IConfigTranslation maxCost, + IConfigTranslation biomeBlacklist, + IConfigTranslation structureBlacklist + ) { + + private static String getKey(String name, String path) { + name = name.replace(" ", "_"); + return Util.makeDescriptionId("configuration", MekanismAdditions.rl("server.baby.spawning." + name + "." + path)); + } + + public static BabySpawnTranslations create(String name) { + return new BabySpawnTranslations( + new ConfigTranslation(getKey(name, "top_level"), "Config options regarding " + name + "."), + new ConfigTranslation(getKey(name, "should_spawn"), "Enable the spawning of " + name + ". Think baby zombies."), + new ConfigTranslation(getKey(name, "weight"), "The multiplier for weight of " + name + " spawns, compared to the adult mob."), + new ConfigTranslation(getKey(name, "min_size"), "The multiplier for minimum group size of " + name + " spawns, compared to the adult mob."), + new ConfigTranslation(getKey(name, "max_size"), "The multiplier for maximum group size of " + name + " spawns, compared to the adult mob."), + new ConfigTranslation(getKey(name, "cost_per_entity"), "The multiplier for spawn cost per entity of " + name + " spawns, compared to the adult mob."), + new ConfigTranslation(getKey(name, "max_cost"), "The multiplier for max spawn cost of " + name + " spawns, compared to the adult mob."), + new ConfigTranslation(getKey(name, "biome_blacklist"), "The list of biome ids that " + name + " will not spawn in even if the normal mob variant can spawn."), + new ConfigTranslation(getKey(name, "structure_blacklist"), "The list of structure ids that " + name + " will not spawn in even if the normal mob variant can spawn.") + ); + } + + } +} \ No newline at end of file diff --git a/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java b/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java index 25fcdc1b167..5d1ab5ce864 100644 --- a/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java +++ b/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java @@ -6,6 +6,9 @@ import mekanism.additions.common.AdditionsTags; import mekanism.additions.common.MekanismAdditions; import mekanism.additions.common.advancements.AdditionsAdvancements; +import mekanism.additions.common.config.AdditionsConfigTranslations; +import mekanism.additions.common.config.AdditionsConfigTranslations.BabySpawnTranslations; +import mekanism.additions.common.entity.baby.BabyType; import mekanism.additions.common.item.ItemBalloon; import mekanism.additions.common.registries.AdditionsBlocks; import mekanism.additions.common.registries.AdditionsEntityTypes; @@ -25,6 +28,7 @@ public AdditionsLangProvider(PackOutput output) { @Override protected void addTranslations() { + addConfigs(); addTags(); addItems(); addBlocks(); @@ -35,6 +39,15 @@ protected void addTranslations() { addAliases(AdditionsAliases.values()); } + private void addConfigs() { + addConfigs(AdditionsConfigTranslations.values()); + for (BabyType type : BabyType.values()) { + BabySpawnTranslations translations = BabySpawnTranslations.create("baby " + type.getSerializedName().replace('_', ' ')); + addConfigs(translations.topLevel(), translations.shouldSpawn(), translations.weight(), translations.minSize(), translations.maxSize(), + translations.costPerEntity(), translations.maxCost(), translations.biomeBlacklist(), translations.structureBlacklist()); + } + } + private void addTags() { addTag(AdditionsTags.Items.BALLOONS, "Balloons"); diff --git a/src/datagen/defense/java/mekanism/defense/client/DefenseLangProvider.java b/src/datagen/defense/java/mekanism/defense/client/DefenseLangProvider.java index 9f35d2a4b09..77caf12b443 100644 --- a/src/datagen/defense/java/mekanism/defense/client/DefenseLangProvider.java +++ b/src/datagen/defense/java/mekanism/defense/client/DefenseLangProvider.java @@ -3,6 +3,7 @@ import mekanism.client.lang.BaseLanguageProvider; import mekanism.defense.common.DefenseLang; import mekanism.defense.common.MekanismDefense; +import mekanism.defense.common.config.DefenseConfigTranslations; import net.minecraft.data.PackOutput; public class DefenseLangProvider extends BaseLanguageProvider { @@ -13,6 +14,7 @@ public DefenseLangProvider(PackOutput output) { @Override protected void addTranslations() { + addConfigs(DefenseConfigTranslations.values()); addMisc(); } diff --git a/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 b/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 index dec0fed54a2..6cab24ce856 100644 --- a/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 +++ b/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 @@ -1,5 +1,5 @@ -// 1.21 2024-06-14T14:26:01.7627406 Languages: en_us for mod: mekanism +// 1.21 2024-07-21T13:35:04.1421402 Languages: en_us for mod: mekanism bc5d9e3532569ab71234becb84fad21fd3768e33 assets/mekanism/lang/en_au.json bc5d9e3532569ab71234becb84fad21fd3768e33 assets/mekanism/lang/en_gb.json -97cc27b80dc8c970c366fcaeb7e3705a1f686cad assets/mekanism/lang/en_ud.json -a0dab55926571bfa8377db34757d2b88dc0f2161 assets/mekanism/lang/en_us.json +849085be570ac7e00a24334650b80e2edb22c5b7 assets/mekanism/lang/en_ud.json +153e2846b782e5681d5d6b39c74c321b8fa11134 assets/mekanism/lang/en_us.json diff --git a/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json b/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json index 7a11108ee7b..ab3d1c273a8 100644 --- a/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json +++ b/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json @@ -646,6 +646,7 @@ "configuration.mekanism.side.clear.all": "ǝɔuo ʇɐ sǝdʎʇ ǝɔuɐʇsqns ꞁꞁɐ ɟo sǝpᴉs ɹɐǝꞁɔ oʇ ʇɟᴉɥS pꞁoH", "configuration.mekanism.side.increment": "(ǝdʎʇ uoᴉʇɐɹnᵷᴉɟuoɔ 'snoᴉʌǝɹd ɹo 'ʇxǝu ǝɥʇ oʇ sǝpᴉs ꞁꞁɐ sǝᵷuɐɥɔ) ᵷᴉɟuoƆ ǝpᴉS ʇuǝɯǝɹɔuI", "configuration.mekanism.slots": "sʇoꞁS", + "configuration.mekanism.storage.energy.base": "˙(sǝꞁnoՐ) ǝᵷɐɹoʇs ʎᵷɹǝuǝ ǝsɐᗺ", "configuration.mekanism.strict_input": "ʇnduI ʇɔᴉɹʇS", "configuration.mekanism.strict_input.enabled": "(%s) ʇnduI ʇɔᴉɹʇS", "configuration.mekanism.transporter": "ᵷᴉɟuoƆ ɹǝʇɹodsuɐɹ⟘", diff --git a/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json b/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json index b1d9ee944f7..523e26f4f11 100644 --- a/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json +++ b/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json @@ -647,6 +647,7 @@ "configuration.mekanism.side.clear.all": "Hold Shift to clear sides of all substance types at once", "configuration.mekanism.side.increment": "Increment Side Config (changes all sides to the next, or previous, configuration type)", "configuration.mekanism.slots": "Slots", + "configuration.mekanism.storage.energy.base": "Base energy storage (Joules).", "configuration.mekanism.strict_input": "Strict Input", "configuration.mekanism.strict_input.enabled": "Strict Input (%1$s)", "configuration.mekanism.transporter": "Transporter Config", diff --git a/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b b/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b index 15ee8c8d6a3..d3da7d7d19c 100644 --- a/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b +++ b/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b @@ -1,5 +1,5 @@ -// 1.21 2024-06-22T23:02:28.6459071 Languages: en_us for mod: mekanismadditions +// 1.21 2024-07-21T13:36:05.8848398 Languages: en_us for mod: mekanismadditions d05507d12b409c92bc6460462db3bb8af9cc656e assets/mekanismadditions/lang/en_au.json d05507d12b409c92bc6460462db3bb8af9cc656e assets/mekanismadditions/lang/en_gb.json -bc34e844e1aa012db62c219e9ffa0258e6441b2e assets/mekanismadditions/lang/en_ud.json -7b9f13e6725e3f0057688c505be82c24b2dfbd13 assets/mekanismadditions/lang/en_us.json +292ec7f9f32e1eda13eea4ac9c5b0768d946c64c assets/mekanismadditions/lang/en_ud.json +5962efce2704944ed37f8ffe52c78240c7d88efb assets/mekanismadditions/lang/en_us.json diff --git a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json index b7b40e8ffc9..9dd91725de4 100644 --- a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json +++ b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json @@ -283,6 +283,69 @@ "block.mekanismadditions.yellow_plastic_transparent_stairs": "sɹᴉɐʇS ɔᴉʇsɐꞁԀ ʇuǝɹɐdsuɐɹ⟘ ʍoꞁꞁǝ⅄", "block.mekanismadditions.yellow_reinforced_plastic": "ʞɔoꞁᗺ ɔᴉʇsɐꞁԀ pǝɔɹoɟuᴉǝᴚ ʍoꞁꞁǝ⅄", "block.mekanismadditions.yellow_slick_plastic": "ʞɔoꞁᗺ ɔᴉʇsɐꞁԀ ʞɔᴉꞁS ʍoꞁꞁǝ⅄", + "configuration.mekanismadditions.client": "ʇuǝᴉꞁɔ ǝɥʇ uo sʇsᴉxǝ ʎꞁuo ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ ʇuǝᴉꞁƆ suoᴉʇᴉppⱯ ɯsᴉuɐʞǝW", + "configuration.mekanismadditions.client.voice_key_is_toggle": "˙ᵷuᴉʞꞁɐʇ ǝꞁᴉɥʍ pꞁǝɥ ǝq oʇ ᵷuᴉɹᴉnbǝɹ ɟo pɐǝʇsuᴉ ǝꞁᵷᵷoʇ ɐ sɐ ʇɔɐ ꞁꞁᴉʍ ʎǝʞ ǝɔᴉoʌ ǝɥʇ 'pǝꞁqɐuǝ osꞁɐ sᴉ ǝꞁᵷᵷo⟘sIʎǝꞰǝɔᴉoʌ puɐ pǝꞁqɐuǝ sᴉ ɹǝʌɹǝs ǝɔᴉoʌ ǝɥʇ ɟI", + "configuration.mekanismadditions.server": "˙ʇuǝᴉꞁɔ puɐ ɹǝʌɹǝs uǝǝʍʇǝq pǝɔuʎs sᴉ ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ suoᴉʇᴉppⱯ ɯsᴉuɐʞǝW", + "configuration.mekanismadditions.server.baby.arrow_damage_multiplier": "˙sqoɯ ʎqɐq ʎq ʇoɥs sʍoɹɹɐ ɟo ɹǝᴉꞁdᴉʇꞁnɯ ǝᵷɐɯɐᗡ", + "configuration.mekanismadditions.server.baby.spawning": "˙sǝᴉʇᴉʇuǝ ɟo ᵷuᴉuʍɐds ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ pǝᵷᵷoq ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds pǝᵷᵷoq ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds pǝᵷᵷoq ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds pǝᵷᵷoq ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds pǝᵷᵷoq ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙pǝᵷᵷoq ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ pǝᵷᵷoq ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.top_level": "˙pǝᵷᵷoq ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds pǝᵷᵷoq ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ ɹǝdǝǝɹɔ ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ɹǝdǝǝɹɔ ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ɹǝdǝǝɹɔ ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ɹǝdǝǝɹɔ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ɹǝdǝǝɹɔ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙ɹǝdǝǝɹɔ ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ ɹǝdǝǝɹɔ ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.top_level": "˙ɹǝdǝǝɹɔ ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ɹǝdǝǝɹɔ ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uɐɯɹǝpuǝ ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uɐɯɹǝpuǝ ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uɐɯɹǝpuǝ ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uɐɯɹǝpuǝ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uɐɯɹǝpuǝ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙uɐɯɹǝpuǝ ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uɐɯɹǝpuǝ ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.top_level": "˙uɐɯɹǝpuǝ ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uɐɯɹǝpuǝ ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uoʇǝꞁǝʞs ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙uoʇǝꞁǝʞs ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uoʇǝꞁǝʞs ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.top_level": "˙uoʇǝꞁǝʞs ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ ʎɐɹʇs ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ʎɐɹʇs ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ʎɐɹʇs ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ʎɐɹʇs ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ʎɐɹʇs ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙ʎɐɹʇs ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ ʎɐɹʇs ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.top_level": "˙ʎɐɹʇs ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds ʎɐɹʇs ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.biome_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ʇɐɥʇ spᴉ ǝɯoᴉq ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.cost_per_entity": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ʎʇᴉʇuǝ ɹǝd ʇsoɔ uʍɐds ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.max_cost": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ʇsoɔ uʍɐds xɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.max_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉxɐɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.min_size": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ǝzᴉs dnoɹᵷ ɯnɯᴉuᴉɯ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.should_spawn": "˙sǝᴉqɯoz ʎqɐq ʞuᴉɥ⟘ ˙uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ᵷuᴉuʍɐds ǝɥʇ ǝꞁqɐuƎ", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.structure_blacklist": "˙uʍɐds uɐɔ ʇuɐᴉɹɐʌ qoɯ ꞁɐɯɹou ǝɥʇ ɟᴉ uǝʌǝ uᴉ uʍɐds ʇou ꞁꞁᴉʍ uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ʇɐɥʇ spᴉ ǝɹnʇɔnɹʇs ɟo ʇsᴉꞁ ǝɥ⟘", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.top_level": "˙uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ᵷuᴉpɹɐᵷǝɹ suoᴉʇdo ᵷᴉɟuoƆ", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.weight": "˙qoɯ ʇꞁnpɐ ǝɥʇ oʇ pǝɹɐdɯoɔ 'suʍɐds uoʇǝꞁǝʞs ɹǝɥʇᴉʍ ʎqɐq ɟo ʇɥᵷᴉǝʍ ɹoɟ ɹǝᴉꞁdᴉʇꞁnɯ ǝɥ⟘", + "configuration.mekanismadditions.server.obsidian_tnt.delay": "˙⟘N⟘ uɐᴉpᴉsqO ɹoɟ ǝɯᴉʇ ǝsnℲ", + "configuration.mekanismadditions.server.obsidian_tnt.radius": "˙⟘N⟘ uɐᴉpᴉsqO ɟo uoᴉsoꞁdxǝ ǝɥʇ ɟo snᴉpɐᴚ", + "configuration.mekanismadditions.server.voice.enabled": "˙sǝᴉʞꞁɐ⟘ ǝᴉʞꞁɐM ɹoɟ ɹǝʌɹǝs ǝɔᴉoʌ ǝɥʇ sǝꞁqɐuƎ", + "configuration.mekanismadditions.server.voice.port": "˙uo uǝʇsᴉꞁ oʇ ɹǝʌɹǝs ǝɔᴉoΛ ǝɥʇ ɹoɟ ʇɹod ԀƆ⟘", "constants.mekanismadditions.mod_name": "suoᴉʇᴉppⱯ :ɯsᴉuɐʞǝW", "constants.mekanismadditions.pack_description": "suoᴉʇᴉppⱯ :ɯsᴉuɐʞǝW ɹoɟ pǝsn sǝɔɹnosǝᴚ", "description.mekanismadditions.glow_panel": "¡sɹoꞁoɔ ʎuɐɯ uᴉ ʍoN ˙ǝɔɹnos ʇɥᵷᴉꞁ ᵷuᴉʇsɐꞁ-ɹǝʌǝ 'uɹǝpoɯ Ɐ", diff --git a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json index 912dd914fd5..0d9e318b6a7 100644 --- a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json +++ b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json @@ -283,6 +283,69 @@ "block.mekanismadditions.yellow_plastic_transparent_stairs": "Yellow Transparent Plastic Stairs", "block.mekanismadditions.yellow_reinforced_plastic": "Yellow Reinforced Plastic Block", "block.mekanismadditions.yellow_slick_plastic": "Yellow Slick Plastic Block", + "configuration.mekanismadditions.client": "Mekanism Additions Client Config. This config only exists on the client", + "configuration.mekanismadditions.client.voice_key_is_toggle": "If the voice server is enabled and voiceKeyIsToggle is also enabled, the voice key will act as a toggle instead of requiring to be held while talking.", + "configuration.mekanismadditions.server": "Mekanism Additions Config. This config is synced between server and client.", + "configuration.mekanismadditions.server.baby.arrow_damage_multiplier": "Damage multiplier of arrows shot by baby mobs.", + "configuration.mekanismadditions.server.baby.spawning": "Config options regarding spawning of entities.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.biome_blacklist": "The list of biome ids that baby bogged will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.cost_per_entity": "The multiplier for spawn cost per entity of baby bogged spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.max_cost": "The multiplier for max spawn cost of baby bogged spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.max_size": "The multiplier for maximum group size of baby bogged spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.min_size": "The multiplier for minimum group size of baby bogged spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.should_spawn": "Enable the spawning of baby bogged. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.structure_blacklist": "The list of structure ids that baby bogged will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.top_level": "Config options regarding baby bogged.", + "configuration.mekanismadditions.server.baby.spawning.baby_bogged.weight": "The multiplier for weight of baby bogged spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.biome_blacklist": "The list of biome ids that baby creeper will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.cost_per_entity": "The multiplier for spawn cost per entity of baby creeper spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.max_cost": "The multiplier for max spawn cost of baby creeper spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.max_size": "The multiplier for maximum group size of baby creeper spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.min_size": "The multiplier for minimum group size of baby creeper spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.should_spawn": "Enable the spawning of baby creeper. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.structure_blacklist": "The list of structure ids that baby creeper will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.top_level": "Config options regarding baby creeper.", + "configuration.mekanismadditions.server.baby.spawning.baby_creeper.weight": "The multiplier for weight of baby creeper spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.biome_blacklist": "The list of biome ids that baby enderman will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.cost_per_entity": "The multiplier for spawn cost per entity of baby enderman spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.max_cost": "The multiplier for max spawn cost of baby enderman spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.max_size": "The multiplier for maximum group size of baby enderman spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.min_size": "The multiplier for minimum group size of baby enderman spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.should_spawn": "Enable the spawning of baby enderman. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.structure_blacklist": "The list of structure ids that baby enderman will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.top_level": "Config options regarding baby enderman.", + "configuration.mekanismadditions.server.baby.spawning.baby_enderman.weight": "The multiplier for weight of baby enderman spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.biome_blacklist": "The list of biome ids that baby skeleton will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.cost_per_entity": "The multiplier for spawn cost per entity of baby skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.max_cost": "The multiplier for max spawn cost of baby skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.max_size": "The multiplier for maximum group size of baby skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.min_size": "The multiplier for minimum group size of baby skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.should_spawn": "Enable the spawning of baby skeleton. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.structure_blacklist": "The list of structure ids that baby skeleton will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.top_level": "Config options regarding baby skeleton.", + "configuration.mekanismadditions.server.baby.spawning.baby_skeleton.weight": "The multiplier for weight of baby skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.biome_blacklist": "The list of biome ids that baby stray will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.cost_per_entity": "The multiplier for spawn cost per entity of baby stray spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.max_cost": "The multiplier for max spawn cost of baby stray spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.max_size": "The multiplier for maximum group size of baby stray spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.min_size": "The multiplier for minimum group size of baby stray spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.should_spawn": "Enable the spawning of baby stray. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.structure_blacklist": "The list of structure ids that baby stray will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.top_level": "Config options regarding baby stray.", + "configuration.mekanismadditions.server.baby.spawning.baby_stray.weight": "The multiplier for weight of baby stray spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.biome_blacklist": "The list of biome ids that baby wither skeleton will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.cost_per_entity": "The multiplier for spawn cost per entity of baby wither skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.max_cost": "The multiplier for max spawn cost of baby wither skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.max_size": "The multiplier for maximum group size of baby wither skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.min_size": "The multiplier for minimum group size of baby wither skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.should_spawn": "Enable the spawning of baby wither skeleton. Think baby zombies.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.structure_blacklist": "The list of structure ids that baby wither skeleton will not spawn in even if the normal mob variant can spawn.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.top_level": "Config options regarding baby wither skeleton.", + "configuration.mekanismadditions.server.baby.spawning.baby_wither_skeleton.weight": "The multiplier for weight of baby wither skeleton spawns, compared to the adult mob.", + "configuration.mekanismadditions.server.obsidian_tnt.delay": "Fuse time for Obsidian TNT.", + "configuration.mekanismadditions.server.obsidian_tnt.radius": "Radius of the explosion of Obsidian TNT.", + "configuration.mekanismadditions.server.voice.enabled": "Enables the voice server for Walkie Talkies.", + "configuration.mekanismadditions.server.voice.port": "TCP port for the Voice server to listen on.", "constants.mekanismadditions.mod_name": "Mekanism: Additions", "constants.mekanismadditions.pack_description": "Resources used for Mekanism: Additions", "description.mekanismadditions.glow_panel": "A modern, ever-lasting light source. Now in many colors!", diff --git a/src/datagen/generated/mekanismdefense/.cache/05ef9a63fd938838a6e55915f33fb7bc8aac26a1 b/src/datagen/generated/mekanismdefense/.cache/05ef9a63fd938838a6e55915f33fb7bc8aac26a1 index a515c0da7ef..a52069b727e 100644 --- a/src/datagen/generated/mekanismdefense/.cache/05ef9a63fd938838a6e55915f33fb7bc8aac26a1 +++ b/src/datagen/generated/mekanismdefense/.cache/05ef9a63fd938838a6e55915f33fb7bc8aac26a1 @@ -1,3 +1,3 @@ -// 1.21 2024-06-13T13:08:29.8834268 Languages: en_us for mod: mekanismdefense -f5c308ab728cdaa901f1a727678b6489c497b76c assets/mekanismdefense/lang/en_ud.json -4ca80960ca210c5b78ce327f4fbd980a08a57156 assets/mekanismdefense/lang/en_us.json +// 1.21 2024-07-21T13:36:05.9468402 Languages: en_us for mod: mekanismdefense +84d3e48268580b99062014d913b7a6583a40f0ea assets/mekanismdefense/lang/en_ud.json +c1d1b8be69d827e98fef1a0742e3f268188d08a3 assets/mekanismdefense/lang/en_us.json diff --git a/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_ud.json b/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_ud.json index 96ef7cd26c9..973df6e23bb 100644 --- a/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_ud.json +++ b/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_ud.json @@ -1,4 +1,5 @@ { + "configuration.mekanismdefense.server": "˙ʇuǝᴉꞁɔ puɐ ɹǝʌɹǝs uǝǝʍʇǝq pǝɔuʎs sᴉ ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ ǝsuǝɟǝᗡ ɯsᴉuɐʞǝW", "constants.mekanismdefense.mod_name": "ǝsuǝɟǝᗡ :ɯsᴉuɐʞǝW", "constants.mekanismdefense.pack_description": "ǝsuǝɟǝᗡ :ɯsᴉuɐʞǝW ɹoɟ pǝsn sǝɔɹnosǝᴚ", "fml.menu.mods.info.description.mekanismdefense": "ɯsᴉuɐʞǝW ɹoɟ ǝꞁnpoɯ ǝsuǝɟǝᗡ", diff --git a/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_us.json b/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_us.json index 23e21ef3383..bf7674de477 100644 --- a/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_us.json +++ b/src/datagen/generated/mekanismdefense/assets/mekanismdefense/lang/en_us.json @@ -1,4 +1,5 @@ { + "configuration.mekanismdefense.server": "Mekanism Defense Config. This config is synced between server and client.", "constants.mekanismdefense.mod_name": "Mekanism: Defense", "constants.mekanismdefense.pack_description": "Resources used for Mekanism: Defense", "fml.menu.mods.info.description.mekanismdefense": "Defense module for Mekanism", diff --git a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json index e45d3d85222..3a98786db5d 100644 --- a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json +++ b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json @@ -41,6 +41,13 @@ "block.mekanismgenerators.turbine_valve": "ǝʌꞁɐΛ ǝuᴉqɹn⟘", "block.mekanismgenerators.turbine_vent": "ʇuǝΛ ǝuᴉqɹn⟘", "block.mekanismgenerators.wind_generator": "ɹoʇɐɹǝuǝ⅁ puᴉM", + "configuration.mekanismgenerators.gear": "˙ʇuǝᴉꞁɔ oʇ ɹǝʌɹǝs ɯoɹɟ pǝɔuʎs sᴉ ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ ɹɐǝ⅁ sɹoʇɐɹǝuǝ⅁ ɯsᴉuɐʞǝW", + "configuration.mekanismgenerators.gear.meka_suit": "sᵷuᴉʇʇǝS ʇᴉnSɐʞǝW", + "configuration.mekanismgenerators.gear.meka_suit.geothermal_charging_rate": "˙ʇuǝᴉqɯɐ ǝʌoqɐ Ʞ000'⥝ ɟo ǝɹnʇɐɹǝdɯǝʇ ɐ sɐɥ ɐʌɐꞁ 'ʇuǝᴉqɯɐ ǝʌoqɐ Ʞ00ᘔ~ ɟo ǝɹnʇɐɹǝdɯǝʇ ɐ ᵷuᴉʌɐɥ sɐ pǝʇɐǝɹʇ sᴉ ǝɹᴉℲ ˙pǝᵷɹǝɯqns sᴉ sʇuɐԀ ʇᴉnSɐʞǝW ǝɥʇ ɟo ɥɔnɯ ʍoɥ uo pǝsɐq uʍop sǝꞁɐɔs ǝnꞁɐʌ sᴉɥ⟘ ˙pǝꞁꞁɐʇsuᴉ ǝpɐɹᵷdn ɹǝd 'ʇuǝᴉqɯɐ ǝʌoqɐ ǝǝɹᵷǝp ɹǝd 'ʞɔᴉʇ ɹǝd sʇuɐd ɟo (sǝꞁnoՐ) ǝʇɐɹ ᵷuᴉᵷɹɐɥɔ ꞁɐɯɹǝɥʇoǝ⅁", + "configuration.mekanismgenerators.gear.meka_suit.heat_damage": "˙pǝꞁꞁɐʇsuᴉ ʎꞁꞁɐnʇɔɐ ǝɹɐ sʇᴉun ʎuɐɯ ʍoɥ uo pǝsɐq ʎꞁɹɐǝuᴉꞁ uʍop sǝꞁɐɔs ɹǝqɯnu sᴉɥ⟘ ˙pǝꞁꞁɐʇsuᴉ sʇᴉun ɹoʇɐɹǝuǝᵷ ꞁɐɯɹǝɥʇoǝᵷ ɯnɯᴉxɐɯ ɥʇᴉʍ sʇuɐԀ ʇᴉnSɐʞǝW ʎq pǝʇɐᵷǝu ǝᵷɐɯɐp ʇɐǝɥ ɟo ʇuǝɔɹǝԀ", + "configuration.mekanismgenerators.server": "˙ʇuǝᴉꞁɔ puɐ ɹǝʌɹǝs uǝǝʍʇǝq pǝɔuʎs sᴉ ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ sɹoʇɐɹǝuǝ⅁ ɯsᴉuɐʞǝW", + "configuration.mekanismgenerators.server.energy_fusion_fuel": "˙dɯǝ⟘ uoᴉʇᴉuᵷI puɐ 'dɯǝ⟘ xɐW 'ǝʇɐᴚ uoᴉʇɔǝɾuI ǝɥʇ sʇɔǝɟɟⱯ", + "configuration.mekanismgenerators.storage": "˙ʇuǝᴉꞁɔ oʇ ɹǝʌɹǝs ɯoɹɟ pǝɔuʎs sᴉ ᵷᴉɟuoɔ sᴉɥ⟘ ˙ᵷᴉɟuoƆ ǝᵷɐɹoʇS ʎᵷɹǝuƎ ɹoʇɐɹǝuǝ⅁", "constants.mekanismgenerators.mod_name": "sɹoʇɐɹǝuǝ⅁ :ɯsᴉuɐʞǝW", "constants.mekanismgenerators.pack_description": "sɹoʇɐɹǝuǝ⅁ :ɯsᴉuɐʞǝW ɹoɟ pǝsn sǝɔɹnosǝᴚ", "container.mekanismgenerators.advanced_solar_generator": "ɹoʇɐɹǝuǝ⅁ ɹɐꞁoS pǝɔuɐʌpⱯ", diff --git a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json index 6108298f7c9..8f4ce36087b 100644 --- a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json +++ b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json @@ -41,6 +41,13 @@ "block.mekanismgenerators.turbine_valve": "Turbine Valve", "block.mekanismgenerators.turbine_vent": "Turbine Vent", "block.mekanismgenerators.wind_generator": "Wind Generator", + "configuration.mekanismgenerators.gear": "Mekanism Generators Gear Config. This config is synced from server to client.", + "configuration.mekanismgenerators.gear.meka_suit": "MekaSuit Settings", + "configuration.mekanismgenerators.gear.meka_suit.geothermal_charging_rate": "Geothermal charging rate (Joules) of pants per tick, per degree above ambient, per upgrade installed. This value scales down based on how much of the MekaSuit Pants is submerged. Fire is treated as having a temperature of ~200K above ambient, lava has a temperature of 1,000K above ambient.", + "configuration.mekanismgenerators.gear.meka_suit.heat_damage": "Percent of heat damage negated by MekaSuit Pants with maximum geothermal generator units installed. This number scales down linearly based on how many units are actually installed.", + "configuration.mekanismgenerators.server": "Mekanism Generators Config. This config is synced between server and client.", + "configuration.mekanismgenerators.server.energy_fusion_fuel": "Affects the Injection Rate, Max Temp, and Ignition Temp.", + "configuration.mekanismgenerators.storage": "Generator Energy Storage Config. This config is synced from server to client.", "constants.mekanismgenerators.mod_name": "Mekanism: Generators", "constants.mekanismgenerators.pack_description": "Resources used for Mekanism: Generators", "container.mekanismgenerators.advanced_solar_generator": "Advanced Solar Generator", diff --git a/src/datagen/generators/java/mekanism/generators/client/GeneratorsLangProvider.java b/src/datagen/generators/java/mekanism/generators/client/GeneratorsLangProvider.java index a8888aca16d..f137f0aba36 100644 --- a/src/datagen/generators/java/mekanism/generators/client/GeneratorsLangProvider.java +++ b/src/datagen/generators/java/mekanism/generators/client/GeneratorsLangProvider.java @@ -6,6 +6,7 @@ import mekanism.generators.common.GeneratorsLang; import mekanism.generators.common.MekanismGenerators; import mekanism.generators.common.advancements.GeneratorsAdvancements; +import mekanism.generators.common.config.GeneratorsConfigTranslations; import mekanism.generators.common.registries.GeneratorsBlocks; import mekanism.generators.common.registries.GeneratorsFluids; import mekanism.generators.common.registries.GeneratorsGases; @@ -22,6 +23,7 @@ public GeneratorsLangProvider(PackOutput output) { @Override protected void addTranslations() { + addConfigs(GeneratorsConfigTranslations.values()); addTags(); addItems(); addBlocks(); diff --git a/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java b/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java index 41a2f3015b9..2d0b42dbdc9 100644 --- a/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java +++ b/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java @@ -13,6 +13,7 @@ import mekanism.common.base.IModModule; import mekanism.common.block.attribute.Attribute; import mekanism.common.block.attribute.AttributeGui; +import mekanism.common.config.IConfigTranslation; import mekanism.common.registration.impl.FluidRegistryObject; import mekanism.common.util.RegistryUtils; import net.minecraft.Util; @@ -118,6 +119,12 @@ protected void add(MekanismAdvancement advancement, String title, String descrip add(advancement.description(), description); } + protected void addConfigs(IConfigTranslation... translations) { + for (IConfigTranslation translation : translations) { + add(translation, translation.translation()); + } + } + protected void addAliases(IAliasedTranslation... translations) { for (IAliasedTranslation translation : translations) { add(translation, translation.getAlias()); diff --git a/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java b/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java index 93041cfb767..d52ec57b199 100644 --- a/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java +++ b/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java @@ -15,6 +15,7 @@ import mekanism.common.Mekanism; import mekanism.common.MekanismLang; import mekanism.common.advancements.MekanismAdvancements; +import mekanism.common.config.MekanismConfigTranslations; import mekanism.common.content.blocktype.FactoryType; import mekanism.common.content.gear.mekasuit.ModuleChargeDistributionUnit; import mekanism.common.content.gear.mekasuit.ModuleElectrolyticBreathingUnit; @@ -72,6 +73,7 @@ public MekanismLangProvider(PackOutput output) { @Override protected void addTranslations() { + addConfigs(MekanismConfigTranslations.values()); addTags(); addItems(); addBlocks(); diff --git a/src/datagen/tools/java/mekanism/tools/client/ToolsLangProvider.java b/src/datagen/tools/java/mekanism/tools/client/ToolsLangProvider.java index 8b37841e1f0..9d9dc6f698d 100644 --- a/src/datagen/tools/java/mekanism/tools/client/ToolsLangProvider.java +++ b/src/datagen/tools/java/mekanism/tools/client/ToolsLangProvider.java @@ -9,6 +9,7 @@ import mekanism.tools.common.ToolsLang; import mekanism.tools.common.ToolsTags; import mekanism.tools.common.advancements.ToolsAdvancements; +import mekanism.tools.common.config.ToolsConfigTranslations; import mekanism.tools.common.registries.ToolsItems; import net.minecraft.data.PackOutput; @@ -20,6 +21,7 @@ public ToolsLangProvider(PackOutput output) { @Override protected void addTranslations() { + addConfigs(ToolsConfigTranslations.values()); addTags(); addItems(); addAdvancements(); diff --git a/src/defense/java/mekanism/defense/client/DefenseClient.java b/src/defense/java/mekanism/defense/client/DefenseClient.java new file mode 100644 index 00000000000..b57d889157b --- /dev/null +++ b/src/defense/java/mekanism/defense/client/DefenseClient.java @@ -0,0 +1,16 @@ +package mekanism.defense.client; + +import mekanism.defense.common.MekanismDefense; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; + +@Mod(value = MekanismDefense.MODID, dist = Dist.CLIENT) +public class DefenseClient { + + public DefenseClient(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); + } +} \ No newline at end of file diff --git a/src/defense/java/mekanism/defense/common/config/DefenseConfig.java b/src/defense/java/mekanism/defense/common/config/DefenseConfig.java index 5e2c4ea6c0c..d539fe7ee7b 100644 --- a/src/defense/java/mekanism/defense/common/config/DefenseConfig.java +++ b/src/defense/java/mekanism/defense/common/config/DefenseConfig.java @@ -10,7 +10,7 @@ public class DefenseConfig extends BaseMekanismConfig { DefenseConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Mekanism Defense Config. This config is synced between server and client.").push("defense"); + DefenseConfigTranslations.SERVER_TOP_LEVEL.applyToBuilder(builder).push("defense"); builder.pop(); configSpec = builder.build(); diff --git a/src/defense/java/mekanism/defense/common/config/DefenseConfigTranslations.java b/src/defense/java/mekanism/defense/common/config/DefenseConfigTranslations.java new file mode 100644 index 00000000000..f1cc4a56eb3 --- /dev/null +++ b/src/defense/java/mekanism/defense/common/config/DefenseConfigTranslations.java @@ -0,0 +1,32 @@ +package mekanism.defense.common.config; + +import mekanism.common.config.IConfigTranslation; +import mekanism.defense.common.MekanismDefense; +import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; + +public enum DefenseConfigTranslations implements IConfigTranslation { + SERVER_TOP_LEVEL("server", "Mekanism Defense Config. This config is synced between server and client."), + ; + + private final String key; + private final String translation; + + DefenseConfigTranslations(String path, String translation) { + this.key = Util.makeDescriptionId("configuration", MekanismDefense.rl(path)); + this.translation = translation; + } + + @NotNull + @Override + public String getTranslationKey() { + return key; + } + + @Override + public String translation() { + return translation; + } + + +} \ No newline at end of file diff --git a/src/generators/java/mekanism/generators/client/GeneratorsClient.java b/src/generators/java/mekanism/generators/client/GeneratorsClient.java new file mode 100644 index 00000000000..e824a57952d --- /dev/null +++ b/src/generators/java/mekanism/generators/client/GeneratorsClient.java @@ -0,0 +1,16 @@ +package mekanism.generators.client; + +import mekanism.generators.common.MekanismGenerators; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; + +@Mod(value = MekanismGenerators.MODID, dist = Dist.CLIENT) +public class GeneratorsClient { + + public GeneratorsClient(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); + } +} \ No newline at end of file diff --git a/src/generators/java/mekanism/generators/common/config/GeneratorsConfig.java b/src/generators/java/mekanism/generators/common/config/GeneratorsConfig.java index 9d9000c257e..f7cb54bc1a5 100644 --- a/src/generators/java/mekanism/generators/common/config/GeneratorsConfig.java +++ b/src/generators/java/mekanism/generators/common/config/GeneratorsConfig.java @@ -88,9 +88,9 @@ public class GeneratorsConfig extends BaseMekanismConfig { GeneratorsConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Mekanism Generators Config. This config is synced between server and client.").push("generators"); + GeneratorsConfigTranslations.SERVER_TOP_LEVEL.applyToBuilder(builder).push("generators"); - energyPerFusionFuel = CachedLongValue.definePositive(this, builder, "Affects the Injection Rate, Max Temp, and Ignition Temp.", + energyPerFusionFuel = CachedLongValue.definePositive(this, builder, GeneratorsConfigTranslations.SERVER_ENERGY_PER_DT, "energyPerFusionFuel", 10_000_000L); solarGeneration = CachedLongValue.definePositive(this, builder, "Peak output for the Solar Generator. Note: It can go higher than this value in some extreme environments.", "solarGeneration", 50L); diff --git a/src/generators/java/mekanism/generators/common/config/GeneratorsConfigTranslations.java b/src/generators/java/mekanism/generators/common/config/GeneratorsConfigTranslations.java new file mode 100644 index 00000000000..f63bd278047 --- /dev/null +++ b/src/generators/java/mekanism/generators/common/config/GeneratorsConfigTranslations.java @@ -0,0 +1,46 @@ +package mekanism.generators.common.config; + +import mekanism.common.config.IConfigTranslation; +import mekanism.generators.common.MekanismGenerators; +import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; + +public enum GeneratorsConfigTranslations implements IConfigTranslation { + SERVER_TOP_LEVEL("server", "Mekanism Generators Config. This config is synced between server and client."), + + SERVER_ENERGY_PER_DT("server.energy_fusion_fuel", "Affects the Injection Rate, Max Temp, and Ignition Temp."), + + STORAGE_TOP_LEVEL("storage", "Generator Energy Storage Config. This config is synced from server to client."), + + GEAR_TOP_LEVEL("gear", "Mekanism Generators Gear Config. This config is synced from server to client."), + + GEAR_MEKA_SUIT("gear.meka_suit", "MekaSuit Settings"), + GEAR_MEKA_SUIT_GEOTHERMAL("gear.meka_suit.geothermal_charging_rate", "Geothermal charging rate (Joules) of pants per tick, per degree above ambient, " + + "per upgrade installed. This value scales down based on how much of the MekaSuit Pants is " + + "submerged. Fire is treated as having a temperature of ~200K above ambient, lava has a " + + "temperature of 1,000K above ambient."), + GEAR_MEKA_SUIT_HEAT_DAMAGE("gear.meka_suit.heat_damage", "Percent of heat damage negated by MekaSuit Pants with maximum geothermal generator units " + + "installed. This number scales down linearly based on how many units are actually installed."), + ; + + private final String key; + private final String translation; + + GeneratorsConfigTranslations(String path, String translation) { + this.key = Util.makeDescriptionId("configuration", MekanismGenerators.rl(path)); + this.translation = translation; + } + + @NotNull + @Override + public String getTranslationKey() { + return key; + } + + @Override + public String translation() { + return translation; + } + + +} \ No newline at end of file diff --git a/src/generators/java/mekanism/generators/common/config/GeneratorsGearConfig.java b/src/generators/java/mekanism/generators/common/config/GeneratorsGearConfig.java index 08a84539591..d0962d4e01c 100644 --- a/src/generators/java/mekanism/generators/common/config/GeneratorsGearConfig.java +++ b/src/generators/java/mekanism/generators/common/config/GeneratorsGearConfig.java @@ -19,13 +19,13 @@ public class GeneratorsGearConfig extends BaseMekanismConfig { GeneratorsGearConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Mekanism Generators Gear Config. This config is synced from server to client.").push("generators-gear"); + GeneratorsConfigTranslations.GEAR_TOP_LEVEL.applyToBuilder(builder).push("generators-gear"); - builder.comment("MekaSuit Settings").push(MEKASUIT_CATEGORY); - mekaSuitGeothermalChargingRate = CachedLongValue.wrap(this, builder.comment("Geothermal charging rate (Joules) of pants per tick, per degree above ambient, per upgrade installed. This value scales down based on how much of the MekaSuit Pants is submerged. Fire is treated as having a temperature of ~200K above ambient, lava has a temperature of 1,000K above ambient.") + GeneratorsConfigTranslations.GEAR_MEKA_SUIT.applyToBuilder(builder).push(MEKASUIT_CATEGORY); + mekaSuitGeothermalChargingRate = CachedLongValue.wrap(this, GeneratorsConfigTranslations.GEAR_MEKA_SUIT_GEOTHERMAL.applyToBuilder(builder) .defineInRange("geothermalChargingRate", 10L, 0, Long.MAX_VALUE / 8)); builder.push(MEKASUIT_DAMAGE_CATEGORY); - mekaSuitHeatDamageReductionRatio = CachedFloatValue.wrap(this, builder.comment("Percent of heat damage negated by MekaSuit Pants with maximum geothermal generator units installed. This number scales down linearly based on how many units are actually installed.") + mekaSuitHeatDamageReductionRatio = CachedFloatValue.wrap(this, GeneratorsConfigTranslations.GEAR_MEKA_SUIT_HEAT_DAMAGE.applyToBuilder(builder) .defineInRange("heatDamageReductionRatio", 0.8, 0, 1)); builder.pop(2); diff --git a/src/generators/java/mekanism/generators/common/config/GeneratorsStorageConfig.java b/src/generators/java/mekanism/generators/common/config/GeneratorsStorageConfig.java index 59f6067964e..c57e2d928ee 100644 --- a/src/generators/java/mekanism/generators/common/config/GeneratorsStorageConfig.java +++ b/src/generators/java/mekanism/generators/common/config/GeneratorsStorageConfig.java @@ -1,6 +1,7 @@ package mekanism.generators.common.config; import mekanism.common.config.BaseMekanismConfig; +import mekanism.common.config.MekanismConfigTranslations; import mekanism.common.config.value.CachedLongValue; import net.neoforged.fml.config.ModConfig.Type; import net.neoforged.neoforge.common.ModConfigSpec; @@ -17,17 +18,17 @@ public class GeneratorsStorageConfig extends BaseMekanismConfig { GeneratorsStorageConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - builder.comment("Generator Energy Storage Config. This config is synced from server to client.").push("storage"); + GeneratorsConfigTranslations.STORAGE_TOP_LEVEL.applyToBuilder(builder).push("storage"); - heatGenerator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "heatGenerator", + heatGenerator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "heatGenerator", 160_000L, 1); - bioGenerator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "bioGenerator", + bioGenerator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "bioGenerator", 160_000L, 1); - solarGenerator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "solarGenerator", + solarGenerator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "solarGenerator", 96_000L, 1); - advancedSolarGenerator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "advancedSolarGenerator", + advancedSolarGenerator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "advancedSolarGenerator", 200_000L, 1); - windGenerator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "windGenerator", + windGenerator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "windGenerator", 200_000L, 1); builder.pop(); diff --git a/src/main/java/mekanism/client/MekanismClient.java b/src/main/java/mekanism/client/MekanismClient.java index edc20dbd329..068d2528b8c 100644 --- a/src/main/java/mekanism/client/MekanismClient.java +++ b/src/main/java/mekanism/client/MekanismClient.java @@ -18,11 +18,18 @@ import net.minecraft.client.Minecraft; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import org.jetbrains.annotations.Nullable; +@Mod(value = Mekanism.MODID, dist = Dist.CLIENT) public class MekanismClient { - private MekanismClient() { + public MekanismClient(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); } public static final Map clientSecurityMap = new Object2ObjectOpenHashMap<>(); diff --git a/src/main/java/mekanism/common/config/IConfigTranslation.java b/src/main/java/mekanism/common/config/IConfigTranslation.java new file mode 100644 index 00000000000..8302df43094 --- /dev/null +++ b/src/main/java/mekanism/common/config/IConfigTranslation.java @@ -0,0 +1,16 @@ +package mekanism.common.config; + +import mekanism.api.text.IHasTranslationKey; +import net.neoforged.neoforge.common.ModConfigSpec; + +public interface IConfigTranslation extends IHasTranslationKey { + + String translation(); + + default ModConfigSpec.Builder applyToBuilder(ModConfigSpec.Builder builder) { + return builder.translation(getTranslationKey()).comment(translation()); + } + + record ConfigTranslation(String getTranslationKey, String translation) implements IConfigTranslation { + } +} \ No newline at end of file diff --git a/src/main/java/mekanism/common/config/MekanismConfigTranslations.java b/src/main/java/mekanism/common/config/MekanismConfigTranslations.java new file mode 100644 index 00000000000..3d5264cff70 --- /dev/null +++ b/src/main/java/mekanism/common/config/MekanismConfigTranslations.java @@ -0,0 +1,34 @@ +package mekanism.common.config; + +import mekanism.common.Mekanism; +import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; + +public enum MekanismConfigTranslations implements IConfigTranslation { + //SERVER_TOP_LEVEL("server", "Mekanism Defense Config. This config is synced between server and client."), + + + BASE_ENERGY_STORAGE_JOULES("storage.energy.base", "Base energy storage (Joules)."), + ; + + private final String key; + private final String translation; + + MekanismConfigTranslations(String path, String translation) { + this.key = Util.makeDescriptionId("configuration", Mekanism.rl(path)); + this.translation = translation; + } + + @NotNull + @Override + public String getTranslationKey() { + return key; + } + + @Override + public String translation() { + return translation; + } + + +} \ No newline at end of file diff --git a/src/main/java/mekanism/common/config/StorageConfig.java b/src/main/java/mekanism/common/config/StorageConfig.java index fc80b98080a..001a79fd465 100644 --- a/src/main/java/mekanism/common/config/StorageConfig.java +++ b/src/main/java/mekanism/common/config/StorageConfig.java @@ -49,76 +49,76 @@ public class StorageConfig extends BaseMekanismConfig { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); builder.comment("Machine Energy Storage Config. This config is synced from server to client.").push("storage"); - enrichmentChamber = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "enrichmentChamber", + enrichmentChamber = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "enrichmentChamber", 20_000L, 1); - osmiumCompressor = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "osmiumCompressor", + osmiumCompressor = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "osmiumCompressor", 80_000L, 1); - combiner = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "combiner", + combiner = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "combiner", 40_000L, 1); - crusher = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "crusher", + crusher = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "crusher", 20_000L, 1); - metallurgicInfuser = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "metallurgicInfuser", + metallurgicInfuser = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "metallurgicInfuser", 20_000L, 1); - purificationChamber = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "purificationChamber", + purificationChamber = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "purificationChamber", 80_000L, 1); - energizedSmelter = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "energizedSmelter", + energizedSmelter = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "energizedSmelter", 20_000L, 1); - digitalMiner = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "digitalMiner", + digitalMiner = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "digitalMiner", 50_000L, 1); - electricPump = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "electricPump", + electricPump = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "electricPump", 40_000L, 1); - chargePad = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chargePad", 2_048_000L, 1); - rotaryCondensentrator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "rotaryCondensentrator", + chargePad = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chargePad", 2_048_000L, 1); + rotaryCondensentrator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "rotaryCondensentrator", 20_000L, 1); - chemicalOxidizer = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalOxidizer", + chemicalOxidizer = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalOxidizer", 80_000L, 1); - chemicalInfuser = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalInfuser", + chemicalInfuser = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalInfuser", 80_000L, 1); - chemicalInjectionChamber = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalInjectionChamber", + chemicalInjectionChamber = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalInjectionChamber", 160_000L, 1); - electrolyticSeparator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "electrolyticSeparator", + electrolyticSeparator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "electrolyticSeparator", 160_000L, 1); - precisionSawmill = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "precisionSawmill", + precisionSawmill = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "precisionSawmill", 20_000L, 1); - chemicalDissolutionChamber = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalDissolutionChamber", + chemicalDissolutionChamber = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalDissolutionChamber", 160_000L, 1); - chemicalWasher = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalWasher", + chemicalWasher = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalWasher", 80_000L, 1); - chemicalCrystallizer = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "chemicalCrystallizer", + chemicalCrystallizer = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "chemicalCrystallizer", 160_000L, 1); - seismicVibrator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "seismicVibrator", + seismicVibrator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "seismicVibrator", 20_000L, 1); - pressurizedReactionBase = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "pressurizedReactionBase", + pressurizedReactionBase = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "pressurizedReactionBase", 2_000L, 1); - fluidicPlenisher = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "fluidicPlenisher", + fluidicPlenisher = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "fluidicPlenisher", 40_000L, 1); - laser = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "laser", + laser = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "laser", 2_000_000L, 1); - laserAmplifier = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "laserAmplifier", + laserAmplifier = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "laserAmplifier", 5_000_000_000L, 1); - laserTractorBeam = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "laserTractorBeam", + laserTractorBeam = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "laserTractorBeam", 5_000_000_000L, 1); - formulaicAssemblicator = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "formulaicAssemblicator", + formulaicAssemblicator = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "formulaicAssemblicator", 40_000L, 1); - teleporter = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "teleporter", + teleporter = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "teleporter", 5_000_000L, 1); - modificationStation = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "modificationStation", + modificationStation = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "modificationStation", 40_000L, 1); - isotopicCentrifuge = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "isotopicCentrifuge", + isotopicCentrifuge = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "isotopicCentrifuge", 80_000L, 1); - nutritionalLiquifier = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "nutritionalLiquifier", + nutritionalLiquifier = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "nutritionalLiquifier", 40_000L, 1); antiprotonicNucleosynthesizer = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules). Also defines max process rate.", "antiprotonicNucleosynthesizer", 1_000_000_000L, 1); - pigmentExtractor = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "pigmentExtractor", + pigmentExtractor = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "pigmentExtractor", 40_000L, 1); - pigmentMixer = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "pigmentMixer", + pigmentMixer = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "pigmentMixer", 80_000L, 1); - paintingMachine = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "paintingMachine", + paintingMachine = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "paintingMachine", 40_000L, 1); spsPort = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules). Also defines max output rate.", "spsPort", 1_000_000_000L, 1); - dimensionalStabilizer = CachedLongValue.definedMin(this, builder, "Base energy storage (Joules).", "dimensionalStabilizer", + dimensionalStabilizer = CachedLongValue.definedMin(this, builder, MekanismConfigTranslations.BASE_ENERGY_STORAGE_JOULES, "dimensionalStabilizer", 40_000L, 1); builder.pop(); diff --git a/src/main/java/mekanism/common/config/value/CachedLongValue.java b/src/main/java/mekanism/common/config/value/CachedLongValue.java index c5c38193fb8..17b0934c219 100644 --- a/src/main/java/mekanism/common/config/value/CachedLongValue.java +++ b/src/main/java/mekanism/common/config/value/CachedLongValue.java @@ -1,6 +1,7 @@ package mekanism.common.config.value; import java.util.function.LongSupplier; +import mekanism.common.config.IConfigTranslation; import mekanism.common.config.IMekanismConfig; import net.neoforged.neoforge.common.ModConfigSpec.Builder; import net.neoforged.neoforge.common.ModConfigSpec.ConfigValue; @@ -31,6 +32,18 @@ public static CachedLongValue define(IMekanismConfig config, Builder builder, St .defineInRange(path, defaultValue, min, max)); } + public static CachedLongValue definePositive(IMekanismConfig config, Builder builder, IConfigTranslation comment, String path, long defaultValue) { + return define(config, builder, comment, path, defaultValue, 0, Long.MAX_VALUE); + } + + public static CachedLongValue definedMin(IMekanismConfig config, Builder builder, IConfigTranslation comment, String path, long defaultValue, long min) { + return define(config, builder, comment, path, defaultValue, min, Long.MAX_VALUE); + } + + public static CachedLongValue define(IMekanismConfig config, Builder builder, IConfigTranslation comment, String path, long defaultValue, long min, long max) { + return CachedLongValue.wrap(config, comment.applyToBuilder(builder).defineInRange(path, defaultValue, min, max)); + } + public long getOrDefault() { if (resolved || isLoaded()) { return get(); diff --git a/src/tools/java/mekanism/tools/client/ToolsClient.java b/src/tools/java/mekanism/tools/client/ToolsClient.java new file mode 100644 index 00000000000..8980370a58f --- /dev/null +++ b/src/tools/java/mekanism/tools/client/ToolsClient.java @@ -0,0 +1,16 @@ +package mekanism.tools.client; + +import mekanism.tools.common.MekanismTools; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.common.Mod; +import net.neoforged.neoforge.client.gui.ConfigurationScreen; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; + +@Mod(value = MekanismTools.MODID, dist = Dist.CLIENT) +public class ToolsClient { + + public ToolsClient(ModContainer container) { + container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new); + } +} \ No newline at end of file diff --git a/src/tools/java/mekanism/tools/common/config/ToolsConfigTranslations.java b/src/tools/java/mekanism/tools/common/config/ToolsConfigTranslations.java new file mode 100644 index 00000000000..6bac3b0af25 --- /dev/null +++ b/src/tools/java/mekanism/tools/common/config/ToolsConfigTranslations.java @@ -0,0 +1,32 @@ +package mekanism.tools.common.config; + +import mekanism.common.config.IConfigTranslation; +import mekanism.tools.common.MekanismTools; +import net.minecraft.Util; +import org.jetbrains.annotations.NotNull; + +public enum ToolsConfigTranslations implements IConfigTranslation { + //SERVER_TOP_LEVEL("server", "Mekanism Defense Config. This config is synced between server and client."), + ; + + private final String key; + private final String translation; + + ToolsConfigTranslations(String path, String translation) { + this.key = Util.makeDescriptionId("configuration", MekanismTools.rl(path)); + this.translation = translation; + } + + @NotNull + @Override + public String getTranslationKey() { + return key; + } + + @Override + public String translation() { + return translation; + } + + +} \ No newline at end of file