重写Ammo名称相关调用
This commit is contained in:
parent
d3094fa6c6
commit
9ff7abfd34
7 changed files with 69 additions and 58 deletions
|
@ -106,7 +106,7 @@ public class AmmoCountOverlay implements LayeredDraw.Layer {
|
|||
var ammoBoxType = data == null ? "All" : data.type();
|
||||
|
||||
boxAmmoCount = type.get(stack);
|
||||
if (ammoBoxType.equals("All") || ammoBoxType.equals(type.name)) {
|
||||
if (ammoBoxType.equals("All") || ammoBoxType.equals(type.serializationName)) {
|
||||
boxAnimator.forward(currentTime);
|
||||
boxAmmoSelected = true;
|
||||
} else {
|
||||
|
@ -158,7 +158,7 @@ public class AmmoCountOverlay implements LayeredDraw.Layer {
|
|||
// 弹药类型
|
||||
guiGraphics.drawString(
|
||||
font,
|
||||
Component.translatable(type.translatableKey).getString(),
|
||||
Component.translatable(type.translationKey).getString(),
|
||||
ammoX + 35,
|
||||
h + yOffset,
|
||||
fontColor,
|
||||
|
|
|
@ -31,7 +31,7 @@ public class AmmoCommand {
|
|||
var type = context.getArgument("type", Ammo.class);
|
||||
|
||||
var value = type.get(player);
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.get", Component.translatable(type.translatableKey), value), true);
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.get", Component.translatable(type.translationKey), value), true);
|
||||
return 0;
|
||||
}))))
|
||||
.then(Commands.literal("set").requires(s -> s.hasPermission(2)).then(Commands.argument("players", EntityArgument.players()).then(Commands.argument("type", EnumArgument.enumArgument(Ammo.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
||||
|
@ -43,7 +43,7 @@ public class AmmoCommand {
|
|||
type.set(player, value);
|
||||
}
|
||||
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.set", Component.translatable(type.translatableKey), value, players.size()), true);
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.set", Component.translatable(type.translationKey), value, players.size()), true);
|
||||
return 0;
|
||||
})))))
|
||||
.then(Commands.literal("add").requires(s -> s.hasPermission(2)).then(Commands.argument("players", EntityArgument.players()).then(Commands.argument("type", EnumArgument.enumArgument(Ammo.class)).then(Commands.argument("value", IntegerArgumentType.integer(0)).executes(context -> {
|
||||
|
@ -55,7 +55,7 @@ public class AmmoCommand {
|
|||
type.add(player, value);
|
||||
}
|
||||
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.add", Component.translatable(type.translatableKey), value, players.size()), true);
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.ammo.add", Component.translatable(type.translationKey), value, players.size()), true);
|
||||
return 0;
|
||||
})))));
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ public class ModDataComponents {
|
|||
|
||||
public static void register(IEventBus eventBus) {
|
||||
for (var type : Ammo.values()) {
|
||||
type.dataComponent = register("ammo_" + type.name.toLowerCase(), builder -> builder.persistent(Codec.INT));
|
||||
type.dataComponent = register("ammo_" + type.name, builder -> builder.persistent(Codec.INT));
|
||||
}
|
||||
|
||||
DATA_COMPONENT_TYPES.register(eventBus);
|
||||
|
|
|
@ -57,7 +57,7 @@ public class AmmoSupplierItem extends Item {
|
|||
}
|
||||
|
||||
if (!level.isClientSide()) {
|
||||
player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.supply", Component.translatable(this.type.translatableKey), ammoToAdd * count), true);
|
||||
player.displayClientMessage(Component.translatable("item.superbwarfare.ammo_supplier.supply", Component.translatable(this.type.translationKey), ammoToAdd * count), true);
|
||||
level.playSound(null, player.blockPosition(), ModSounds.BULLET_SUPPLY.get(), SoundSource.PLAYERS, 1, 1);
|
||||
}
|
||||
return InteractionResultHolder.success(stack);
|
||||
|
|
|
@ -77,7 +77,7 @@ public class AmmoBox extends Item {
|
|||
list.add("All");
|
||||
|
||||
for (var ammoType : Ammo.values()) {
|
||||
list.add(ammoType.name);
|
||||
list.add(ammoType.serializationName);
|
||||
}
|
||||
|
||||
return list;
|
||||
|
@ -102,18 +102,10 @@ public class AmmoBox extends Item {
|
|||
return true;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case RIFLE ->
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.ammo_box.type.rifle").withStyle(ChatFormatting.GREEN), true);
|
||||
case HANDGUN ->
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.ammo_box.type.handgun").withStyle(ChatFormatting.AQUA), true);
|
||||
case SHOTGUN ->
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.ammo_box.type.shotgun").withStyle(ChatFormatting.RED), true);
|
||||
case SNIPER ->
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.ammo_box.type.sniper").withStyle(ChatFormatting.GOLD), true);
|
||||
case HEAVY ->
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.ammo_box.type.heavy").withStyle(ChatFormatting.LIGHT_PURPLE), true);
|
||||
}
|
||||
player.displayClientMessage(
|
||||
Component.translatable("des.superbwarfare.ammo_box.type." + type.name).withStyle(type.color),
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -127,24 +119,10 @@ public class AmmoBox extends Item {
|
|||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box").withStyle(ChatFormatting.GRAY));
|
||||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box.handgun").withStyle(ChatFormatting.AQUA)
|
||||
for (var ammo : Ammo.values()) {
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box." + ammo.name).withStyle(ammo.color)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(Ammo.HANDGUN.get(stack)) + ((type != Ammo.HANDGUN) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box.rifle").withStyle(ChatFormatting.GREEN)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(Ammo.RIFLE.get(stack)) + ((type != Ammo.RIFLE) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box.shotgun").withStyle(ChatFormatting.RED)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(Ammo.SHOTGUN.get(stack)) + ((type != Ammo.SHOTGUN) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box.sniper").withStyle(ChatFormatting.GOLD)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(Ammo.SNIPER.get(stack)) + ((type != Ammo.SNIPER) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
|
||||
tooltipComponents.add(Component.translatable("des.superbwarfare.ammo_box.heavy").withStyle(ChatFormatting.LIGHT_PURPLE)
|
||||
.append(Component.literal("").withStyle(ChatFormatting.RESET))
|
||||
.append(Component.literal(FormatTool.format0D(Ammo.HEAVY.get(stack)) + ((type != Ammo.HEAVY) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
.append(Component.literal(FormatTool.format0D(ammo.get(stack)) + ((type != ammo) ? " " : " ←-")).withStyle(ChatFormatting.BOLD)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -464,13 +464,7 @@ public abstract class GunItem extends Item implements CustomRendererItem {
|
|||
var type = Ammo.getType(ammoTypeInfo.value());
|
||||
assert type != null;
|
||||
|
||||
return switch (type) {
|
||||
case RIFLE -> "Rifle Ammo";
|
||||
case HANDGUN -> "Handgun Ammo";
|
||||
case SHOTGUN -> "Shotgun Ammo";
|
||||
case SNIPER -> "Sniper Ammo";
|
||||
case HEAVY -> "Heavy Ammo";
|
||||
};
|
||||
return type.displayName;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.tools;
|
|||
|
||||
import com.atsuishio.superbwarfare.capability.player.PlayerVariable;
|
||||
import com.atsuishio.superbwarfare.init.ModAttachments;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.component.DataComponentType;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
@ -9,23 +10,61 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.neoforged.neoforge.registries.DeferredHolder;
|
||||
|
||||
public enum Ammo {
|
||||
HANDGUN("item.superbwarfare.ammo.handgun", "HandgunAmmo"),
|
||||
RIFLE("item.superbwarfare.ammo.rifle", "RifleAmmo"),
|
||||
SHOTGUN("item.superbwarfare.ammo.shotgun", "ShotgunAmmo"),
|
||||
SNIPER("item.superbwarfare.ammo.sniper", "SniperAmmo"),
|
||||
HEAVY("item.superbwarfare.ammo.heavy", "HeavyAmmo");
|
||||
public final String translatableKey;
|
||||
HANDGUN(ChatFormatting.GREEN),
|
||||
RIFLE(ChatFormatting.AQUA),
|
||||
SHOTGUN(ChatFormatting.RED),
|
||||
SNIPER(ChatFormatting.GOLD),
|
||||
HEAVY(ChatFormatting.LIGHT_PURPLE);
|
||||
|
||||
/**
|
||||
* 翻译字段名称,如 item.superbwarfare.ammo.rifle
|
||||
*/
|
||||
public final String translationKey;
|
||||
/**
|
||||
* 大驼峰格式命名的序列化字段名称,如 RifleAmmo
|
||||
*/
|
||||
public final String serializationName;
|
||||
/**
|
||||
* 下划线格式命名的小写名称,如 rifle
|
||||
*/
|
||||
public final String name;
|
||||
|
||||
/**
|
||||
* 大驼峰格式命名的显示名称,如 Rifle Ammo
|
||||
*/
|
||||
public final String displayName;
|
||||
|
||||
public final ChatFormatting color;
|
||||
public DeferredHolder<DataComponentType<?>, DataComponentType<Integer>> dataComponent;
|
||||
|
||||
Ammo(String translatableKey, String name) {
|
||||
this.translatableKey = translatableKey;
|
||||
Ammo(ChatFormatting color) {
|
||||
this.color = color;
|
||||
|
||||
var name = name().toLowerCase();
|
||||
this.name = name;
|
||||
this.translationKey = "item.superbwarfare.ammo." + name;
|
||||
|
||||
var builder = new StringBuilder();
|
||||
var useUpperCase = true;
|
||||
|
||||
for (char c : name.toCharArray()) {
|
||||
if (c == '_') {
|
||||
useUpperCase = true;
|
||||
} else if (useUpperCase) {
|
||||
builder.append(Character.toUpperCase(c));
|
||||
useUpperCase = false;
|
||||
} else {
|
||||
builder.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
this.displayName = builder + " Ammo";
|
||||
this.serializationName = builder + "Ammo";
|
||||
}
|
||||
|
||||
public static Ammo getType(String name) {
|
||||
for (Ammo type : values()) {
|
||||
if (type.name.equals(name)) {
|
||||
if (type.serializationName.equals(name)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
@ -48,12 +87,12 @@ public enum Ammo {
|
|||
|
||||
// NBTTag
|
||||
public int get(CompoundTag tag) {
|
||||
return tag.getInt(this.name);
|
||||
return tag.getInt(this.serializationName);
|
||||
}
|
||||
|
||||
public void set(CompoundTag tag, int count) {
|
||||
if (count < 0) count = 0;
|
||||
tag.putInt(this.name, count);
|
||||
tag.putInt(this.serializationName, count);
|
||||
}
|
||||
|
||||
public void add(CompoundTag tag, int count) {
|
||||
|
@ -108,6 +147,6 @@ public enum Ammo {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
return this.serializationName;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue