Skip to content

Commit

Permalink
localizations
Browse files Browse the repository at this point in the history
  • Loading branch information
KrLite committed Mar 11, 2024
1 parent f549e44 commit 8074c1d
Show file tree
Hide file tree
Showing 20 changed files with 384 additions and 343 deletions.
5 changes: 4 additions & 1 deletion src/main/java/net/krlite/knowledges/KnowledgesClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.krlite.knowledges.api.core.localization.Localizable;
import net.krlite.knowledges.api.entrypoint.ComponentProvider;
import net.krlite.knowledges.api.entrypoint.DataProvider;
import net.krlite.knowledges.api.representable.PacketByteBufWritable;
Expand All @@ -28,6 +29,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static net.krlite.knowledges.api.core.localization.Localizable.Separator.KEY;

public class KnowledgesClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(KnowledgesCommon.ID + ":client");

Expand Down Expand Up @@ -56,7 +59,7 @@ public static Identifier identifier(String path) {
}

public static String localizationKey(String category, String... paths) {
return category + "." + KnowledgesCommon.ID + "." + String.join(".", paths);
return category + KEY + KnowledgesCommon.ID + KEY + String.join(KEY.toString(), paths);
}

public static MutableText localize(String category, String... paths) {
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/net/krlite/knowledges/Shortcuts.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.IntFunction;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;

public class Shortcuts {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,7 @@ public interface Knowledge extends WithPath, Localizable.WithName, WithIndepende

@Override
default String localizationKey(String... paths) {
List<String> fullPaths = new ArrayList<>(List.of(path()));
fullPaths.addAll(List.of(paths));

return KnowledgesClient.COMPONENTS.localizationKey(this, fullPaths.toArray(String[]::new));
paths[0] = path() + Separator.REALM + paths[0];
return KnowledgesClient.COMPONENTS.localizationKey(this, paths);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,48 @@

import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import org.apache.commons.lang3.ArrayUtils;
import org.jetbrains.annotations.NotNull;

public interface Localizable {
enum Separator {
WORD("_"), KEY("."), RANK("/"), REALM(":");

private final String string;

Separator(String string) {
this.string = string;
}

@Override
public String toString() {
return string;
}
}

String localizationKey(String... paths);

default MutableText localize(String... paths) {
return Text.translatable(localizationKey(paths));
}

default String localizationKeyForConfig(String... paths) {
paths[0] = "config" + Separator.RANK + paths[0];
return localizationKey(paths);
}

default MutableText localizeForConfig(String... paths) {
return Text.translatable(localizationKeyForConfig(paths));
}

default String localizationKeyForConfigTooltip(String... paths) {
return localizationKeyForConfig(ArrayUtils.add(paths, "tooltip"));
}

default MutableText localizeTooltipForConfig(String... paths) {
return Text.translatable(localizationKeyForConfigTooltip(paths));
}

interface WithName extends Localizable {
default boolean providesTooltip() {
return false;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package net.krlite.knowledges.api.core.path;

import net.krlite.knowledges.api.core.localization.Localizable;
import org.jetbrains.annotations.NotNull;

public interface WithPartialPath extends WithPath {
Expand All @@ -9,6 +10,6 @@ public interface WithPartialPath extends WithPath {

@Override
default @NotNull String path() {
return currentPath() + "/" + partialPath();
return currentPath() + Localizable.Separator.RANK + partialPath();
}
}
6 changes: 2 additions & 4 deletions src/main/java/net/krlite/knowledges/api/data/Data.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
public interface Data<K extends Knowledge> extends DataProtocol<K>, WithPath, Localizable.WithName, WithIndependentConfigPage {
@Override
default String localizationKey(String... paths) {
List<String> fullPaths = new ArrayList<>(List.of(path()));
fullPaths.addAll(List.of(paths));

return KnowledgesClient.DATA.localizationKey(this, fullPaths.toArray(String[]::new));
paths[0] = path() + Separator.REALM + paths[0];
return KnowledgesClient.DATA.localizationKey(this, paths);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
import me.shedaniel.autoconfig.serializer.PartitioningSerializer;
import net.krlite.equator.math.algebra.Theory;
import net.krlite.knowledges.impl.component.CrosshairComponent;
Expand All @@ -23,8 +22,6 @@ public class KnowledgesClientConfig extends PartitioningSerializer.GlobalData {
public static class General implements ConfigData {
public double mainScalar = 1.0;
public double crosshairSafeAreaScalar = 1.0;
public double crosshairPrimaryOpacity = 0.72;
public double crosshairSecondaryOpacity = 0.5;
public boolean visibleInDebugHud = false;

public int mainScalarAsInt() {
Expand All @@ -42,22 +39,6 @@ public int crosshairSafeAreaScalarAsInt() {
public void crosshairSafeAreaScalarAsInt(int scalar) {
crosshairSafeAreaScalar = Theory.clamp(scalar / 1000.0, 0.5, 2.0);
}

public int crosshairPrimaryOpacityAsInt() {
return (int) (crosshairPrimaryOpacity * 1000);
}

public void crosshairPrimaryOpacityAsInt(int opacity) {
crosshairPrimaryOpacity = Theory.clamp(opacity / 1000.0, 0.1, 1.0);
}

public int crosshairSecondaryOpacityAsInt() {
return (int) (crosshairSecondaryOpacity * 1000);
}

public void crosshairSecondaryOpacityAsInt(int opacity) {
crosshairSecondaryOpacity = Theory.clamp(opacity / 1000.0, 0.1, 1.0);
}
}

@Config(name = "components")
Expand All @@ -75,6 +56,24 @@ public static class Crosshair {
public boolean textsRightEnabled = true;
public boolean textsLeftEnabled = true;
public boolean subtitlesEnabled = true;
public double primaryOpacity = 0.72;
public double secondaryOpacity = 0.5;

public int primaryOpacityAsInt() {
return (int) (primaryOpacity * 1000);
}

public void primaryOpacityAsInt(int opacity) {
primaryOpacity = Theory.clamp(opacity / 1000.0, 0.1, 1.0);
}

public int secondaryOpacityAsInt() {
return (int) (secondaryOpacity * 1000);
}

public void secondaryOpacityAsInt(int opacity) {
secondaryOpacity = Theory.clamp(opacity / 1000.0, 0.1, 1.0);
}
}

public static class InfoBlock {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import org.apache.commons.lang3.ArrayUtils;

import java.util.*;
import java.util.function.Function;
Expand Down Expand Up @@ -109,6 +110,10 @@ public static MutableText localize(String... paths) {
return Text.translatable(localizationKey(paths));
}

public static MutableText localizeTooltip(String... paths) {
return localize(ArrayUtils.add(paths, "tooltip"));
}

public Screen build() {
return configBuilder.build();
}
Expand All @@ -126,7 +131,7 @@ private void initGeneralEntries() {
500, 2000
)
.setDefaultValue(KnowledgesClient.DEFAULT_CONFIG.general.mainScalarAsInt())
.setTooltip(localize("general", "main_scalar", "tooltip"))
.setTooltip(localizeTooltip("general", "main_scalar"))
.setSaveConsumer(KnowledgesClient.CONFIG.get().general::mainScalarAsInt)
.setTextGetter(value -> Text.literal(String.format("%.2f", value / 1000.0)))
.build()
Expand All @@ -139,45 +144,19 @@ private void initGeneralEntries() {
500, 2000
)
.setDefaultValue(KnowledgesClient.DEFAULT_CONFIG.general.crosshairSafeAreaScalarAsInt())
.setTooltip(localize("general", "crosshair_safe_area_scalar", "tooltip"))
.setTooltip(localizeTooltip("general", "crosshair_safe_area_scalar"))
.setSaveConsumer(KnowledgesClient.CONFIG.get().general::crosshairSafeAreaScalarAsInt)
.setTextGetter(value -> Text.literal(String.format("%.2f", value / 1000.0)))
.build()
);

category.addEntry(
entryBuilder.startIntSlider(
localize("general", "crosshair_primary_opacity"),
KnowledgesClient.CONFIG.get().general.crosshairPrimaryOpacityAsInt(),
100, 1000
)
.setDefaultValue(KnowledgesClient.DEFAULT_CONFIG.general.crosshairPrimaryOpacityAsInt())
.setTooltip(localize("general", "crosshair_primary_opacity", "tooltip"))
.setSaveConsumer(KnowledgesClient.CONFIG.get().general::crosshairPrimaryOpacityAsInt)
.setTextGetter(value -> Text.literal(String.format("%.2f", value / 1000.0)))
.build()
);

category.addEntry(
entryBuilder.startIntSlider(
localize("general", "crosshair_secondary_opacity"),
KnowledgesClient.CONFIG.get().general.crosshairSecondaryOpacityAsInt(),
100, 1000
)
.setDefaultValue(KnowledgesClient.DEFAULT_CONFIG.general.crosshairSecondaryOpacityAsInt())
.setTooltip(localize("general", "crosshair_secondary_opacity", "tooltip"))
.setSaveConsumer(KnowledgesClient.CONFIG.get().general::crosshairSecondaryOpacityAsInt)
.setTextGetter(value -> Text.literal(String.format("%.2f", value / 1000.0)))
.build()
);

category.addEntry(
entryBuilder.startBooleanToggle(
localize("general", "visible_in_debug_hud"),
KnowledgesClient.CONFIG.get().general.visibleInDebugHud
)
.setDefaultValue(KnowledgesClient.DEFAULT_CONFIG.general.visibleInDebugHud)
.setTooltip(localize("general", "visible_in_debug_hud", "tooltip"))
.setTooltip(localizeTooltip("general", "visible_in_debug_hud"))
.setSaveConsumer(value -> KnowledgesClient.CONFIG.get().general.visibleInDebugHud = value)
.build()
);
Expand Down
Loading

0 comments on commit 8074c1d

Please sign in to comment.