diff --git a/src/additions/resources/META-INF/neoforge.mods.toml b/src/additions/resources/META-INF/neoforge.mods.toml index 98e8fb4893b..688be53a6b0 100644 --- a/src/additions/resources/META-INF/neoforge.mods.toml +++ b/src/additions/resources/META-INF/neoforge.mods.toml @@ -11,7 +11,7 @@ license="MIT" authors="Aidancbrady, Thommy101, Thiakil, pupnewfster, dizzyd" credits="unpairedbracket, CyanideX, Ridanisaurus and many others" logoFile="logo.png" - description='''Additions module for Mekanism, contains things that don't quite fit in the other modules.''' + description='''Additions module for Mekanism, contains miscellaneous things that do not thematically fit in the other modules.''' [[dependencies.mekanismadditions]] modId="mekanism" diff --git a/src/api/java/mekanism/api/MekanismAPI.java b/src/api/java/mekanism/api/MekanismAPI.java index eb63cae42c4..0ab2425e69b 100644 --- a/src/api/java/mekanism/api/MekanismAPI.java +++ b/src/api/java/mekanism/api/MekanismAPI.java @@ -25,7 +25,7 @@ private MekanismAPI() { /** * The version of the api classes - may not always match the mod's version */ - public static final String API_VERSION = "10.7.1"; + public static final String API_VERSION = "10.7.3"; /** * Mekanism's Mod ID */ diff --git a/src/api/java/mekanism/api/MekanismAPITags.java b/src/api/java/mekanism/api/MekanismAPITags.java index 9977dc1af0e..365af0d122c 100644 --- a/src/api/java/mekanism/api/MekanismAPITags.java +++ b/src/api/java/mekanism/api/MekanismAPITags.java @@ -89,7 +89,7 @@ private Chemicals() { /** * Chemicals in this tag cannot be inserted into framed blocks * - * @since 10.7.1 + * @since 10.7.3 */ public static final TagKey FRAMEDBLOCKS_BLACKLISTED = tag("framedblocks_blacklisted"); diff --git a/src/api/java/mekanism/api/RelativeSide.java b/src/api/java/mekanism/api/RelativeSide.java index 89622aa2131..9cf7c67bae3 100644 --- a/src/api/java/mekanism/api/RelativeSide.java +++ b/src/api/java/mekanism/api/RelativeSide.java @@ -6,7 +6,7 @@ import java.util.function.IntFunction; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.APILang; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import net.minecraft.core.Direction; import net.minecraft.network.codec.ByteBufCodecs; @@ -15,7 +15,7 @@ import net.minecraft.util.StringRepresentable; @NothingNullByDefault -public enum RelativeSide implements IHasTranslationKey, StringRepresentable { +public enum RelativeSide implements IHasEnumNameTranslationKey, StringRepresentable { FRONT(APILang.FRONT), LEFT(APILang.LEFT), RIGHT(APILang.RIGHT), diff --git a/src/api/java/mekanism/api/Upgrade.java b/src/api/java/mekanism/api/Upgrade.java index 29257724495..a743ffaacc9 100644 --- a/src/api/java/mekanism/api/Upgrade.java +++ b/src/api/java/mekanism/api/Upgrade.java @@ -12,7 +12,7 @@ import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.APILang; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; @NothingNullByDefault -public enum Upgrade implements IHasTranslationKey, StringRepresentable { +public enum Upgrade implements IHasEnumNameTranslationKey, StringRepresentable { SPEED("speed", APILang.UPGRADE_SPEED, APILang.UPGRADE_SPEED_DESCRIPTION, 8, EnumColor.RED), ENERGY("energy", APILang.UPGRADE_ENERGY, APILang.UPGRADE_ENERGY_DESCRIPTION, 8, EnumColor.BRIGHT_GREEN), FILTER("filter", APILang.UPGRADE_FILTER, APILang.UPGRADE_FILTER_DESCRIPTION, 1, EnumColor.DARK_AQUA), diff --git a/src/api/java/mekanism/api/security/SecurityMode.java b/src/api/java/mekanism/api/security/SecurityMode.java index c52bf841662..849f56698b8 100644 --- a/src/api/java/mekanism/api/security/SecurityMode.java +++ b/src/api/java/mekanism/api/security/SecurityMode.java @@ -8,7 +8,7 @@ import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.APILang; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; @@ -22,7 +22,7 @@ * @since 10.2.1 */ @NothingNullByDefault -public enum SecurityMode implements IIncrementalEnum, IHasTextComponent, StringRepresentable { +public enum SecurityMode implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { /** * Public Security: Everyone is allowed access. */ diff --git a/src/api/java/mekanism/api/text/IHasTextComponent.java b/src/api/java/mekanism/api/text/IHasTextComponent.java index 77cf1f2a6d2..05dac29d28e 100644 --- a/src/api/java/mekanism/api/text/IHasTextComponent.java +++ b/src/api/java/mekanism/api/text/IHasTextComponent.java @@ -2,6 +2,8 @@ import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.network.chat.Component; +import net.neoforged.neoforge.common.TranslatableEnum; +import org.jetbrains.annotations.NotNull; @MethodsReturnNonnullByDefault public interface IHasTextComponent { @@ -14,4 +16,17 @@ public interface IHasTextComponent { * Gets the text component that represents this object. */ Component getTextComponent(); + + /** + * Helper interface that also implements Neo's TranslatableEnum interface + * @since 10.7.3 + */ + interface IHasEnumNameTextComponent extends IHasTextComponent, TranslatableEnum { + + @NotNull + @Override + default Component getTranslatedName() { + return getTextComponent(); + } + } } \ No newline at end of file diff --git a/src/api/java/mekanism/api/text/IHasTranslationKey.java b/src/api/java/mekanism/api/text/IHasTranslationKey.java index 56eb5bcc325..7a374fe577f 100644 --- a/src/api/java/mekanism/api/text/IHasTranslationKey.java +++ b/src/api/java/mekanism/api/text/IHasTranslationKey.java @@ -1,6 +1,9 @@ package mekanism.api.text; import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.network.chat.Component; +import net.neoforged.neoforge.common.TranslatableEnum; +import org.jetbrains.annotations.NotNull; @MethodsReturnNonnullByDefault public interface IHasTranslationKey { @@ -9,4 +12,17 @@ public interface IHasTranslationKey { * Gets the translation key for this object. */ String getTranslationKey(); + + /** + * Helper interface that also implements Neo's TranslatableEnum interface + * @since 10.7.3 + */ + interface IHasEnumNameTranslationKey extends IHasTranslationKey, TranslatableEnum { + + @NotNull + @Override + default Component getTranslatedName() { + return TextComponentUtil.translate(getTranslationKey()); + } + } } \ No newline at end of file diff --git a/src/api/java/mekanism/api/text/TextComponentUtil.java b/src/api/java/mekanism/api/text/TextComponentUtil.java index 6303dae36f5..33dc8c17e82 100644 --- a/src/api/java/mekanism/api/text/TextComponentUtil.java +++ b/src/api/java/mekanism/api/text/TextComponentUtil.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.Fluid; +import net.neoforged.neoforge.common.TranslatableEnum; import net.neoforged.neoforge.fluids.FluidStack; public class TextComponentUtil { diff --git a/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java b/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java index 785187d0c87..6fcdd104651 100644 --- a/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java +++ b/src/datagen/additions/java/mekanism/additions/client/AdditionsLangProvider.java @@ -128,7 +128,7 @@ private void addAdvancements() { } private void addMisc() { - addModInfo("Additions module for Mekanism, contains things that don't quite fit in the other modules"); + addModInfo("Additions module for Mekanism, contains miscellaneous things that do not thematically fit in the other modules"); addPackData(AdditionsLang.MEKANISM_ADDITIONS, AdditionsLang.PACK_DESCRIPTION); add(AdditionsLang.CHANNEL, "Channel: %1$s"); add(AdditionsLang.CHANNEL_CHANGE, "Channel changed to: %1$s"); diff --git a/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 b/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 index 0d91a83a4b2..27a0fc6f904 100644 --- a/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 +++ b/src/datagen/generated/mekanism/.cache/c10fcd8abbb6a520fc3ac2cf14b627d36958dd55 @@ -1,5 +1,5 @@ -// 1.21.1 2024-08-22T12:14:57.9672938 Languages: en_us for mod: mekanism +// 1.21.1 2024-08-22T14:02:45.427133 Languages: en_us for mod: mekanism 754fba467b3085b36f60457de81fb751ed5a85ea assets/mekanism/lang/en_au.json 754fba467b3085b36f60457de81fb751ed5a85ea assets/mekanism/lang/en_gb.json -a180c8aff1e6fe07997e8e92c6d3b466aa5dbc18 assets/mekanism/lang/en_ud.json -08f96430d05f07b460d07ca3723b4ee124b74854 assets/mekanism/lang/en_us.json +acb58962a49236696285525707d2b001f33c1d24 assets/mekanism/lang/en_ud.json +6013c5b38ae16a84f6ce10dcbcc4fe3ab5e648bb 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 6b7bacb919a..c9f047c3914 100644 --- a/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json +++ b/src/datagen/generated/mekanism/assets/mekanism/lang/en_ud.json @@ -311,6 +311,9 @@ "alias.mekanism.upgrade.muffler": "ɹǝꞁɟɟnW punoS", "alias.mekanism.upgrade.overclock": "ɹǝʞɔoꞁɔɹǝʌO", "alias.mekanism.uranium": "ʞɔoꞁᗺ ɯnᴉuɐɹ∩", + "anchor_type.mekanism.above_bottom": "(ǝnꞁɐʌ + ⅄uᴉɯ = ʎ) ɯoʇʇoᗺ ǝʌoqⱯ", + "anchor_type.mekanism.absolute": "(ǝnꞁɐʌ = ʎ) ǝʇnꞁosqⱯ", + "anchor_type.mekanism.below_top": "(ǝnꞁɐʌ - ⅄uᴉɯ + ⥝ - ɥʇdǝp = ʎ) do⟘ ʍoꞁǝᗺ", "assemblicator.mekanism.auto_mode_toggle": "%s :ǝpoW-oʇnⱯ", "assemblicator.mekanism.craft_available": "sɯǝʇI ǝꞁqɐꞁᴉɐʌⱯ ʇɟɐɹƆ", "assemblicator.mekanism.craft_single": "ɯǝʇI ǝꞁᵷuᴉS ʇɟɐɹƆ", @@ -828,6 +831,208 @@ "configuration.mekanism.strict_input": "ʇnduI ʇɔᴉɹʇS", "configuration.mekanism.strict_input.enabled": "(%s) ʇnduI ʇɔᴉɹʇS", "configuration.mekanism.transporter": "ᵷᴉɟuoƆ ɹǝʇɹodsuɐɹ⟘", + "configuration.mekanism.world.fluorite.buried.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.fluorite.buried.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.fluorite.buried.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.fluorite.buried.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ǝʇᴉɹonꞁɟ ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.fluorite.buried.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.fluorite.buried.max.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.fluorite.buried.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.fluorite.buried.max_size.tooltip": "˙uᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.fluorite.buried.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.fluorite.buried.min.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.fluorite.buried.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.fluorite.buried.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.fluorite.buried.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.fluorite.buried.shape.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.fluorite.buried.top_level": "uᴉǝΛ pǝᴉɹnᗺ", + "configuration.mekanism.world.fluorite.buried.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ǝʇᴉɹonꞁℲ pǝᴉɹnᗺ", + "configuration.mekanism.world.fluorite.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.fluorite.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ǝɹo ǝʇᴉɹonꞁℲ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.fluorite.normal.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.fluorite.normal.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.fluorite.normal.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.fluorite.normal.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ǝʇᴉɹonꞁɟ ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.fluorite.normal.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.fluorite.normal.max.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.fluorite.normal.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.fluorite.normal.max_size.tooltip": "˙uᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.fluorite.normal.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.fluorite.normal.min.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.fluorite.normal.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.fluorite.normal.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.fluorite.normal.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.fluorite.normal.shape.tooltip": "˙suᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.fluorite.normal.top_level": "uᴉǝΛ ꞁɐɯɹoN", + "configuration.mekanism.world.fluorite.normal.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ǝʇᴉɹonꞁℲ ꞁɐɯɹoN", + "configuration.mekanism.world.fluorite.top_level": "sᵷuᴉʇʇǝS ǝʇᴉɹonꞁℲ", + "configuration.mekanism.world.fluorite.top_level.tooltip": "˙ǝɹo ǝʇᴉɹonꞁℲ ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.height_range.anchor.type": "ǝdʎ⟘ ɹoɥɔuⱯ", + "configuration.mekanism.world.height_range.anchor.type.tooltip": "ɹoɥɔuɐ ɟo ǝdʎ⟘", + "configuration.mekanism.world.height_range.anchor.value": "ǝnꞁɐΛ", + "configuration.mekanism.world.height_range.anchor.value.tooltip": "˙ǝdʎʇ ǝɥʇ uo pǝsɐq ɹoɥɔuɐ ǝɥʇ ɹoɟ ʎ ᵷuᴉʇɐꞁnɔꞁɐɔ ɹoɟ pǝsn ǝnꞁɐΛ", + "configuration.mekanism.world.height_range.plateau": "nɐǝʇɐꞁԀ", + "configuration.mekanism.world.height_range.plateau.tooltip": "˙ǝꞁᵷuɐᴉɹʇ ɐ sᴉ ǝdɐɥs ǝɥʇ suɐǝɯ oɹǝz ɟo ǝnꞁɐʌ Ɐ ˙ᗡIOZƎԀⱯᴚ⟘ sᴉ ǝdɐɥs ɟᴉ pǝsn ʎꞁuo 'pᴉozǝdɐɹʇ ɟo ǝpᴉs ʇɹoɥs ɟo ɥʇᵷuǝꞁ ɟꞁɐH", + "configuration.mekanism.world.lead.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.lead.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ǝɹo pɐǝꞀ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.lead.normal.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.lead.normal.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.lead.normal.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.lead.normal.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo pɐǝꞁ ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.lead.normal.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.lead.normal.max.tooltip": "˙suᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.lead.normal.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.lead.normal.max_size.tooltip": "˙uᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.lead.normal.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.lead.normal.min.tooltip": "˙suᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.lead.normal.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.lead.normal.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.lead.normal.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.lead.normal.shape.tooltip": "˙suᴉǝΛ pɐǝꞀ ꞁɐɯɹoN ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.lead.normal.top_level": "uᴉǝΛ ꞁɐɯɹoN", + "configuration.mekanism.world.lead.normal.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ pɐǝꞀ ꞁɐɯɹoN", + "configuration.mekanism.world.lead.top_level": "sᵷuᴉʇʇǝS pɐǝꞀ", + "configuration.mekanism.world.lead.top_level.tooltip": "˙ǝɹo pɐǝꞀ ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.osmium.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.osmium.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ǝɹo ɯnᴉɯsO ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.osmium.middle.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.osmium.middle.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.middle.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.osmium.middle.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ɯnᴉɯso ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.osmium.middle.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.osmium.middle.max.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.middle.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.osmium.middle.max_size.tooltip": "˙uᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.middle.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.osmium.middle.min.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.osmium.middle.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.osmium.middle.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.middle.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.middle.shape.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.middle.top_level": "uᴉǝΛ ǝꞁppᴉW", + "configuration.mekanism.world.osmium.middle.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ɯnᴉɯsO ǝꞁppᴉW", + "configuration.mekanism.world.osmium.small.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.osmium.small.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.small.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.osmium.small.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ɯnᴉɯso ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.osmium.small.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.osmium.small.max.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.small.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.osmium.small.max_size.tooltip": "˙uᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.small.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.osmium.small.min.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.osmium.small.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.osmium.small.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.small.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.small.shape.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.small.top_level": "uᴉǝΛ ꞁꞁɐɯS", + "configuration.mekanism.world.osmium.small.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ɯnᴉɯsO ꞁꞁɐɯS", + "configuration.mekanism.world.osmium.top_level": "sᵷuᴉʇʇǝS ɯnᴉɯsO", + "configuration.mekanism.world.osmium.top_level.tooltip": "˙ǝɹo ɯnᴉɯsO ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.osmium.upper.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.osmium.upper.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.upper.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.osmium.upper.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ɯnᴉɯso ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.osmium.upper.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.osmium.upper.max.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.upper.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.osmium.upper.max_size.tooltip": "˙uᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.osmium.upper.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.osmium.upper.min.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.osmium.upper.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.osmium.upper.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.osmium.upper.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.upper.shape.tooltip": "˙suᴉǝΛ ɯnᴉɯsO ɹǝdd∩ ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.osmium.upper.top_level": "uᴉǝΛ ɹǝdd∩", + "configuration.mekanism.world.osmium.upper.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ɯnᴉɯsO ɹǝdd∩", + "configuration.mekanism.world.retrogen": "uǝᵷoɹʇǝᴚ", + "configuration.mekanism.world.retrogen.tooltip": "˙uoᴉsɹǝΛuǝ⅁pꞁɹoMɹǝsn dɯnq oʇ ʇuɐʍ osꞁɐ noʎ sᴉɥʇ ᵷuᴉꞁqɐuǝ uǝɥʍ ꞁɐɹǝuǝᵷ uI ˙sʞɔoꞁq ǝɹo puɐ ʇꞁɐs ɯsᴉuɐʞǝW uǝᵷoɹʇǝɹ oʇ sʞunɥɔ sʍoꞁꞁⱯ", + "configuration.mekanism.world.salt": "sᵷuᴉʇʇǝS ʇꞁɐS", + "configuration.mekanism.world.salt.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.salt.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ʇꞁɐs ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.salt.half_height": "ʇɥᵷᴉǝH ɟꞁɐH", + "configuration.mekanism.world.salt.half_height.tooltip": "˙ʇꞁɐs ɟo uᴉǝʌ ɐ ᵷuᴉɔɐꞁd uǝɥʍ uʍop puɐ dn puǝʇxǝ oʇ sʞɔoꞁq ɟo ɹǝqɯnN", + "configuration.mekanism.world.salt.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.salt.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ ʇꞁɐs ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.salt.radius.max": "snᴉpɐᴚ uᴉW", + "configuration.mekanism.world.salt.radius.max.tooltip": "˙ʇꞁɐs ɟo uᴉǝʌ ɐ uᴉ snᴉpɐɹ ǝɥʇ ɹoɟ (pɐǝɹds) ʎʇᴉꞁᴉqɐᴉɹɐʌ pǝpuǝʇxƎ", + "configuration.mekanism.world.salt.radius.min": "snᴉpɐᴚ uᴉW", + "configuration.mekanism.world.salt.radius.min.tooltip": "˙ʇꞁɐs ɟo uᴉǝʌ ɐ ɟo snᴉpɐɹ ǝsɐᗺ", + "configuration.mekanism.world.salt.tooltip": "˙ʇꞁɐs ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.tin.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.tin.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ǝɹo uᴉ⟘ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.tin.large.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.tin.large.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.tin.large.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.tin.large.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo uᴉʇ ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.tin.large.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.tin.large.max.tooltip": "˙suᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.tin.large.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.tin.large.max_size.tooltip": "˙uᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.tin.large.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.tin.large.min.tooltip": "˙suᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.tin.large.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.tin.large.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.tin.large.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.tin.large.shape.tooltip": "˙suᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.tin.large.top_level": "uᴉǝΛ ǝᵷɹɐꞀ", + "configuration.mekanism.world.tin.large.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ uᴉ⟘ ǝᵷɹɐꞀ", + "configuration.mekanism.world.tin.small.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.tin.small.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.tin.small.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.tin.small.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo uᴉʇ ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.tin.small.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.tin.small.max.tooltip": "˙suᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.tin.small.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.tin.small.max_size.tooltip": "˙uᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.tin.small.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.tin.small.min.tooltip": "˙suᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.tin.small.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.tin.small.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.tin.small.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.tin.small.shape.tooltip": "˙suᴉǝΛ uᴉ⟘ ꞁꞁɐɯS ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.tin.small.top_level": "uᴉǝΛ ꞁꞁɐɯS", + "configuration.mekanism.world.tin.small.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ uᴉ⟘ ꞁꞁɐɯS", + "configuration.mekanism.world.tin.top_level": "sᵷuᴉʇʇǝS uᴉ⟘", + "configuration.mekanism.world.tin.top_level.tooltip": "˙ǝɹo uᴉ⟘ ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.uranium.buried.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.uranium.buried.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.uranium.buried.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.uranium.buried.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ɯnᴉuɐɹn ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.uranium.buried.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.uranium.buried.max.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.uranium.buried.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.uranium.buried.max_size.tooltip": "˙uᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.uranium.buried.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.uranium.buried.min.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.uranium.buried.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.uranium.buried.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.uranium.buried.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.uranium.buried.shape.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.uranium.buried.top_level": "uᴉǝΛ pǝᴉɹnᗺ", + "configuration.mekanism.world.uranium.buried.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ɯnᴉuɐɹ∩ pǝᴉɹnᗺ", + "configuration.mekanism.world.uranium.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.uranium.generate.tooltip": "˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs ǝɹo ɯnᴉuɐɹ∩ ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.uranium.small.discard_chance": "ǝɔuɐɥƆ pɹɐɔsᴉᗡ", + "configuration.mekanism.world.uranium.small.discard_chance.tooltip": "˙pǝɔɐꞁd ʇou ǝɹɐ uᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ɐ uᴉ ɹᴉɐ oʇ pǝsodxǝ ʎꞁʇɔǝɹᴉp ǝɹɐ ʇɐɥʇ sʞɔoꞁq ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.uranium.small.generate": "ǝʇɐɹǝuǝ⅁ pꞁnoɥS", + "configuration.mekanism.world.uranium.small.generate.tooltip": "˙pǝꞁqɐuǝ ǝq oʇ ǝɹo ɯnᴉuɐɹn ᵷuᴉʇɐɹǝuǝᵷ sǝɹᴉnbǝᴚ :ǝʇoN ˙uoᴉʇɐɹǝuǝᵷ pꞁɹoʍ oʇ pǝppɐ ǝq pꞁnoɥs suᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ɟᴉ sǝuᴉɯɹǝʇǝᗡ", + "configuration.mekanism.world.uranium.small.max": "ɹoɥɔuⱯ xɐW", + "configuration.mekanism.world.uranium.small.max.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉxɐW", + "configuration.mekanism.world.uranium.small.max_size": "ǝzᴉS xɐW", + "configuration.mekanism.world.uranium.small.max_size.tooltip": "˙uᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ɐ uᴉ sʞɔoꞁq ɟo ɹǝqɯnu ɯnɯᴉxɐW", + "configuration.mekanism.world.uranium.small.min": "ɹoɥɔuⱯ uᴉW", + "configuration.mekanism.world.uranium.small.min.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ɹoɟ ɹoɥɔuɐ ʇɥᵷᴉǝɥ (ǝʌᴉsnꞁɔuᴉ) ɯnɯᴉuᴉW", + "configuration.mekanism.world.uranium.small.per_chunk": "ʞunɥƆ ɹǝԀ", + "configuration.mekanism.world.uranium.small.per_chunk.tooltip": "˙ʞunɥɔ ɐ uᴉ sǝʇɐɹǝuǝᵷ suᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ʇɐɥʇ ǝɔuɐɥƆ", + "configuration.mekanism.world.uranium.small.shape": "ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.uranium.small.shape.tooltip": "˙suᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS ᵷuᴉɔɐꞁd ɹoɟ ǝdɐɥs uoᴉʇnqᴉɹʇsᴉᗡ", + "configuration.mekanism.world.uranium.small.top_level": "uᴉǝΛ ꞁꞁɐɯS", + "configuration.mekanism.world.uranium.small.top_level.tooltip": "˙sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁ uᴉǝΛ ɯnᴉuɐɹ∩ ꞁꞁɐɯS", + "configuration.mekanism.world.uranium.top_level": "sᵷuᴉʇʇǝS ɯnᴉuɐɹ∩", + "configuration.mekanism.world.uranium.top_level.tooltip": "˙ǝɹo ɯnᴉuɐɹ∩ ɹoɟ sᵷuᴉʇʇǝS uoᴉʇɐɹǝuǝ⅁", + "configuration.mekanism.world.world_version": "uoᴉsɹǝΛ pꞁɹoM ɹǝs∩", + "configuration.mekanism.world.world_version.tooltip": "˙sʞunɥɔ pǝpɐoꞁ ꞁꞁɐ uᴉ ǝɹo sʇᴉ uǝᵷǝɹ oʇ ɯsᴉuɐʞǝW ǝsnɐɔ oʇ ǝnꞁɐʌ sᴉɥʇ ǝᵷuɐɥƆ", "configuration_card.mekanism.cleared": "pɹɐƆ uoᴉʇɐɹnᵷᴉɟuoƆ pǝɹɐǝꞁƆ", "configuration_card.mekanism.got": "%s ɯoɹɟ ɐʇɐp uoᴉʇɐɹnᵷᴉɟuoɔ pǝʌǝᴉɹʇǝᴚ", "configuration_card.mekanism.has_data": "%s :ɐʇɐᗡ", @@ -1188,7 +1393,6 @@ "fluid_container.mekanism.empty": "ʎʇdɯƎ", "fluid_container.mekanism.fill": "ꞁꞁᴉℲ", "fml.menu.mods.info.description.mekanism": "˙suodɐǝʍ puɐ 'ɹoɯɹɐ 'sꞁooʇ ꞁnɟɹǝʍod ǝʇɐǝɹɔ oʇ pǝsn ǝq uɐɔ ʇɐɥʇ ʎɹǝuᴉɥɔɐɯ ɥɔǝʇ-ɥᵷᴉɥ ᵷuᴉɹnʇɐǝɟ uo-ppɐ ʇɟɐɹɔǝuᴉW ɐ sᴉ ɯsᴉuɐʞǝW", - "fml.menu.mods.info.displayname.mekanism": "ɯsᴉuɐʞǝW", "free_runner.mekanism.disabled": "pǝꞁqɐsᴉᗡ", "free_runner.mekanism.mode_change": "%s :oʇ pǝᵷuɐɥɔ ǝpoɯ ɹǝuunɹ ǝǝɹℲ", "free_runner.mekanism.normal": "ɹɐꞁnᵷǝᴚ", @@ -1311,6 +1515,8 @@ "gui.mekanism.volume": "%s :ǝɯnꞁoΛ", "gui.mekanism.warning": "ᵷuᴉuɹɐM", "gui.mekanism.width": "ɥʇpᴉM", + "height_shape.mekanism.above_bottom": "ɯɹoɟᴉu∩", + "height_shape.mekanism.trapezoid": "pᴉozǝdɐɹ⟘", "holiday.mekanism.border": "%s%s%1$s", "holiday.mekanism.christmas.1": "¡%s 'sɐɯʇsᴉɹɥƆ ʎɹɹǝW", "holiday.mekanism.christmas.2": "ɹǝǝɥɔ sɐɯʇsᴉɹɥƆ ɟo ʎʇuǝꞁd ǝʌɐɥ noʎ ʎɐW", @@ -1700,9 +1906,11 @@ "qio.mekanism.search.focus.auto": "˙pɹɐoqɥsɐp ɐ ᵷuᴉuǝdo uǝɥʍ ɹɐq ɥɔɹɐǝs OIꝹ ǝɥʇ snɔoɟ oʇnⱯ", "qio.mekanism.search.focus.manual": "˙pɹɐoqɥsɐp ɐ ᵷuᴉuǝdo uǝɥʍ ɹɐq ɥɔɹɐǝs OIꝹ ǝɥʇ snɔoɟ ʎꞁꞁɐɔᴉʇɐɯoʇnɐ ʇ,uoᗡ", "qio.mekanism.set_frequency": "ʎɔuǝnbǝɹℲ ʇǝS", + "qio.mekanism.sort_ascending": "ᵷuᴉpuǝɔsⱯ", "qio.mekanism.sort_ascending_desc": "˙ɹǝpɹo ᵷuᴉpuǝɔsɐ uᴉ sɯǝʇᴉ ʇɹoS", "qio.mekanism.sort_count": "ʇunoƆ", "qio.mekanism.sort_count_desc": "˙ʇunoɔ ʎq sɯǝʇᴉ ʇɹoS", + "qio.mekanism.sort_descending": "ᵷuᴉpuǝɔsǝᗡ", "qio.mekanism.sort_descending_desc": "˙ɹǝpɹo ᵷuᴉpuǝɔsǝp uᴉ sɯǝʇᴉ ʇɹoS", "qio.mekanism.sort_mod": "poW", "qio.mekanism.sort_mod_desc": "˙poɯ ʎq sɯǝʇᴉ ʇɹoS", 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 2d19f228720..d3b38d0e719 100644 --- a/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json +++ b/src/datagen/generated/mekanism/assets/mekanism/lang/en_us.json @@ -312,6 +312,9 @@ "alias.mekanism.upgrade.muffler": "Sound Muffler", "alias.mekanism.upgrade.overclock": "Overclocker", "alias.mekanism.uranium": "Uranium Block", + "anchor_type.mekanism.above_bottom": "Above Bottom (y = minY + value)", + "anchor_type.mekanism.absolute": "Absolute (y = value)", + "anchor_type.mekanism.below_top": "Below Top (y = depth - 1 + minY - value)", "assemblicator.mekanism.auto_mode_toggle": "Auto-Mode: %1$s", "assemblicator.mekanism.craft_available": "Craft Available Items", "assemblicator.mekanism.craft_single": "Craft Single Item", @@ -829,6 +832,208 @@ "configuration.mekanism.strict_input": "Strict Input", "configuration.mekanism.strict_input.enabled": "Strict Input (%1$s)", "configuration.mekanism.transporter": "Transporter Config", + "configuration.mekanism.world.fluorite.buried.discard_chance": "Discard Chance", + "configuration.mekanism.world.fluorite.buried.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Buried Fluorite Vein are not placed.", + "configuration.mekanism.world.fluorite.buried.generate": "Should Generate", + "configuration.mekanism.world.fluorite.buried.generate.tooltip": "Determines if Buried Fluorite Veins should be added to world generation. Note: Requires generating fluorite ore to be enabled.", + "configuration.mekanism.world.fluorite.buried.max": "Max Anchor", + "configuration.mekanism.world.fluorite.buried.max.tooltip": "Maximum (inclusive) height anchor for Buried Fluorite Veins.", + "configuration.mekanism.world.fluorite.buried.max_size": "Max Size", + "configuration.mekanism.world.fluorite.buried.max_size.tooltip": "Maximum number of blocks in a Buried Fluorite Vein.", + "configuration.mekanism.world.fluorite.buried.min": "Min Anchor", + "configuration.mekanism.world.fluorite.buried.min.tooltip": "Minimum (inclusive) height anchor for Buried Fluorite Veins.", + "configuration.mekanism.world.fluorite.buried.per_chunk": "Per Chunk", + "configuration.mekanism.world.fluorite.buried.per_chunk.tooltip": "Chance that Buried Fluorite Veins generates in a chunk.", + "configuration.mekanism.world.fluorite.buried.shape": "Distribution shape", + "configuration.mekanism.world.fluorite.buried.shape.tooltip": "Distribution shape for placing Buried Fluorite Veins.", + "configuration.mekanism.world.fluorite.buried.top_level": "Buried Vein", + "configuration.mekanism.world.fluorite.buried.top_level.tooltip": "Buried Fluorite Vein Generation Settings.", + "configuration.mekanism.world.fluorite.generate": "Should Generate", + "configuration.mekanism.world.fluorite.generate.tooltip": "Determines if Fluorite ore should be added to world generation.", + "configuration.mekanism.world.fluorite.normal.discard_chance": "Discard Chance", + "configuration.mekanism.world.fluorite.normal.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Normal Fluorite Vein are not placed.", + "configuration.mekanism.world.fluorite.normal.generate": "Should Generate", + "configuration.mekanism.world.fluorite.normal.generate.tooltip": "Determines if Normal Fluorite Veins should be added to world generation. Note: Requires generating fluorite ore to be enabled.", + "configuration.mekanism.world.fluorite.normal.max": "Max Anchor", + "configuration.mekanism.world.fluorite.normal.max.tooltip": "Maximum (inclusive) height anchor for Normal Fluorite Veins.", + "configuration.mekanism.world.fluorite.normal.max_size": "Max Size", + "configuration.mekanism.world.fluorite.normal.max_size.tooltip": "Maximum number of blocks in a Normal Fluorite Vein.", + "configuration.mekanism.world.fluorite.normal.min": "Min Anchor", + "configuration.mekanism.world.fluorite.normal.min.tooltip": "Minimum (inclusive) height anchor for Normal Fluorite Veins.", + "configuration.mekanism.world.fluorite.normal.per_chunk": "Per Chunk", + "configuration.mekanism.world.fluorite.normal.per_chunk.tooltip": "Chance that Normal Fluorite Veins generates in a chunk.", + "configuration.mekanism.world.fluorite.normal.shape": "Distribution shape", + "configuration.mekanism.world.fluorite.normal.shape.tooltip": "Distribution shape for placing Normal Fluorite Veins.", + "configuration.mekanism.world.fluorite.normal.top_level": "Normal Vein", + "configuration.mekanism.world.fluorite.normal.top_level.tooltip": "Normal Fluorite Vein Generation Settings.", + "configuration.mekanism.world.fluorite.top_level": "Fluorite Settings", + "configuration.mekanism.world.fluorite.top_level.tooltip": "Generation Settings for Fluorite ore.", + "configuration.mekanism.world.height_range.anchor.type": "Anchor Type", + "configuration.mekanism.world.height_range.anchor.type.tooltip": "Type of anchor", + "configuration.mekanism.world.height_range.anchor.value": "Value", + "configuration.mekanism.world.height_range.anchor.value.tooltip": "Value used for calculating y for the anchor based on the type.", + "configuration.mekanism.world.height_range.plateau": "Plateau", + "configuration.mekanism.world.height_range.plateau.tooltip": "Half length of short side of trapezoid, only used if shape is TRAPEZOID. A value of zero means the shape is a triangle.", + "configuration.mekanism.world.lead.generate": "Should Generate", + "configuration.mekanism.world.lead.generate.tooltip": "Determines if Lead ore should be added to world generation.", + "configuration.mekanism.world.lead.normal.discard_chance": "Discard Chance", + "configuration.mekanism.world.lead.normal.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Normal Lead Vein are not placed.", + "configuration.mekanism.world.lead.normal.generate": "Should Generate", + "configuration.mekanism.world.lead.normal.generate.tooltip": "Determines if Normal Lead Veins should be added to world generation. Note: Requires generating lead ore to be enabled.", + "configuration.mekanism.world.lead.normal.max": "Max Anchor", + "configuration.mekanism.world.lead.normal.max.tooltip": "Maximum (inclusive) height anchor for Normal Lead Veins.", + "configuration.mekanism.world.lead.normal.max_size": "Max Size", + "configuration.mekanism.world.lead.normal.max_size.tooltip": "Maximum number of blocks in a Normal Lead Vein.", + "configuration.mekanism.world.lead.normal.min": "Min Anchor", + "configuration.mekanism.world.lead.normal.min.tooltip": "Minimum (inclusive) height anchor for Normal Lead Veins.", + "configuration.mekanism.world.lead.normal.per_chunk": "Per Chunk", + "configuration.mekanism.world.lead.normal.per_chunk.tooltip": "Chance that Normal Lead Veins generates in a chunk.", + "configuration.mekanism.world.lead.normal.shape": "Distribution shape", + "configuration.mekanism.world.lead.normal.shape.tooltip": "Distribution shape for placing Normal Lead Veins.", + "configuration.mekanism.world.lead.normal.top_level": "Normal Vein", + "configuration.mekanism.world.lead.normal.top_level.tooltip": "Normal Lead Vein Generation Settings.", + "configuration.mekanism.world.lead.top_level": "Lead Settings", + "configuration.mekanism.world.lead.top_level.tooltip": "Generation Settings for Lead ore.", + "configuration.mekanism.world.osmium.generate": "Should Generate", + "configuration.mekanism.world.osmium.generate.tooltip": "Determines if Osmium ore should be added to world generation.", + "configuration.mekanism.world.osmium.middle.discard_chance": "Discard Chance", + "configuration.mekanism.world.osmium.middle.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Middle Osmium Vein are not placed.", + "configuration.mekanism.world.osmium.middle.generate": "Should Generate", + "configuration.mekanism.world.osmium.middle.generate.tooltip": "Determines if Middle Osmium Veins should be added to world generation. Note: Requires generating osmium ore to be enabled.", + "configuration.mekanism.world.osmium.middle.max": "Max Anchor", + "configuration.mekanism.world.osmium.middle.max.tooltip": "Maximum (inclusive) height anchor for Middle Osmium Veins.", + "configuration.mekanism.world.osmium.middle.max_size": "Max Size", + "configuration.mekanism.world.osmium.middle.max_size.tooltip": "Maximum number of blocks in a Middle Osmium Vein.", + "configuration.mekanism.world.osmium.middle.min": "Min Anchor", + "configuration.mekanism.world.osmium.middle.min.tooltip": "Minimum (inclusive) height anchor for Middle Osmium Veins.", + "configuration.mekanism.world.osmium.middle.per_chunk": "Per Chunk", + "configuration.mekanism.world.osmium.middle.per_chunk.tooltip": "Chance that Middle Osmium Veins generates in a chunk.", + "configuration.mekanism.world.osmium.middle.shape": "Distribution shape", + "configuration.mekanism.world.osmium.middle.shape.tooltip": "Distribution shape for placing Middle Osmium Veins.", + "configuration.mekanism.world.osmium.middle.top_level": "Middle Vein", + "configuration.mekanism.world.osmium.middle.top_level.tooltip": "Middle Osmium Vein Generation Settings.", + "configuration.mekanism.world.osmium.small.discard_chance": "Discard Chance", + "configuration.mekanism.world.osmium.small.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Small Osmium Vein are not placed.", + "configuration.mekanism.world.osmium.small.generate": "Should Generate", + "configuration.mekanism.world.osmium.small.generate.tooltip": "Determines if Small Osmium Veins should be added to world generation. Note: Requires generating osmium ore to be enabled.", + "configuration.mekanism.world.osmium.small.max": "Max Anchor", + "configuration.mekanism.world.osmium.small.max.tooltip": "Maximum (inclusive) height anchor for Small Osmium Veins.", + "configuration.mekanism.world.osmium.small.max_size": "Max Size", + "configuration.mekanism.world.osmium.small.max_size.tooltip": "Maximum number of blocks in a Small Osmium Vein.", + "configuration.mekanism.world.osmium.small.min": "Min Anchor", + "configuration.mekanism.world.osmium.small.min.tooltip": "Minimum (inclusive) height anchor for Small Osmium Veins.", + "configuration.mekanism.world.osmium.small.per_chunk": "Per Chunk", + "configuration.mekanism.world.osmium.small.per_chunk.tooltip": "Chance that Small Osmium Veins generates in a chunk.", + "configuration.mekanism.world.osmium.small.shape": "Distribution shape", + "configuration.mekanism.world.osmium.small.shape.tooltip": "Distribution shape for placing Small Osmium Veins.", + "configuration.mekanism.world.osmium.small.top_level": "Small Vein", + "configuration.mekanism.world.osmium.small.top_level.tooltip": "Small Osmium Vein Generation Settings.", + "configuration.mekanism.world.osmium.top_level": "Osmium Settings", + "configuration.mekanism.world.osmium.top_level.tooltip": "Generation Settings for Osmium ore.", + "configuration.mekanism.world.osmium.upper.discard_chance": "Discard Chance", + "configuration.mekanism.world.osmium.upper.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Upper Osmium Vein are not placed.", + "configuration.mekanism.world.osmium.upper.generate": "Should Generate", + "configuration.mekanism.world.osmium.upper.generate.tooltip": "Determines if Upper Osmium Veins should be added to world generation. Note: Requires generating osmium ore to be enabled.", + "configuration.mekanism.world.osmium.upper.max": "Max Anchor", + "configuration.mekanism.world.osmium.upper.max.tooltip": "Maximum (inclusive) height anchor for Upper Osmium Veins.", + "configuration.mekanism.world.osmium.upper.max_size": "Max Size", + "configuration.mekanism.world.osmium.upper.max_size.tooltip": "Maximum number of blocks in a Upper Osmium Vein.", + "configuration.mekanism.world.osmium.upper.min": "Min Anchor", + "configuration.mekanism.world.osmium.upper.min.tooltip": "Minimum (inclusive) height anchor for Upper Osmium Veins.", + "configuration.mekanism.world.osmium.upper.per_chunk": "Per Chunk", + "configuration.mekanism.world.osmium.upper.per_chunk.tooltip": "Chance that Upper Osmium Veins generates in a chunk.", + "configuration.mekanism.world.osmium.upper.shape": "Distribution shape", + "configuration.mekanism.world.osmium.upper.shape.tooltip": "Distribution shape for placing Upper Osmium Veins.", + "configuration.mekanism.world.osmium.upper.top_level": "Upper Vein", + "configuration.mekanism.world.osmium.upper.top_level.tooltip": "Upper Osmium Vein Generation Settings.", + "configuration.mekanism.world.retrogen": "Retrogen", + "configuration.mekanism.world.retrogen.tooltip": "Allows chunks to retrogen Mekanism salt and ore blocks. In general when enabling this you also want to bump userWorldGenVersion.", + "configuration.mekanism.world.salt": "Salt Settings", + "configuration.mekanism.world.salt.generate": "Should Generate", + "configuration.mekanism.world.salt.generate.tooltip": "Determines if salt should be added to world generation.", + "configuration.mekanism.world.salt.half_height": "Half Height", + "configuration.mekanism.world.salt.half_height.tooltip": "Number of blocks to extend up and down when placing a vein of salt.", + "configuration.mekanism.world.salt.per_chunk": "Per Chunk", + "configuration.mekanism.world.salt.per_chunk.tooltip": "Chance that salt generates in a chunk.", + "configuration.mekanism.world.salt.radius.max": "Min Radius", + "configuration.mekanism.world.salt.radius.max.tooltip": "Extended variability (spread) for the radius in a vein of salt.", + "configuration.mekanism.world.salt.radius.min": "Min Radius", + "configuration.mekanism.world.salt.radius.min.tooltip": "Base radius of a vein of salt.", + "configuration.mekanism.world.salt.tooltip": "Generation Settings for salt.", + "configuration.mekanism.world.tin.generate": "Should Generate", + "configuration.mekanism.world.tin.generate.tooltip": "Determines if Tin ore should be added to world generation.", + "configuration.mekanism.world.tin.large.discard_chance": "Discard Chance", + "configuration.mekanism.world.tin.large.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Large Tin Vein are not placed.", + "configuration.mekanism.world.tin.large.generate": "Should Generate", + "configuration.mekanism.world.tin.large.generate.tooltip": "Determines if Large Tin Veins should be added to world generation. Note: Requires generating tin ore to be enabled.", + "configuration.mekanism.world.tin.large.max": "Max Anchor", + "configuration.mekanism.world.tin.large.max.tooltip": "Maximum (inclusive) height anchor for Large Tin Veins.", + "configuration.mekanism.world.tin.large.max_size": "Max Size", + "configuration.mekanism.world.tin.large.max_size.tooltip": "Maximum number of blocks in a Large Tin Vein.", + "configuration.mekanism.world.tin.large.min": "Min Anchor", + "configuration.mekanism.world.tin.large.min.tooltip": "Minimum (inclusive) height anchor for Large Tin Veins.", + "configuration.mekanism.world.tin.large.per_chunk": "Per Chunk", + "configuration.mekanism.world.tin.large.per_chunk.tooltip": "Chance that Large Tin Veins generates in a chunk.", + "configuration.mekanism.world.tin.large.shape": "Distribution shape", + "configuration.mekanism.world.tin.large.shape.tooltip": "Distribution shape for placing Large Tin Veins.", + "configuration.mekanism.world.tin.large.top_level": "Large Vein", + "configuration.mekanism.world.tin.large.top_level.tooltip": "Large Tin Vein Generation Settings.", + "configuration.mekanism.world.tin.small.discard_chance": "Discard Chance", + "configuration.mekanism.world.tin.small.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Small Tin Vein are not placed.", + "configuration.mekanism.world.tin.small.generate": "Should Generate", + "configuration.mekanism.world.tin.small.generate.tooltip": "Determines if Small Tin Veins should be added to world generation. Note: Requires generating tin ore to be enabled.", + "configuration.mekanism.world.tin.small.max": "Max Anchor", + "configuration.mekanism.world.tin.small.max.tooltip": "Maximum (inclusive) height anchor for Small Tin Veins.", + "configuration.mekanism.world.tin.small.max_size": "Max Size", + "configuration.mekanism.world.tin.small.max_size.tooltip": "Maximum number of blocks in a Small Tin Vein.", + "configuration.mekanism.world.tin.small.min": "Min Anchor", + "configuration.mekanism.world.tin.small.min.tooltip": "Minimum (inclusive) height anchor for Small Tin Veins.", + "configuration.mekanism.world.tin.small.per_chunk": "Per Chunk", + "configuration.mekanism.world.tin.small.per_chunk.tooltip": "Chance that Small Tin Veins generates in a chunk.", + "configuration.mekanism.world.tin.small.shape": "Distribution shape", + "configuration.mekanism.world.tin.small.shape.tooltip": "Distribution shape for placing Small Tin Veins.", + "configuration.mekanism.world.tin.small.top_level": "Small Vein", + "configuration.mekanism.world.tin.small.top_level.tooltip": "Small Tin Vein Generation Settings.", + "configuration.mekanism.world.tin.top_level": "Tin Settings", + "configuration.mekanism.world.tin.top_level.tooltip": "Generation Settings for Tin ore.", + "configuration.mekanism.world.uranium.buried.discard_chance": "Discard Chance", + "configuration.mekanism.world.uranium.buried.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Buried Uranium Vein are not placed.", + "configuration.mekanism.world.uranium.buried.generate": "Should Generate", + "configuration.mekanism.world.uranium.buried.generate.tooltip": "Determines if Buried Uranium Veins should be added to world generation. Note: Requires generating uranium ore to be enabled.", + "configuration.mekanism.world.uranium.buried.max": "Max Anchor", + "configuration.mekanism.world.uranium.buried.max.tooltip": "Maximum (inclusive) height anchor for Buried Uranium Veins.", + "configuration.mekanism.world.uranium.buried.max_size": "Max Size", + "configuration.mekanism.world.uranium.buried.max_size.tooltip": "Maximum number of blocks in a Buried Uranium Vein.", + "configuration.mekanism.world.uranium.buried.min": "Min Anchor", + "configuration.mekanism.world.uranium.buried.min.tooltip": "Minimum (inclusive) height anchor for Buried Uranium Veins.", + "configuration.mekanism.world.uranium.buried.per_chunk": "Per Chunk", + "configuration.mekanism.world.uranium.buried.per_chunk.tooltip": "Chance that Buried Uranium Veins generates in a chunk.", + "configuration.mekanism.world.uranium.buried.shape": "Distribution shape", + "configuration.mekanism.world.uranium.buried.shape.tooltip": "Distribution shape for placing Buried Uranium Veins.", + "configuration.mekanism.world.uranium.buried.top_level": "Buried Vein", + "configuration.mekanism.world.uranium.buried.top_level.tooltip": "Buried Uranium Vein Generation Settings.", + "configuration.mekanism.world.uranium.generate": "Should Generate", + "configuration.mekanism.world.uranium.generate.tooltip": "Determines if Uranium ore should be added to world generation.", + "configuration.mekanism.world.uranium.small.discard_chance": "Discard Chance", + "configuration.mekanism.world.uranium.small.discard_chance.tooltip": "Chance that blocks that are directly exposed to air in a Small Uranium Vein are not placed.", + "configuration.mekanism.world.uranium.small.generate": "Should Generate", + "configuration.mekanism.world.uranium.small.generate.tooltip": "Determines if Small Uranium Veins should be added to world generation. Note: Requires generating uranium ore to be enabled.", + "configuration.mekanism.world.uranium.small.max": "Max Anchor", + "configuration.mekanism.world.uranium.small.max.tooltip": "Maximum (inclusive) height anchor for Small Uranium Veins.", + "configuration.mekanism.world.uranium.small.max_size": "Max Size", + "configuration.mekanism.world.uranium.small.max_size.tooltip": "Maximum number of blocks in a Small Uranium Vein.", + "configuration.mekanism.world.uranium.small.min": "Min Anchor", + "configuration.mekanism.world.uranium.small.min.tooltip": "Minimum (inclusive) height anchor for Small Uranium Veins.", + "configuration.mekanism.world.uranium.small.per_chunk": "Per Chunk", + "configuration.mekanism.world.uranium.small.per_chunk.tooltip": "Chance that Small Uranium Veins generates in a chunk.", + "configuration.mekanism.world.uranium.small.shape": "Distribution shape", + "configuration.mekanism.world.uranium.small.shape.tooltip": "Distribution shape for placing Small Uranium Veins.", + "configuration.mekanism.world.uranium.small.top_level": "Small Vein", + "configuration.mekanism.world.uranium.small.top_level.tooltip": "Small Uranium Vein Generation Settings.", + "configuration.mekanism.world.uranium.top_level": "Uranium Settings", + "configuration.mekanism.world.uranium.top_level.tooltip": "Generation Settings for Uranium ore.", + "configuration.mekanism.world.world_version": "User World Version", + "configuration.mekanism.world.world_version.tooltip": "Change this value to cause Mekanism to regen its ore in all loaded chunks.", "configuration_card.mekanism.cleared": "Cleared Configuration Card", "configuration_card.mekanism.got": "Retrieved configuration data from %1$s", "configuration_card.mekanism.has_data": "Data: %1$s", @@ -1191,7 +1396,6 @@ "fluid_container.mekanism.empty": "Empty", "fluid_container.mekanism.fill": "Fill", "fml.menu.mods.info.description.mekanism": "Mekanism is a Minecraft add-on featuring high-tech machinery that can be used to create powerful tools, armor, and weapons.", - "fml.menu.mods.info.displayname.mekanism": "Mekanism", "free_runner.mekanism.disabled": "Disabled", "free_runner.mekanism.mode_change": "Free runner mode changed to: %1$s", "free_runner.mekanism.normal": "Regular", @@ -1314,6 +1518,8 @@ "gui.mekanism.volume": "Volume: %1$s", "gui.mekanism.warning": "Warning", "gui.mekanism.width": "Width", + "height_shape.mekanism.above_bottom": "Uniform", + "height_shape.mekanism.trapezoid": "Trapezoid", "holiday.mekanism.border": "%1$s%2$s%1$s", "holiday.mekanism.christmas.1": "Merry Christmas, %1$s!", "holiday.mekanism.christmas.2": "May you have plenty of Christmas cheer", @@ -1703,9 +1909,11 @@ "qio.mekanism.search.focus.auto": "Auto focus the QIO search bar when opening a dashboard.", "qio.mekanism.search.focus.manual": "Don't automatically focus the QIO search bar when opening a dashboard.", "qio.mekanism.set_frequency": "Set Frequency", + "qio.mekanism.sort_ascending": "Ascending", "qio.mekanism.sort_ascending_desc": "Sort items in ascending order.", "qio.mekanism.sort_count": "Count", "qio.mekanism.sort_count_desc": "Sort items by count.", + "qio.mekanism.sort_descending": "Descending", "qio.mekanism.sort_descending_desc": "Sort items in descending order.", "qio.mekanism.sort_mod": "Mod", "qio.mekanism.sort_mod_desc": "Sort items by mod.", diff --git a/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b b/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b index 19923f1ea25..1b7b691e4a8 100644 --- a/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b +++ b/src/datagen/generated/mekanismadditions/.cache/dfe6eafb7c0d05a49bee122125cab06c7b53ab0b @@ -1,5 +1,5 @@ -// 1.21.1 2024-08-22T12:20:02.391029 Languages: en_us for mod: mekanismadditions +// 1.21.1 2024-08-22T12:48:23.7252414 Languages: en_us for mod: mekanismadditions d05507d12b409c92bc6460462db3bb8af9cc656e assets/mekanismadditions/lang/en_au.json d05507d12b409c92bc6460462db3bb8af9cc656e assets/mekanismadditions/lang/en_gb.json -27389341b290b7f1700abcf2a05cda0d183cd372 assets/mekanismadditions/lang/en_ud.json -b799fdc04dfff7bd031c686e574f126b9f2321df assets/mekanismadditions/lang/en_us.json +65e4d473801dbb7b9147f592f18c5b5536d4e6bd assets/mekanismadditions/lang/en_ud.json +384e69d063bb4c10bae5aaf6d322b131b1023ba4 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 d68c3e2a2d8..3dec69b2a19 100644 --- a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json +++ b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_ud.json @@ -423,8 +423,7 @@ "entity.mekanismadditions.baby_wither_skeleton": "uoʇǝꞁǝʞS ɹǝɥʇᴉM ʎqɐᗺ", "entity.mekanismadditions.balloon": "uooꞁꞁɐᗺ", "entity.mekanismadditions.obsidian_tnt": "⟘N⟘ uɐᴉpᴉsqO", - "fml.menu.mods.info.description.mekanismadditions": "sǝꞁnpoɯ ɹǝɥʇo ǝɥʇ uᴉ ʇᴉɟ ǝʇᴉnb ʇ,uop ʇɐɥʇ sᵷuᴉɥʇ suᴉɐʇuoɔ 'ɯsᴉuɐʞǝW ɹoɟ ǝꞁnpoɯ suoᴉʇᴉppⱯ", - "fml.menu.mods.info.displayname.mekanismadditions": "suoᴉʇᴉppⱯ :ɯsᴉuɐʞǝW", + "fml.menu.mods.info.description.mekanismadditions": "sǝꞁnpoɯ ɹǝɥʇo ǝɥʇ uᴉ ʇᴉɟ ʎꞁꞁɐɔᴉʇɐɯǝɥʇ ʇou op ʇɐɥʇ sᵷuᴉɥʇ snoǝuɐꞁꞁǝɔsᴉɯ suᴉɐʇuoɔ 'ɯsᴉuɐʞǝW ɹoɟ ǝꞁnpoɯ suoᴉʇᴉppⱯ", "item.mekanismadditions.aqua_balloon": "uooꞁꞁɐᗺ ɐnbⱯ", "item.mekanismadditions.baby_bogged_spawn_egg": "ᵷᵷƎ uʍɐdS pǝᵷᵷoᗺ ʎqɐᗺ", "item.mekanismadditions.baby_creeper_spawn_egg": "ᵷᵷƎ uʍɐdS ɹǝdǝǝɹƆ ʎqɐᗺ", 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 481880af7cf..3adcac11261 100644 --- a/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json +++ b/src/datagen/generated/mekanismadditions/assets/mekanismadditions/lang/en_us.json @@ -423,8 +423,7 @@ "entity.mekanismadditions.baby_wither_skeleton": "Baby Wither Skeleton", "entity.mekanismadditions.balloon": "Balloon", "entity.mekanismadditions.obsidian_tnt": "Obsidian TNT", - "fml.menu.mods.info.description.mekanismadditions": "Additions module for Mekanism, contains things that don't quite fit in the other modules", - "fml.menu.mods.info.displayname.mekanismadditions": "Mekanism: Additions", + "fml.menu.mods.info.description.mekanismadditions": "Additions module for Mekanism, contains miscellaneous things that do not thematically fit in the other modules", "item.mekanismadditions.aqua_balloon": "Aqua Balloon", "item.mekanismadditions.baby_bogged_spawn_egg": "Baby Bogged Spawn Egg", "item.mekanismadditions.baby_creeper_spawn_egg": "Baby Creeper Spawn Egg", diff --git a/src/datagen/generated/mekanismgenerators/.cache/de34ee0556eec16c961269bcb7ec3070f0579cfd b/src/datagen/generated/mekanismgenerators/.cache/de34ee0556eec16c961269bcb7ec3070f0579cfd index ba92a4dc9fc..71332b5af95 100644 --- a/src/datagen/generated/mekanismgenerators/.cache/de34ee0556eec16c961269bcb7ec3070f0579cfd +++ b/src/datagen/generated/mekanismgenerators/.cache/de34ee0556eec16c961269bcb7ec3070f0579cfd @@ -1,5 +1,5 @@ -// 1.21.1 2024-08-22T12:08:48.1550069 Languages: en_us for mod: mekanismgenerators +// 1.21.1 2024-08-22T12:44:56.8932067 Languages: en_us for mod: mekanismgenerators b934b9aafaf6b98813ecd472c8a8f012383b4aa0 assets/mekanismgenerators/lang/en_au.json b934b9aafaf6b98813ecd472c8a8f012383b4aa0 assets/mekanismgenerators/lang/en_gb.json -d075ca0c84a2e534b31193b3d3027cbee09a1fc2 assets/mekanismgenerators/lang/en_ud.json -2e6f37a5297785fa9837cc3d75d1d2597633d65f assets/mekanismgenerators/lang/en_us.json +b7e931e03d7bf7ec65a75e6d917e4c44a3233053 assets/mekanismgenerators/lang/en_ud.json +03eaebebd8635ce3ac1e40c642a1dda41d6fb522 assets/mekanismgenerators/lang/en_us.json 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 e2a2c371793..943aaed1fa5 100644 --- a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json +++ b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_ud.json @@ -238,7 +238,6 @@ "fission.mekanismgenerators.surface_area": "ᘔɯ %s :ɐǝɹⱯ ǝɔɐɟɹnS ꞁǝnℲ", "fission.mekanismgenerators.waste_tank": "ʞuɐ⟘ ǝʇsɐM", "fml.menu.mods.info.description.mekanismgenerators": "ɯsᴉuɐʞǝW ɹoɟ ǝꞁnpoɯ sɹoʇɐɹǝuǝ⅁", - "fml.menu.mods.info.displayname.mekanismgenerators": "sɹoʇɐɹǝuǝ⅁ :ɯsᴉuɐʞǝW", "gui.mekanismgenerators.bio_generator.bio_fuel": "%s :ꞁǝnℲoᴉᗺ", "gui.mekanismgenerators.gas_burning_generator.burn_rate": "ʇ/ᗺɯ %s :ǝʇɐᴚ uɹnᗺ", "gui.mekanismgenerators.output_rate.short": "ʇ/%s :ʇnO", 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 463adc42510..9ed30771cd2 100644 --- a/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json +++ b/src/datagen/generated/mekanismgenerators/assets/mekanismgenerators/lang/en_us.json @@ -238,7 +238,6 @@ "fission.mekanismgenerators.surface_area": "Fuel Surface Area: %1$s m2", "fission.mekanismgenerators.waste_tank": "Waste Tank", "fml.menu.mods.info.description.mekanismgenerators": "Generators module for Mekanism", - "fml.menu.mods.info.displayname.mekanismgenerators": "Mekanism: Generators", "gui.mekanismgenerators.bio_generator.bio_fuel": "BioFuel: %1$s", "gui.mekanismgenerators.gas_burning_generator.burn_rate": "Burn Rate: %1$s mB/t", "gui.mekanismgenerators.output_rate.short": "Out: %1$s/t", diff --git a/src/datagen/generated/mekanismtools/.cache/c949146461374def6bd1ebf0069a5813ad10e301 b/src/datagen/generated/mekanismtools/.cache/c949146461374def6bd1ebf0069a5813ad10e301 index cccea66c15d..aa4cb0752c6 100644 --- a/src/datagen/generated/mekanismtools/.cache/c949146461374def6bd1ebf0069a5813ad10e301 +++ b/src/datagen/generated/mekanismtools/.cache/c949146461374def6bd1ebf0069a5813ad10e301 @@ -1,5 +1,5 @@ -// 1.21.1 2024-08-22T12:08:47.5310084 Languages: en_us for mod: mekanismtools +// 1.21.1 2024-08-22T12:44:56.1921993 Languages: en_us for mod: mekanismtools 3a2807e4948a93273dcd0d28082bbe0463fc9f04 assets/mekanismtools/lang/en_au.json 3a2807e4948a93273dcd0d28082bbe0463fc9f04 assets/mekanismtools/lang/en_gb.json -68105d2ff99e49b3fea6426c70e6f34ca540348b assets/mekanismtools/lang/en_ud.json -5a6198687547f83785ca152f10cfddd3603d59a5 assets/mekanismtools/lang/en_us.json +b6bac76ec842f3f7977b32fcc2975bb87165dee6 assets/mekanismtools/lang/en_ud.json +b28fbbfb17b31d7f68abaac555edfcd597eda3e1 assets/mekanismtools/lang/en_us.json diff --git a/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_ud.json b/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_ud.json index 5e05fcd0f50..2573d7f52a2 100644 --- a/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_ud.json +++ b/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_ud.json @@ -602,7 +602,6 @@ "constants.mekanismtools.mod_name": "sꞁoo⟘ :ɯsᴉuɐʞǝW", "constants.mekanismtools.pack_description": "sꞁoo⟘ :ɯsᴉuɐʞǝW ɹoɟ pǝsn sǝɔɹnosǝᴚ", "fml.menu.mods.info.description.mekanismtools": "ɯsᴉuɐʞǝW ɹoɟ ǝꞁnpoɯ sꞁoo⟘", - "fml.menu.mods.info.displayname.mekanismtools": "sꞁoo⟘ :ɯsᴉuɐʞǝW", "item.mekanismtools.bronze_axe": "ǝxⱯ ǝzuoɹᗺ", "item.mekanismtools.bronze_boots": "sʇooᗺ ǝzuoɹᗺ", "item.mekanismtools.bronze_chestplate": "ǝʇɐꞁdʇsǝɥƆ ǝzuoɹᗺ", diff --git a/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_us.json b/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_us.json index f82cc463af2..4f3feab5812 100644 --- a/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_us.json +++ b/src/datagen/generated/mekanismtools/assets/mekanismtools/lang/en_us.json @@ -602,7 +602,6 @@ "constants.mekanismtools.mod_name": "Mekanism: Tools", "constants.mekanismtools.pack_description": "Resources used for Mekanism: Tools", "fml.menu.mods.info.description.mekanismtools": "Tools module for Mekanism", - "fml.menu.mods.info.displayname.mekanismtools": "Mekanism: Tools", "item.mekanismtools.bronze_axe": "Bronze Axe", "item.mekanismtools.bronze_boots": "Bronze Boots", "item.mekanismtools.bronze_chestplate": "Bronze Chestplate", diff --git a/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java b/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java index 0716a375605..f1cab1818cc 100644 --- a/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java +++ b/src/datagen/main/java/mekanism/client/lang/BaseLanguageProvider.java @@ -65,7 +65,6 @@ protected void addPackData(IHasTranslationKey name, IHasTranslationKey packDescr } protected void addModInfo(String description) { - add("fml.menu.mods.info.displayname." + modid, modName); add("fml.menu.mods.info.description." + modid, description); } diff --git a/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java b/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java index 04073a78a26..1c4d0e9abbc 100644 --- a/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java +++ b/src/datagen/main/java/mekanism/client/lang/MekanismLangProvider.java @@ -17,6 +17,8 @@ import mekanism.common.advancements.MekanismAdvancements; import mekanism.common.config.MekanismConfig; import mekanism.common.config.MekanismConfigTranslations; +import mekanism.common.config.MekanismConfigTranslations.OreConfigTranslations; +import mekanism.common.config.MekanismConfigTranslations.OreVeinConfigTranslations; import mekanism.common.content.blocktype.FactoryType; import mekanism.common.content.gear.mekasuit.ModuleChargeDistributionUnit; import mekanism.common.content.gear.mekasuit.ModuleElectrolyticBreathingUnit; @@ -54,6 +56,7 @@ import mekanism.common.resource.IResource; import mekanism.common.resource.PrimaryResource; import mekanism.common.resource.ResourceType; +import mekanism.common.resource.ore.BaseOreConfig; import mekanism.common.resource.ore.OreBlockType; import mekanism.common.resource.ore.OreType; import mekanism.common.tags.MekanismTags; @@ -100,6 +103,14 @@ private void addConfigs() { addConfigs(saveData); } } + //World Gen configs + for (OreType oreType : EnumUtils.ORE_TYPES) { + String ore = oreType.getResource().getRegistrySuffix(); + addConfigs(OreConfigTranslations.create(ore).toArray()); + for (BaseOreConfig baseConfig : oreType.getBaseConfigs()) { + addConfigs(OreVeinConfigTranslations.create(ore, baseConfig.name()).toArray()); + } + } } private void addTags() { @@ -805,6 +816,13 @@ private void addJadeConfigTooltip(ResourceLocation location, String value) { private void addMisc() { add("_mekanism_force_utf8", "\ufeff"); addJade(); + //Anchor Type + add(MekanismLang.ANCHOR_TYPE_ABSOLUTE, "Absolute (y = value)"); + add(MekanismLang.ANCHOR_TYPE_ABOVE_BOTTOM, "Above Bottom (y = minY + value)"); + add(MekanismLang.ANCHOR_TYPE_BELOW_TOP, "Below Top (y = depth - 1 + minY - value)"); + //Height Shape + add(MekanismLang.HEIGHT_SHAPE_TRAPEZOID, "Trapezoid"); + add(MekanismLang.HEIGHT_SHAPE_UNIFORM, "Uniform"); //Upgrades add(APILang.UPGRADE_SPEED, "Speed"); add(APILang.UPGRADE_SPEED_DESCRIPTION, "Increases speed of machinery."); @@ -902,7 +920,9 @@ private void addMisc() { add(MekanismLang.LIST_SORT_COUNT_DESC, "Sort items by count."); add(MekanismLang.LIST_SORT_MOD_DESC, "Sort items by mod."); add(MekanismLang.LIST_SORT_REGISTRY_NAME_DESC, "Sort items by registry name."); + add(MekanismLang.LIST_SORT_ASCENDING, "Ascending"); add(MekanismLang.LIST_SORT_ASCENDING_DESC, "Sort items in ascending order."); + add(MekanismLang.LIST_SORT_DESCENDING, "Descending"); add(MekanismLang.LIST_SORT_DESCENDING_DESC, "Sort items in descending order."); add(MekanismLang.LIST_SEARCH, "Search:"); add(MekanismLang.LIST_SORT, "Sort:"); diff --git a/src/generators/java/mekanism/generators/common/block/attribute/AttributeStateFissionPortMode.java b/src/generators/java/mekanism/generators/common/block/attribute/AttributeStateFissionPortMode.java index 502ca2eb328..d2afe200791 100644 --- a/src/generators/java/mekanism/generators/common/block/attribute/AttributeStateFissionPortMode.java +++ b/src/generators/java/mekanism/generators/common/block/attribute/AttributeStateFissionPortMode.java @@ -5,9 +5,8 @@ import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.math.MathUtils; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.block.attribute.Attribute; import mekanism.common.block.attribute.AttributeState; @@ -46,7 +45,7 @@ public void fillBlockStateContainer(Block block, List> properties) { } @NothingNullByDefault - public enum FissionPortMode implements StringRepresentable, IHasTextComponent, IIncrementalEnum { + public enum FissionPortMode implements StringRepresentable, IHasEnumNameTextComponent, IIncrementalEnum { INPUT("input", GeneratorsLang.FISSION_PORT_MODE_INPUT, EnumColor.BRIGHT_GREEN), OUTPUT_WASTE("output_waste", GeneratorsLang.FISSION_PORT_MODE_OUTPUT_WASTE, EnumColor.BROWN), OUTPUT_COOLANT("output_coolant", GeneratorsLang.FISSION_PORT_MODE_OUTPUT_COOLANT, EnumColor.DARK_AQUA); diff --git a/src/generators/java/mekanism/generators/common/tile/fission/TileEntityFissionReactorLogicAdapter.java b/src/generators/java/mekanism/generators/common/tile/fission/TileEntityFissionReactorLogicAdapter.java index 591c6ee8993..a2ba378e9fc 100644 --- a/src/generators/java/mekanism/generators/common/tile/fission/TileEntityFissionReactorLogicAdapter.java +++ b/src/generators/java/mekanism/generators/common/tile/fission/TileEntityFissionReactorLogicAdapter.java @@ -9,7 +9,7 @@ import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.math.MathUtils; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.integration.computer.annotation.ComputerMethod; @@ -191,7 +191,7 @@ public boolean canBeMaster() { } @NothingNullByDefault - public enum FissionReactorLogic implements IReactorLogicMode, IHasTranslationKey, StringRepresentable { + public enum FissionReactorLogic implements IReactorLogicMode, IHasEnumNameTranslationKey, StringRepresentable { DISABLED(GeneratorsLang.REACTOR_LOGIC_DISABLED, GeneratorsLang.DESCRIPTION_REACTOR_DISABLED, new ItemStack(Items.GUNPOWDER), EnumColor.DARK_GRAY), ACTIVATION(GeneratorsLang.REACTOR_LOGIC_ACTIVATION, GeneratorsLang.DESCRIPTION_REACTOR_ACTIVATION, new ItemStack(Items.FLINT_AND_STEEL), EnumColor.AQUA), TEMPERATURE(GeneratorsLang.REACTOR_LOGIC_TEMPERATURE, GeneratorsLang.DESCRIPTION_REACTOR_TEMPERATURE, new ItemStack(Items.REDSTONE), EnumColor.RED), @@ -250,7 +250,7 @@ public String getSerializedName() { } @NothingNullByDefault - public enum RedstoneStatus implements IHasTranslationKey { + public enum RedstoneStatus implements IHasEnumNameTranslationKey { IDLE(MekanismLang.IDLE), OUTPUTTING(GeneratorsLang.REACTOR_LOGIC_OUTPUTTING), POWERED(GeneratorsLang.REACTOR_LOGIC_POWERED); diff --git a/src/generators/java/mekanism/generators/common/tile/fusion/TileEntityFusionReactorLogicAdapter.java b/src/generators/java/mekanism/generators/common/tile/fusion/TileEntityFusionReactorLogicAdapter.java index a3792443fb7..bcbfac121f7 100644 --- a/src/generators/java/mekanism/generators/common/tile/fusion/TileEntityFusionReactorLogicAdapter.java +++ b/src/generators/java/mekanism/generators/common/tile/fusion/TileEntityFusionReactorLogicAdapter.java @@ -8,7 +8,7 @@ import mekanism.api.SerializationConstants; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.integration.computer.annotation.ComputerMethod; import mekanism.common.inventory.container.MekanismContainer; @@ -180,7 +180,7 @@ void setActiveCooledLogic(boolean active) { //End methods IComputerTile @NothingNullByDefault - public enum FusionReactorLogic implements IReactorLogicMode, IHasTranslationKey, StringRepresentable { + public enum FusionReactorLogic implements IReactorLogicMode, IHasEnumNameTranslationKey, StringRepresentable { DISABLED(GeneratorsLang.REACTOR_LOGIC_DISABLED, GeneratorsLang.DESCRIPTION_REACTOR_DISABLED, new ItemStack(Items.GUNPOWDER)), READY(GeneratorsLang.REACTOR_LOGIC_READY, GeneratorsLang.DESCRIPTION_REACTOR_READY, new ItemStack(Items.REDSTONE)), CAPACITY(GeneratorsLang.REACTOR_LOGIC_CAPACITY, GeneratorsLang.DESCRIPTION_REACTOR_CAPACITY, new ItemStack(Items.REDSTONE)), diff --git a/src/main/java/mekanism/common/MekanismLang.java b/src/main/java/mekanism/common/MekanismLang.java index b7c492de1b1..ca05b5d09e8 100644 --- a/src/main/java/mekanism/common/MekanismLang.java +++ b/src/main/java/mekanism/common/MekanismLang.java @@ -51,6 +51,13 @@ public enum MekanismLang implements ILangEntry { //Conversion CONVERSION_ENERGY("conversion", "energy"), CONVERSION_CHEMICAL("conversion", "chemical"), + //Anchor Type + ANCHOR_TYPE_ABSOLUTE("anchor_type", "absolute"), + ANCHOR_TYPE_ABOVE_BOTTOM("anchor_type", "above_bottom"), + ANCHOR_TYPE_BELOW_TOP("anchor_type", "below_top"), + //Height Shape + HEIGHT_SHAPE_TRAPEZOID("height_shape", "trapezoid"), + HEIGHT_SHAPE_UNIFORM("height_shape", "above_bottom"), //QIO stuff SET_FREQUENCY("qio", "set_frequency"), QIO_FREQUENCY_SELECT("qio", "qio_frequency_select"), @@ -81,7 +88,9 @@ public enum MekanismLang implements ILangEntry { LIST_SORT_COUNT_DESC("qio", "sort_count_desc"), LIST_SORT_MOD_DESC("qio", "sort_mod_desc"), LIST_SORT_REGISTRY_NAME_DESC("qio", "sort_registry_name.desc"), + LIST_SORT_ASCENDING("qio", "sort_ascending"), LIST_SORT_ASCENDING_DESC("qio", "sort_ascending_desc"), + LIST_SORT_DESCENDING("qio", "sort_descending"), LIST_SORT_DESCENDING_DESC("qio", "sort_descending_desc"), LIST_SEARCH("qio", "list_search"), LIST_SORT("qio", "list_sort"), diff --git a/src/main/java/mekanism/common/block/attribute/AttributeStateBoilerValveMode.java b/src/main/java/mekanism/common/block/attribute/AttributeStateBoilerValveMode.java index 83bdb880043..5ba7e31ace6 100644 --- a/src/main/java/mekanism/common/block/attribute/AttributeStateBoilerValveMode.java +++ b/src/main/java/mekanism/common/block/attribute/AttributeStateBoilerValveMode.java @@ -5,9 +5,8 @@ import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.math.MathUtils; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import net.minecraft.network.chat.Component; @@ -44,7 +43,7 @@ public void fillBlockStateContainer(Block block, List> properties) { } @NothingNullByDefault - public enum BoilerValveMode implements StringRepresentable, IHasTextComponent, IIncrementalEnum { + public enum BoilerValveMode implements StringRepresentable, IHasEnumNameTextComponent, IIncrementalEnum { INPUT("input", MekanismLang.BOILER_VALVE_MODE_INPUT, EnumColor.BRIGHT_GREEN), OUTPUT_STEAM("output_steam", MekanismLang.BOILER_VALVE_MODE_OUTPUT_STEAM, EnumColor.RED), OUTPUT_COOLANT("output_coolant", MekanismLang.BOILER_VALVE_MODE_OUTPUT_COOLANT, EnumColor.DARK_AQUA); diff --git a/src/main/java/mekanism/common/config/GearConfig.java b/src/main/java/mekanism/common/config/GearConfig.java index 64a79bee395..f49508d2e55 100644 --- a/src/main/java/mekanism/common/config/GearConfig.java +++ b/src/main/java/mekanism/common/config/GearConfig.java @@ -334,8 +334,8 @@ public class GearConfig extends BaseMekanismConfig { .defineInRange("fallDamageReductionRatio", 1D, 0, 1)); mekaSuitMagicDamageRatio = CachedFloatValue.wrap(this, builder.comment("Percent of damage taken from magic damage that can be absorbed by MekaSuit Helmet with Purification unit when it has enough power.") .defineInRange("magicDamageReductionRatio", 1D, 0, 1)); - mekaSuitUnspecifiedDamageRatio = CachedFloatValue.wrap(this, builder.comment("Percent of damage taken from other non explicitly supported damage types that don't bypass armor when the MekaSuit has enough power and a full suit is equipped.", - "Note: Support for specific damage types can be added by adding an entry for the damage type in the mekanism:mekasuit_absorption data map.") + mekaSuitUnspecifiedDamageRatio = CachedFloatValue.wrap(this, builder.comment("Percent of damage taken from other non explicitly supported damage types that don't bypass armor when the MekaSuit has enough power and a full suit is equipped. " + + "Note: Support for specific damage types can be added by adding an entry for the damage type in the mekanism:mekasuit_absorption data map.") .defineInRange("unspecifiedDamageReductionRatio", 1D, 0, 1)); builder.pop(2); diff --git a/src/main/java/mekanism/common/config/MekanismConfigTranslations.java b/src/main/java/mekanism/common/config/MekanismConfigTranslations.java index 4fab62f4237..8e8fb5de7a0 100644 --- a/src/main/java/mekanism/common/config/MekanismConfigTranslations.java +++ b/src/main/java/mekanism/common/config/MekanismConfigTranslations.java @@ -1,6 +1,7 @@ package mekanism.common.config; import mekanism.common.Mekanism; +import mekanism.common.util.text.TextUtils; import net.minecraft.Util; import org.jetbrains.annotations.NotNull; @@ -72,14 +73,28 @@ public enum MekanismConfigTranslations implements IConfigTranslation { "Should holiday greetings and easter eggs play for holidays (ex: Christmas and New Years) on the client. And should robit skins be randomized on the server."), - BASE_ENERGY_STORAGE_JOULES("storage.energy.base", "Base energy storage", "Base energy storage (Joules)."), - GEAR_MEKA_SUIT("gear.meka_suit", "MekaSuit Settings", "Settings for configuring the MekaSuit"), GEAR_MEKA_SUIT_DAMAGE_ABSORPTION("gear.meka_suit.damage_absorption", "MekaSuit Damage Absorption Settings", "Settings for configuring damage absorption of the MekaSuit"), + + //World Config + WORLD_RETROGEN("world.retrogen", "Retrogen", + "Allows chunks to retrogen Mekanism salt and ore blocks. In general when enabling this you also want to bump userWorldGenVersion."), + WORLD_WORLD_VERSION("world.world_version", "User World Version", "Change this value to cause Mekanism to regen its ore in all loaded chunks."), + WORLD_HEIGHT_RANGE_PLATEAU("world.height_range.plateau", "Plateau", + "Half length of short side of trapezoid, only used if shape is TRAPEZOID. A value of zero means the shape is a triangle."), + WORLD_ANCHOR_TYPE("world.height_range.anchor.type", "Anchor Type", "Type of anchor"), + WORLD_ANCHOR_VALUE("world.height_range.anchor.value", "Value", "Value used for calculating y for the anchor based on the type."), + + WORLD_SALT("world.salt", "Salt Settings", "Generation Settings for salt."), + WORLD_SALT_SHOULD_GENERATE("world.salt.generate", "Should Generate", "Determines if salt should be added to world generation."), + WORLD_SALT_PER_CHUNK("world.salt.per_chunk", "Per Chunk", "Chance that salt generates in a chunk."), + WORLD_SALT_RADIUS_MIN("world.salt.radius.min", "Min Radius", "Base radius of a vein of salt."), + WORLD_SALT_RADIUS_MAX("world.salt.radius.max", "Min Radius", "Extended variability (spread) for the radius in a vein of salt."), + WORLD_SALT_HALF_HEIGHT("world.salt.half_height", "Half Height", "Number of blocks to extend up and down when placing a vein of salt."), ; private final String key; @@ -107,4 +122,58 @@ public String title() { public String tooltip() { return tooltip; } + + public record OreConfigTranslations(IConfigTranslation topLevel, IConfigTranslation shouldGenerate) { + + public IConfigTranslation[] toArray() { + return new IConfigTranslation[]{topLevel, shouldGenerate}; + } + + private static String getKey(String ore, String path) { + return Util.makeDescriptionId("configuration", Mekanism.rl("world." + ore + "." + path)); + } + + public static OreConfigTranslations create(String ore) { + String name = TextUtils.formatAndCapitalize(ore); + return new OreConfigTranslations( + new ConfigTranslation(getKey(ore, "top_level"), name + " Settings", "Generation Settings for " + name + " ore."), + new ConfigTranslation(getKey(ore, "generate"), "Should Generate", "Determines if " + name + " ore should be added to world generation.") + ); + } + } + + public record OreVeinConfigTranslations( + IConfigTranslation topLevel, IConfigTranslation shouldGenerate, + IConfigTranslation perChunk, IConfigTranslation maxVeinSize, IConfigTranslation discardChanceOnAirExposure, + IConfigTranslation distributionShape, IConfigTranslation minInclusive, IConfigTranslation maxInclusive + ) { + + public IConfigTranslation[] toArray() { + return new IConfigTranslation[]{topLevel, shouldGenerate, perChunk, maxVeinSize, discardChanceOnAirExposure, distributionShape, minInclusive, + maxInclusive}; + } + + private static String getKey(String ore, String vein, String path) { + return Util.makeDescriptionId("configuration", Mekanism.rl("world." + ore + "." + vein + "." + path)); + } + + public static OreVeinConfigTranslations create(String ore, String vein) { + String capitalizedOre = TextUtils.formatAndCapitalize(ore); + String capitalizedVein = TextUtils.formatAndCapitalize(vein); + String name = capitalizedVein + " " + capitalizedOre + " Vein"; + return new OreVeinConfigTranslations( + new ConfigTranslation(getKey(ore, vein, "top_level"), capitalizedVein + " Vein", name + " Generation Settings."), + new ConfigTranslation(getKey(ore, vein, "generate"), "Should Generate", + "Determines if " + name + "s should be added to world generation. Note: Requires generating " + ore + " ore to be enabled."), + new ConfigTranslation(getKey(ore, vein, "per_chunk"), "Per Chunk", "Chance that " + name + "s generates in a chunk."), + new ConfigTranslation(getKey(ore, vein, "max_size"), "Max Size", "Maximum number of blocks in a " + name + "."), + new ConfigTranslation(getKey(ore, vein, "discard_chance"), "Discard Chance", + "Chance that blocks that are directly exposed to air in a " + name + " are not placed."), + + new ConfigTranslation(getKey(ore, vein, "shape"), "Distribution shape", "Distribution shape for placing " + name + "s."), + new ConfigTranslation(getKey(ore, vein, "min"), "Min Anchor", "Minimum (inclusive) height anchor for " + name + "s."), + new ConfigTranslation(getKey(ore, vein, "max"), "Max Anchor", "Maximum (inclusive) height anchor for " + name + "s.") + ); + } + } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/config/WorldConfig.java b/src/main/java/mekanism/common/config/WorldConfig.java index 44bcf331669..de6250afc9c 100644 --- a/src/main/java/mekanism/common/config/WorldConfig.java +++ b/src/main/java/mekanism/common/config/WorldConfig.java @@ -8,6 +8,8 @@ import java.util.function.BooleanSupplier; import java.util.function.IntSupplier; import mekanism.api.functions.FloatSupplier; +import mekanism.common.config.MekanismConfigTranslations.OreConfigTranslations; +import mekanism.common.config.MekanismConfigTranslations.OreVeinConfigTranslations; import mekanism.common.config.value.CachedBooleanValue; import mekanism.common.config.value.CachedFloatValue; import mekanism.common.config.value.CachedIntValue; @@ -32,9 +34,9 @@ public class WorldConfig extends BaseMekanismConfig { WorldConfig() { ModConfigSpec.Builder builder = new ModConfigSpec.Builder(); - enableRegeneration = CachedBooleanValue.wrap(this, builder.comment("Allows chunks to retrogen Mekanism ore blocks.") + enableRegeneration = CachedBooleanValue.wrap(this, MekanismConfigTranslations.WORLD_RETROGEN.applyToBuilder(builder) .define("enableRegeneration", false)); - userGenVersion = CachedIntValue.wrap(this, builder.comment("Change this value to cause Mekanism to regen its ore in all loaded chunks.") + userGenVersion = CachedIntValue.wrap(this, MekanismConfigTranslations.WORLD_WORLD_VERSION.applyToBuilder(builder) .defineInRange("userWorldGenVersion", 0, 0, Integer.MAX_VALUE)); for (OreType ore : EnumUtils.ORE_TYPES) { ores.put(ore, new OreConfig(this, builder, ore)); @@ -79,24 +81,25 @@ private static class OreConfig { private OreConfig(IMekanismConfig config, ModConfigSpec.Builder builder, OreType oreType) { String ore = oreType.getResource().getRegistrySuffix(); - builder.comment("Generation Settings for " + ore + " ore.").push(ore); - this.shouldGenerate = CachedBooleanValue.wrap(config, builder.comment("Determines if " + ore + " ore should be added to world generation.") - .define("shouldGenerate", true)); + OreConfigTranslations translations = OreConfigTranslations.create(ore); + translations.topLevel().applyToBuilder(builder).push(ore); + this.shouldGenerate = CachedBooleanValue.wrap(config, translations.shouldGenerate().applyToBuilder(builder).define("shouldGenerate", true)); + Builder veinBuilder = ImmutableList.builder(); for (BaseOreConfig baseConfig : oreType.getBaseConfigs()) { - String veinType = baseConfig.name() + " " + ore + " vein"; - builder.comment(veinType + " Generation Settings.").push(baseConfig.name()); - CachedBooleanValue shouldVeinTypeGenerate = CachedBooleanValue.wrap(config, builder.comment("Determines if " + veinType + "s should be added to world generation. Note: Requires generating " + ore + " ore to be enabled.") + OreVeinConfigTranslations veinTranslations = OreVeinConfigTranslations.create(ore, baseConfig.name()); + veinTranslations.topLevel().applyToBuilder(builder).push(baseConfig.name()); + CachedBooleanValue shouldVeinTypeGenerate = CachedBooleanValue.wrap(config, veinTranslations.shouldGenerate().applyToBuilder(builder) .define("shouldGenerate", true)); veinBuilder.add(new OreVeinConfig( () -> this.shouldGenerate.get() && shouldVeinTypeGenerate.get(), - CachedIntValue.wrap(config, builder.comment("Chance that " + veinType + "s generates in a chunk.") + CachedIntValue.wrap(config, veinTranslations.perChunk().applyToBuilder(builder) .defineInRange("perChunk", baseConfig.perChunk(), 1, 256)), - CachedIntValue.wrap(config, builder.comment("Maximum number of blocks in a " + veinType + ".") + CachedIntValue.wrap(config, veinTranslations.maxVeinSize().applyToBuilder(builder) .defineInRange("maxVeinSize", baseConfig.maxVeinSize(), 1, 64)), - CachedFloatValue.wrap(config, builder.comment("Chance that blocks that are directly exposed to air in a " + veinType + " are not placed.") + CachedFloatValue.wrap(config, veinTranslations.discardChanceOnAirExposure().applyToBuilder(builder) .defineInRange("discardChanceOnAirExposure", baseConfig.discardChanceOnAirExposure(), 0, 1)), - ConfigurableHeightRange.create(config, builder, veinType, baseConfig) + ConfigurableHeightRange.create(config, builder, veinTranslations, baseConfig) )); builder.pop(); } @@ -115,22 +118,21 @@ public static class SaltConfig { public final CachedIntValue halfHeight; private SaltConfig(IMekanismConfig config, ModConfigSpec.Builder builder, int perChunk, int baseRadius, int spread, int ySize) { - builder.comment("Generation Settings for salt.").push("salt"); - this.shouldGenerate = CachedBooleanValue.wrap(config, builder.comment("Determines if salt should be added to world generation.") + MekanismConfigTranslations.WORLD_SALT.applyToBuilder(builder).push("salt"); + this.shouldGenerate = CachedBooleanValue.wrap(config, MekanismConfigTranslations.WORLD_SALT_SHOULD_GENERATE.applyToBuilder(builder) .define("shouldGenerate", true)); //The max for perChunk and vein size are the values of the max number of blocks in a chunk. - this.perChunk = CachedIntValue.wrap(config, builder.comment("Chance that salt generates in a chunk.") + this.perChunk = CachedIntValue.wrap(config, MekanismConfigTranslations.WORLD_SALT_PER_CHUNK.applyToBuilder(builder) .defineInRange("perChunk", perChunk, 1, 256)); - this.minRadius = CachedIntValue.wrap(config, builder.comment("Base radius of a vein of salt.") + this.minRadius = CachedIntValue.wrap(config, MekanismConfigTranslations.WORLD_SALT_RADIUS_MIN.applyToBuilder(builder) .defineInRange("minRadius", baseRadius, 1, 4)); - this.maxRadius = CachedIntValue.wrap(config, builder.comment("Extended variability (spread) for the radius in a vein of salt.") - .define("maxRadius", spread, o -> { - if (o instanceof Integer value && value >= 1 && value <= 4) { - return value >= this.minRadius.getOrDefault(); - } - return false; - })); - this.halfHeight = CachedIntValue.wrap(config, builder.comment("Number of blocks to extend up and down when placing a vein of salt.") + this.maxRadius = CachedIntValue.wrap(config, MekanismConfigTranslations.WORLD_SALT_RADIUS_MAX.applyToBuilder(builder).define("maxRadius", spread, o -> { + if (o instanceof Integer value && value >= 1 && value <= 4) { + return value >= this.minRadius.getOrDefault(); + } + return false; + })); + this.halfHeight = CachedIntValue.wrap(config, MekanismConfigTranslations.WORLD_SALT_HALF_HEIGHT.applyToBuilder(builder) .defineInRange("halfHeight", ySize, 0, (DimensionType.MAX_Y - DimensionType.MIN_Y - 1) / 2)); builder.pop(); } diff --git a/src/main/java/mekanism/common/config/value/CachedEnumValue.java b/src/main/java/mekanism/common/config/value/CachedEnumValue.java index 8ab66b2f43b..db1eeba1e53 100644 --- a/src/main/java/mekanism/common/config/value/CachedEnumValue.java +++ b/src/main/java/mekanism/common/config/value/CachedEnumValue.java @@ -2,6 +2,7 @@ import mekanism.common.config.IMekanismConfig; import net.neoforged.neoforge.common.ModConfigSpec.EnumValue; +import net.neoforged.neoforge.common.TranslatableEnum; public class CachedEnumValue> extends CachedConfigValue { @@ -9,7 +10,8 @@ private CachedEnumValue(IMekanismConfig config, EnumValue internal) { super(config, internal); } - public static > CachedEnumValue wrap(IMekanismConfig config, EnumValue internal) { + //Note: Ensure that we provide a nice translated name for any enum value based configs we have + public static & TranslatableEnum> CachedEnumValue wrap(IMekanismConfig config, EnumValue internal) { return new CachedEnumValue<>(config, internal); } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/config/value/CachedLongValue.java b/src/main/java/mekanism/common/config/value/CachedLongValue.java index 17b0934c219..0d1a02b9890 100644 --- a/src/main/java/mekanism/common/config/value/CachedLongValue.java +++ b/src/main/java/mekanism/common/config/value/CachedLongValue.java @@ -20,7 +20,7 @@ public static CachedLongValue wrap(IMekanismConfig config, ConfigValue int } public static CachedLongValue definePositive(IMekanismConfig config, Builder builder, String comment, String path, long defaultValue) { - return define(config, builder, comment, path, defaultValue, 0, Long.MAX_VALUE); + return definedMin(config, builder, comment, path, defaultValue, 0); } public static CachedLongValue definedMin(IMekanismConfig config, Builder builder, String comment, String path, long defaultValue, long min) { diff --git a/src/main/java/mekanism/common/content/blocktype/FactoryType.java b/src/main/java/mekanism/common/content/blocktype/FactoryType.java index e26979ec504..128c08ea110 100644 --- a/src/main/java/mekanism/common/content/blocktype/FactoryType.java +++ b/src/main/java/mekanism/common/content/blocktype/FactoryType.java @@ -3,7 +3,7 @@ import java.util.Locale; import java.util.function.Supplier; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.content.blocktype.Machine.FactoryMachine; @@ -12,7 +12,7 @@ import mekanism.common.registries.MekanismBlocks; @NothingNullByDefault -public enum FactoryType implements IHasTranslationKey { +public enum FactoryType implements IHasEnumNameTranslationKey { SMELTING("smelting", MekanismLang.SMELTING, () -> MekanismBlockTypes.ENERGIZED_SMELTER, () -> MekanismBlocks.ENERGIZED_SMELTER), ENRICHING("enriching", MekanismLang.ENRICHING, () -> MekanismBlockTypes.ENRICHMENT_CHAMBER, () -> MekanismBlocks.ENRICHMENT_CHAMBER), CRUSHING("crushing", MekanismLang.CRUSHING, () -> MekanismBlockTypes.CRUSHER, () -> MekanismBlocks.CRUSHER), diff --git a/src/main/java/mekanism/common/content/gear/mekatool/ModuleBlastingUnit.java b/src/main/java/mekanism/common/content/gear/mekatool/ModuleBlastingUnit.java index 781691d1196..ce7106d3bb3 100644 --- a/src/main/java/mekanism/common/content/gear/mekatool/ModuleBlastingUnit.java +++ b/src/main/java/mekanism/common/content/gear/mekatool/ModuleBlastingUnit.java @@ -31,6 +31,7 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.common.TranslatableEnum; import net.neoforged.neoforge.common.util.Lazy; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -102,7 +103,7 @@ public void addHUDStrings(IModule module, IModuleContainer m } @NothingNullByDefault - public enum BlastRadius implements IHasTextComponent, IRadialMode, StringRepresentable { + public enum BlastRadius implements IHasTextComponent, TranslatableEnum, IRadialMode, StringRepresentable { OFF(0, MekanismLang.RADIAL_BLASTING_POWER_OFF, EnumColor.WHITE, "blasting_off"), LOW(1, MekanismLang.RADIAL_BLASTING_POWER_LOW, EnumColor.BRIGHT_GREEN, "blasting_low"), MED(2, MekanismLang.RADIAL_BLASTING_POWER_MED, EnumColor.YELLOW, "blasting_med"), @@ -144,6 +145,11 @@ public Component sliceName() { return langEntry.translateColored(color); } + @Override + public Component getTranslatedName() { + return sliceName(); + } + @NotNull @Override public ResourceLocation icon() { diff --git a/src/main/java/mekanism/common/content/gear/mekatool/ModuleExcavationEscalationUnit.java b/src/main/java/mekanism/common/content/gear/mekatool/ModuleExcavationEscalationUnit.java index 04abf428d07..5a5ffc4c79f 100644 --- a/src/main/java/mekanism/common/content/gear/mekatool/ModuleExcavationEscalationUnit.java +++ b/src/main/java/mekanism/common/content/gear/mekatool/ModuleExcavationEscalationUnit.java @@ -33,6 +33,7 @@ import net.minecraft.util.StringRepresentable; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.neoforged.neoforge.common.TranslatableEnum; import net.neoforged.neoforge.common.util.Lazy; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -119,7 +120,7 @@ public float getEfficiency() { } @NothingNullByDefault - public enum ExcavationMode implements IIncrementalEnum, IHasTextComponent, IRadialMode, StringRepresentable { + public enum ExcavationMode implements IIncrementalEnum, IHasTextComponent, TranslatableEnum, IRadialMode, StringRepresentable { OFF(MekanismLang.RADIAL_EXCAVATION_SPEED_OFF, 0, EnumColor.WHITE, "speed_off"), SLOW(MekanismLang.RADIAL_EXCAVATION_SPEED_SLOW, 4, EnumColor.PINK, "speed_slow"), NORMAL(MekanismLang.RADIAL_EXCAVATION_SPEED_NORMAL, 16, EnumColor.BRIGHT_GREEN, "speed_normal"), @@ -157,6 +158,11 @@ public Component getTextComponent() { return label; } + @Override + public Component getTranslatedName() { + return sliceName(); + } + public int getEfficiency() { return efficiency; } diff --git a/src/main/java/mekanism/common/content/miner/ThreadMinerSearch.java b/src/main/java/mekanism/common/content/miner/ThreadMinerSearch.java index fd0938be743..295a64ed61a 100644 --- a/src/main/java/mekanism/common/content/miner/ThreadMinerSearch.java +++ b/src/main/java/mekanism/common/content/miner/ThreadMinerSearch.java @@ -8,11 +8,9 @@ import java.util.BitSet; import java.util.function.IntFunction; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.math.MathUtils; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; -import mekanism.common.content.gear.mekatool.ModuleExcavationEscalationUnit.ExcavationMode; import mekanism.common.tags.MekanismTags; import mekanism.common.tile.TileEntityBoundingBlock; import mekanism.common.tile.machine.TileEntityDigitalMiner; @@ -127,7 +125,7 @@ private boolean shouldSkipState(BlockState state) { } @NothingNullByDefault - public enum State implements IHasTextComponent { + public enum State implements IHasEnumNameTextComponent { IDLE(MekanismLang.MINER_IDLE), SEARCHING(MekanismLang.MINER_SEARCHING), PAUSED(MekanismLang.MINER_PAUSED), diff --git a/src/main/java/mekanism/common/content/network/transmitter/DiversionTransporter.java b/src/main/java/mekanism/common/content/network/transmitter/DiversionTransporter.java index 7b7dac80ebb..161d78c516b 100644 --- a/src/main/java/mekanism/common/content/network/transmitter/DiversionTransporter.java +++ b/src/main/java/mekanism/common/content/network/transmitter/DiversionTransporter.java @@ -7,7 +7,7 @@ import mekanism.api.SerializationConstants; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.capabilities.Capabilities; @@ -190,7 +190,7 @@ private boolean isGettingPowered() { } @NothingNullByDefault - public enum DiversionControl implements IIncrementalEnum, IHasTextComponent { + public enum DiversionControl implements IIncrementalEnum, IHasEnumNameTextComponent { DISABLED(MekanismLang.DIVERSION_CONTROL_DISABLED), HIGH(MekanismLang.DIVERSION_CONTROL_HIGH), LOW(MekanismLang.DIVERSION_CONTROL_LOW); diff --git a/src/main/java/mekanism/common/inventory/container/QIOItemViewerContainer.java b/src/main/java/mekanism/common/inventory/container/QIOItemViewerContainer.java index d4824e1cdc2..947a006e03e 100644 --- a/src/main/java/mekanism/common/inventory/container/QIOItemViewerContainer.java +++ b/src/main/java/mekanism/common/inventory/container/QIOItemViewerContainer.java @@ -13,6 +13,7 @@ import mekanism.api.Action; import mekanism.api.inventory.IInventorySlot; import mekanism.api.math.MathUtils; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.Mekanism; import mekanism.common.MekanismLang; @@ -52,6 +53,7 @@ import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.neoforged.neoforge.common.TranslatableEnum; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; @@ -559,15 +561,17 @@ public void onClick(Supplier<@Nullable IScrollableSlot> slotProvider, int button private record ItemSlotData(HashedItem item, UUID itemUUID, long count) implements IScrollableSlot { } - public enum SortDirection implements IToggleEnum { - ASCENDING(MekanismUtils.getResource(ResourceType.GUI, "arrow_up.png"), MekanismLang.LIST_SORT_ASCENDING_DESC), - DESCENDING(MekanismUtils.getResource(ResourceType.GUI, "arrow_down.png"), MekanismLang.LIST_SORT_DESCENDING_DESC); + public enum SortDirection implements IToggleEnum, IHasEnumNameTranslationKey { + ASCENDING(MekanismUtils.getResource(ResourceType.GUI, "arrow_up.png"), MekanismLang.LIST_SORT_ASCENDING, MekanismLang.LIST_SORT_ASCENDING_DESC), + DESCENDING(MekanismUtils.getResource(ResourceType.GUI, "arrow_down.png"), MekanismLang.LIST_SORT_DESCENDING, MekanismLang.LIST_SORT_DESCENDING_DESC); private final ResourceLocation icon; + private final ILangEntry name; private final ILangEntry tooltip; - SortDirection(ResourceLocation icon, ILangEntry tooltip) { + SortDirection(ResourceLocation icon, ILangEntry name, ILangEntry tooltip) { this.icon = icon; + this.name = name; this.tooltip = tooltip; } @@ -584,9 +588,15 @@ public Component getTooltip() { public boolean isAscending() { return this == ASCENDING; } + + @NotNull + @Override + public String getTranslationKey() { + return name.getTranslationKey(); + } } - public enum ListSortType implements IDropdownEnum { + public enum ListSortType implements IDropdownEnum, TranslatableEnum { NAME(MekanismLang.LIST_SORT_NAME, MekanismLang.LIST_SORT_NAME_DESC, Comparator.comparing(IScrollableSlot::getDisplayName)), SIZE(MekanismLang.LIST_SORT_COUNT, MekanismLang.LIST_SORT_COUNT_DESC, Comparator.comparingLong(IScrollableSlot::count).thenComparing(IScrollableSlot::getDisplayName), Comparator.comparingLong(IScrollableSlot::count).reversed().thenComparing(IScrollableSlot::getDisplayName)), @@ -625,5 +635,11 @@ public Component getTooltip() { public Component getShortName() { return name.translate(); } + + @NotNull + @Override + public Component getTranslatedName() { + return getShortName(); + } } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/item/ItemConfigurator.java b/src/main/java/mekanism/common/item/ItemConfigurator.java index f7faa9cf871..d50723fbc41 100644 --- a/src/main/java/mekanism/common/item/ItemConfigurator.java +++ b/src/main/java/mekanism/common/item/ItemConfigurator.java @@ -18,7 +18,7 @@ import mekanism.api.radial.mode.IRadialMode; import mekanism.api.security.IBlockSecurityUtils; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.api.text.TextComponentUtil; import mekanism.common.Mekanism; @@ -244,7 +244,7 @@ public ConfiguratorMode getDefaultMode() { } @NothingNullByDefault - public enum ConfiguratorMode implements IIncrementalEnum, IHasTextComponent, IRadialMode, StringRepresentable { + public enum ConfiguratorMode implements IIncrementalEnum, IHasEnumNameTextComponent, IRadialMode, StringRepresentable { CONFIGURATE_ITEMS(MekanismLang.CONFIGURATOR_CONFIGURATE, TransmissionType.ITEM, EnumColor.BRIGHT_GREEN, true, null), CONFIGURATE_FLUIDS(MekanismLang.CONFIGURATOR_CONFIGURATE, TransmissionType.FLUID, EnumColor.BRIGHT_GREEN, true, null), CONFIGURATE_CHEMICALS(MekanismLang.CONFIGURATOR_CONFIGURATE, TransmissionType.CHEMICAL, EnumColor.BRIGHT_GREEN, true, null), diff --git a/src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java b/src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java index a9733591e96..9848b1e80da 100644 --- a/src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java +++ b/src/main/java/mekanism/common/item/gear/ItemAtomicDisassembler.java @@ -24,7 +24,7 @@ import mekanism.api.radial.RadialData; import mekanism.api.radial.mode.IRadialMode; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.Mekanism; import mekanism.common.MekanismLang; @@ -262,7 +262,7 @@ public boolean isPrimaryItemFor(ItemStack stack, Holder enchantment } @NothingNullByDefault - public enum DisassemblerMode implements IDisableableEnum, IHasTextComponent, IRadialMode, StringRepresentable { + public enum DisassemblerMode implements IDisableableEnum, IHasEnumNameTextComponent, IRadialMode, StringRepresentable { NORMAL(MekanismLang.RADIAL_EXCAVATION_SPEED_NORMAL, 20, ConstantPredicates.ALWAYS_TRUE, EnumColor.BRIGHT_GREEN, ExcavationMode.NORMAL.icon()), SLOW(MekanismLang.RADIAL_EXCAVATION_SPEED_SLOW, 8, MekanismConfig.gear.disassemblerSlowMode, EnumColor.PINK, ExcavationMode.SLOW.icon()), //Note: Uses extreme icon as both are efficiency 128 diff --git a/src/main/java/mekanism/common/item/gear/ItemFlamethrower.java b/src/main/java/mekanism/common/item/gear/ItemFlamethrower.java index e3d87775f20..5c9e4610c24 100644 --- a/src/main/java/mekanism/common/item/gear/ItemFlamethrower.java +++ b/src/main/java/mekanism/common/item/gear/ItemFlamethrower.java @@ -11,7 +11,7 @@ import mekanism.api.chemical.ChemicalStack; import mekanism.api.chemical.IChemicalHandler; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.capabilities.Capabilities; @@ -21,8 +21,8 @@ import mekanism.common.item.interfaces.IItemHUDProvider; import mekanism.common.item.interfaces.IModeItem.IAttachmentBasedModeItem; import mekanism.common.registration.impl.CreativeTabDeferredRegister.ICustomCreativeTabContents; -import mekanism.common.registries.MekanismDataComponents; import mekanism.common.registries.MekanismChemicals; +import mekanism.common.registries.MekanismDataComponents; import mekanism.common.util.ChemicalUtil; import mekanism.common.util.MekanismUtils; import mekanism.common.util.StorageUtils; @@ -215,7 +215,7 @@ public static boolean isIdleFlamethrower(Player player, InteractionHand hand) { } @NothingNullByDefault - public enum FlamethrowerMode implements IIncrementalEnum, IHasTextComponent, StringRepresentable { + public enum FlamethrowerMode implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { COMBAT(MekanismLang.FLAMETHROWER_COMBAT, EnumColor.YELLOW), HEAT(MekanismLang.FLAMETHROWER_HEAT, EnumColor.ORANGE), INFERNO(MekanismLang.FLAMETHROWER_INFERNO, EnumColor.DARK_RED); diff --git a/src/main/java/mekanism/common/item/gear/ItemFreeRunners.java b/src/main/java/mekanism/common/item/gear/ItemFreeRunners.java index be9752fd640..fc22117b956 100644 --- a/src/main/java/mekanism/common/item/gear/ItemFreeRunners.java +++ b/src/main/java/mekanism/common/item/gear/ItemFreeRunners.java @@ -9,7 +9,7 @@ import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.Mekanism; import mekanism.common.MekanismLang; @@ -132,7 +132,7 @@ public void adjustAttributes(ItemAttributeModifierEvent event) { } @NothingNullByDefault - public enum FreeRunnerMode implements IIncrementalEnum, IHasTextComponent, StringRepresentable { + public enum FreeRunnerMode implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { NORMAL(MekanismLang.FREE_RUNNER_NORMAL, EnumColor.DARK_GREEN, true, true), SAFETY(MekanismLang.FREE_RUNNER_SAFETY, EnumColor.ORANGE, true, false), DISABLED(MekanismLang.FREE_RUNNER_DISABLED, EnumColor.DARK_RED, false, false); diff --git a/src/main/java/mekanism/common/item/interfaces/IJetpackItem.java b/src/main/java/mekanism/common/item/interfaces/IJetpackItem.java index 8e97900e802..d8baeac415f 100644 --- a/src/main/java/mekanism/common/item/interfaces/IJetpackItem.java +++ b/src/main/java/mekanism/common/item/interfaces/IJetpackItem.java @@ -9,6 +9,7 @@ import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.gear.config.IHasModeIcon; import mekanism.api.text.EnumColor; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.CommonPlayerTickHandler; import mekanism.common.Mekanism; @@ -40,7 +41,7 @@ public interface IJetpackItem { void useJetpackFuel(ItemStack stack); @NothingNullByDefault - enum JetpackMode implements IIncrementalEnum, IHasModeIcon, StringRepresentable { + enum JetpackMode implements IIncrementalEnum, IHasModeIcon, StringRepresentable, IHasEnumNameTextComponent { NORMAL(MekanismLang.JETPACK_NORMAL, EnumColor.DARK_GREEN, "jetpack_normal.png"), HOVER(MekanismLang.JETPACK_HOVER, EnumColor.DARK_AQUA, "jetpack_hover.png"), VECTOR(MekanismLang.JETPACK_VECTOR, EnumColor.ORANGE, "jetpack_vector.png"), diff --git a/src/main/java/mekanism/common/lib/transmitter/ConnectionType.java b/src/main/java/mekanism/common/lib/transmitter/ConnectionType.java index 807ce0ff015..7b0f4af4099 100644 --- a/src/main/java/mekanism/common/lib/transmitter/ConnectionType.java +++ b/src/main/java/mekanism/common/lib/transmitter/ConnectionType.java @@ -5,13 +5,11 @@ import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.math.MathUtils; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.IHasTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; -import mekanism.common.tile.qio.TileEntityQIODriveArray.DriveStatus; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; @@ -19,7 +17,7 @@ import net.minecraft.util.StringRepresentable; @NothingNullByDefault -public enum ConnectionType implements IIncrementalEnum, StringRepresentable, IHasTranslationKey, IHasTextComponent { +public enum ConnectionType implements IIncrementalEnum, StringRepresentable, IHasTranslationKey, IHasEnumNameTextComponent { NORMAL(MekanismLang.CONNECTION_NORMAL, EnumColor.ORANGE), PUSH(MekanismLang.CONNECTION_PUSH, EnumColor.BRIGHT_GREEN), PULL(MekanismLang.CONNECTION_PULL, EnumColor.YELLOW), diff --git a/src/main/java/mekanism/common/lib/transmitter/TransmissionType.java b/src/main/java/mekanism/common/lib/transmitter/TransmissionType.java index 6ef4dc1c8d4..fd1ff42d662 100644 --- a/src/main/java/mekanism/common/lib/transmitter/TransmissionType.java +++ b/src/main/java/mekanism/common/lib/transmitter/TransmissionType.java @@ -5,7 +5,7 @@ import java.util.function.Function; import java.util.function.IntFunction; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.content.network.transmitter.Transmitter; @@ -16,7 +16,7 @@ import net.minecraft.util.StringRepresentable; @NothingNullByDefault -public enum TransmissionType implements IHasTranslationKey, StringRepresentable { +public enum TransmissionType implements IHasEnumNameTranslationKey, StringRepresentable { ENERGY("EnergyNetwork", "energy", MekanismLang.TRANSMISSION_TYPE_ENERGY, 0), FLUID("FluidNetwork", "fluids", MekanismLang.TRANSMISSION_TYPE_FLUID, 1), CHEMICAL("ChemicalNetwork", "chemicals", MekanismLang.TRANSMISSION_TYPE_CHEMICALS, 2),//3,4,5 deleted diff --git a/src/main/java/mekanism/common/tile/TileEntityChemicalTank.java b/src/main/java/mekanism/common/tile/TileEntityChemicalTank.java index 7d2ab1b3a19..3d7067a9028 100644 --- a/src/main/java/mekanism/common/tile/TileEntityChemicalTank.java +++ b/src/main/java/mekanism/common/tile/TileEntityChemicalTank.java @@ -7,13 +7,13 @@ import mekanism.api.Action; import mekanism.api.IContentsListener; import mekanism.api.IIncrementalEnum; -import mekanism.api.SerializationConstants; import mekanism.api.RelativeSide; +import mekanism.api.SerializationConstants; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.chemical.IChemicalTank; import mekanism.api.math.MathUtils; import mekanism.api.providers.IBlockProvider; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.attachments.containers.ContainerType; @@ -244,7 +244,7 @@ void decrementDumpingMode() throws ComputerException { //End methods IComputerTile @NothingNullByDefault - public enum GasMode implements IIncrementalEnum, IHasTextComponent, StringRepresentable { + public enum GasMode implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { IDLE(MekanismLang.IDLE), DUMPING_EXCESS(MekanismLang.DUMPING_EXCESS), DUMPING(MekanismLang.DUMPING); diff --git a/src/main/java/mekanism/common/tile/component/config/DataType.java b/src/main/java/mekanism/common/tile/component/config/DataType.java index d5a11b69153..fa6e8e53dfb 100644 --- a/src/main/java/mekanism/common/tile/component/config/DataType.java +++ b/src/main/java/mekanism/common/tile/component/config/DataType.java @@ -5,10 +5,9 @@ import java.util.Locale; import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; -import mekanism.api.RelativeSide; import mekanism.api.annotations.NothingNullByDefault; import mekanism.api.text.EnumColor; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import net.minecraft.network.codec.ByteBufCodecs; @@ -19,7 +18,7 @@ //TODO: Re-evaluate how we do colors, given for say energy as the transmission type it makes more sense to have input be green? // Maybe we should make some way to specify a color override? @NothingNullByDefault -public enum DataType implements IIncrementalEnum, IHasTranslationKey, StringRepresentable { +public enum DataType implements IIncrementalEnum, IHasEnumNameTranslationKey, StringRepresentable { NONE(MekanismLang.SIDE_DATA_NONE, EnumColor.GRAY), INPUT(MekanismLang.SIDE_DATA_INPUT, EnumColor.DARK_RED), INPUT_1(MekanismLang.SIDE_DATA_INPUT_1, EnumColor.DARK_RED), diff --git a/src/main/java/mekanism/common/tile/interfaces/IFluidContainerManager.java b/src/main/java/mekanism/common/tile/interfaces/IFluidContainerManager.java index 488de2c1e24..c1298df1441 100644 --- a/src/main/java/mekanism/common/tile/interfaces/IFluidContainerManager.java +++ b/src/main/java/mekanism/common/tile/interfaces/IFluidContainerManager.java @@ -6,7 +6,7 @@ import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import net.minecraft.network.chat.Component; @@ -20,7 +20,7 @@ public interface IFluidContainerManager extends IHasMode { ContainerEditMode getContainerEditMode(); @NothingNullByDefault - enum ContainerEditMode implements IIncrementalEnum, IHasTextComponent, StringRepresentable { + enum ContainerEditMode implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { BOTH(MekanismLang.FLUID_CONTAINER_BOTH), FILL(MekanismLang.FLUID_CONTAINER_FILL), EMPTY(MekanismLang.FLUID_CONTAINER_EMPTY); diff --git a/src/main/java/mekanism/common/tile/interfaces/IRedstoneControl.java b/src/main/java/mekanism/common/tile/interfaces/IRedstoneControl.java index 9e53e138355..ad6de694fce 100644 --- a/src/main/java/mekanism/common/tile/interfaces/IRedstoneControl.java +++ b/src/main/java/mekanism/common/tile/interfaces/IRedstoneControl.java @@ -6,7 +6,7 @@ import java.util.function.IntFunction; import mekanism.api.IIncrementalEnum; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.text.IHasTextComponent; +import mekanism.api.text.IHasTextComponent.IHasEnumNameTextComponent; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import net.minecraft.network.chat.Component; @@ -49,7 +49,7 @@ public interface IRedstoneControl { boolean supportsMode(RedstoneControl mode); @NothingNullByDefault - enum RedstoneControl implements IIncrementalEnum, IHasTextComponent, StringRepresentable { + enum RedstoneControl implements IIncrementalEnum, IHasEnumNameTextComponent, StringRepresentable { DISABLED(MekanismLang.REDSTONE_CONTROL_DISABLED), HIGH(MekanismLang.REDSTONE_CONTROL_HIGH), LOW(MekanismLang.REDSTONE_CONTROL_LOW), diff --git a/src/main/java/mekanism/common/tile/laser/TileEntityLaserAmplifier.java b/src/main/java/mekanism/common/tile/laser/TileEntityLaserAmplifier.java index 9d38a97d645..08a93648bea 100644 --- a/src/main/java/mekanism/common/tile/laser/TileEntityLaserAmplifier.java +++ b/src/main/java/mekanism/common/tile/laser/TileEntityLaserAmplifier.java @@ -8,7 +8,7 @@ import mekanism.api.IIncrementalEnum; import mekanism.api.SerializationConstants; import mekanism.api.annotations.NothingNullByDefault; -import mekanism.api.text.IHasTranslationKey; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; import mekanism.api.text.ILangEntry; import mekanism.common.MekanismLang; import mekanism.common.attachments.containers.ContainerType; @@ -271,7 +271,7 @@ void setMaxThreshold(long threshold) throws ComputerException { //End methods IComputerTile @NothingNullByDefault - public enum RedstoneOutput implements IIncrementalEnum, IHasTranslationKey, StringRepresentable { + public enum RedstoneOutput implements IIncrementalEnum, IHasEnumNameTranslationKey, StringRepresentable { OFF(MekanismLang.OFF), ENTITY_DETECTION(MekanismLang.ENTITY_DETECTION), ENERGY_CONTENTS(MekanismLang.ENERGY_CONTENTS); diff --git a/src/main/java/mekanism/common/util/UnitDisplayUtils.java b/src/main/java/mekanism/common/util/UnitDisplayUtils.java index 6ddb13ba4e9..fdd7634ecad 100644 --- a/src/main/java/mekanism/common/util/UnitDisplayUtils.java +++ b/src/main/java/mekanism/common/util/UnitDisplayUtils.java @@ -20,6 +20,7 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.ByIdMap; import net.minecraft.util.Mth; +import net.neoforged.neoforge.common.TranslatableEnum; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -106,7 +107,7 @@ private interface Unit { } @NothingNullByDefault - public enum EnergyUnit implements IDisableableEnum, IEnergyConversion, Unit, IHasTranslationKey { + public enum EnergyUnit implements IDisableableEnum, IEnergyConversion, Unit, IHasTranslationKey, TranslatableEnum { JOULES(MekanismLang.ENERGY_JOULES, MekanismLang.ENERGY_JOULES_PLURAL, MekanismLang.ENERGY_JOULES_SHORT, "j", null, ConstantPredicates.ALWAYS_TRUE) { @Override public double getConversion() { @@ -177,6 +178,12 @@ public String getTranslationKey() { return shortLangEntry.getTranslationKey(); } + @NotNull + @Override + public Component getTranslatedName() { + return getLabel(false).translate(); + } + @NotNull @Override public EnergyUnit byIndex(int index) { @@ -199,7 +206,7 @@ public static EnergyUnit getConfigured() { } @NothingNullByDefault - public enum TemperatureUnit implements IIncrementalEnum, IHasTranslationKey, Unit { + public enum TemperatureUnit implements IIncrementalEnum, IHasTranslationKey, Unit, TranslatableEnum { KELVIN(MekanismLang.TEMPERATURE_KELVIN, MekanismLang.TEMPERATURE_KELVIN_SHORT, "K", "k", 0, 1), CELSIUS(MekanismLang.TEMPERATURE_CELSIUS, MekanismLang.TEMPERATURE_CELSIUS_SHORT, "°C", "c", 273.15, 1), RANKINE(MekanismLang.TEMPERATURE_RANKINE, MekanismLang.TEMPERATURE_RANKINE_SHORT, "R", "r", 0, 1.8), @@ -243,6 +250,12 @@ public ILangEntry getLabel(boolean singular) { return langEntry; } + @NotNull + @Override + public Component getTranslatedName() { + return getLabel(false).translate(); + } + @Override public String getTranslationKey() { return shortName.getTranslationKey(); diff --git a/src/main/java/mekanism/common/world/height/AnchorType.java b/src/main/java/mekanism/common/world/height/AnchorType.java index d72a38290e3..fa856579364 100644 --- a/src/main/java/mekanism/common/world/height/AnchorType.java +++ b/src/main/java/mekanism/common/world/height/AnchorType.java @@ -1,15 +1,21 @@ package mekanism.common.world.height; +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; +import mekanism.api.text.ILangEntry; +import mekanism.common.MekanismLang; import net.minecraft.world.level.levelgen.WorldGenerationContext; +import org.jetbrains.annotations.NotNull; -public enum AnchorType { - ABSOLUTE((context, value) -> value), - ABOVE_BOTTOM((context, value) -> context.getMinGenY() + value), - BELOW_TOP((context, value) -> context.getGenDepth() - 1 + context.getMinGenY() - value); +public enum AnchorType implements IHasEnumNameTranslationKey { + ABSOLUTE(MekanismLang.ANCHOR_TYPE_ABSOLUTE, (context, value) -> value), + ABOVE_BOTTOM(MekanismLang.ANCHOR_TYPE_ABOVE_BOTTOM, (context, value) -> context.getMinGenY() + value), + BELOW_TOP(MekanismLang.ANCHOR_TYPE_BELOW_TOP, (context, value) -> context.getGenDepth() - 1 + context.getMinGenY() - value); + private final ILangEntry langEntry; private final YResolver yResolver; - AnchorType(YResolver yResolver) { + AnchorType(ILangEntry langEntry, YResolver yResolver) { + this.langEntry = langEntry; this.yResolver = yResolver; } @@ -17,6 +23,12 @@ public int resolveY(WorldGenerationContext context, int value) { return yResolver.resolve(context, value); } + @NotNull + @Override + public String getTranslationKey() { + return langEntry.getTranslationKey(); + } + @FunctionalInterface private interface YResolver { diff --git a/src/main/java/mekanism/common/world/height/ConfigurableHeightRange.java b/src/main/java/mekanism/common/world/height/ConfigurableHeightRange.java index 8175399bd1b..4509ff8149d 100644 --- a/src/main/java/mekanism/common/world/height/ConfigurableHeightRange.java +++ b/src/main/java/mekanism/common/world/height/ConfigurableHeightRange.java @@ -3,6 +3,8 @@ import java.util.function.IntSupplier; import java.util.function.Supplier; import mekanism.common.config.IMekanismConfig; +import mekanism.common.config.MekanismConfigTranslations; +import mekanism.common.config.MekanismConfigTranslations.OreVeinConfigTranslations; import mekanism.common.config.value.CachedEnumValue; import mekanism.common.config.value.CachedIntValue; import mekanism.common.resource.ore.BaseOreConfig; @@ -11,24 +13,21 @@ public record ConfigurableHeightRange(Supplier shape, ConfigurableVerticalAnchor minInclusive, ConfigurableVerticalAnchor maxInclusive, IntSupplier plateau) { - public static ConfigurableHeightRange create(IMekanismConfig config, ModConfigSpec.Builder builder, String veinType, BaseOreConfig baseConfig) { - CachedEnumValue shape = CachedEnumValue.wrap(config, builder.comment("Distribution shape for placing " + veinType + "s.") + public static ConfigurableHeightRange create(IMekanismConfig config, ModConfigSpec.Builder builder, OreVeinConfigTranslations translations, BaseOreConfig baseConfig) { + CachedEnumValue shape = CachedEnumValue.wrap(config, translations.distributionShape().applyToBuilder(builder) .defineEnum("shape", baseConfig.shape())); - ConfigurableVerticalAnchor minInclusive = ConfigurableVerticalAnchor.create(config, builder, "minInclusive", - "Minimum (inclusive) height anchor for " + veinType + "s.", baseConfig.min(), null); + ConfigurableVerticalAnchor minInclusive = ConfigurableVerticalAnchor.create(config, builder, "minInclusive", translations.minInclusive(), baseConfig.min(), null); return new ConfigurableHeightRange(shape, minInclusive, - ConfigurableVerticalAnchor.create(config, builder, "maxInclusive", "Maximum (inclusive) height anchor for " + veinType + "s.", - baseConfig.max(), minInclusive), - CachedIntValue.wrap(config, builder.comment("Half length of short side of trapezoid, only used if shape is TRAPEZOID. A value of zero means the shape is a triangle.") - .define("plateau", baseConfig.plateau(), o -> { - if (o instanceof Integer value) { - if (value == 0) { - return true; - } - return value > 0 && shape.getOrDefault() == HeightShape.TRAPEZOID; - } - return false; - })) + ConfigurableVerticalAnchor.create(config, builder, "maxInclusive", translations.maxInclusive(), baseConfig.max(), minInclusive), + CachedIntValue.wrap(config, MekanismConfigTranslations.WORLD_HEIGHT_RANGE_PLATEAU.applyToBuilder(builder).define("plateau", baseConfig.plateau(), o -> { + if (o instanceof Integer value) { + if (value == 0) { + return true; + } + return value > 0 && shape.getOrDefault() == HeightShape.TRAPEZOID; + } + return false; + })) ); } } \ No newline at end of file diff --git a/src/main/java/mekanism/common/world/height/ConfigurableVerticalAnchor.java b/src/main/java/mekanism/common/world/height/ConfigurableVerticalAnchor.java index 5ca0474276f..1035569e4ca 100644 --- a/src/main/java/mekanism/common/world/height/ConfigurableVerticalAnchor.java +++ b/src/main/java/mekanism/common/world/height/ConfigurableVerticalAnchor.java @@ -1,6 +1,8 @@ package mekanism.common.world.height; +import mekanism.common.config.IConfigTranslation; import mekanism.common.config.IMekanismConfig; +import mekanism.common.config.MekanismConfigTranslations; import mekanism.common.config.value.CachedEnumValue; import mekanism.common.config.value.CachedIntValue; import mekanism.common.resource.ore.OreAnchor; @@ -11,19 +13,21 @@ public record ConfigurableVerticalAnchor(CachedEnumValue anchorType, CachedIntValue value) { - public static ConfigurableVerticalAnchor create(IMekanismConfig config, ModConfigSpec.Builder builder, String path, String comment, OreAnchor defaultAnchor, + public static ConfigurableVerticalAnchor create(IMekanismConfig config, ModConfigSpec.Builder builder, String path, IConfigTranslation translation, OreAnchor defaultAnchor, @Nullable ConfigurableVerticalAnchor minAnchor) { - builder.comment(comment).push(path); - CachedEnumValue type = CachedEnumValue.wrap(config, builder.comment("Type of anchor.", - "Absolute -> y = value", - "Above Bottom -> y = minY + value", - "Below Top -> y = depth - 1 + minY - value").defineEnum("type", defaultAnchor.type())); - ModConfigSpec.Builder valueBuilder = builder.comment("Value used for calculating y for the anchor based on the type."); + translation.applyToBuilder(builder).push(path); + CachedEnumValue type = CachedEnumValue.wrap(config, MekanismConfigTranslations.WORLD_ANCHOR_TYPE.applyToBuilder(builder) + //Note: Add extra comments so that when viewing from the file, people can know what each option does + .comment( + "Absolute (y = value)", + "Above Bottom (y = minY + value)", + "Below Top (y = depth - 1 + minY - value)" + ).defineEnum("type", defaultAnchor.type())); ConfigValue value; if (minAnchor == null) { - value = valueBuilder.define("value", defaultAnchor.value()); + value = MekanismConfigTranslations.WORLD_ANCHOR_VALUE.applyToBuilder(builder).define("value", defaultAnchor.value()); } else { - value = valueBuilder.define("value", defaultAnchor.value(), o -> { + value = MekanismConfigTranslations.WORLD_ANCHOR_VALUE.applyToBuilder(builder).define("value", defaultAnchor.value(), o -> { if (o instanceof Integer v) { return minAnchor.anchorType.getOrDefault() != type.getOrDefault() || v >= minAnchor.value.getOrDefault(); } diff --git a/src/main/java/mekanism/common/world/height/HeightShape.java b/src/main/java/mekanism/common/world/height/HeightShape.java index 67f8da519dd..7faf3786f5a 100644 --- a/src/main/java/mekanism/common/world/height/HeightShape.java +++ b/src/main/java/mekanism/common/world/height/HeightShape.java @@ -1,6 +1,23 @@ package mekanism.common.world.height; -public enum HeightShape { - TRAPEZOID, - UNIFORM +import mekanism.api.text.IHasTranslationKey.IHasEnumNameTranslationKey; +import mekanism.api.text.ILangEntry; +import mekanism.common.MekanismLang; +import org.jetbrains.annotations.NotNull; + +public enum HeightShape implements IHasEnumNameTranslationKey { + TRAPEZOID(MekanismLang.HEIGHT_SHAPE_TRAPEZOID), + UNIFORM(MekanismLang.HEIGHT_SHAPE_UNIFORM); + + private final ILangEntry langEntry; + + HeightShape(ILangEntry langEntry) { + this.langEntry = langEntry; + } + + @NotNull + @Override + public String getTranslationKey() { + return langEntry.getTranslationKey(); + } } \ No newline at end of file