Implemented LangAsset enum to declare translatable keys for strings. Moved message strings for reviving functionality into lang file.

This commit is contained in:
2026-01-12 22:15:41 +01:00
parent 925f244cc0
commit 24d21126b0
3 changed files with 72 additions and 14 deletions

View File

@ -1,8 +1,10 @@
package dev.micle.totem_of_reviving.item.totem;
import dev.micle.totem_of_reviving.TotemOfReviving;
import dev.micle.totem_of_reviving.component.TotemData;
import dev.micle.totem_of_reviving.setup.Config;
import dev.micle.totem_of_reviving.setup.ModDataComponents;
import dev.micle.totem_of_reviving.util.LangAsset;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
@ -20,6 +22,7 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import org.apache.commons.codec.language.bm.Lang;
import org.jetbrains.annotations.NotNull;
import org.lwjgl.glfw.GLFW;
@ -133,57 +136,65 @@ public abstract class TotemItem extends Item {
Optional<UUID> targetUUID = totemData.getTargetUUID();
if (targetUUID.isEmpty()) {
return Component.literal(ChatFormatting.WHITE + "Unable to find player!");
return LangAsset.MESSAGE_UNABLE_TO_FIND_PLAYER.getComponent().withStyle(ChatFormatting.RED);
}
ServerPlayer target = playerList.getPlayer(targetUUID.get());
if (target == null) {
return Component.literal(ChatFormatting.WHITE + "Unable to find player!");
return LangAsset.MESSAGE_UNABLE_TO_FIND_PLAYER.getComponent().withStyle(ChatFormatting.RED);
}
setTotemData(itemStack, new TotemData(
totemData = new TotemData(
totemData.getTargetIndex(),
totemData.getTargetStringUUID(),
totemData.getTargetName(),
target.getStats().getValue(Stats.CUSTOM.get(Stats.DEATHS)),
totemData.getCharge()
));
);
setTotemData(itemStack, totemData);
if (!target.isSpectator()) {
return Component.literal(ChatFormatting.GRAY + target.getDisplayName().getString() + ChatFormatting.WHITE + " is not dead!");
return LangAsset.MESSAGE_PLAYER_IS_NOT_DEAD.getComponent(
Component.literal(totemData.getTargetName()).withStyle(ChatFormatting.GRAY)
).withStyle(ChatFormatting.WHITE);
}
try (ServerLevel targetLevel = target.serverLevel()) {
if (!targetLevel.equals(user.serverLevel()) && !config.getCanReviveAcrossDimensions()) {
return Component.literal(ChatFormatting.GRAY + target.getDisplayName().getString() + ChatFormatting.WHITE + " is in a different dimension!");
return LangAsset.MESSAGE_PLAYER_IS_IN_ANOTHER_DIMENSION.getComponent(
Component.literal(totemData.getTargetName()).withStyle(ChatFormatting.GRAY)
).withStyle(ChatFormatting.WHITE);
}
} catch (IOException e) {
return Component.literal(ChatFormatting.WHITE + "Unable to get " + ChatFormatting.GRAY + target.getDisplayName().getString() + "'s " + ChatFormatting.WHITE + " level!");
return LangAsset.MESSAGE_UNABLE_TO_GET_PLAYER_WORLD.getComponent(
Component.literal(totemData.getTargetName()).withStyle(ChatFormatting.DARK_RED)
).withStyle(ChatFormatting.RED);
}
if (!totemItem.canAffordTarget(totemData)) {
return Component.literal(ChatFormatting.WHITE + "Not enough charge!");
return LangAsset.MESSAGE_NOT_ENOUGH_CHARGE.getComponent().withStyle(ChatFormatting.WHITE);
}
try (ServerLevel userLevel = user.serverLevel()) {
target.teleportTo(userLevel, user.position().x, user.position().y, user.position().z, user.getYRot(), user.getXRot());
target.setGameMode(userLevel.getServer().getDefaultGameType());
} catch (IOException e) {
return Component.literal(ChatFormatting.WHITE + "Unable to get your level!");
return LangAsset.MESSAGE_UNABLE_TO_GET_YOUR_WORLD.getComponent().withStyle(ChatFormatting.RED);
}
setTotemData(itemStack, new TotemData(
totemData = new TotemData(
totemData.getTargetIndex(),
totemData.getTargetStringUUID(),
totemData.getTargetName(),
totemData.getTargetDeaths(),
totemData.getCharge() - totemItem.getTargetCost(totemData)
));
);
setTotemData(itemStack, totemData);
itemStack.hurtAndBreak(1, user, slot);
return Component.literal(ChatFormatting.WHITE + "Successfully revived " + ChatFormatting.GRAY + target.getDisplayName().getString() + "!");
return LangAsset.MESSAGE_SUCCESSFULLY_REVIVED_TARGET.getComponent(
Component.literal(totemData.getTargetName()).withStyle(ChatFormatting.DARK_GREEN)
).withStyle(ChatFormatting.GREEN);
}
@Override

View File

@ -0,0 +1,41 @@
package dev.micle.totem_of_reviving.util;
import dev.micle.totem_of_reviving.TotemOfReviving;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.contents.TranslatableContents;
public enum LangAsset {
ITEM_GROUP_MAIN("itemGroup", "main"),
ITEM_STRAW_TOTEM("item", "straw_totem"),
ITEM_IRON_TOTEM("item", "iron_totem"),
ITEM_DIAMOND_TOTEM("item", "diamond_totem"),
ITEM_NETHERITE_TOTEM("item", "netherite_totem"),
ITEM_STRAW_CHARGE("item", "straw_charge"),
ITEM_IRON_CHARGE("item", "iron_charge"),
ITEM_DIAMOND_CHARGE("item", "diamond_charge"),
ITEM_NETHERITE_CHARGE("item", "netherite_charge"),
MESSAGE_UNABLE_TO_FIND_PLAYER("message", "unable_to_find_player"),
MESSAGE_PLAYER_IS_NOT_DEAD("message", "player_is_not_dead"),
MESSAGE_PLAYER_IS_IN_ANOTHER_DIMENSION("message", "player_is_in_another_dimension"),
MESSAGE_UNABLE_TO_GET_PLAYER_WORLD("message", "unable_to_get_player_world"),
MESSAGE_NOT_ENOUGH_CHARGE("message", "not_enough_charge"),
MESSAGE_UNABLE_TO_GET_YOUR_WORLD("message", "unable_to_get_your_world"),
MESSAGE_SUCCESSFULLY_REVIVED_TARGET("message", "successfully_revived_target");
private final String category;
private final String key;
private LangAsset(String category, String key) {
this.category = category;
this.key = key;
}
public MutableComponent getComponent() {
return getComponent(TranslatableContents.NO_ARGS);
}
public MutableComponent getComponent(Object ...args) {
return Component.translatable(String.format("%s.%s.%s", category, TotemOfReviving.MOD_ID, key), args);
}
}

View File

@ -8,5 +8,11 @@
"item.totem_of_reviving.iron_charge": "Iron reviving charge",
"item.totem_of_reviving.diamond_charge": "Diamond reviving charge",
"item.totem_of_reviving.netherite_charge": "Netherite reviving charge",
"advanced_tooltips": "advanced_tooltips"
"message.totem_of_reviving.unable_to_find_player": "Unable to find player!",
"message.totem_of_reviving.player_is_not_dead": "%s is not dead!",
"message.totem_of_reviving.player_is_in_another_dimension": "%s is in a different dimension!",
"message.totem_of_reviving.unable_to_get_player_world": "Unable to get %s's world!",
"message.totem_of_reviving.not_enough_charge": "Not enough charge!",
"message.totem_of_reviving.unable_to_get_your_world": "Unable to get your world!",
"message.totem_of_reviving.successfully_revived_target": "Successfully revived %s!"
}