From 03928d5840fcb7ee3a4192ce1d09ccfbd9a1c8a3 Mon Sep 17 00:00:00 2001 From: Matyrobbrt <65940752+Matyrobbrt@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:09:25 +0300 Subject: [PATCH 01/18] Fix `InputEvent$Key` not being fired (#1614) --- patches/net/minecraft/client/KeyboardHandler.java.patch | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/patches/net/minecraft/client/KeyboardHandler.java.patch b/patches/net/minecraft/client/KeyboardHandler.java.patch index 2470d92b3a..ca87c0a864 100644 --- a/patches/net/minecraft/client/KeyboardHandler.java.patch +++ b/patches/net/minecraft/client/KeyboardHandler.java.patch @@ -23,6 +23,14 @@ return; } } +@@ -507,6 +_,7 @@ + } + } + } ++ net.neoforged.neoforge.client.ClientHooks.onKeyInput(p_90895_, p_90896_, p_90897_, p_90898_); + } + } + @@ -516,10 +_,20 @@ if (screen != null && this.minecraft.getOverlay() == null) { try { From dd989e5cff90de56adb21943c7c87bd428dd930c Mon Sep 17 00:00:00 2001 From: Matyrobbrt Date: Wed, 23 Oct 2024 16:31:42 +0300 Subject: [PATCH 02/18] Update to 1.21.3 --- gradle.properties | 6 +++--- patches/net/minecraft/util/datafix/DataFixers.java.patch | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index c08cddfd9f..bd49179e04 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,10 +9,10 @@ org.gradle.debug=false java_version=21 -minecraft_version=1.21.2 -neoform_version=20241022.151510 +minecraft_version=1.21.3 +neoform_version=20241023.131943 # on snapshot versions, used to prefix the version -neoforge_snapshot_next_stable=21.3 +neoforge_snapshot_next_stable=21.4 mergetool_version=2.0.0 accesstransformers_version=10.0.1 diff --git a/patches/net/minecraft/util/datafix/DataFixers.java.patch b/patches/net/minecraft/util/datafix/DataFixers.java.patch index 7d19c8c1d7..5ab30c4c68 100644 --- a/patches/net/minecraft/util/datafix/DataFixers.java.patch +++ b/patches/net/minecraft/util/datafix/DataFixers.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/util/datafix/DataFixers.java +++ b/net/minecraft/util/datafix/DataFixers.java -@@ -1307,10 +_,35 @@ +@@ -1308,10 +_,35 @@ Schema schema199 = p_14514_.addSchema(3800, SAME_NAMESPACED); UnaryOperator unaryoperator2 = createRenamer(Map.of("minecraft:scute", "minecraft:turtle_scute")); p_14514_.addFixer(ItemRenameFix.create(schema199, "Rename scute item to turtle_scute", unaryoperator2)); @@ -36,7 +36,7 @@ Schema schema201 = p_14514_.addSchema(3807, V3807::new); p_14514_.addFixer(new AddNewChoices(schema201, "Added Vault", References.BLOCK_ENTITY)); Schema schema202 = p_14514_.addSchema(3807, 1, SAME_NAMESPACED); -@@ -1333,6 +_,18 @@ +@@ -1334,6 +_,18 @@ schema209, "Rename jump strength attribute", createRenamer("minecraft:horse.jump_strength", "minecraft:generic.jump_strength") ) ); From d19ca0689a0ef67aa6980645451a0f736ebbb007 Mon Sep 17 00:00:00 2001 From: ChampionAsh5357 Date: Wed, 23 Oct 2024 19:13:11 -0400 Subject: [PATCH 03/18] Add new MobEffect constructor that allows specifying a particle factory (#1578) --- .../minecraft/world/effect/MobEffect.java.patch | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/patches/net/minecraft/world/effect/MobEffect.java.patch b/patches/net/minecraft/world/effect/MobEffect.java.patch index 135584ef6b..1daf7ed3ab 100644 --- a/patches/net/minecraft/world/effect/MobEffect.java.patch +++ b/patches/net/minecraft/world/effect/MobEffect.java.patch @@ -9,6 +9,23 @@ public static final Codec> CODEC = BuiltInRegistries.MOB_EFFECT.holderByNameCodec(); public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.holderRegistry(Registries.MOB_EFFECT); private static final int AMBIENT_ALPHA = Mth.floor(38.25F); +@@ -65,6 +_,16 @@ + this.particleFactory = p_333515_ -> p_333716_; + } + ++ /** ++ * Neo: Constructor that can take in the particle factory as a function of the {@link MobEffectInstance}. ++ * This should be used if the desired {@link ParticleOptions} depends on the presence of other registry entries. ++ */ ++ protected MobEffect(MobEffectCategory category, int color, Function particleFactory) { ++ this.category = category; ++ this.color = color; ++ this.particleFactory = particleFactory; ++ } ++ + public int getBlendDurationTicks() { + return this.blendDurationTicks; + } @@ -133,6 +_,18 @@ return this; } From 3f10254f1a4190263c7203a157c2ae12622453fc Mon Sep 17 00:00:00 2001 From: Matyrobbrt <65940752+Matyrobbrt@users.noreply.github.com> Date: Thu, 24 Oct 2024 18:58:50 +0300 Subject: [PATCH 04/18] Fix mod logos not being rendered in the mod list (#1615) --- .../neoforge/client/extensions/IGuiGraphicsExtension.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/neoforged/neoforge/client/extensions/IGuiGraphicsExtension.java b/src/main/java/net/neoforged/neoforge/client/extensions/IGuiGraphicsExtension.java index d6b1da00e0..3d4d365b1f 100644 --- a/src/main/java/net/neoforged/neoforge/client/extensions/IGuiGraphicsExtension.java +++ b/src/main/java/net/neoforged/neoforge/client/extensions/IGuiGraphicsExtension.java @@ -143,7 +143,7 @@ default void blitInscribed(ResourceLocation texture, int x, int y, int boundsWid if (centerX) x += (w - boundsWidth) / 2; } - self().blit(RenderType::guiTextured, texture, x, y, boundsWidth, boundsHeight, 0, 0, rectWidth, rectHeight, rectWidth, rectHeight); + self().blit(RenderType::guiTextured, texture, x, y, 0, 0, boundsWidth, boundsHeight, rectWidth, rectHeight, rectWidth, rectHeight); } // TODO: 1.20.2: do we need to fix these or can we just remove them? From bd1804b00c7722db5dc5b2fc7e7f797478720287 Mon Sep 17 00:00:00 2001 From: ChampionAsh5357 Date: Fri, 25 Oct 2024 13:46:52 -0400 Subject: [PATCH 05/18] [1.21.3] Expose RecipeManager#recipes via new getter function (#1620) --- .../world/item/crafting/RecipeManager.java.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 patches/net/minecraft/world/item/crafting/RecipeManager.java.patch diff --git a/patches/net/minecraft/world/item/crafting/RecipeManager.java.patch b/patches/net/minecraft/world/item/crafting/RecipeManager.java.patch new file mode 100644 index 0000000000..e1cbdae41d --- /dev/null +++ b/patches/net/minecraft/world/item/crafting/RecipeManager.java.patch @@ -0,0 +1,14 @@ +--- a/net/minecraft/world/item/crafting/RecipeManager.java ++++ b/net/minecraft/world/item/crafting/RecipeManager.java +@@ -260,6 +_,11 @@ + : Optional.empty(); + } + ++ // Neo: expose recipe map ++ public RecipeMap recipeMap() { ++ return this.recipes; ++ } ++ + public interface CachedCheck> { + Optional> getRecipeFor(I p_344938_, ServerLevel p_379487_); + } From 5a82cc609ae8b355396721cf5679e1cfca5ddc4a Mon Sep 17 00:00:00 2001 From: "neoforged-renovate[bot]" <174042230+neoforged-renovate[bot]@users.noreply.github.com> Date: Sun, 27 Oct 2024 10:12:23 +0100 Subject: [PATCH 06/18] Update fancy_mod_loader_version to v4.0.31 (1.21.x) (#1635) Co-authored-by: neoforged-renovate[bot] <174042230+neoforged-renovate[bot]@users.noreply.github.com> --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index bd49179e04..b2c2ca42a7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -30,7 +30,7 @@ jetbrains_annotations_version=24.0.1 slf4j_api_version=2.0.7 apache_maven_artifact_version=3.8.5 jarjar_version=0.4.1 -fancy_mod_loader_version=4.0.29 +fancy_mod_loader_version=4.0.31 mojang_logging_version=1.1.1 log4j_version=2.22.1 guava_version=31.1.2-jre From 7205d37d0aac59787e6acfe2d733f35d64c45c8f Mon Sep 17 00:00:00 2001 From: NeoForged Localizations Date: Tue, 29 Oct 2024 22:47:09 +0800 Subject: [PATCH 07/18] New Crowdin updates (#1512) --- .../resources/assets/neoforge/lang/cs_cz.json | 55 +++--- .../resources/assets/neoforge/lang/da_dk.json | 13 +- .../resources/assets/neoforge/lang/de_de.json | 21 ++- .../resources/assets/neoforge/lang/en_gb.json | 13 +- .../resources/assets/neoforge/lang/eo_uy.json | 13 +- .../resources/assets/neoforge/lang/es_es.json | 19 +- .../resources/assets/neoforge/lang/et_ee.json | 13 +- .../resources/assets/neoforge/lang/fr_fr.json | 13 +- .../resources/assets/neoforge/lang/hu_hu.json | 13 +- .../resources/assets/neoforge/lang/it_it.json | 13 +- .../resources/assets/neoforge/lang/ja_jp.json | 21 ++- .../resources/assets/neoforge/lang/ko_kr.json | 13 +- .../resources/assets/neoforge/lang/ms_my.json | 39 ++-- .../resources/assets/neoforge/lang/nl_nl.json | 13 +- .../resources/assets/neoforge/lang/pl_pl.json | 13 +- .../resources/assets/neoforge/lang/pt_br.json | 13 +- .../resources/assets/neoforge/lang/pt_pt.json | 13 +- .../resources/assets/neoforge/lang/ro_ro.json | 13 +- .../resources/assets/neoforge/lang/ru_ru.json | 87 +++++---- .../resources/assets/neoforge/lang/sk_sk.json | 13 +- .../resources/assets/neoforge/lang/tr_tr.json | 13 +- .../resources/assets/neoforge/lang/tt_ru.json | 13 +- .../resources/assets/neoforge/lang/uk_ua.json | 21 ++- .../resources/assets/neoforge/lang/vi_vn.json | 13 +- .../resources/assets/neoforge/lang/zh_cn.json | 13 +- .../resources/assets/neoforge/lang/zh_tw.json | 169 ++++++++++-------- 26 files changed, 476 insertions(+), 190 deletions(-) diff --git a/src/main/resources/assets/neoforge/lang/cs_cz.json b/src/main/resources/assets/neoforge/lang/cs_cz.json index 2c95bf1deb..737439aebc 100644 --- a/src/main/resources/assets/neoforge/lang/cs_cz.json +++ b/src/main/resources/assets/neoforge/lang/cs_cz.json @@ -14,7 +14,7 @@ "fml.menu.mods.info.authors": "Autoři: %1$s", "fml.menu.mods.info.displayurl": "Domovská stránka: %1$s", "fml.menu.mods.info.license": "Licence: %1$s", - "fml.menu.mods.info.securejardisabled": "Bezpečné módové funkce jsou vypnuty, aktualizujte JDK", + "fml.menu.mods.info.securejardisabled": "Bezpečné funkce módů jsou vypnuty, aktualizujte JDK", "fml.menu.mods.info.signature": "Podepsání: %1$s", "fml.menu.mods.info.signature.unsigned": "NEPODEPSANÝ", "fml.menu.mods.info.trust": "Důvěra: %1$s", @@ -30,8 +30,8 @@ "fml.menu.multiplayer.vanilla": "Vanilla server", "fml.menu.multiplayer.vanilla.incompatible": "Nekompatibilní Vanilla server", "fml.menu.multiplayer.unknown": "Neznámý server %1$s", - "fml.menu.multiplayer.serveroutdated": "Verze sítě NeoForge serveru je zastaralá", - "fml.menu.multiplayer.clientoutdated": "Verze sítě NeoForge klienta je zastaralá", + "fml.menu.multiplayer.serveroutdated": "Verze síťování NeoForge serveru je zastaralá", + "fml.menu.multiplayer.clientoutdated": "Verze síťování NeoForge klienta je zastaralá", "fml.menu.multiplayer.extraservermods": "Server obsahuje módy navíc které mohou být potřeba i na klientovi", "fml.menu.multiplayer.modsincompatible": "Seznam módů na serveru není kompatibilní", "fml.menu.multiplayer.networkincompatible": "Seznam zpráv sítě serveru není kompatibilní", @@ -60,7 +60,7 @@ "fml.modmismatchscreen.table.visit.mod_page": "Otevřete stránku módu, který je zaregistrovaný na tento kanál: %s", "fml.modmismatchscreen.simplifiedview": "Zjednodušený pohled", "fml.resources.modresources": "Zdroje pro %1$s módové soubory", - "fml.resources.moddata": "Data pro %1$s módové soubory", + "fml.resources.moddata": "Data pro %1$s soubory módu", "loadwarning.neoforge.prbuild": "Tento NeoForge build byl vytvořen komunitním členem a proto je §c§lBEZ PODPORY§r", "commands.neoforge.arguments.enum.invalid": "Enum konstanta musí být jedna z %1$s, nalezeno %2$s", "commands.neoforge.dimensions.list": "Aktuálně registrované dimenze typu:", @@ -76,11 +76,11 @@ "commands.neoforge.setdim.invalid.dim": "Vybrané ID dimenze (%1$s) je neplatné.", "commands.neoforge.setdim.invalid.nochange": "Vybraná entita (%1$s) již existuje v specifické dimenzi (%2$s).", "commands.neoforge.setdim.deprecated": "Tento příkaz je zastaralý kvůli smazání ve verzi 1.17, použijte místo něj %s.", - "commands.neoforge.tps.overall": "Overall: %s TPS (%s ms/tick)", - "commands.neoforge.tps.tooltip": "Mean TPS; higher is better. Target TPS: %s", + "commands.neoforge.tps.overall": "Celkem: %s TPS (%s ms/tick)", + "commands.neoforge.tps.tooltip": "Průměrné TPS; vyšší je lepší. Cílový TPS: %s", "commands.neoforge.tps.dimension": "%s: %s TPS (%s ms/tick)", - "commands.neoforge.tps.dimension.tooltip": "%s (Dimension Type: %s)", - "commands.neoforge.mods.list": "Módový seznam: %1$s", + "commands.neoforge.tps.dimension.tooltip": "%s (typ dimenze: %s)", + "commands.neoforge.mods.list": "Seznam módů: %1$s", "commands.neoforge.tracking.entity.enabled": "Sledování entity povoleno na %d sekund.", "commands.neoforge.tracking.entity.reset": "Data časování entity byla vymazána!", "commands.neoforge.tracking.invalid": "Neplatná sledovací data.", @@ -115,14 +115,14 @@ "commands.neoforge.timespeed.query.default": "Čas v %s běží normální rychlostí (20 minut za den).", "commands.neoforge.timespeed.set": "Nastaven běh času v %s na %sx (%s minut za den).", "commands.neoforge.timespeed.set.default": "Nastaven běh času v %s na základní nastavení (20 minut za den).", - "commands.neoforge.data_components.list.error.held_stack_empty": "You are not holding any item", - "commands.neoforge.data_components.list.title": "Data components on %s:", + "commands.neoforge.data_components.list.error.held_stack_empty": "Nedržíte žádný předmět", + "commands.neoforge.data_components.list.title": "Komponenty dané na %s:", "commands.neoforge.data_components.list.entry": "\n - %s", "commands.neoforge.data_components.list.entry.key_value": "%s: %s", - "commands.neoforge.data_components.list.tooltip.default": "Component %s holds its default value", - "commands.neoforge.data_components.list.tooltip.deleted": "Component %s with value %s was deleted", - "commands.neoforge.data_components.list.tooltip.modified": "Component %s was modified from %s to %s", - "commands.neoforge.data_components.list.tooltip.added": "Component %s was added with value %s", + "commands.neoforge.data_components.list.tooltip.default": "Komponenta %s drží svou výchozí hodnotu", + "commands.neoforge.data_components.list.tooltip.deleted": "Komponenta %s s hodnotou %s byla smazána", + "commands.neoforge.data_components.list.tooltip.modified": "Komponenta %s byla změněna z %s na %s", + "commands.neoforge.data_components.list.tooltip.added": "Komponenta %s byla přidána s hodnotou %s", "commands.config.getwithtype": "Konfigurace pro %s typu %s nalezena na %s", "commands.config.noconfig": "Konfigurace pro %s typu %s nenalezena", "neoforge.update.beta.1": "%sPOZOR: %sNeoForge Beta", @@ -156,8 +156,8 @@ "neoforge.configuration.uitext.listelementup": "⏶", "neoforge.configuration.uitext.listelementdown": "⏷", "neoforge.configuration.uitext.listelementremove": "❌", - "neoforge.configuration.uitext.rangetooltip": "Range: %s", - "neoforge.configuration.uitext.filenametooltip": "File: \"%s\"", + "neoforge.configuration.uitext.rangetooltip": "Rozsah: %s", + "neoforge.configuration.uitext.filenametooltip": "Soubor: %s", "neoforge.configuration.uitext.common": "Obecné volby", "neoforge.configuration.uitext.client": "Volby klienta", "neoforge.configuration.uitext.server": "Volby serveru", @@ -190,14 +190,14 @@ "neoforge.configgui.permissionHandler": "Manažer oprávnění", "neoforge.configgui.permissionHandler.tooltip": "Manažer oprávnění použitý na serveru. Výchozí je neoforge:default_handler pokud žádný handler s tímto názvem není registrován.", "neoforge.configgui.removeErroringBlockEntities": "Odstranit Block Entity volající chyby", - "neoforge.configgui.removeErroringBlockEntities.tooltip": "Set this to true to remove any BlockEntity that throws an error in its update method instead of closing the server and reporting a crash log.", + "neoforge.configgui.removeErroringBlockEntities.tooltip": "Nastavte na true pro odstranění BlockEntity, která hodí chybu v metodě aktualizace namísto zavření serveru a hlášení selhání logu.", "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "POZOR, TOTO MŮŽE VŠECHNO POKAZIT.\nBUĎTE OPATRNÍ.\nNEJSME ZODPOVĚDNI ZA JAKÉKOLIV NAPÁCHANÉ ŠKODY.", "neoforge.configgui.removeErroringEntities": "Odstranit Entity volající chyby", - "neoforge.configgui.removeErroringEntities.tooltip": "Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log.", + "neoforge.configgui.removeErroringEntities.tooltip": "Nastavte na true pro odstranění Entity, která hodí chybu v metodě aktualizace namísto zavření serveru a hlášení selhání logu.", "neoforge.configgui.removeErroringEntities.tooltip.warning": "POZOR, TOTO MŮŽE VŠECHNO POKAZIT.\nBUĎTE OPATRNÍ.\nNEJSME ZODPOVĚDNI ZA JAKÉKOLIV NAPÁCHANÉ ŠKODY.", "neoforge.configgui.showLoadWarnings": "Zobrazit Upozornění při Načítání", "neoforge.configgui.showLoadWarnings.tooltip": "Pokud je zapnuto, NeoForge zobrazí jakákoliv upozornění, která se vyskytla při načítání.", - "neoforge.configgui.useCombinedDepthStencilAttachment": "Používejte kombinovaný doplňek DEPTH_STENCIL", + "neoforge.configgui.useCombinedDepthStencilAttachment": "Používejte kombinovaný doplněk DEPTH_STENCIL", "neoforge.configgui.useCombinedDepthStencilAttachment.tooltip": "Zapněte toto nastavení pro použití kombinovaného doplňku DEPTH_STENCIL místo dvou samostatných.", "neoforge.controlsgui.shift": "SHIFT + %s", "neoforge.controlsgui.control": "CTRL + %s", @@ -230,7 +230,7 @@ "neoforge.network.negotiation.failure.version.mismatch": "Klient chce mít payload verzi: %s, ale server chce verzi: %s!", "neoforge.network.invalid_flow": "Chyba při procesu paylodu, který byl zaslán s neplatným tokem: %s", "neoforge.network.negotiation.failure.vanilla.client.not_supported": "Snažíte se připojit k serveru který běží na NeoForge, ale vy NeoForge nemáte. Prosím, nainstalujte NeoForge verzi: %s pro připojení k tomuto serveru.", - "neoforge.network.negotiation.failure.vanilla.server.not_supported": "Snažíte se připojit k serveru který neběží na NeoForge, ale máte módy, který ho požaduje. Nepodařilo se připojit.", + "neoforge.network.negotiation.failure.vanilla.server.not_supported": "Snažíte se připojit k serveru který neběží na NeoForge, ale máte módy, které ho požadují. Nepodařilo se připojit.", "neoforge.network.packet_splitter.unknown": "Snaha o rozdělení packetu bez rozdělovače packetů!", "neoforge.network.advanced_add_entity.failed": "Neúspěch při zpracovávání rozšířených dat spawnu entit: %s", "neoforge.network.advanced_open_screen.failed": "Neúspěch při snaze otevřít obrazovku s rozšířenými daty: %s", @@ -242,6 +242,17 @@ "neoforge.network.data_maps.missing_our": "Je nemožné se připoijit k serveru, jelikož chybí povinné registry map dat, které jsou přítomné na klientu: %s", "neoforge.network.data_maps.missing_their": "Je nemožné se připoijit k serveru, jelikož obsahuje povinné registry map dat, které nejsou přítomné na klientu: %s", "neoforge.network.extensible_enums.no_vanilla_server": "Tento klient nepodporuje vanilla servery, jelikož má mnoho rozšířených enumů v serverovaném připojení", - "neoforge.network.extensible_enums.enum_set_mismatch": "Sada rozšířených enumů na klientu a na serveru se nerovnají. Ujistěte se, že užíváte stejnou NeoForge verzi jako server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "Sada hodnot přidaných k rozšířeným enumů na klientu a na serveru se nerovnají. Ujistěte se, že užíváte stejný mód a NeoForge verzi jako server. Pro více informací se podívejte do logu" + "neoforge.network.extensible_enums.enum_set_mismatch": "Sada rozšířených enumů na klientovi a na serveru se nerovná. Ujistěte se, že užíváte stejnou NeoForge verzi jako server", + "neoforge.network.extensible_enums.enum_entry_mismatch": "Sada hodnot přidaných k rozšířeným enumů na klientu a na serveru se nerovnají. Ujistěte se, že užíváte stejný mód a NeoForge verzi jako server. Pro více informací se podívejte do logu", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/da_dk.json b/src/main/resources/assets/neoforge/lang/da_dk.json index 667edefa31..24e5b59c05 100644 --- a/src/main/resources/assets/neoforge/lang/da_dk.json +++ b/src/main/resources/assets/neoforge/lang/da_dk.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/de_de.json b/src/main/resources/assets/neoforge/lang/de_de.json index 7792a3f15c..b1bdcb1ed5 100644 --- a/src/main/resources/assets/neoforge/lang/de_de.json +++ b/src/main/resources/assets/neoforge/lang/de_de.json @@ -141,7 +141,7 @@ "neoforge.configuration.uitext.notonline": "Diese Einstellungen werden vom Server übernommen und können nicht geändert werden während Du online bist.", "neoforge.configuration.uitext.notlan": "Diese Einstellungen können nicht geändert werden während Du Dein Spiel für andere geöffnet hast. Bitte kehre ins Hauptmenü zurück und lade den Spielstand erneut.", "neoforge.configuration.uitext.notloaded": "Diese Einstellungen sind nur verfügbar, wenn du dich in einer Welt befindest.", - "neoforge.configuration.uitext.unsupportedelement": "Diese Einstellungen können nicht in der Benutzeroberfläche bearbeitet werden. Kontaktiere die/den Autor:Innen des/der Mod(s) und bitte ihn/sie ein angepasstes Bedienelement zu implementieren.", + "neoforge.configuration.uitext.unsupportedelement": "Diese Einstellungen können nicht in der Benutzeroberfläche bearbeitet werden. Kontaktiere die Mod-Autoren und bitte sie ein angepasstes Bedienelement zu implementieren.", "neoforge.configuration.uitext.longstring": "Dieser Wert ist zu lang, um hier bearbeitet werden zu können. Bitte bearbeite ihn in der Konfigurationsdatei.", "neoforge.configuration.uitext.section": "%s...", "neoforge.configuration.uitext.sectiontext": "Bearbeiten", @@ -168,7 +168,7 @@ "neoforge.configuration.uitext.restart.server.text": "Eine oder mehrere der geänderten Einstellungen sind nur wirksam, wenn die Welt neu geladen wird.", "neoforge.configuration.uitext.restart.return": "Ignorieren", "neoforge.configuration.uitext.restart.return.tooltip": "Deine Änderungen haben keine Wirkung, bis das Spiel neu gestartet wird!", - "neoforge.configuration.title": "NeoForge Konfiguration", + "neoforge.configuration.title": "NeoForge-Konfiguration", "neoforge.configuration.section.neoforge.client.toml": "Client-Einstellungen", "neoforge.configuration.section.neoforge.client.toml.title": "Client-Einstellungen", "neoforge.configuration.section.neoforge.common.toml": "Gemeinsame Einstellungen", @@ -177,12 +177,12 @@ "neoforge.configuration.section.neoforge.server.toml.title": "Server-Einstellungen", "neoforge.configgui.advertiseDedicatedServerToLan": "Dedizierten Server im LAN anzeigen", "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "Aktiviere diese Option, um den dedizierten Server zu lokalen LAN-Clients zu senden, sodass er automatisch in deren Mehrspieler-Bildschirmen angezeigt wird.", - "neoforge.configgui.forgeLightPipelineEnabled": "Neoforge Licht-Pipeline aktivieren", + "neoforge.configgui.forgeLightPipelineEnabled": "NeoForge Licht-Pipeline aktivieren", "neoforge.configgui.forgeLightPipelineEnabled.tooltip": "Aktiviert die NeoForge Block-Darstellungs-Pipeline - korrigiert die Beleuchtung von benutzerdefinierten Modellen.", "neoforge.configgui.fullBoundingBoxLadders": "Leitern im gesamten Kollisionsbereich", "neoforge.configgui.fullBoundingBoxLadders.tooltip": "Ändere dies zu 'true', um den gesamten Kollisionsbereich einer Entität, anstatt nur den Block, in dem sie sich befindet, auf Leitern zu überprüfen. Verursacht merkliche Unterschiede in der Spielmechanik, daher ist die Standardeinstellung die Vanilla-Funktionsweise. Standardwert: 'false'.", "neoforge.configgui.logLegacyTagWarnings": "Veraltete Tags protokollieren", - "neoforge.configgui.logLegacyTagWarnings.tooltip": "Eine Konfigurationsoption hauptsächlich für Entwickler. Protokolliert Tags von Modifikationen, die den 'forge'-Namensraum verwenden, wenn sie auf einem integrierten Server ausgeführt werden. Standard ist DEV_SHORT.", + "neoforge.configgui.logLegacyTagWarnings.tooltip": "Eine Konfiguration, die hauptsächlich für Entwickler gedacht ist. Meldet Tags von Mods im Log, die den 'forge'-Namensraum verwenden, wenn man der integrierte Server verwendet. Standard ist DEV_SHORT.", "neoforge.configgui.logUntranslatedConfigurationWarnings": "Nicht übersetzte Konfigurationsschlüssel protokollieren", "neoforge.configgui.logUntranslatedConfigurationWarnings.tooltip": "Eine Konfiguration, die hauptsächlich für Entwickler gedacht ist. Meldet Konfigurationswerte im Log, die keine Übersetzung haben, wenn man den Client in einer Entwicklungsumgebung verwendet.", "neoforge.configgui.logUntranslatedItemTagWarnings": "Nicht übersetzte Item-Tags protokollieren", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Kann keine Verbindung zum Server herstellen, da obligatorische Registrierungsdatenkarten auf dem Server vorhanden sind, die auf dem Client fehlen: %s", "neoforge.network.extensible_enums.no_vanilla_server": "Dieser Client unterstützt Vanilla-Server nicht, da er erweiterte Enums in dem an den Server gerichteten Netzwerk verwendet", "neoforge.network.extensible_enums.enum_set_mismatch": "Die Menge der erweiterten Enums auf dem Client und dem Server stimmen nicht überein. Stelle sicher, dass du die gleiche NeoForge-Version wie der Server verwendest", - "neoforge.network.extensible_enums.enum_entry_mismatch": "Die Werte, die zu erweiterten Enums auf dem Client und dem Server hinzugefügt wurden, stimmen nicht überein. Stelle sicher, dass du die gleichen Mod- und NeoForge-Versionen wie der Server verwendest. Weitere Details findest du im Log" + "neoforge.network.extensible_enums.enum_entry_mismatch": "Die Werte, die zu erweiterten Enums auf dem Client und dem Server hinzugefügt wurden, stimmen nicht überein. Stelle sicher, dass du die gleichen Mod- und NeoForge-Versionen wie der Server verwendest. Weitere Details findest du im Log", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Aktiviert", + "neoforge.value.boolean.disabled": "Deaktiviert", + "neoforge.value.boolean.enable": "Aktiviert", + "neoforge.value.boolean.disable": "Deaktiviert", + "neoforge.value.boolean.invalid": "Ungültig", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/en_gb.json b/src/main/resources/assets/neoforge/lang/en_gb.json index 7797dbc97d..5b4cb3ca8c 100644 --- a/src/main/resources/assets/neoforge/lang/en_gb.json +++ b/src/main/resources/assets/neoforge/lang/en_gb.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/eo_uy.json b/src/main/resources/assets/neoforge/lang/eo_uy.json index cb1667bac3..c496f43d10 100644 --- a/src/main/resources/assets/neoforge/lang/eo_uy.json +++ b/src/main/resources/assets/neoforge/lang/eo_uy.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/es_es.json b/src/main/resources/assets/neoforge/lang/es_es.json index 93be1b1bcc..44d34780d7 100644 --- a/src/main/resources/assets/neoforge/lang/es_es.json +++ b/src/main/resources/assets/neoforge/lang/es_es.json @@ -36,7 +36,7 @@ "fml.menu.multiplayer.modsincompatible": "La lista de mods del servidor no es compatible", "fml.menu.multiplayer.networkincompatible": "La lista de mensajes de red del servidor no es compatible", "fml.menu.multiplayer.missingdatapackregistries": "Missing required datapack registries: %1$s", - "fml.menu.branding": "%s (%s mods)", + "fml.menu.branding": ".", "fml.menu.notification.title": "Notificación de inicio", "fml.menu.accessdenied.title": "Acceso denegado al servidor", "fml.menu.accessdenied.message": "Fancy Mod Loader could not connect to this server\nThe server %1$s has forbidden modded access", @@ -76,7 +76,7 @@ "commands.neoforge.setdim.invalid.dim": "The dimension ID specified (%1$s) is not valid.", "commands.neoforge.setdim.invalid.nochange": "The entity selected (%1$s) is already in the dimension specified (%2$s).", "commands.neoforge.setdim.deprecated": "Este comando está obsoleto para su eliminación en 1.17, utilice %s en su lugar", - "commands.neoforge.tps.overall": "Overall: %s TPS (%s ms/tick)", + "commands.neoforge.tps.overall": "En total: %s TPS (%s ms/tick)", "commands.neoforge.tps.tooltip": "Mean TPS; higher is better. Target TPS: %s", "commands.neoforge.tps.dimension": "%s: %s TPS (%s ms/tick)", "commands.neoforge.tps.dimension.tooltip": "%s (Dimension Type: %s)", @@ -138,7 +138,7 @@ "neoforge.configuration.uitext.title.server": "%s Server Configuration", "neoforge.configuration.uitext.title.common": "%s Common Configuration", "neoforge.configuration.uitext.title.startup": "%s Startup Configuration", - "neoforge.configuration.uitext.notonline": "Settings in here are determined by the server and cannot be changed while online.", + "neoforge.configuration.uitext.notonline": "Los ajustes aquí están determinados por el servidor y no se pueden cambiar mientras estén en línea.", "neoforge.configuration.uitext.notlan": "Settings in here cannot be edited while your game is open to LAN. Please return to the main menu and load the world again.", "neoforge.configuration.uitext.notloaded": "Settings in here are only available while a world is loaded.", "neoforge.configuration.uitext.unsupportedelement": "This value cannot be edited in the UI. Please contact the mod author about providing a custom UI for it.", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "No es posible conectarse al servidor ya que el servidor tiene mapas de datos de registro obligatorios que no están presentes en el cliente: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/et_ee.json b/src/main/resources/assets/neoforge/lang/et_ee.json index 22c875870e..f598372b8a 100644 --- a/src/main/resources/assets/neoforge/lang/et_ee.json +++ b/src/main/resources/assets/neoforge/lang/et_ee.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/fr_fr.json b/src/main/resources/assets/neoforge/lang/fr_fr.json index 984e6149b2..0f3e17ab53 100644 --- a/src/main/resources/assets/neoforge/lang/fr_fr.json +++ b/src/main/resources/assets/neoforge/lang/fr_fr.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Impossible de se connecter au serveur car il a des mappages de données de registre obligatoires qui ne sont pas présents sur le client : %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/hu_hu.json b/src/main/resources/assets/neoforge/lang/hu_hu.json index ec7866274c..8e2f3f066b 100644 --- a/src/main/resources/assets/neoforge/lang/hu_hu.json +++ b/src/main/resources/assets/neoforge/lang/hu_hu.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/it_it.json b/src/main/resources/assets/neoforge/lang/it_it.json index 1747ce6a2c..d2bb100e95 100644 --- a/src/main/resources/assets/neoforge/lang/it_it.json +++ b/src/main/resources/assets/neoforge/lang/it_it.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Impossibile connettersi al server in quanto presenta un registro della mappa dati obbligatorio assente nel client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/ja_jp.json b/src/main/resources/assets/neoforge/lang/ja_jp.json index 73ad50928d..0d3bd7a2bb 100644 --- a/src/main/resources/assets/neoforge/lang/ja_jp.json +++ b/src/main/resources/assets/neoforge/lang/ja_jp.json @@ -168,12 +168,12 @@ "neoforge.configuration.uitext.restart.server.text": "One or more of the configuration option that were changed will only take effect when the world is reloaded.", "neoforge.configuration.uitext.restart.return": "Ignore", "neoforge.configuration.uitext.restart.return.tooltip": "Your changes will have no effect until you restart!", - "neoforge.configuration.title": "NeoForge Configuration", - "neoforge.configuration.section.neoforge.client.toml": "Client settings", - "neoforge.configuration.section.neoforge.client.toml.title": "Client settings", + "neoforge.configuration.title": "NeoForge の設定", + "neoforge.configuration.section.neoforge.client.toml": "クライアントの設定", + "neoforge.configuration.section.neoforge.client.toml.title": "クライアントの設定", "neoforge.configuration.section.neoforge.common.toml": "Common settings", "neoforge.configuration.section.neoforge.common.toml.title": "Common settings", - "neoforge.configuration.section.neoforge.server.toml": "Server settings", + "neoforge.configuration.section.neoforge.server.toml": "サーバーの設定", "neoforge.configuration.section.neoforge.server.toml.title": "Server settings", "neoforge.configgui.advertiseDedicatedServerToLan": "Advertise Dedicated Server To LAN", "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "Set this to true to enable advertising the dedicated server to local LAN clients so that it shows up in the Multiplayer screen automatically.", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "クライアントに存在しない必須のレジストリデータマップがサーバーにあるため、サーバーに接続できませんでした:%s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "クライアントとサーバーの拡張可能な列挙に追加された値のセットが一致しません。 サーバーと同じバージョンの mod と NeoForge を使用していることを確認してください。詳細はログを参照してください", + "neoforge.attribute.debug.base": "[エンティティ: %s | アイテム: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "有効", + "neoforge.value.boolean.disabled": "無効", + "neoforge.value.boolean.enable": "有効にする", + "neoforge.value.boolean.disable": "無効にする", + "neoforge.value.boolean.invalid": "無効", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/ko_kr.json b/src/main/resources/assets/neoforge/lang/ko_kr.json index c04de76122..dce0d9ee2d 100644 --- a/src/main/resources/assets/neoforge/lang/ko_kr.json +++ b/src/main/resources/assets/neoforge/lang/ko_kr.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "서버 접속에 필요한 데이터 맵들이 클라이언트에 없어 접속할 수 없습니다: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/ms_my.json b/src/main/resources/assets/neoforge/lang/ms_my.json index 3f44f98fd2..4cd941ba93 100644 --- a/src/main/resources/assets/neoforge/lang/ms_my.json +++ b/src/main/resources/assets/neoforge/lang/ms_my.json @@ -30,8 +30,8 @@ "fml.menu.multiplayer.vanilla": "Vanilla server", "fml.menu.multiplayer.vanilla.incompatible": "Incompatible Vanilla server", "fml.menu.multiplayer.unknown": "Unknown server %1$s", - "fml.menu.multiplayer.serveroutdated": "NeoForge server network version is outdated", - "fml.menu.multiplayer.clientoutdated": "NeoForge client network version is outdated", + "fml.menu.multiplayer.serveroutdated": "Versi rangkaian pelayan NeoForge lapuk", + "fml.menu.multiplayer.clientoutdated": "Versi rangkaian klien NeoForge lapuk", "fml.menu.multiplayer.extraservermods": "Server has additional mods that may be needed on the client", "fml.menu.multiplayer.modsincompatible": "Server mod list is not compatible", "fml.menu.multiplayer.networkincompatible": "Server network message list is not compatible", @@ -76,10 +76,10 @@ "commands.neoforge.setdim.invalid.dim": "The dimension ID specified (%1$s) is not valid.", "commands.neoforge.setdim.invalid.nochange": "The entity selected (%1$s) is already in the dimension specified (%2$s).", "commands.neoforge.setdim.deprecated": "This command is deprecated for removal in 1.17, use %s instead.", - "commands.neoforge.tps.overall": "Overall: %s TPS (%s ms/tick)", - "commands.neoforge.tps.tooltip": "Mean TPS; higher is better. Target TPS: %s", - "commands.neoforge.tps.dimension": "%s: %s TPS (%s ms/tick)", - "commands.neoforge.tps.dimension.tooltip": "%s (Dimension Type: %s)", + "commands.neoforge.tps.overall": "Keseluruhan: %s TPS (%s ms/detik)", + "commands.neoforge.tps.tooltip": "Min TPS; lebih tinggi adalah lebih baik. Sasaran TPS: %s", + "commands.neoforge.tps.dimension": "%s: %s TPS (%s ms/detik)", + "commands.neoforge.tps.dimension.tooltip": "%s (Jenis Dimensi: %s)", "commands.neoforge.mods.list": "Mod List: %1$s", "commands.neoforge.tracking.entity.enabled": "Entity tracking enabled for %d seconds.", "commands.neoforge.tracking.entity.reset": "Entity timings data has been cleared!", @@ -156,8 +156,8 @@ "neoforge.configuration.uitext.listelementup": "⏶", "neoforge.configuration.uitext.listelementdown": "⏷", "neoforge.configuration.uitext.listelementremove": "❌", - "neoforge.configuration.uitext.rangetooltip": "Range: %s", - "neoforge.configuration.uitext.filenametooltip": "File: \"%s\"", + "neoforge.configuration.uitext.rangetooltip": "Julat: %s", + "neoforge.configuration.uitext.filenametooltip": "Fail: \"%s\"", "neoforge.configuration.uitext.common": "Pilihan Biasa", "neoforge.configuration.uitext.client": "Pilihan Klien", "neoforge.configuration.uitext.server": "Pilihan Pelayan", @@ -176,7 +176,7 @@ "neoforge.configuration.section.neoforge.server.toml": "Tetapan pelayan", "neoforge.configuration.section.neoforge.server.toml.title": "Tetapan pelayan", "neoforge.configgui.advertiseDedicatedServerToLan": "Iklankan Pelayan Khusus Kepada LAN", - "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "Set this to true to enable advertising the dedicated server to local LAN clients so that it shows up in the Multiplayer screen automatically.", + "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "Tetapkan ini kepada true untuk membolehkan pengiklanan pelayan khusus kepada klien LAN tempatan supaya ia muncul dalam skrin Multipemain secara automatik.", "neoforge.configgui.forgeLightPipelineEnabled": "Talian Paip Cahaya NeoForge", "neoforge.configgui.forgeLightPipelineEnabled.tooltip": "Enable the NeoForge block rendering pipeline - fixes the lighting of custom models.", "neoforge.configgui.fullBoundingBoxLadders": "Full Bounding Box Ladders", @@ -190,11 +190,11 @@ "neoforge.configgui.permissionHandler": "Pengendali Keizinan", "neoforge.configgui.permissionHandler.tooltip": "Pengendali keizinan yang digunakan oleh pelayan. Dilalaikan kepada neoforge:default_handler jika tiada pengendali dengan nama itu didaftarkan.", "neoforge.configgui.removeErroringBlockEntities": "Remove Erroring Block Entities", - "neoforge.configgui.removeErroringBlockEntities.tooltip": "Set this to true to remove any BlockEntity that throws an error in its update method instead of closing the server and reporting a crash log.", - "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "AMARAN INI BOLEH MEROSAKKAN SEGALANYA.\nGUNAKAN SECARA CERMAT.\nKAMI TIDAK BERTANGGUNGJAWAB ATAS KEROSAKAN.", + "neoforge.configgui.removeErroringBlockEntities.tooltip": "Tetapkan ini kepada true untuk mengalih keluar mana-mana Entiti Blok yang menimbulkan ralat dalam kaedah update nya dan bukannya menutup pelayan dan melaporkan log ranap permainan.", + "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "INI BOLEH MEROSAKKAN SEGALANYA.\nGUNAKAN SECARA BERHEMAT.\nKAMI TIDAK BERTANGGUNGJAWAB ATAS SEBARANG KEROSAKAN.", "neoforge.configgui.removeErroringEntities": "Remove Erroring Entities", - "neoforge.configgui.removeErroringEntities.tooltip": "Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log.", - "neoforge.configgui.removeErroringEntities.tooltip.warning": "AMARAN INI BOLEH MEROSAKKAN SEGALANYA.\nGUNAKAN SECARA CERMAT.\nKAMI TIDAK BERTANGGUNGJAWAB ATAS KEROSAKAN.", + "neoforge.configgui.removeErroringEntities.tooltip": "Tetapkan ini kepada true untuk mengalih keluar mana-mana Entiti yang menimbulkan ralat dalam kaedah update nya dan bukannya menutup pelayan dan melaporkan log ranap permainan.", + "neoforge.configgui.removeErroringEntities.tooltip.warning": "INI BOLEH MEROSAKKAN SEGALANYA.\nGUNAKAN SECARA BERHEMAT.\nKAMI TIDAK BERTANGGUNGJAWAB ATAS SEBARANG KEROSAKAN.", "neoforge.configgui.showLoadWarnings": "Show Load Warnings", "neoforge.configgui.showLoadWarnings.tooltip": "When enabled, NeoForge will show any warnings that occurred during loading.", "neoforge.configgui.useCombinedDepthStencilAttachment": "Gunakan gabungan Lampiran DEPTH_STENCIL", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "Klien ini tidak menyokong pelayan vanila kerana ia mempunyai enum lanjutan yang digunakan dalam rangkaian terikat pelayan", "neoforge.network.extensible_enums.enum_set_mismatch": "Set enum yang boleh diperluaskan pada klien dan pelayan tidak sepadan. Pastikan anda menggunakan versi NeoForge yang sama seperti pelayan", - "neoforge.network.extensible_enums.enum_entry_mismatch": "Set nilai yang ditambahkan pada enum yang boleh diperluaskan pada klien dan pelayan tidak sepadan. Pastikan anda menggunakan mod dan versi NeoForge yang sama seperti pelayan. Lihat log untuk butiran lanjut" + "neoforge.network.extensible_enums.enum_entry_mismatch": "Set nilai yang ditambahkan pada enum yang boleh diperluaskan pada klien dan pelayan tidak sepadan. Pastikan anda menggunakan mod dan versi NeoForge yang sama seperti pelayan. Lihat log untuk butiran lanjut", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/nl_nl.json b/src/main/resources/assets/neoforge/lang/nl_nl.json index f637964644..fbbb6ff0c2 100644 --- a/src/main/resources/assets/neoforge/lang/nl_nl.json +++ b/src/main/resources/assets/neoforge/lang/nl_nl.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Kan geen verbinding maken met de server omdat het verplichte registry data maps bevat die niet aanwezig zijn op de client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/pl_pl.json b/src/main/resources/assets/neoforge/lang/pl_pl.json index 1e3be0e5c6..79b0616df1 100644 --- a/src/main/resources/assets/neoforge/lang/pl_pl.json +++ b/src/main/resources/assets/neoforge/lang/pl_pl.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Nie można połączyć się z serwerem, ponieważ brakuje obowiązkowych map danych rejestru znajdujących się w kliencie: %s", "neoforge.network.extensible_enums.no_vanilla_server": "Ten klient nie obsługuje serwerów vanilla ponieważ posiada rozszerzone enums używane w sieciach związanych z serwerem", "neoforge.network.extensible_enums.enum_set_mismatch": "Zestaw rozszerzalnych enumerów na kliencie i serwerze nie pasuje. Upewnij się, że używasz tej samej wersji NeoForge co serwer", - "neoforge.network.extensible_enums.enum_entry_mismatch": "Zestaw wartości dodanych do rozszerzalnych enumów w kliencie i serwerze nie pasuje. Upewnij się, że używasz tych samych wersji modyfikacji i NeoForge co serwer. Więcej informacji znajdziesz w logu" + "neoforge.network.extensible_enums.enum_entry_mismatch": "Zestaw wartości dodanych do rozszerzalnych enumów w kliencie i serwerze nie pasuje. Upewnij się, że używasz tych samych wersji modyfikacji i NeoForge co serwer. Więcej informacji znajdziesz w logu", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/pt_br.json b/src/main/resources/assets/neoforge/lang/pt_br.json index e931213fac..e7f9fc47a4 100644 --- a/src/main/resources/assets/neoforge/lang/pt_br.json +++ b/src/main/resources/assets/neoforge/lang/pt_br.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Impossível conectar com o servidor que tem registros de data maps não presentes no client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/pt_pt.json b/src/main/resources/assets/neoforge/lang/pt_pt.json index f43c9088b0..0507d99d2a 100644 --- a/src/main/resources/assets/neoforge/lang/pt_pt.json +++ b/src/main/resources/assets/neoforge/lang/pt_pt.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/ro_ro.json b/src/main/resources/assets/neoforge/lang/ro_ro.json index 97e50d1982..d6c7e822fc 100644 --- a/src/main/resources/assets/neoforge/lang/ro_ro.json +++ b/src/main/resources/assets/neoforge/lang/ro_ro.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/ru_ru.json b/src/main/resources/assets/neoforge/lang/ru_ru.json index 0b54ff2c22..30467a05b0 100644 --- a/src/main/resources/assets/neoforge/lang/ru_ru.json +++ b/src/main/resources/assets/neoforge/lang/ru_ru.json @@ -36,7 +36,7 @@ "fml.menu.multiplayer.modsincompatible": "Список модов сервера несовместим", "fml.menu.multiplayer.networkincompatible": "Список сетевых сообщений сервера несовместим", "fml.menu.multiplayer.missingdatapackregistries": "Missing required datapack registries: %1$s", - "fml.menu.branding": "%s (%s mods)", + "fml.menu.branding": "%s (%s модов)", "fml.menu.notification.title": "Уведомление при запуске игры", "fml.menu.accessdenied.title": "Отказано в доступе к серверу", "fml.menu.accessdenied.message": "Fancy Mod Loader could not connect to this server\nThe server %1$s has forbidden modded access", @@ -79,7 +79,7 @@ "commands.neoforge.tps.overall": "Overall: %s TPS (%s ms/tick)", "commands.neoforge.tps.tooltip": "Mean TPS; higher is better. Target TPS: %s", "commands.neoforge.tps.dimension": "%s: %s TPS (%s ms/tick)", - "commands.neoforge.tps.dimension.tooltip": "%s (Dimension Type: %s)", + "commands.neoforge.tps.dimension.tooltip": "%s (Тип измерения: %s)", "commands.neoforge.mods.list": "Список модов: %1$s", "commands.neoforge.tracking.entity.enabled": "Отслеживание сущностей включено на %d секунд.", "commands.neoforge.tracking.entity.reset": "Данные с таймингами сущностей очищены!", @@ -107,59 +107,59 @@ "commands.neoforge.chunkgen.started": "Generating %1$s chunks, in an area of %2$sx%3$s chunks (%4$sx%5$s blocks).", "commands.neoforge.chunkgen.success": "Генерация завершена!", "commands.neoforge.chunkgen.error": "Generation experienced %1$s errors! Check the log for more information.", - "commands.neoforge.chunkgen.stopped": "Generation stopped! %1$s out of %2$s chunks generated. (%3$s%%)", - "commands.neoforge.chunkgen.status": "Generation status! %1$s out of %2$s chunks generated. (%3$s%%)", + "commands.neoforge.chunkgen.stopped": "Генерация остановлена! Сгенерировано %1$s из %2$s чанков. (%3$s%%)", + "commands.neoforge.chunkgen.status": "Состояние генерации! Сгенерировано %1$s из %2$s чанков. (%3$s%%)", "commands.neoforge.chunkgen.not_running": "Предварительная генерация не запущена. Выполните команду `/neoforge generate help`, чтобы увидеть команды для запуска генерации.", "commands.neoforge.chunkgen.help_line": "§2/neoforge generate start [шкалапрогресса] §r§f- создаёт квадрат, центрированный на указанной точке, с длиной сторон, равной chunkRadius * 2.\n§2/neoforge generate stop §r§f- останавливает текущую генерацию и отображает завершённый прогресс.\n§2/neoforge generate status §r- отображает прогресс текущей генерации.\n§2/neoforge generate help §r- отображает данное сообщение.\nСовет: Если вы запускаете команды из консоли сервера, вы можете выполнять генерацию в разных измерениях с помощью /execute in neoforge generate…", - "commands.neoforge.timespeed.query": "Time in %s flows at a rate of %sx (%s minutes per day).", - "commands.neoforge.timespeed.query.default": "Time in %s flows normally (20 minutes per day).", - "commands.neoforge.timespeed.set": "Set flow of time in %s to %sx (%s minutes per day).", - "commands.neoforge.timespeed.set.default": "Set flow of time in %s to default (20 minutes per day).", - "commands.neoforge.data_components.list.error.held_stack_empty": "You are not holding any item", - "commands.neoforge.data_components.list.title": "Data components on %s:", + "commands.neoforge.timespeed.query": "Время в %s проходит со скоростью %sx (%s минут в день).", + "commands.neoforge.timespeed.query.default": "Время в %s проходит нормально (20 минут в день).", + "commands.neoforge.timespeed.set": "Установить поток времени в %s на %sx (%s минут в день).", + "commands.neoforge.timespeed.set.default": "Установить поток времени в %s по умолчанию (20 минут в день).", + "commands.neoforge.data_components.list.error.held_stack_empty": "Вы не держите никакого предмета", + "commands.neoforge.data_components.list.title": "Компоненты данных на %s:", "commands.neoforge.data_components.list.entry": "\n - %s", "commands.neoforge.data_components.list.entry.key_value": "%s: %s", - "commands.neoforge.data_components.list.tooltip.default": "Component %s holds its default value", - "commands.neoforge.data_components.list.tooltip.deleted": "Component %s with value %s was deleted", - "commands.neoforge.data_components.list.tooltip.modified": "Component %s was modified from %s to %s", - "commands.neoforge.data_components.list.tooltip.added": "Component %s was added with value %s", + "commands.neoforge.data_components.list.tooltip.default": "Компонент %s имеет значение по умолчанию", + "commands.neoforge.data_components.list.tooltip.deleted": "Компонент %s со значением %s был удалён", + "commands.neoforge.data_components.list.tooltip.modified": "Компонент %s был изменен с %s на %s", + "commands.neoforge.data_components.list.tooltip.added": "Компонент %s был добавлен со значением %s", "commands.config.getwithtype": "Конфиг для %s типа %s обнаружен в %s", "commands.config.noconfig": "Конфиг для %s типа %s не найден", "neoforge.update.beta.1": "%sВНИМАНИЕ: %sNeoForge Бета", "neoforge.update.beta.2": "Возможны серьезные проблемы, проверьте их, прежде чем сообщать.", "neoforge.update.newversion": "Доступна новая версия NeoForge: %s", "neoforge.menu.updatescreen.title": "Обновление мода", - "neoforge.configuration.uitext.title": "%s Configuration", - "neoforge.configuration.uitext.type.client": "Client Settings", - "neoforge.configuration.uitext.type.server": "Server Settings", - "neoforge.configuration.uitext.type.common": "Common settings", - "neoforge.configuration.uitext.type.startup": "Startup settings", - "neoforge.configuration.uitext.title.client": "%s Client Configuration", - "neoforge.configuration.uitext.title.server": "%s Server Configuration", - "neoforge.configuration.uitext.title.common": "%s Common Configuration", - "neoforge.configuration.uitext.title.startup": "%s Startup Configuration", - "neoforge.configuration.uitext.notonline": "Settings in here are determined by the server and cannot be changed while online.", - "neoforge.configuration.uitext.notlan": "Settings in here cannot be edited while your game is open to LAN. Please return to the main menu and load the world again.", - "neoforge.configuration.uitext.notloaded": "Settings in here are only available while a world is loaded.", - "neoforge.configuration.uitext.unsupportedelement": "This value cannot be edited in the UI. Please contact the mod author about providing a custom UI for it.", - "neoforge.configuration.uitext.longstring": "This value is too long to be edited in the UI. Please edit it in the config file.", + "neoforge.configuration.uitext.title": "%s Конфигурация", + "neoforge.configuration.uitext.type.client": "Настройки клиента", + "neoforge.configuration.uitext.type.server": "Настройки сервера", + "neoforge.configuration.uitext.type.common": "Общие настройки", + "neoforge.configuration.uitext.type.startup": "Настройки запуска", + "neoforge.configuration.uitext.title.client": "%s Конфигурация клиента", + "neoforge.configuration.uitext.title.server": "%s Конфигурация сервера", + "neoforge.configuration.uitext.title.common": "%s Общая конфигурация", + "neoforge.configuration.uitext.title.startup": "%s Конфигурация запуска", + "neoforge.configuration.uitext.notonline": "Настройки здесь определяются сервером и не могут быть изменены в режиме онлайн.", + "neoforge.configuration.uitext.notlan": "Настройки в этом разделе нельзя редактировать, пока игра открыта для LAN. Пожалуйста, вернитесь в главное меню и загрузите мир заново.", + "neoforge.configuration.uitext.notloaded": "Настройки здесь доступны только во время загрузки мира.", + "neoforge.configuration.uitext.unsupportedelement": "Это значение нельзя редактировать в пользовательском интерфейсе. Пожалуйста, свяжитесь с автором мода для создания своего пользовательского интерфейса.", + "neoforge.configuration.uitext.longstring": "Это значение слишком длинное, чтобы его можно было редактировать в пользовательском интерфейсе. Пожалуйста, отредактируйте его в файле конфигурации.", "neoforge.configuration.uitext.section": "%s...", - "neoforge.configuration.uitext.sectiontext": "Edit", + "neoforge.configuration.uitext.sectiontext": "Редактировать", "neoforge.configuration.uitext.breadcrumb.order": "%1$s %2$s %3$s", "neoforge.configuration.uitext.breadcrumb.separator": ">", "neoforge.configuration.uitext.listelement": "%s:", - "neoforge.configuration.uitext.undo": "Undo", - "neoforge.configuration.uitext.undo.tooltip": "Reverts changes on this screen only.", - "neoforge.configuration.uitext.reset": "Reset", - "neoforge.configuration.uitext.reset.tooltip": "Reverts everything on this screen to its default value.", + "neoforge.configuration.uitext.undo": "Отменить", + "neoforge.configuration.uitext.undo.tooltip": "Возвращает изменения только на этом экране.", + "neoforge.configuration.uitext.reset": "Сброс", + "neoforge.configuration.uitext.reset.tooltip": "Возвращает всё на этом экране к значениям по умолчанию.", "neoforge.configuration.uitext.newlistelement": "+", "neoforge.configuration.uitext.listelementup": "⏶", "neoforge.configuration.uitext.listelementdown": "⏷", "neoforge.configuration.uitext.listelementremove": "❌", - "neoforge.configuration.uitext.rangetooltip": "Range: %s", - "neoforge.configuration.uitext.filenametooltip": "File: \"%s\"", - "neoforge.configuration.uitext.common": "Common Options", - "neoforge.configuration.uitext.client": "Client Options", + "neoforge.configuration.uitext.rangetooltip": "Диапазон: %s", + "neoforge.configuration.uitext.filenametooltip": "Файл: \"%s\"", + "neoforge.configuration.uitext.common": "Общие настройки", + "neoforge.configuration.uitext.client": "Настройки клиента", "neoforge.configuration.uitext.server": "Server Options", "neoforge.configuration.uitext.startup": "Startup Options", "neoforge.configuration.uitext.restart.game.title": "Minecraft needs to be restarted", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Не удается подключиться к серверу, так как присутствуют обязательные данные реестра, отсутствующие на клиенте: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/sk_sk.json b/src/main/resources/assets/neoforge/lang/sk_sk.json index 80b274aa55..a6972ea2d5 100644 --- a/src/main/resources/assets/neoforge/lang/sk_sk.json +++ b/src/main/resources/assets/neoforge/lang/sk_sk.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Nemožno pripojiť sa na server, nakoľko obsahuje povinné registratúrne dátové mapy neprítomné na klientovi: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/tr_tr.json b/src/main/resources/assets/neoforge/lang/tr_tr.json index 50e04e5287..cc0f520cc4 100644 --- a/src/main/resources/assets/neoforge/lang/tr_tr.json +++ b/src/main/resources/assets/neoforge/lang/tr_tr.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/tt_ru.json b/src/main/resources/assets/neoforge/lang/tt_ru.json index b2a216d165..d531fc0209 100644 --- a/src/main/resources/assets/neoforge/lang/tt_ru.json +++ b/src/main/resources/assets/neoforge/lang/tt_ru.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/uk_ua.json b/src/main/resources/assets/neoforge/lang/uk_ua.json index da431796eb..8c834f72ee 100644 --- a/src/main/resources/assets/neoforge/lang/uk_ua.json +++ b/src/main/resources/assets/neoforge/lang/uk_ua.json @@ -156,8 +156,8 @@ "neoforge.configuration.uitext.listelementup": "⏶", "neoforge.configuration.uitext.listelementdown": "⏷", "neoforge.configuration.uitext.listelementremove": "❌", - "neoforge.configuration.uitext.rangetooltip": "Range: %s", - "neoforge.configuration.uitext.filenametooltip": "File: \"%s\"", + "neoforge.configuration.uitext.rangetooltip": "Діапазон: %s", + "neoforge.configuration.uitext.filenametooltip": "Файл: \"%s\"", "neoforge.configuration.uitext.common": "Загальні параметри", "neoforge.configuration.uitext.client": "Клієнтські параметри", "neoforge.configuration.uitext.server": "Серверні параметри", @@ -190,10 +190,10 @@ "neoforge.configgui.permissionHandler": "Менеджер дозволів", "neoforge.configgui.permissionHandler.tooltip": "Менеджер дозволів, що використовує сервер. За замовчуванням neoforge:default_handler, коли такого обробника не зареєстровано з таким іменем.", "neoforge.configgui.removeErroringBlockEntities": "Видалити блок-сутності, які викликають помилки", - "neoforge.configgui.removeErroringBlockEntities.tooltip": "Set this to true to remove any BlockEntity that throws an error in its update method instead of closing the server and reporting a crash log.", + "neoforge.configgui.removeErroringBlockEntities.tooltip": "Встановіть значення \"true\", для видалення будь-якого блок-сутності, що спричиняє помилки в методі оновлення, замість закриття сервера та створення журналу про аварію.", "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "УВАГА: ЦЕ МОЖЕ ПОШКОДИТИ ВСЕ.\nВИКОРИСТОВУЙТЕ ОБЕРЕЖНО.\nМИ НЕ ВІДПОВІДАЛЬНІ ЗА ПОШКОДЖЕННЯ.", "neoforge.configgui.removeErroringEntities": "Видалити сутності, які викликають помилки", - "neoforge.configgui.removeErroringEntities.tooltip": "Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log.", + "neoforge.configgui.removeErroringEntities.tooltip": "Встановіть значення \"true\", для видалення будь-якого об'єкта, що спричиняє помилки в методі оновлення, замість закриття сервера та створення журналу про аварію.", "neoforge.configgui.removeErroringEntities.tooltip.warning": "УВАГА: ЦЕ МОЖЕ ПОШКОДИТИ ВСЕ.\nВИКОРИСТОВУЙТЕ ОБЕРЕЖНО.\nМИ НЕ ВІДПОВІДАЛЬНІ ЗА ПОШКОДЖЕННЯ.", "neoforge.configgui.showLoadWarnings": "Показувати попередження при завантаженні", "neoforge.configgui.showLoadWarnings.tooltip": "Коли увімкнено, NeoForge покаже всі попередження, що сталися під час завантаження.", @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Не вдається приєднатися до сервера, оскільки присутні обов'язкові мапи даних реєстру, що відсутні на клієнті: %s", "neoforge.network.extensible_enums.no_vanilla_server": "Цей клієнт не підтримує ванільні сервери, тому що він має розширені значення enum, що використовуються у роботі з серверами", "neoforge.network.extensible_enums.enum_set_mismatch": "Набір значень розширюваних enum, на клієнті й сервері не збігаються. Переконайтеся, що ви використовуєте однакові версії NeoForge", - "neoforge.network.extensible_enums.enum_entry_mismatch": "Набір значень, що додаються до розширюваних enum, на клієнті й сервері не збігаються. Переконайтеся, що ви використовуєте однакові версії моду і NeoForge. Дивіться журнал для додаткової інформації" + "neoforge.network.extensible_enums.enum_entry_mismatch": "Набір значень, що додаються до розширюваних enum, на клієнті й сервері не збігаються. Переконайтеся, що ви використовуєте однакові версії моду і NeoForge. Дивіться журнал для додаткової інформації", + "neoforge.attribute.debug.base": "[Істота: %s | Предмет: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Увімкнено", + "neoforge.value.boolean.disabled": "Вимкнено", + "neoforge.value.boolean.enable": "Вмикає", + "neoforge.value.boolean.disable": "Вимикає", + "neoforge.value.boolean.invalid": "Недійсне", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/vi_vn.json b/src/main/resources/assets/neoforge/lang/vi_vn.json index f43c9088b0..0507d99d2a 100644 --- a/src/main/resources/assets/neoforge/lang/vi_vn.json +++ b/src/main/resources/assets/neoforge/lang/vi_vn.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/zh_cn.json b/src/main/resources/assets/neoforge/lang/zh_cn.json index 0deca20fe6..d54ee5b872 100644 --- a/src/main/resources/assets/neoforge/lang/zh_cn.json +++ b/src/main/resources/assets/neoforge/lang/zh_cn.json @@ -243,5 +243,16 @@ "neoforge.network.data_maps.missing_their": "无法连接至服务器,因为客户端上不存在必要的注册表数据映射:%s", "neoforge.network.extensible_enums.no_vanilla_server": "该客户端不支持原版服务器,因为它在服务器端网络中使用了不同连接方式。", "neoforge.network.extensible_enums.enum_set_mismatch": "客户端和服务器上的模组不匹配。请确保您使用的 NeoForge 版本与服务器上的版本相同。", - "neoforge.network.extensible_enums.enum_entry_mismatch": "客户端和服务器上所需要的模组不匹配。请确保您使用的模组和 NeoForge 版本与服务器上的版本相同。请查看日志以获取更多详细信息。" + "neoforge.network.extensible_enums.enum_entry_mismatch": "客户端和服务器上所需要的模组不匹配。请确保您使用的模组和 NeoForge 版本与服务器上的版本相同。请查看日志以获取更多详细信息。", + "neoforge.attribute.debug.base": "[实体:%s | 物品:%s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "已启用", + "neoforge.value.boolean.disabled": "已禁用", + "neoforge.value.boolean.enable": "启用", + "neoforge.value.boolean.disable": "禁用", + "neoforge.value.boolean.invalid": "无效", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } diff --git a/src/main/resources/assets/neoforge/lang/zh_tw.json b/src/main/resources/assets/neoforge/lang/zh_tw.json index 2f1eab530d..ffd0271eb9 100644 --- a/src/main/resources/assets/neoforge/lang/zh_tw.json +++ b/src/main/resources/assets/neoforge/lang/zh_tw.json @@ -17,29 +17,29 @@ "fml.menu.mods.info.securejardisabled": "安全模組功能已被停用,請更新 JDK", "fml.menu.mods.info.signature": "簽章:%1$s", "fml.menu.mods.info.signature.unsigned": "未簽署", - "fml.menu.mods.info.trust": "信任:%1$s", + "fml.menu.mods.info.trust": "信任度:%1$s", "fml.menu.mods.info.trust.noauthority": "無", "fml.menu.mods.info.nochildmods": "未發現子模組", "fml.menu.mods.info.childmods": "子模組:%1$s", - "fml.menu.mods.info.updateavailable": "有更新可用:%1$s", - "fml.menu.mods.info.changelogheader": "變更紀錄:", - "fml.menu.multiplayer.compatible": "相容的 FML 模組伺服器\n已安裝 {0,choice,1#1 mod|1<%1$s mods} 個模組", - "fml.menu.multiplayer.incompatible": "不相容 FML 模組伺服器", - "fml.menu.multiplayer.incompatible.extra": "不相容 FML 模組伺服器\n%1$s", + "fml.menu.mods.info.updateavailable": "有可用的更新:%1$s", + "fml.menu.mods.info.changelogheader": "更新日誌:", + "fml.menu.multiplayer.compatible": "相容的 FML 模組伺服器\n已安裝 {0,choice,1#1 個模組|1<%1$s 個模組}", + "fml.menu.multiplayer.incompatible": "不相容 FML 模組的伺服器", + "fml.menu.multiplayer.incompatible.extra": "不相容 FML 模組的伺服器\n%1$s", "fml.menu.multiplayer.truncated": "由於協定大小限制,資料可能不準確。", "fml.menu.multiplayer.vanilla": "原版伺服器", "fml.menu.multiplayer.vanilla.incompatible": "不相容的原版伺服器", "fml.menu.multiplayer.unknown": "未知的伺服器 %1$s", - "fml.menu.multiplayer.serveroutdated": "NeoForge 伺服器端網路版本太舊", - "fml.menu.multiplayer.clientoutdated": "NeoForge 用戶端網路版本太舊", - "fml.menu.multiplayer.extraservermods": "伺服器有用戶端可能需要的額外模組", + "fml.menu.multiplayer.serveroutdated": "NeoForge 伺服器端網路版本太舊了", + "fml.menu.multiplayer.clientoutdated": "NeoForge 用戶端網路版本太舊了", + "fml.menu.multiplayer.extraservermods": "伺服器上有用戶端可能需要的其他模組", "fml.menu.multiplayer.modsincompatible": "伺服器模組清單不相容", "fml.menu.multiplayer.networkincompatible": "伺服器網路訊息清單不相容", - "fml.menu.multiplayer.missingdatapackregistries": "缺少所需資料包登錄:%1$s", + "fml.menu.multiplayer.missingdatapackregistries": "缺少必要的資料包登錄:%1$s", "fml.menu.branding": "%s(%s 個模組)", "fml.menu.notification.title": "啟動提醒", "fml.menu.accessdenied.title": "伺服器存取被拒", - "fml.menu.accessdenied.message": "Fancy Mod Loader 無法連線到此伺服器\n伺服器 %1$s 禁止模組存取", + "fml.menu.accessdenied.message": "Fancy Mod Loader 無法連線到這個伺服器\n伺服器 %1$s 禁止模組存取", "fml.menu.backupfailed.title": "備份失敗", "fml.menu.backupfailed.message": "儲存存檔 %1$s 時發生錯誤\n請修正這個問題,然後再試一次", "fml.button.open.file": "開啟 %1$s", @@ -52,21 +52,21 @@ "fml.modmismatchscreen.mismatchedmods": "下列模組版本不符合,請安裝相同版本的這些模組以加入此伺服器:", "fml.modmismatchscreen.table.channelname": "頻道名稱", "fml.modmismatchscreen.table.youneed": "你需要", - "fml.modmismatchscreen.table.youhave": "你擁有", + "fml.modmismatchscreen.table.youhave": "你安裝了", "fml.modmismatchscreen.table.serverhas": "伺服器已安裝", "fml.modmismatchscreen.additional": "[還有 %1$s 個,查看 latest.log 取得完整清單]", - "fml.modmismatchscreen.homepage": "點擊以前往這個模組的主頁", + "fml.modmismatchscreen.homepage": "按這裡前往這個模組的首頁", "fml.modmismatchscreen.table.reason": "原因", - "fml.modmismatchscreen.table.visit.mod_page": "開啟登錄此頻道的模組(%s)頁面", + "fml.modmismatchscreen.table.visit.mod_page": "開啟登錄這個頻道的模組(%s)頁面", "fml.modmismatchscreen.simplifiedview": "簡化檢視", "fml.resources.modresources": "用於 %1$s 模組檔案的資源", "fml.resources.moddata": "%1$s 模組檔案資料", "loadwarning.neoforge.prbuild": "這個 NeoForge 由社群成員建立,是 §c§l不受支援§r 的", "commands.neoforge.arguments.enum.invalid": "枚舉常數必須是 %1$s 之一,找到 %2$s", "commands.neoforge.dimensions.list": "目前依照類型註冊的維度:", - "commands.neoforge.dump.success": "新建立的 %s 註冊檔案位於 %s", - "commands.neoforge.dump.failure": "無法建立 %s 註冊檔案於 %s", - "commands.neoforge.dump.error.unknown_registry": "未知註冊表 '%s'", + "commands.neoforge.dump.success": "新建立的 %s 登錄檔位於 %s", + "commands.neoforge.dump.failure": "無法建立 %s 登錄檔於 %s", + "commands.neoforge.dump.error.unknown_registry": "未知登錄檔 '%s'", "commands.neoforge.entity.list.invalid": "無效的篩選器,與任何實體不相符。請使用 /neoforge entity list 以提供正確清單", "commands.neoforge.entity.list.invalidworld": "無法載入維度 %1$s 的世界。請選擇一個有效的維度。", "commands.neoforge.entity.list.none": "找不到實體。", @@ -81,52 +81,52 @@ "commands.neoforge.tps.dimension": "%s:%s TPS(%s 毫秒/刻)", "commands.neoforge.tps.dimension.tooltip": "%s(維度類型:%s)", "commands.neoforge.mods.list": "模組清單:%1$s", - "commands.neoforge.tracking.entity.enabled": "實體追踪已啟用,時長 %d 秒。", - "commands.neoforge.tracking.entity.reset": "實體計時資料已被清除!", + "commands.neoforge.tracking.entity.enabled": "已啟用實體追蹤 %d 秒。", + "commands.neoforge.tracking.entity.reset": "實體計時資料已清除!", "commands.neoforge.tracking.invalid": "無效的追蹤資料", "commands.neoforge.tracking.be.enabled": "方塊實體追蹤已啟用,時長 %d 秒。", "commands.neoforge.tracking.be.reset": "方塊實體計時資料已被清除!", - "commands.neoforge.tracking.timing_entry": "%1$s - %2$s [%3$s, %4$s, %5$s]: %6$s", + "commands.neoforge.tracking.timing_entry": "%1$s - %2$s [%3$s, %4$s, %5$s]:%6$s", "commands.neoforge.tracking.no_data": "尚未紀錄資料。", - "commands.neoforge.tags.error.unknown_registry": "未知註冊表 '%s'", + "commands.neoforge.tags.error.unknown_registry": "未知登錄 '%s'", "commands.neoforge.tags.error.unknown_tag": "未知標籤 '%s' 在登錄 '%s' 中", - "commands.neoforge.tags.error.unknown_element": "未知元素 '%s' 在註冊表 '%s' 中", + "commands.neoforge.tags.error.unknown_element": "未知元素 '%s' 在登錄 '%s' 中", "commands.neoforge.tags.registry_key": "%s", "commands.neoforge.tags.tag_count": "標籤:%s", - "commands.neoforge.tags.copy_tag_names": "點擊將所有標籤名稱複製到剪貼簿", + "commands.neoforge.tags.copy_tag_names": "按這裡將所有標籤名稱複製到剪貼簿", "commands.neoforge.tags.element_count": "元素:%s", - "commands.neoforge.tags.copy_element_names": "點擊以將所有元素名稱複製到剪貼簿", + "commands.neoforge.tags.copy_element_names": "按這裡將所有元素名稱複製到剪貼簿", "commands.neoforge.tags.tag_key": "%s / %s", "commands.neoforge.tags.containing_tag_count": "包含標籤:%s", "commands.neoforge.tags.element": "%s:%s", - "commands.neoforge.tags.page_info": "%s ", + "commands.neoforge.tags.page_info": "%s <第 %s / %s 頁>", "commands.neoforge.chunkgen.progress_bar_title": "正在生成區塊...", - "commands.neoforge.chunkgen.progress_bar_progress": "正在生成 %1$s 個區塊 ", + "commands.neoforge.chunkgen.progress_bar_progress": "正在生成 %1$s 個區塊 - ", "commands.neoforge.chunkgen.progress_bar_errors": "(%1$s 個錯誤!)", - "commands.neoforge.chunkgen.already_running": "生成已在進行。請先執行 '/neoforge generate stop' 再開始新生成。", - "commands.neoforge.chunkgen.started": "Generating %1$s chunks, in an area of %2$sx%3$s chunks (%4$sx%5$s blocks).", - "commands.neoforge.chunkgen.success": "生成完畢!", - "commands.neoforge.chunkgen.error": "Generation experienced %1$s errors! Check the log for more information.", - "commands.neoforge.chunkgen.stopped": "Generation stopped! %1$s out of %2$s chunks generated. (%3$s%%)", - "commands.neoforge.chunkgen.status": "Generation status! %1$s out of %2$s chunks generated. (%3$s%%)", + "commands.neoforge.chunkgen.already_running": "生成程序已在執行中。請先執行 '/neoforge generate stop' 指令,然後再開始新的生成程序。", + "commands.neoforge.chunkgen.started": "正在生成 %1$s 個區塊,區域大小為 %2$s × %3$s 個區塊(%4$s × %5$s 個方塊)。", + "commands.neoforge.chunkgen.success": "生成完成!", + "commands.neoforge.chunkgen.error": "生成過程中發生了 %1$s 個錯誤!查看記錄檔以取得詳細資訊。", + "commands.neoforge.chunkgen.stopped": "生成已停止!已生成 %1$s/%2$s 個區塊。(%3$s%%)", + "commands.neoforge.chunkgen.status": "生成狀態!已生成 %1$s/%2$s 個區塊。(%3$s%%)", "commands.neoforge.chunkgen.not_running": "沒有正在進行的預生成。執行 `/neoforge generate help` 以查看開始生成的指令。", "commands.neoforge.chunkgen.help_line": "§2/neoforge generate start [progressBar] §r§f- 生成一個以指定座標為中心、邊長為 chunkRadius * 2 的正方形。\n§2/neoforge generate stop §r§f- 停止目前生成,並顯示已完成的進度。\n§2/neoforge generate status §r- 顯示目前生成的完成進度。\n§2/neoforge generate help §r- 顯示這則訊息\n一般提示: 如果從伺服器控制台執行,可以使用 /execute in neoforge generate... 在不同維度進行生成。", - "commands.neoforge.timespeed.query": "Time in %s flows at a rate of %sx (%s minutes per day).", - "commands.neoforge.timespeed.query.default": "Time in %s flows normally (20 minutes per day).", - "commands.neoforge.timespeed.set": "Set flow of time in %s to %sx (%s minutes per day).", - "commands.neoforge.timespeed.set.default": "Set flow of time in %s to default (20 minutes per day).", - "commands.neoforge.data_components.list.error.held_stack_empty": "You are not holding any item", - "commands.neoforge.data_components.list.title": "Data components on %s:", - "commands.neoforge.data_components.list.entry": "\n - %s", + "commands.neoforge.timespeed.query": "%s 的時間流逝速度為 %s×(每天 %s 分鐘)。", + "commands.neoforge.timespeed.query.default": "%s 的時間流逝速度為預設值(每天 20 分鐘)。", + "commands.neoforge.timespeed.set": "已將 %s 的時間流逝速度設定為 %s×(每天 %s 分鐘)。", + "commands.neoforge.timespeed.set.default": "已將 %s 的時間流逝速度設為預設值(每天 20 分鐘)。", + "commands.neoforge.data_components.list.error.held_stack_empty": "你手上沒有任何物品", + "commands.neoforge.data_components.list.title": "%s 的資料元件:", + "commands.neoforge.data_components.list.entry": "\n- %s", "commands.neoforge.data_components.list.entry.key_value": "%s: %s", - "commands.neoforge.data_components.list.tooltip.default": "Component %s holds its default value", - "commands.neoforge.data_components.list.tooltip.deleted": "Component %s with value %s was deleted", - "commands.neoforge.data_components.list.tooltip.modified": "Component %s was modified from %s to %s", - "commands.neoforge.data_components.list.tooltip.added": "Component %s was added with value %s", + "commands.neoforge.data_components.list.tooltip.default": "元件 %s 的值為預設值", + "commands.neoforge.data_components.list.tooltip.deleted": "元件 %s 已移除(原值:%s)", + "commands.neoforge.data_components.list.tooltip.modified": "元件 %s 的值已從 %s 修改為 %s", + "commands.neoforge.data_components.list.tooltip.added": "元件 %s 已新增,其值為 %s", "commands.config.getwithtype": "%s 類型 %s 的配置在 %s 發現", "commands.config.noconfig": "%s 類型 %s 的配置未發現", - "neoforge.update.beta.1": "%s警告:%s NeoForge 為測試版", - "neoforge.update.beta.2": "可能會出現重大問題,請在回報問題之前進行核實。", + "neoforge.update.beta.1": "%s警告:%s NeoForge 測試版", + "neoforge.update.beta.2": "可能會出現重大問題,請在回報前先確認問題。", "neoforge.update.newversion": "最新 NeoForge 版本可用:%s", "neoforge.menu.updatescreen.title": "模組更新", "neoforge.configuration.uitext.title": "%s 設定", @@ -138,20 +138,20 @@ "neoforge.configuration.uitext.title.server": "%s 伺服器端設定", "neoforge.configuration.uitext.title.common": "%s 一般設定", "neoforge.configuration.uitext.title.startup": "%s 啟動設定", - "neoforge.configuration.uitext.notonline": "Settings in here are determined by the server and cannot be changed while online.", - "neoforge.configuration.uitext.notlan": "Settings in here cannot be edited while your game is open to LAN. Please return to the main menu and load the world again.", - "neoforge.configuration.uitext.notloaded": "Settings in here are only available while a world is loaded.", - "neoforge.configuration.uitext.unsupportedelement": "This value cannot be edited in the UI. Please contact the mod author about providing a custom UI for it.", - "neoforge.configuration.uitext.longstring": "This value is too long to be edited in the UI. Please edit it in the config file.", + "neoforge.configuration.uitext.notonline": "這裡的設定由伺服器決定,且伺服器執行中無法變更。", + "neoforge.configuration.uitext.notlan": "當您的遊戲已對區域網路開放時,無法編輯這裡的設定。請返回主選單並重新載入世界。", + "neoforge.configuration.uitext.notloaded": "這裏的設置只有在加載世界時纔可用。", + "neoforge.configuration.uitext.unsupportedelement": "該數值無法在介面中編輯。請聯絡模組作者以提供客製化的介面。", + "neoforge.configuration.uitext.longstring": "該數值過長,無法在介面中編輯。請在設定檔中編輯它。", "neoforge.configuration.uitext.section": "%s...", "neoforge.configuration.uitext.sectiontext": "編輯", "neoforge.configuration.uitext.breadcrumb.order": "%1$s %2$s %3$s", "neoforge.configuration.uitext.breadcrumb.separator": ">", "neoforge.configuration.uitext.listelement": "%s:", "neoforge.configuration.uitext.undo": "取消復原", - "neoforge.configuration.uitext.undo.tooltip": "Reverts changes on this screen only.", + "neoforge.configuration.uitext.undo.tooltip": "僅復原這個畫面上的變更。", "neoforge.configuration.uitext.reset": "重設", - "neoforge.configuration.uitext.reset.tooltip": "Reverts everything on this screen to its default value.", + "neoforge.configuration.uitext.reset.tooltip": "將這個畫面上的所有項目還原為預設值。", "neoforge.configuration.uitext.newlistelement": "+", "neoforge.configuration.uitext.listelementup": "⏶", "neoforge.configuration.uitext.listelementdown": "⏷", @@ -163,9 +163,9 @@ "neoforge.configuration.uitext.server": "伺服器端選項", "neoforge.configuration.uitext.startup": "啟動選項", "neoforge.configuration.uitext.restart.game.title": "Minecraft 需要重新啟動", - "neoforge.configuration.uitext.restart.game.text": "One or more of the configuration option that were changed will only take effect when the game is started.", + "neoforge.configuration.uitext.restart.game.text": "一或多個已變更的設定選項僅在遊戲啟動時才會生效。", "neoforge.configuration.uitext.restart.server.title": "世界需要重新載入", - "neoforge.configuration.uitext.restart.server.text": "One or more of the configuration option that were changed will only take effect when the world is reloaded.", + "neoforge.configuration.uitext.restart.server.text": "一或多個已變更的設定選項僅在世界重新載入後才會生效。", "neoforge.configuration.uitext.restart.return": "忽略", "neoforge.configuration.uitext.restart.return.tooltip": "你的變更將於重啟遊戲後生效!", "neoforge.configuration.title": "NeoForge 設定", @@ -175,40 +175,40 @@ "neoforge.configuration.section.neoforge.common.toml.title": "一般設定", "neoforge.configuration.section.neoforge.server.toml": "伺服器端設定", "neoforge.configuration.section.neoforge.server.toml.title": "伺服器端設定", - "neoforge.configgui.advertiseDedicatedServerToLan": "Advertise Dedicated Server To LAN", - "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "Set this to true to enable advertising the dedicated server to local LAN clients so that it shows up in the Multiplayer screen automatically.", - "neoforge.configgui.forgeLightPipelineEnabled": "NeoForge Light Pipeline", - "neoforge.configgui.forgeLightPipelineEnabled.tooltip": "啟用 NeoForge 方塊繪製管線 - 修復自訂模型的光照問題。", + "neoforge.configgui.advertiseDedicatedServerToLan": "將專用伺服器公開至區域網路", + "neoforge.configgui.advertiseDedicatedServerToLan.tooltip": "開啟該選項後,即可讓專用伺服器公開至區域網路,使其自動顯示在多人遊戲畫面中。", + "neoforge.configgui.forgeLightPipelineEnabled": "NeoForge 光照繪製管線", + "neoforge.configgui.forgeLightPipelineEnabled.tooltip": "啟用 NeoForge 方塊繪製管線 - 修正自訂模型的光照問題。", "neoforge.configgui.fullBoundingBoxLadders": "全邊界框梯子", - "neoforge.configgui.fullBoundingBoxLadders.tooltip": "將這項選項設為 true 可以檢查整個實體的碰撞邊界框以尋找梯子,而不僅僅是它們所在的方塊。這會導致遊戲機制有明顯的不同,因此預設值是遵循原版的遊戲行為。預設值:false。", + "neoforge.configgui.fullBoundingBoxLadders.tooltip": "開啟該選項後,可以檢查整個實體的碰撞邊界框以尋找梯子,而不僅僅是它們所在的方塊。這會導致遊戲機制有明顯的不同,因此預設值是遵循原版的遊戲行為。預設值:關閉。", "neoforge.configgui.logLegacyTagWarnings": "記錄舊版標籤", - "neoforge.configgui.logLegacyTagWarnings.tooltip": "A config option mainly for developers. Logs out modded tags that are using the 'forge' namespace when running on integrated server. Defaults to DEV_SHORT.", + "neoforge.configgui.logLegacyTagWarnings.tooltip": "主要供開發人員使用的設定選項。在整合伺服器上執行時,會記錄使用「forge」命名空間的模組標籤。預設值為 DEV_SHORT。", "neoforge.configgui.logUntranslatedConfigurationWarnings": "記錄未翻譯的設定鍵", - "neoforge.configgui.logUntranslatedConfigurationWarnings.tooltip": "A config option mainly for developers. Logs out configuration values that do not have translations when running a client in a development environment.", + "neoforge.configgui.logUntranslatedConfigurationWarnings.tooltip": "主要供開發人員使用的設定選項。在開發環境中執行用戶端時,會記錄沒有翻譯的設定值。", "neoforge.configgui.logUntranslatedItemTagWarnings": "記錄未翻譯的物品標籤", - "neoforge.configgui.logUntranslatedItemTagWarnings.tooltip": "A config option mainly for developers. Logs out modded item tags that do not have translations when running on integrated server. Format desired is tag.item.. for the translation key. Defaults to SILENCED.", - "neoforge.configgui.permissionHandler": "Permission Handler", - "neoforge.configgui.permissionHandler.tooltip": "The permission handler used by the server. Defaults to neoforge:default_handler if no such handler with that name is registered.", + "neoforge.configgui.logUntranslatedItemTagWarnings.tooltip": "主要供開發人員使用的設定選項。在整合伺服器上執行時,會記錄沒有翻譯的模組物品標籤。所需的翻譯鍵格式為 tag.item.<命名空間>.<路徑>。預設值為 SILENCED。", + "neoforge.configgui.permissionHandler": "權限處理器", + "neoforge.configgui.permissionHandler.tooltip": "伺服器使用的權限處理器。若無以此名稱登錄的處理器,則預設為 neoforge:default_handler。", "neoforge.configgui.removeErroringBlockEntities": "移除錯誤方塊實體", - "neoforge.configgui.removeErroringBlockEntities.tooltip": "Set this to true to remove any BlockEntity that throws an error in its update method instead of closing the server and reporting a crash log.", - "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "BE WARNED THIS COULD SCREW UP EVERYTHING.\nUSE SPARINGLY.\nWE ARE NOT RESPONSIBLE FOR DAMAGES.", + "neoforge.configgui.removeErroringBlockEntities.tooltip": "開啟該選項後,可在方塊實體的更新方法發生錯誤時將其移除,而不是關閉伺服器並回報崩潰報告。", + "neoforge.configgui.removeErroringBlockEntities.tooltip.warning": "警告!這項操作可能會導致嚴重錯誤。\n請謹慎使用。\n我們不對任何損失負責。", "neoforge.configgui.removeErroringEntities": "移除錯誤實體", - "neoforge.configgui.removeErroringEntities.tooltip": "Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log.", - "neoforge.configgui.removeErroringEntities.tooltip.warning": "BE WARNED THIS COULD SCREW UP EVERYTHING.\nUSE SPARINGLY.\nWE ARE NOT RESPONSIBLE FOR DAMAGES.", - "neoforge.configgui.showLoadWarnings": "顯示加載警告", + "neoforge.configgui.removeErroringEntities.tooltip": "開啟該選項後,可在實體的更新方法發生錯誤時將其移除,而不是關閉伺服器並回報崩潰報告。", + "neoforge.configgui.removeErroringEntities.tooltip.warning": "警告!這項操作可能會導致嚴重錯誤。\n請謹慎使用。\n我們不對任何損失負責。", + "neoforge.configgui.showLoadWarnings": "顯示載入警告", "neoforge.configgui.showLoadWarnings.tooltip": "若啟用,NeoForge 將顯示在載入過程中發生的任何警告。", - "neoforge.configgui.useCombinedDepthStencilAttachment": "Use combined DEPTH_STENCIL Attachment", - "neoforge.configgui.useCombinedDepthStencilAttachment.tooltip": "Set to true to use a combined DEPTH_STENCIL attachment instead of two separate ones.", + "neoforge.configgui.useCombinedDepthStencilAttachment": "使用合併的 DEPTH_STENCIL 附件", + "neoforge.configgui.useCombinedDepthStencilAttachment.tooltip": "開啟該選項後,即可使用合併的 DEPTH_STENCIL 附件,而不是兩個獨立的附件。", "neoforge.controlsgui.shift": "SHIFT + %s", "neoforge.controlsgui.control": "CTRL + %s", "neoforge.controlsgui.control.mac": "CMD + %s", "neoforge.controlsgui.alt": "ALT + %s", - "neoforge.container.enchant.limitedEnchantability": "有限可附魔性", + "neoforge.container.enchant.limitedEnchantability": "附魔能力受限", "neoforge.swim_speed": "游泳速度", "neoforge.name_tag_distance": "命名牌顯示距離", "neoforge.creative_flight": "創造模式飛行", - "fluid_type.minecraft.milk": "奶", - "fluid_type.minecraft.flowing_milk": "奶", + "fluid_type.minecraft.milk": "鮮奶", + "fluid_type.minecraft.flowing_milk": "鮮奶", "neoforge.froge.warningScreen.title": "NeoForge 快照提醒", "neoforge.froge.warningScreen.text": "Froge 不被官方支援。錯誤及不穩定性是預期的。", "neoforge.froge.supportWarning": "警告:NeoForge 不支持 Froge", @@ -217,8 +217,8 @@ "neoforge.selectWorld.backupWarning.experimental.additional": "此訊息將不會再為此世界顯示。", "neoforge.chatType.system": "%1$s", "pack.neoforge.description": "NeoForge 資料/資源包", - "pack.neoforge.source.child": "child", - "neoforge.network.negotiation.failure.mod": "Channel of mod \"%1$s\" failed to connect: %2$s", + "pack.neoforge.source.child": "子模組", + "neoforge.network.negotiation.failure.mod": "模組「%1$s」的頻道連線失敗:%2$s", "neoforge.network.negotiation.failure.missing.client.server": "伺服器端缺少這個頻道,但用戶端需要它!", "neoforge.network.negotiation.failure.missing.server.client": "用戶端缺少這個頻道,但伺服器需要它!", "neoforge.network.negotiation.failure.flow.client.missing": "用戶端希望在串流 %s 上傳輸承載,但伺服器端不支援!", @@ -241,7 +241,18 @@ "neoforge.network.data_maps.failed": "註冊表數據映射同步處理失敗 %s: %s", "neoforge.network.data_maps.missing_our": "無法連接服務器,因為缺少用戶端上存在的強制註冊表數據映射: %s", "neoforge.network.data_maps.missing_their": "無法連接服務器,因為服務器上有用戶端不存在的強制註冊表數據映射: %s", - "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", - "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", - "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details" + "neoforge.network.extensible_enums.no_vanilla_server": "這個客戶端不支持原版服務器,因爲它在服務器綁定網絡中使用了擴展的枚舉", + "neoforge.network.extensible_enums.enum_set_mismatch": "用戶端和伺服器上的可擴充列舉值集合不相符。請確保您使用的 NeoForge 版本與伺服器相同。", + "neoforge.network.extensible_enums.enum_entry_mismatch": "用戶端和伺服器上新增至可擴充列舉值的值集合不相符。請確保您使用的模組和 NeoForge 版本與伺服器相同。查看記錄檔以取得詳細資訊", + "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]", + "neoforge.value.flat": "%s", + "neoforge.value.percent": "%s%%", + "neoforge.value.boolean.enabled": "Enabled", + "neoforge.value.boolean.disabled": "Disabled", + "neoforge.value.boolean.enable": "Enables", + "neoforge.value.boolean.disable": "Disables", + "neoforge.value.boolean.invalid": "Invalid", + "neoforge.modifier.plus": "+%s %s", + "neoforge.modifier.take": "%s %s", + "neoforge.modifier.bool": "%s %s" } From 62eb61a8e0c726faa30eaa3f4998ba1101368ee4 Mon Sep 17 00:00:00 2001 From: dhyces <10985914+dhyces@users.noreply.github.com> Date: Wed, 30 Oct 2024 21:11:25 -0400 Subject: [PATCH 08/18] [1.21.3] Fix serialization of dynamic registry entries in data map datagen (#1648) --- .../net/neoforged/neoforge/common/data/DataMapProvider.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/neoforged/neoforge/common/data/DataMapProvider.java b/src/main/java/net/neoforged/neoforge/common/data/DataMapProvider.java index 4c32559074..a19f34bcc0 100644 --- a/src/main/java/net/neoforged/neoforge/common/data/DataMapProvider.java +++ b/src/main/java/net/neoforged/neoforge/common/data/DataMapProvider.java @@ -25,7 +25,6 @@ import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; import net.minecraft.data.PackOutput; -import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; @@ -63,7 +62,7 @@ public CompletableFuture run(CachedOutput cache) { return lookupProvider.thenCompose(provider -> { gather(provider); - final DynamicOps dynamicOps = RegistryOps.create(JsonOps.INSTANCE, provider); + final DynamicOps dynamicOps = provider.createSerializationContext(JsonOps.INSTANCE); return CompletableFuture.allOf(this.builders.entrySet().stream().map(entry -> { DataMapType type = entry.getKey(); From fcffb21b4e50fee04b718395dc05af18c4c4b4e2 Mon Sep 17 00:00:00 2001 From: dhyces <10985914+dhyces@users.noreply.github.com> Date: Fri, 1 Nov 2024 11:15:43 -0400 Subject: [PATCH 09/18] [1.21.3] Fix `ToolMaterial` and `ArmorMaterial` causing crashes when unique tags are used (#1651) --- .../net/neoforged/neoforge/registries/GameData.java | 6 +++++- .../net/neoforged/neoforge/debug/item/ItemTests.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/neoforged/neoforge/registries/GameData.java b/src/main/java/net/neoforged/neoforge/registries/GameData.java index 2c21b3c48e..fdf014e85c 100644 --- a/src/main/java/net/neoforged/neoforge/registries/GameData.java +++ b/src/main/java/net/neoforged/neoforge/registries/GameData.java @@ -65,7 +65,11 @@ public static void unfreezeData() { public static void freezeData() { LOGGER.debug(REGISTRIES, "Freezing registries"); - BuiltInRegistries.REGISTRY.stream().filter(r -> r instanceof MappedRegistry).forEach(r -> ((MappedRegistry) r).freeze()); + BuiltInRegistries.REGISTRY.stream().filter(r -> r instanceof MappedRegistry).forEach(r -> { + // HolderSet.Named may be used for registry objects, vanilla binds these tags so freeze won't throw for unbound tags + ((MappedRegistry) r).bindAllTagsToEmpty(); + ((MappedRegistry) r).freeze(); + }); RegistryManager.takeFrozenSnapshot(); diff --git a/tests/src/main/java/net/neoforged/neoforge/debug/item/ItemTests.java b/tests/src/main/java/net/neoforged/neoforge/debug/item/ItemTests.java index 9fee1d3356..25954a3f0d 100644 --- a/tests/src/main/java/net/neoforged/neoforge/debug/item/ItemTests.java +++ b/tests/src/main/java/net/neoforged/neoforge/debug/item/ItemTests.java @@ -17,6 +17,8 @@ import net.minecraft.network.chat.Style; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.ItemTags; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.EntityType; @@ -33,7 +35,9 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.MobBucketItem; +import net.minecraft.world.item.PickaxeItem; import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.equipment.ArmorMaterials; import net.minecraft.world.item.equipment.ArmorType; @@ -194,4 +198,10 @@ public boolean canWalkOnPowderedSnow(ItemStack stack, LivingEntity wearer) { .thenWaitUntil(() -> helper.assertEntityPresent(EntityType.PIG, 1, 1, 1)) .thenSucceed()); } + + @TestHolder(description = "Adds a stone-pickaxe-like item that cannot mine bamboo blocks and is repaired with beds. Tests that registries can correctly handle named holder set references.") + static void toolItem(final DynamicTest test, final RegistrationHelper reg) { + var material = new ToolMaterial(BlockTags.BAMBOO_BLOCKS, 160, 5.0F, 0.5F, 10, ItemTags.BEDS); + reg.items().registerItem("neo_pickaxe", properties -> new PickaxeItem(material, 1.0F, -2.8F, properties)); + } } From 2027bc70fd9c8d479df006ce891e6ffa48cf46b3 Mon Sep 17 00:00:00 2001 From: Brennan Ward Date: Fri, 1 Nov 2024 21:26:53 -0700 Subject: [PATCH 10/18] [1.21.x] Fix Eclipse generic inference failure in testframework (#1657) --- .../neoforged/testframework/registration/DeferredBlocks.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testframework/src/main/java/net/neoforged/testframework/registration/DeferredBlocks.java b/testframework/src/main/java/net/neoforged/testframework/registration/DeferredBlocks.java index 5e26549556..bd4f4b4b0d 100644 --- a/testframework/src/main/java/net/neoforged/testframework/registration/DeferredBlocks.java +++ b/testframework/src/main/java/net/neoforged/testframework/registration/DeferredBlocks.java @@ -51,7 +51,7 @@ public DeferredBlockBuilder registerBlock(String name, Func } public DeferredBlockBuilder registerBlockWithBEType(String name, BiFunction>, ? extends B> func, TriFunction, BlockPos, BlockState, E> beType, BlockBehaviour.Properties props) { - final var be = registrationHelper.registrar(Registries.BLOCK_ENTITY_TYPE).register(name, () -> new BlockEntityType<>( + final Supplier> be = registrationHelper.registrar(Registries.BLOCK_ENTITY_TYPE).register(name, () -> new BlockEntityType<>( (pos, state) -> beType.apply(BuiltInRegistries.BLOCK_ENTITY_TYPE.getValue(ResourceLocation.fromNamespaceAndPath(getNamespace(), name)), pos, state), BuiltInRegistries.BLOCK.getValue(ResourceLocation.fromNamespaceAndPath(getNamespace(), name)))); return registerBlock(name, properties -> func.apply(properties, be), props); From d8ee582a0e6c98827591bd2968cf8fccc09356eb Mon Sep 17 00:00:00 2001 From: Matyrobbrt <65940752+Matyrobbrt@users.noreply.github.com> Date: Sat, 2 Nov 2024 23:19:21 +0200 Subject: [PATCH 11/18] Bump FML to v5 (#1656) --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index b2c2ca42a7..ee9ba5e243 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,7 +15,7 @@ neoform_version=20241023.131943 neoforge_snapshot_next_stable=21.4 mergetool_version=2.0.0 -accesstransformers_version=10.0.1 +accesstransformers_version=11.0.1 coremods_version=6.0.4 eventbus_version=8.0.2 modlauncher_version=11.0.4 @@ -30,7 +30,7 @@ jetbrains_annotations_version=24.0.1 slf4j_api_version=2.0.7 apache_maven_artifact_version=3.8.5 jarjar_version=0.4.1 -fancy_mod_loader_version=4.0.31 +fancy_mod_loader_version=5.0.1 mojang_logging_version=1.1.1 log4j_version=2.22.1 guava_version=31.1.2-jre From aa45d107212f695c2ba5af419587327ebecb6497 Mon Sep 17 00:00:00 2001 From: ChampionAsh5357 Date: Sat, 2 Nov 2024 17:42:30 -0400 Subject: [PATCH 12/18] Remove unnecessary fluid patch preventing lava movement (#1661) --- .../net/minecraft/world/entity/LivingEntity.java.patch | 9 --------- 1 file changed, 9 deletions(-) diff --git a/patches/net/minecraft/world/entity/LivingEntity.java.patch b/patches/net/minecraft/world/entity/LivingEntity.java.patch index ebb7a0cbf9..d20fca6ed0 100644 --- a/patches/net/minecraft/world/entity/LivingEntity.java.patch +++ b/patches/net/minecraft/world/entity/LivingEntity.java.patch @@ -512,15 +512,6 @@ } protected float getWaterSlowDown() { -@@ -2184,7 +_,7 @@ - public void travel(Vec3 p_21280_) { - if (this.isControlledByLocalInstance()) { - FluidState fluidstate = this.level().getFluidState(this.blockPosition()); -- if ((this.isInWater() || this.isInLava()) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) { -+ if ((this.isInWater() || (this.isInFluidType(fluidstate) && fluidstate.getFluidType() != net.neoforged.neoforge.common.NeoForgeMod.LAVA_TYPE.value())) && this.isAffectedByFluids() && !this.canStandOnFluid(fluidstate)) { - this.travelInFluid(p_21280_); - } else if (this.isFallFlying()) { - this.travelFallFlying(); @@ -2196,7 +_,7 @@ private void travelInAir(Vec3 p_362457_) { From 521fcedd531ea2b309e899606380aad044f4f592 Mon Sep 17 00:00:00 2001 From: TelepathicGrunt <40846040+TelepathicGrunt@users.noreply.github.com> Date: Mon, 4 Nov 2024 02:10:31 -0500 Subject: [PATCH 13/18] Show a range's default value in config file (#1652) --- src/main/java/net/neoforged/neoforge/common/ModConfigSpec.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/neoforged/neoforge/common/ModConfigSpec.java b/src/main/java/net/neoforged/neoforge/common/ModConfigSpec.java index 870ce31e09..0bd991443d 100644 --- a/src/main/java/net/neoforged/neoforge/common/ModConfigSpec.java +++ b/src/main/java/net/neoforged/neoforge/common/ModConfigSpec.java @@ -363,7 +363,8 @@ public > ConfigValue defineInRange(String pat public > ConfigValue defineInRange(List path, Supplier defaultSupplier, V min, V max, Class clazz) { Range range = new Range<>(clazz, min, max); context.setRange(range); - comment("Range: " + range.toString()); + comment(" Default: " + defaultSupplier.get()); + comment(" Range: " + range); return define(path, defaultSupplier, range); } From 1be311018cd99c5e3d775e8fd00738ffc7199fb7 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Thu, 7 Nov 2024 21:57:00 -0700 Subject: [PATCH 14/18] Add back getAffectedBlocks to explosion events (#1647) --- .../world/level/ServerExplosion.java.patch | 26 +++++++++++++++++-- .../neoforged/neoforge/event/EventHooks.java | 8 +++--- .../neoforge/event/level/ExplosionEvent.java | 12 +++++---- .../event/level/ExplosionKnockbackEvent.java | 13 ++++++---- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/patches/net/minecraft/world/level/ServerExplosion.java.patch b/patches/net/minecraft/world/level/ServerExplosion.java.patch index de66d59d95..871697a696 100644 --- a/patches/net/minecraft/world/level/ServerExplosion.java.patch +++ b/patches/net/minecraft/world/level/ServerExplosion.java.patch @@ -1,12 +1,25 @@ --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java +@@ -165,7 +_,12 @@ + return new ObjectArrayList<>(set); + } + ++ @Deprecated + private void hurtEntities() { ++ this.hurtEntities(List.of()); ++ } ++ ++ private void hurtEntities(List blocks) { + float f = this.radius * 2.0F; + int i = Mth.floor(this.center.x - (double)f - 1.0); + int j = Mth.floor(this.center.x + (double)f + 1.0); @@ -174,7 +_,9 @@ int i1 = Mth.floor(this.center.z - (double)f - 1.0); int j1 = Mth.floor(this.center.z + (double)f + 1.0); - for (Entity entity : this.level.getEntities(this.source, new AABB((double)i, (double)k, (double)i1, (double)j, (double)l, (double)j1))) { + List list = this.level.getEntities(this.source, new AABB((double)i, (double)k, (double)i1, (double)j, (double)l, (double)j1)); -+ net.neoforged.neoforge.event.EventHooks.onExplosionDetonate(this.level, this, list, f); ++ net.neoforged.neoforge.event.EventHooks.onExplosionDetonate(this.level, this, list, blocks); + for (Entity entity : list) { if (!entity.ignoreExplosion(this)) { double d0 = Math.sqrt(entity.distanceToSqr(this.center)) / (double)f; @@ -15,7 +28,16 @@ d2 *= d6; d3 *= d6; Vec3 vec3 = new Vec3(d1, d2, d3); -+ vec3 = net.neoforged.neoforge.event.EventHooks.getExplosionKnockback(this.level, this, entity, vec3); ++ vec3 = net.neoforged.neoforge.event.EventHooks.getExplosionKnockback(this.level, this, entity, vec3, blocks); entity.setDeltaMovement(entity.getDeltaMovement().add(vec3)); if (entity instanceof Player) { Player player = (Player)entity; +@@ -246,7 +_,7 @@ + public void explode() { + this.level.gameEvent(this.source, GameEvent.EXPLODE, this.center); + List list = this.calculateExplodedPositions(); +- this.hurtEntities(); ++ this.hurtEntities(list); + if (this.interactsWithBlocks()) { + ProfilerFiller profilerfiller = Profiler.get(); + profilerfiller.push("explosion_blocks"); diff --git a/src/main/java/net/neoforged/neoforge/event/EventHooks.java b/src/main/java/net/neoforged/neoforge/event/EventHooks.java index cca9ed385c..c5109000f3 100644 --- a/src/main/java/net/neoforged/neoforge/event/EventHooks.java +++ b/src/main/java/net/neoforged/neoforge/event/EventHooks.java @@ -588,7 +588,7 @@ public static boolean onExplosionStart(Level level, ServerExplosion explosion) { return NeoForge.EVENT_BUS.post(new ExplosionEvent.Start(level, explosion)).isCanceled(); } - public static void onExplosionDetonate(Level level, ServerExplosion explosion, List list, double diameter) { + public static void onExplosionDetonate(Level level, ServerExplosion explosion, List entities, List blocks) { //Filter entities to only those who are effected, to prevent modders from seeing more then will be hurt. /* Enable this if we get issues with modders looping to much. Iterator itr = list.iterator(); @@ -600,7 +600,7 @@ public static void onExplosionDetonate(Level level, ServerExplosion explosion, L if (e.isImmuneToExplosions() || dist > 1.0F) itr.remove(); } */ - NeoForge.EVENT_BUS.post(new ExplosionEvent.Detonate(level, explosion, list)); + NeoForge.EVENT_BUS.post(new ExplosionEvent.Detonate(level, explosion, entities, blocks)); } /** @@ -613,8 +613,8 @@ public static void onExplosionDetonate(Level level, ServerExplosion explosion, L * @param initialVelocity The explosion calculated velocity for the entity * @return The new explosion velocity to add to the entity's existing velocity */ - public static Vec3 getExplosionKnockback(Level level, ServerExplosion explosion, Entity entity, Vec3 initialVelocity) { - ExplosionKnockbackEvent event = new ExplosionKnockbackEvent(level, explosion, entity, initialVelocity); + public static Vec3 getExplosionKnockback(Level level, ServerExplosion explosion, Entity entity, Vec3 initialVelocity, List blocks) { + ExplosionKnockbackEvent event = new ExplosionKnockbackEvent(level, explosion, entity, initialVelocity, blocks); NeoForge.EVENT_BUS.post(event); return event.getKnockbackVelocity(); } diff --git a/src/main/java/net/neoforged/neoforge/event/level/ExplosionEvent.java b/src/main/java/net/neoforged/neoforge/event/level/ExplosionEvent.java index b6d1d38e2d..34118e3790 100644 --- a/src/main/java/net/neoforged/neoforge/event/level/ExplosionEvent.java +++ b/src/main/java/net/neoforged/neoforge/event/level/ExplosionEvent.java @@ -6,6 +6,7 @@ package net.neoforged.neoforge.event.level; import java.util.List; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerExplosion; @@ -63,17 +64,18 @@ public Start(Level level, ServerExplosion explosion) { */ public static class Detonate extends ExplosionEvent { private final List entityList; + private final List blockList; - public Detonate(Level level, ServerExplosion explosion, List entityList) { + public Detonate(Level level, ServerExplosion explosion, List entityList, List blockList) { super(level, explosion); this.entityList = entityList; + this.blockList = blockList; } /** return the list of blocks affected by the explosion. */ - // FIXME porting: explosions changed a bit - /*public List getAffectedBlocks() { - return getExplosion().getToBlow(); - }*/ + public List getAffectedBlocks() { + return this.blockList; + } /** return the list of entities affected by the explosion. */ public List getAffectedEntities() { diff --git a/src/main/java/net/neoforged/neoforge/event/level/ExplosionKnockbackEvent.java b/src/main/java/net/neoforged/neoforge/event/level/ExplosionKnockbackEvent.java index d07fee5f06..321e30f49e 100644 --- a/src/main/java/net/neoforged/neoforge/event/level/ExplosionKnockbackEvent.java +++ b/src/main/java/net/neoforged/neoforge/event/level/ExplosionKnockbackEvent.java @@ -5,6 +5,8 @@ package net.neoforged.neoforge.event.level; +import java.util.List; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; import net.minecraft.world.level.ServerExplosion; @@ -21,19 +23,20 @@ */ public class ExplosionKnockbackEvent extends ExplosionEvent { private final Entity entity; + private final List blockList; private Vec3 knockbackVelocity; - public ExplosionKnockbackEvent(Level level, ServerExplosion explosion, Entity entity, Vec3 knockbackVelocity) { + public ExplosionKnockbackEvent(Level level, ServerExplosion explosion, Entity entity, Vec3 knockbackVelocity, List blockList) { super(level, explosion); this.entity = entity; + this.blockList = blockList; this.knockbackVelocity = knockbackVelocity; } /** return the list of blocks affected by the explosion. */ - // FIXME porting: explosions changed a bit - /*public List getAffectedBlocks() { - return getExplosion().getToBlow(); - }*/ + public List getAffectedBlocks() { + return this.blockList; + } /** return the entity affected by the explosion knockback. */ public Entity getAffectedEntity() { From 86abd26c9f560decbb05ecd0b3b3da8362aa3288 Mon Sep 17 00:00:00 2001 From: Dennis C Date: Sat, 9 Nov 2024 06:15:18 +0100 Subject: [PATCH 15/18] [1.21.3] Fix composite and separate transforms models not baking generated item models correctly (#1671) --- .../net/neoforged/neoforge/client/model/CompositeModel.java | 2 +- .../neoforge/client/model/SeparateTransformsModel.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/neoforged/neoforge/client/model/CompositeModel.java b/src/main/java/net/neoforged/neoforge/client/model/CompositeModel.java index 93fde9b743..efeacde773 100644 --- a/src/main/java/net/neoforged/neoforge/client/model/CompositeModel.java +++ b/src/main/java/net/neoforged/neoforge/client/model/CompositeModel.java @@ -80,7 +80,7 @@ public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Functio if (!context.isComponentVisible(name, true)) continue; var model = entry.getValue(); - bakedPartsBuilder.put(name, model.bake(baker, spriteGetter, modelState)); + bakedPartsBuilder.put(name, baker.bakeUncached(model, modelState, spriteGetter)); } var bakedParts = bakedPartsBuilder.build(); diff --git a/src/main/java/net/neoforged/neoforge/client/model/SeparateTransformsModel.java b/src/main/java/net/neoforged/neoforge/client/model/SeparateTransformsModel.java index 03e4d72b6a..2db17ea34f 100644 --- a/src/main/java/net/neoforged/neoforge/client/model/SeparateTransformsModel.java +++ b/src/main/java/net/neoforged/neoforge/client/model/SeparateTransformsModel.java @@ -56,8 +56,8 @@ public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Functio BakedModel baked = new Baked( context.useAmbientOcclusion(), context.isGui3d(), context.useBlockLight(), spriteGetter.apply(context.getMaterial("particle")), - baseModel.bake(baker, spriteGetter, modelState), - ImmutableMap.copyOf(Maps.transformValues(perspectives, value -> value.bake(baker, spriteGetter, modelState)))); + baker.bakeUncached(baseModel, modelState, spriteGetter), + ImmutableMap.copyOf(Maps.transformValues(perspectives, value -> baker.bakeUncached(value, modelState, spriteGetter)))); if (!overrides.isEmpty()) { baked = new ItemModel.BakedModelWithOverrides(baked, new BakedOverrides(baker, overrides, spriteGetter)); } From df38b7a6e9c977922c05bf44328de4f6e610f25e Mon Sep 17 00:00:00 2001 From: Dennis C Date: Sat, 9 Nov 2024 07:05:49 +0100 Subject: [PATCH 16/18] [1.21.3] Add event for registering atlases for use with Material (#1621) --- .../resources/model/ModelManager.java.patch | 8 ++- .../neoforge/client/ClientHooks.java | 7 +++ .../event/RegisterMaterialAtlasesEvent.java | 58 ++++++++++++++++++ .../debug/client/TextureAtlasTests.java | 60 +++++++++++++++++++ .../atlases/material_test.json | 8 +++ 5 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/neoforged/neoforge/client/event/RegisterMaterialAtlasesEvent.java create mode 100644 tests/src/main/java/net/neoforged/neoforge/debug/client/TextureAtlasTests.java create mode 100644 tests/src/main/resources/assets/neotests_test_material_atlas/atlases/material_test.json diff --git a/patches/net/minecraft/client/resources/model/ModelManager.java.patch b/patches/net/minecraft/client/resources/model/ModelManager.java.patch index 2795dad254..8896f83c2e 100644 --- a/patches/net/minecraft/client/resources/model/ModelManager.java.patch +++ b/patches/net/minecraft/client/resources/model/ModelManager.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/client/resources/model/ModelManager.java +++ b/net/minecraft/client/resources/model/ModelManager.java -@@ -71,13 +_,14 @@ +@@ -71,18 +_,20 @@ TextureAtlas.LOCATION_BLOCKS, ResourceLocation.withDefaultNamespace("blocks") ); @@ -16,6 +16,12 @@ public ModelManager(TextureManager p_119406_, BlockColors p_119407_, int p_119408_) { this.blockColors = p_119407_; + this.maxMipmapLevels = p_119408_; + this.blockModelShaper = new BlockModelShaper(this); ++ Map VANILLA_ATLASES = net.neoforged.neoforge.client.ClientHooks.gatherMaterialAtlases(ModelManager.VANILLA_ATLASES); + this.atlases = new AtlasSet(VANILLA_ATLASES, p_119406_); + } + @@ -102,6 +_,7 @@ public final CompletableFuture reload( PreparableReloadListener.PreparationBarrier p_249079_, ResourceManager p_251134_, Executor p_250550_, Executor p_249221_ diff --git a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java index 0132b8a863..844ac14261 100644 --- a/src/main/java/net/neoforged/neoforge/client/ClientHooks.java +++ b/src/main/java/net/neoforged/neoforge/client/ClientHooks.java @@ -154,6 +154,7 @@ import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; +import net.neoforged.neoforge.client.event.RegisterMaterialAtlasesEvent; import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; import net.neoforged.neoforge.client.event.RegisterShadersEvent; import net.neoforged.neoforge.client.event.RegisterSpriteSourceTypesEvent; @@ -1094,4 +1095,10 @@ public static boolean isInTranslucentBlockOutlinePass(Level level, BlockPos pos, ChunkRenderTypeSet renderTypes = model.getRenderTypes(state, OUTLINE_PASS_RANDOM, level.getModelData(pos)); return renderTypes.contains(RenderType.TRANSLUCENT) || renderTypes.contains(RenderType.TRIPWIRE); } + + public static Map gatherMaterialAtlases(Map vanillaAtlases) { + vanillaAtlases = new HashMap<>(vanillaAtlases); + ModLoader.postEvent(new RegisterMaterialAtlasesEvent(vanillaAtlases)); + return Map.copyOf(vanillaAtlases); + } } diff --git a/src/main/java/net/neoforged/neoforge/client/event/RegisterMaterialAtlasesEvent.java b/src/main/java/net/neoforged/neoforge/client/event/RegisterMaterialAtlasesEvent.java new file mode 100644 index 0000000000..9d6f6c68ce --- /dev/null +++ b/src/main/java/net/neoforged/neoforge/client/event/RegisterMaterialAtlasesEvent.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) NeoForged and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.neoforged.neoforge.client.event; + +import java.util.Map; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.client.resources.TextureAtlasHolder; +import net.minecraft.client.resources.model.Material; +import net.minecraft.client.resources.model.ModelManager; +import net.minecraft.resources.ResourceLocation; +import net.neoforged.bus.api.Event; +import net.neoforged.bus.api.ICancellableEvent; +import net.neoforged.fml.LogicalSide; +import net.neoforged.fml.event.IModBusEvent; +import org.jetbrains.annotations.ApiStatus; + +/** + * Fired for registering {@linkplain TextureAtlas texture atlases} that will be used with {@link Material} or + * other systems which retrieve the atlas via {@link Minecraft#getTextureAtlas(ResourceLocation)} or + * {@link ModelManager#getAtlas(ResourceLocation)}. + *

+ * If an atlas is registered via this event, then it must NOT be used through a {@link TextureAtlasHolder}. + *

+ * This event fires during startup when the {@link ModelManager} is constructed. + *

+ * This event is not {@linkplain ICancellableEvent cancellable}. + *

+ * This event is fired on the mod-specific event bus, only on the {@linkplain LogicalSide#CLIENT logical client}. + */ +public class RegisterMaterialAtlasesEvent extends Event implements IModBusEvent { + private final Map atlases; + + @ApiStatus.Internal + public RegisterMaterialAtlasesEvent(Map atlases) { + this.atlases = atlases; + } + + /** + * Register a texture atlas with the given name and info location + * + * @param atlasLocation The name of the texture atlas + * @param atlasInfoLocation The location of the atlas info JSON relative to the {@code atlases} directory + */ + public void register(ResourceLocation atlasLocation, ResourceLocation atlasInfoLocation) { + ResourceLocation oldAtlasInfoLoc = this.atlases.putIfAbsent(atlasLocation, atlasInfoLocation); + if (oldAtlasInfoLoc != null) { + throw new IllegalStateException(String.format( + "Duplicate registration of atlas: %s (old info: %s, new info: %s)", + atlasLocation, + oldAtlasInfoLoc, + atlasInfoLocation)); + } + } +} diff --git a/tests/src/main/java/net/neoforged/neoforge/debug/client/TextureAtlasTests.java b/tests/src/main/java/net/neoforged/neoforge/debug/client/TextureAtlasTests.java new file mode 100644 index 0000000000..11caca9757 --- /dev/null +++ b/tests/src/main/java/net/neoforged/neoforge/debug/client/TextureAtlasTests.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) NeoForged and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.neoforged.neoforge.debug.client; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; +import net.neoforged.api.distmarker.Dist; +import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; +import net.neoforged.neoforge.client.event.RegisterMaterialAtlasesEvent; +import net.neoforged.testframework.DynamicTest; +import net.neoforged.testframework.annotation.ForEachTest; +import net.neoforged.testframework.annotation.TestHolder; + +@ForEachTest(side = Dist.CLIENT, groups = { "client.texture_atlas", "texture_atlas" }) +public class TextureAtlasTests { + @TestHolder(description = { "Tests that texture atlases intended for use with Material are correctly registered and loaded" }, enabledByDefault = true) + static void testMaterialAtlas(final DynamicTest test) { + String modId = test.createModId(); + ResourceLocation atlasLoc = ResourceLocation.fromNamespaceAndPath(modId, "textures/atlas/material_test.png"); + + test.framework().modEventBus().addListener(RegisterMaterialAtlasesEvent.class, event -> { + ResourceLocation infoLoc = ResourceLocation.fromNamespaceAndPath(modId, "material_test"); + event.register(atlasLoc, infoLoc); + }); + + test.framework().modEventBus().addListener(RegisterClientReloadListenersEvent.class, event -> { + event.registerReloadListener((ResourceManagerReloadListener) manager -> { + try { + Minecraft.getInstance().getModelManager().getAtlas(atlasLoc); + } catch (NullPointerException npe) { + test.fail("Atlas was not registered"); + return; + } catch (Throwable t) { + test.fail("Atlas lookup failed: " + t.getMessage()); + return; + } + + try { + Material material = new Material(atlasLoc, ResourceLocation.withDefaultNamespace("block/stone")); + TextureAtlasSprite sprite = material.sprite(); + if (sprite.contents().name().equals(MissingTextureAtlasSprite.getLocation())) { + test.fail("Expected sprite was not stitched"); + return; + } + } catch (Throwable t) { + test.fail("Sprite lookup via material failed: " + t.getMessage()); + } + + test.pass(); + }); + }); + } +} diff --git a/tests/src/main/resources/assets/neotests_test_material_atlas/atlases/material_test.json b/tests/src/main/resources/assets/neotests_test_material_atlas/atlases/material_test.json new file mode 100644 index 0000000000..fcad3a1669 --- /dev/null +++ b/tests/src/main/resources/assets/neotests_test_material_atlas/atlases/material_test.json @@ -0,0 +1,8 @@ +{ + "sources": [ + { + "type": "minecraft:single", + "resource": "minecraft:block/stone" + } + ] +} From 7c8bcdfc46444cfcbc72b92ed930fc81cc6c62a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20K=C3=A4mpf?= <48529807+PlatinPython@users.noreply.github.com> Date: Sat, 9 Nov 2024 11:07:52 +0100 Subject: [PATCH 17/18] Add default BlockBehaviour.Properties overloads to DeferredRegister.Blocks (#1660) --- .../neoforge/registries/DeferredRegister.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/neoforged/neoforge/registries/DeferredRegister.java b/src/main/java/net/neoforged/neoforge/registries/DeferredRegister.java index a4b4133417..f839b4c3cb 100644 --- a/src/main/java/net/neoforged/neoforge/registries/DeferredRegister.java +++ b/src/main/java/net/neoforged/neoforge/registries/DeferredRegister.java @@ -424,24 +424,56 @@ public DeferredBlock register(String name, Supplier DeferredBlock registerBlock(String name, Function func, BlockBehaviour.Properties props) { return this.register(name, key -> func.apply(props.setId(ResourceKey.create(Registries.BLOCK, key)))); } /** - * Adds a new simple {@link Block} to the list of entries to be registered and returns a {@link DeferredHolder} that will be populated with the created block automatically. + * Adds a new block to the list of entries to be registered and returns a {@link DeferredHolder} that will be populated with the created block automatically. + * This method uses the default {@link BlockBehaviour.Properties}. + * + * @param name The new block's name. It will automatically have the {@linkplain #getNamespace() namespace} prefixed. + * @param func A factory for the new block. The factory should not cache the created block. + * @return A {@link DeferredHolder} that will track updates from the registry for this block. + * @see #registerBlock(String, Function, BlockBehaviour.Properties) + * @see #registerSimpleBlock(String, BlockBehaviour.Properties) + * @see #registerSimpleBlock(String) + */ + public DeferredBlock registerBlock(String name, Function func) { + return this.registerBlock(name, func, BlockBehaviour.Properties.of()); + } + + /** + * Adds a new simple {@link Block} with the given {@link BlockBehaviour.Properties properties} to the list of entries to be registered and returns a {@link DeferredHolder} that will be populated with the created block automatically. * * @param name The new block's name. It will automatically have the {@linkplain #getNamespace() namespace} prefixed. * @param props The properties for the created block. * @return A {@link DeferredHolder} that will track updates from the registry for this block. * @see #registerBlock(String, Function, BlockBehaviour.Properties) + * @see #registerBlock(String, Function) + * @see #registerSimpleBlock(String) */ public DeferredBlock registerSimpleBlock(String name, BlockBehaviour.Properties props) { return this.registerBlock(name, Block::new, props); } + /** + * Adds a new simple {@link Block} with the default {@link BlockBehaviour.Properties properties} to the list of entries to be registered and returns a {@link DeferredHolder} that will be populated with the created block automatically. + * + * @param name The new block's name. It will automatically have the {@linkplain #getNamespace() namespace} prefixed. + * @return A {@link DeferredHolder} that will track updates from the registry for this block. + * @see #registerBlock(String, Function, BlockBehaviour.Properties) + * @see #registerBlock(String, Function) + * @see #registerSimpleBlock(String, BlockBehaviour.Properties) + */ + public DeferredBlock registerSimpleBlock(String name) { + return this.registerSimpleBlock(name, BlockBehaviour.Properties.of()); + } + @Override protected DeferredBlock createHolder(ResourceKey> registryKey, ResourceLocation key) { return DeferredBlock.createBlock(ResourceKey.create(registryKey, key)); From 424b600ec03d1bcd76e1db714dfa8c8abc17c3d7 Mon Sep 17 00:00:00 2001 From: Dennis C Date: Sat, 9 Nov 2024 12:36:06 +0100 Subject: [PATCH 18/18] [1.21.3] Relax extensible enum coherence checks for extensible enums without custom entries (#1622) --- .../configuration/CheckExtensibleEnums.java | 34 ++++++++++++------- .../resources/assets/neoforge/lang/en_us.json | 1 - 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java b/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java index 9d493a3ef5..a62200e369 100644 --- a/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java +++ b/src/main/java/net/neoforged/neoforge/network/configuration/CheckExtensibleEnums.java @@ -75,33 +75,33 @@ public static void handleClientboundPayload(ExtensibleEnumDataPayload payload, I Map localEnumEntries = getEnumEntries(); Map remoteEnumEntries = payload.enumEntries(); - Set keyDiff = Sets.symmetricDifference(localEnumEntries.keySet(), remoteEnumEntries.keySet()); - if (!keyDiff.isEmpty()) { - context.disconnect(Component.translatable("neoforge.network.extensible_enums.enum_set_mismatch")); - return; - } - Map mismatched = new HashMap<>(); - for (EnumEntry localEntry : localEnumEntries.values()) { - EnumEntry remoteEntry = remoteEnumEntries.get(localEntry.className); - if (!localEntry.isExtended() && !remoteEntry.isExtended()) { + for (String className : Sets.union(localEnumEntries.keySet(), remoteEnumEntries.keySet())) { + EnumEntry localEntry = localEnumEntries.get(className); + EnumEntry remoteEntry = remoteEnumEntries.get(className); + if ((localEntry == null && remoteEntry.isExtended()) || (remoteEntry == null && localEntry.isExtended())) { + mismatched.put(className, Mismatch.EXTENSIBILITY); + continue; + } + + if ((localEntry == null || !localEntry.isExtended()) && (remoteEntry == null || !remoteEntry.isExtended())) { continue; } if (localEntry.networkCheck != remoteEntry.networkCheck) { - mismatched.put(localEntry.className, Mismatch.NETWORK_CHECK); + mismatched.put(className, Mismatch.NETWORK_CHECK); continue; } if (localEntry.isExtended() != remoteEntry.isExtended()) { - mismatched.put(localEntry.className, Mismatch.EXTENSION); + mismatched.put(className, Mismatch.EXTENSION); continue; } ExtensionData localData = localEntry.data.orElseThrow(); ExtensionData remoteData = remoteEntry.data.orElseThrow(); if (localData.vanillaCount != remoteData.vanillaCount || localData.totalCount != remoteData.totalCount) { - mismatched.put(localEntry.className, Mismatch.ENTRY_COUNT); + mismatched.put(className, Mismatch.ENTRY_COUNT); continue; } @@ -109,7 +109,7 @@ public static void handleClientboundPayload(ExtensibleEnumDataPayload payload, I List remoteValues = remoteData.entries; for (int i = 0; i < localData.totalCount - localData.vanillaCount; i++) { if (!localValues.get(i).equals(remoteValues.get(i))) { - mismatched.put(localEntry.className, Mismatch.ENTRY_MISMATCH); + mismatched.put(className, Mismatch.ENTRY_MISMATCH); break; } } @@ -122,6 +122,13 @@ public static void handleClientboundPayload(ExtensibleEnumDataPayload payload, I String enumClass = entry.getKey(); message.append("\n").append(enumClass).append(": "); switch (entry.getValue()) { + case EXTENSIBILITY -> { + if (remoteEnumEntries.containsKey(enumClass)) { + message.append("Enum is extensible on the server but not on the client"); + } else { + message.append("Enum is extensible on the client but not on the server"); + } + } case NETWORK_CHECK -> message.append("Mismatched NetworkCheck (server: ") .append(remoteEnumEntries.get(enumClass).networkCheck) .append(", client: ") @@ -258,6 +265,7 @@ public record ExtensionData(int vanillaCount, int totalCount, List entri } private enum Mismatch { + EXTENSIBILITY, NETWORK_CHECK, EXTENSION, ENTRY_COUNT, diff --git a/src/main/resources/assets/neoforge/lang/en_us.json b/src/main/resources/assets/neoforge/lang/en_us.json index b61eef8d39..d0f85277ce 100644 --- a/src/main/resources/assets/neoforge/lang/en_us.json +++ b/src/main/resources/assets/neoforge/lang/en_us.json @@ -264,7 +264,6 @@ "neoforge.network.data_maps.missing_their": "Cannot connect to server as it has mandatory registry data maps not present on the client: %s", "neoforge.network.extensible_enums.no_vanilla_server": "This client does not support vanilla servers as it has extended enums used in serverbound networking", - "neoforge.network.extensible_enums.enum_set_mismatch": "The set of extensible enums on the client and server do not match. Make sure you are using the same NeoForge version as the server", "neoforge.network.extensible_enums.enum_entry_mismatch": "The set of values added to extensible enums on the client and server do not match. Make sure you are using the same mod and NeoForge versions as the server. See the log for more details", "neoforge.attribute.debug.base": "[Entity: %s | Item: %s]",