Skip to content

Commit 1bddfad

Browse files
committed
Fixed Translation Bug: Resolved an issue with incorrect translations that affected certain keys.
Added New Files: Introduced additional translation files to support new content. Remade LangProvider: Refactored the LangProvider class for improved efficiency and functionality. Remade Formatting in StatusEffectUtil: Updated the Roman value formatting in the StatusEffectUtil class for better consistency.
1 parent 831d7c0 commit 1bddfad

23 files changed

+117
-196
lines changed
149 Bytes
Binary file not shown.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
// 1.20.1 2025-02-01T19:16:34.3617311 Ukrainian Delight/Tags for minecraft:block
1+
// 1.20.1 2025-03-17T15:14:35.4164421 Ukrainian Delight/Tags for minecraft:block
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
// 1.20.1 2025-02-01T19:16:34.3617311 Ukrainian Delight/Block Loot Tables
1+
// 1.20.1 2025-03-17T15:14:35.4169469 Ukrainian Delight/Block Loot Tables
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// 1.20.1 2025-02-01T19:16:34.3607295 Ukrainian Delight/Tags for minecraft:item
1+
// 1.20.1 2025-03-17T15:14:35.4153638 Ukrainian Delight/Tags for minecraft:item
22
9f524b3712db0548b4a97a009f35ad11fce78835 data\ukrainian_delight\tags\items\salt.json
33
b144729a1aacfd924000b3ad609af8c34e78e246 data\ukrainian_delight\tags\items\krashanka.json
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
// 1.20.1 2025-02-01T19:16:34.3627321 Ukrainian Delight/Language (en_us)
2-
f7189e3120767b94ebdd5ad1ba9862f35cc07232 assets\ukrainian_delight\lang\en_us.json
1+
// 1.20.1 2025-03-17T15:14:35.4174674 Ukrainian Delight/Language (en_us)
2+
53465f2fceedf44aa4def867bd11f2c60d89e0d8 assets\ukrainian_delight\lang\en_us.json

src/main/generated/.cache/bad18736f136b04891439ba0aa0d3bff43cd1849

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
// 1.20.1 2025-02-01T19:16:34.3587287 Ukrainian Delight/Model Definitions
1+
// 1.20.1 2025-03-17T15:14:35.413816 Ukrainian Delight/Model Definitions
22
864f6268f46959d10f1c3af811dcf2b6489eebed assets\ukrainian_delight\models\item\yellow_krashanka.json
33
5077b83449a03130a9eabc18fe5d7f2927945d72 assets\ukrainian_delight\models\item\lime_krashanka.json
44
2472c58687e5d4fa3cf377f7667f8db0486536e0 assets\ukrainian_delight\models\item\brown_krashanka.json
5-
463aee1be2f4bf89fef94a641c050024ec78afde assets\ukrainian_delight\models\item\pink_krashanka.json
65
c5197644bcc47e64f870227add738b11af4e092b assets\ukrainian_delight\models\item\cyan_krashanka.json
6+
463aee1be2f4bf89fef94a641c050024ec78afde assets\ukrainian_delight\models\item\pink_krashanka.json
77
83032431e9f5dad82ddcd898a03732231a6c1316 assets\ukrainian_delight\models\item\light_blue_krashanka.json
88
94b77d59fd12b92c9f6973a3d9142fc0b88f85e0 assets\ukrainian_delight\models\item\black_krashanka.json
99
c5da989245bdee3960b03663a420f5494cd84316 assets\ukrainian_delight\models\item\white_krashanka.json

src/main/generated/assets/ukrainian_delight/lang/en_us.json

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,29 @@
11
{
2-
"amplifier.1": "",
3-
"amplifier.10": " X",
4-
"amplifier.2": " II",
5-
"amplifier.3": " III",
6-
"amplifier.4": " IV",
7-
"amplifier.5": " V",
8-
"amplifier.6": " VI",
9-
"amplifier.7": " VII",
10-
"amplifier.8": " VIII",
11-
"amplifier.9": " IX",
12-
"amplifier.none": "",
132
"biome.ukrainian_delight.salt_caves": "Salt Caves",
14-
"block.ukrainian_delight.apple_jam": "Apple Jam",
15-
"block.ukrainian_delight.brewing_keg": "Brewing Keg",
16-
"block.ukrainian_delight.cucumber_crate": "Cucumber Crate",
3+
"block.ukrainian_delight.apple_jam": "Apple jam",
4+
"block.ukrainian_delight.brewing_keg": "Brewing keg",
5+
"block.ukrainian_delight.cucumber_crate": "Cucumber crate",
176
"block.ukrainian_delight.jar": "Jar",
18-
"block.ukrainian_delight.jarred_beetroot": "Jarred Beetroot",
19-
"block.ukrainian_delight.jarred_borscht": "Jarred Borscht Dressing",
20-
"block.ukrainian_delight.jarred_cabbage": "Jarred Cabbage",
21-
"block.ukrainian_delight.jarred_carrot": "Jarred Carrot",
22-
"block.ukrainian_delight.jarred_onion": "Jarred Onion",
23-
"block.ukrainian_delight.jarred_tomatoes": "Jarred Tomatoes",
24-
"block.ukrainian_delight.salt_bag": "Salt Bag",
25-
"block.ukrainian_delight.salt_block": "Salt Block",
26-
"block.ukrainian_delight.wine_bottle": "Wine Bottle",
7+
"block.ukrainian_delight.jarred_beetroot": "Jarred beetroot",
8+
"block.ukrainian_delight.jarred_borscht": "Jarred borscht",
9+
"block.ukrainian_delight.jarred_cabbage": "Jarred cabbage",
10+
"block.ukrainian_delight.jarred_carrot": "Jarred carrot",
11+
"block.ukrainian_delight.jarred_onion": "Jarred onion",
12+
"block.ukrainian_delight.jarred_tomatoes": "Jarred tomatoes",
13+
"block.ukrainian_delight.salt_bag": "Salt bag",
14+
"block.ukrainian_delight.salt_block": "Salt block",
15+
"block.ukrainian_delight.wine_bottle": "Wine bottle",
2716
"death.attack.glass_damage": "%s was not careful with glass",
2817
"gui.ukrainian_delight.brewing_keg": "Brewing Keg",
29-
"item.ukrainian_delight.apple_slice": "Apple Slice",
30-
"item.ukrainian_delight.borscht": "Borscht",
31-
"item.ukrainian_delight.cherry_berry": "Cherry Berry",
32-
"item.ukrainian_delight.cottage_cheese": "Cottage Cheese",
18+
"item.ukrainian_delight.apple_slice": "Apple slice",
19+
"item.ukrainian_delight.cherry_berry": "Cherry berry",
20+
"item.ukrainian_delight.cottage_cheese": "Cottage cheese",
3321
"item.ukrainian_delight.cucumber": "Cucumber",
34-
"item.ukrainian_delight.cutted_cucumber": "Cut Cucumber",
35-
"item.ukrainian_delight.dried_apple_slice": "Dried Apple Slice",
36-
"item.ukrainian_delight.homemade_sausage": "Homemade Sausage",
22+
"item.ukrainian_delight.cutted_cucumber": "Cutted cucumber",
23+
"item.ukrainian_delight.dried_apple_slice": "Dried apple slice",
3724
"item.ukrainian_delight.horseradish": "Horseradish",
38-
"item.ukrainian_delight.lean_borscht": "Lean Borscht",
3925
"item.ukrainian_delight.salo": "Salo",
4026
"item.ukrainian_delight.salt": "Salt",
41-
"item.ukrainian_delight.varenyk": "Varenyk",
4227
"item.ukrainian_delight.yeast": "Yeast",
4328
"item.ukrainian_dlight.black_krashanka": "Black Krashanka",
4429
"item.ukrainian_dlight.blue_krashanka": "Blue Krashanka",

src/main/java/com/megatrex4/ukrainian_dlight/datagen/providers/LangProvider.java

Lines changed: 84 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,19 @@
55
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider;
66
import net.minecraft.util.Identifier;
77

8-
import java.io.IOException;
9-
import java.nio.file.Files;
10-
import java.nio.file.Path;
11-
import java.nio.file.StandardOpenOption;
12-
import java.util.*;
13-
14-
import com.google.gson.*;
8+
import java.util.HashSet;
9+
import java.util.Set;
1510

1611
public class LangProvider extends FabricLanguageProvider {
1712

1813
private final Set<String> existingKeys = new HashSet<>();
19-
private final Path manualLangFile;
2014

2115
public LangProvider(FabricDataOutput dataOutput) {
2216
super(dataOutput);
23-
this.manualLangFile = dataOutput.getModContainer().findPath("assets/ukrainian_delight/lang/en_us.json")
24-
.orElseThrow(() -> new RuntimeException("Manual lang file not found"));
2517
}
2618

2719
@Override
2820
public void generateTranslations(TranslationBuilder translationBuilder) {
29-
Map<String, String> manualTranslations = loadManualTranslations();
30-
31-
// Add manual translations first
32-
manualTranslations.forEach((key, value) -> addTranslation(translationBuilder, key, value));
33-
34-
// Separate categories in output
35-
addTranslation(translationBuilder, "", ""); // Empty line as a separator
36-
addTranslation(translationBuilder, "# Items", ""); // Fake comment separator (only visual)
3721

3822
// Add item translations
3923
ItemsRegistry.KRASHANKY_ITEMS.forEach(item -> {
@@ -46,35 +30,92 @@ public void generateTranslations(TranslationBuilder translationBuilder) {
4630
addTranslation(translationBuilder, key, value);
4731
});
4832

49-
addTranslation(translationBuilder, "", ""); // Another separator
50-
addTranslation(translationBuilder, "# Blocks", ""); // Block separator
51-
52-
// Add block translations (Example, replace with actual block logic)
53-
// BlocksRegistry.BLOCKS.forEach(block -> {
54-
// addTranslation(translationBuilder, block.getTranslationKey(), generateBlockName(block));
55-
// });
33+
addTranslation(translationBuilder, "itemgroup.meals_ukrainian_delight", "UD Meals");
34+
addTranslation(translationBuilder, "itemgroup.ingredients_ukrainian_delight", "UD Ingredients");
35+
addTranslation(translationBuilder, "itemgroup.jars_ukrainian_delight", "UD Jars");
36+
addTranslation(translationBuilder, "itemgroup.krashanky_ukrainian_delight", "UD Krashanky");
37+
addTranslation(translationBuilder, "rei.ukrainian_delight", "Ukrainian Delight");
38+
39+
addItemTranslation(translationBuilder, "horseradish");
40+
addItemTranslation(translationBuilder, "salt");
41+
addItemTranslation(translationBuilder, "cucumber");
42+
addItemTranslation(translationBuilder, "cutted_cucumber");
43+
addItemTranslation(translationBuilder, "apple_slice");
44+
addItemTranslation(translationBuilder, "dried_apple_slice");
45+
addItemTranslation(translationBuilder, "cherry_berry");
46+
addItemTranslation(translationBuilder, "cottage_cheese");
47+
addItemTranslation(translationBuilder, "salo");
48+
addItemTranslation(translationBuilder, "yeast");
49+
50+
// Add block translations
51+
addBlockTranslation(translationBuilder, "cucumber_crate");
52+
addBlockTranslation(translationBuilder, "jar");
53+
addBlockTranslation(translationBuilder, "apple_jam");
54+
addBlockTranslation(translationBuilder, "jarred_tomatoes");
55+
addBlockTranslation(translationBuilder, "jarred_cabbage");
56+
addBlockTranslation(translationBuilder, "jarred_beetroot");
57+
addBlockTranslation(translationBuilder, "jarred_carrot");
58+
addBlockTranslation(translationBuilder, "jarred_onion");
59+
addBlockTranslation(translationBuilder, "jarred_borscht");
60+
addBlockTranslation(translationBuilder, "wine_bottle");
61+
addBlockTranslation(translationBuilder, "brewing_keg");
62+
addBlockTranslation(translationBuilder, "salt_block");
63+
addBlockTranslation(translationBuilder, "salt_bag");
64+
65+
addTranslation(translationBuilder, "ukrainian_delight.advancement.root", "Ukrainian Delight");
66+
addTranslation(translationBuilder, "ukrainian_delight.advancement.root.desc", "The power of Ukrainian delicacies!");
67+
68+
addTranslation(translationBuilder, "ukrainian_delight.advancement.borscht", "Where to find red water!");
69+
addTranslation(translationBuilder, "ukrainian_delight.advancement.borscht.desc", "Cook borscht");
70+
addTranslation(translationBuilder, "ukrainian_delight.advancement.lean_borscht", "The same, but with mushrooms!");
71+
addTranslation(translationBuilder, "ukrainian_delight.advancement.lean_borscht.desc", "Cook lean borscht");
72+
73+
addTranslation(translationBuilder, "gui.ukrainian_delight.brewing_keg", "Brewing Keg");
74+
addTranslation(translationBuilder, "death.attack.glass_damage", "%s was not careful with glass");
75+
addTranslation(translationBuilder, "tooltip.ukrainian_delight.no_effects", "No effects");
76+
addTranslation(translationBuilder, "biome.ukrainian_delight.salt_caves", "Salt Caves");
77+
78+
// Item and tank tooltips
79+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.tank_amount_with_capacity", "%d / %d mB");
80+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.tank_amount", "%d mB");
81+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.tank_empty", "Empty");
82+
83+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.poured", "Poured into %s");
84+
85+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.item_amout_with_capacity", "[%s] %d / %d mB");
86+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.item_tank_amount", "[%s] %d mB");
87+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.empty", "Empty");
88+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.single_serving", "Holds 1 drink of:");
89+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.many_servings", "Holds %s drinks of:");
90+
91+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.light_drink", "Light Drink");
92+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.mid_drink", "Medium Drink");
93+
addTranslation(translationBuilder, "ukrainian_delight.tooltip.strong_drink", "Strong Drink");
94+
95+
// Config GUI
96+
addTranslation(translationBuilder, "ukrainian_delight.title.config", "Ukrainian Delight Configuration");
97+
addTranslation(translationBuilder, "ukrainian_delight.category.general", "General Settings");
98+
addTranslation(translationBuilder, "ukrainian_delight.option.brewing_keg_capacity", "Brewing Keg Capacity");
99+
addTranslation(translationBuilder, "tooltip.ukrainian_delight.brewing_keg_capacity", "%s");
100+
addTranslation(translationBuilder, "tooltip.ukrainian_delight.brewing_keg_amount", "%s");
101+
102+
// Patchouli guide
103+
addTranslation(translationBuilder, "patchouli.ukrainian_delight.guide_name", "Mum's recipes");
104+
addTranslation(translationBuilder, "patchouli.ukrainian_delight.landing_text", "Welcome to the Ukrainian Delight Mod Guide!");
105+
addTranslation(translationBuilder, "patchouli.ukrainian_delight.tooltip.tank_amount", "%s mB of water");
56106

57-
addTranslation(translationBuilder, "", ""); // Final separator
58107
}
59108

109+
private void addItemTranslation(TranslationBuilder translationBuilder, String value) {
110+
String key = "item.ukrainian_delight." + value.toLowerCase().replace(" ", "_");
111+
String formattedValue = capitalize(value.replace("_", " "));
112+
addTranslation(translationBuilder, key, formattedValue);
113+
}
60114

61-
// Load manually written translations from en_us.json
62-
private Map<String, String> loadManualTranslations() {
63-
Map<String, String> translations = new HashMap<>();
64-
if (!Files.exists(manualLangFile)) {
65-
return translations;
66-
}
67-
68-
try {
69-
String jsonContent = Files.readString(manualLangFile);
70-
JsonObject json = JsonParser.parseString(jsonContent).getAsJsonObject();
71-
for (Map.Entry<String, JsonElement> entry : json.entrySet()) {
72-
translations.put(entry.getKey(), entry.getValue().getAsString());
73-
}
74-
} catch (IOException e) {
75-
throw new RuntimeException("Failed to read manual lang file", e);
76-
}
77-
return translations;
115+
private void addBlockTranslation(TranslationBuilder translationBuilder, String value) {
116+
String key = "block.ukrainian_delight." + value.toLowerCase().replace(" ", "_");
117+
String formattedValue = capitalize(value.replace("_", " "));
118+
addTranslation(translationBuilder, key, formattedValue);
78119
}
79120

80121
// Avoid duplicate translations

src/main/java/com/megatrex4/ukrainian_dlight/util/StatusEffectUtil.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,15 @@ private static void applyBlindness(PlayerEntity player, int duration, int amplif
5454
}
5555

5656
public static String formatAmplifier(int amplifier) {
57-
// Default to no suffix if amplifier is less than 1
58-
if (amplifier < 1) {
59-
return "I";
60-
}
61-
62-
// Handle amplifiers greater than 5 by returning the number itself
63-
if (amplifier > 10) {
64-
return " " + amplifier;
57+
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
58+
String[] suffixes = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
59+
StringBuilder result = new StringBuilder();
60+
for (int i = 0; i < values.length; i++) {
61+
while (amplifier >= values[i]) {
62+
amplifier -= values[i];
63+
result.append(suffixes[i]);
64+
}
6565
}
66-
67-
// Fetch localized string for the amplifier
68-
String[] suffixes = {"I", "II", "III", "IV", "V"};
69-
return suffixes[amplifier - 1];
66+
return result.toString();
7067
}
7168
}

src/main/resources/assets/ukrainian_delight/lang/en_us.json

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)