WIP: Included target name in data component.

This commit is contained in:
2026-01-09 05:20:04 +01:00
parent 7421a5a18d
commit 91f3f9dbdd
2 changed files with 24 additions and 11 deletions

View File

@ -12,19 +12,22 @@ public class TotemData {
public static final Codec<TotemData> CODEC = RecordCodecBuilder.create(instance ->
instance.group(
Codec.INT.fieldOf("targetIndex").forGetter(TotemData::getTargetIndex),
Codec.STRING.fieldOf("targetUUID").forGetter(TotemData::getTargetUUID)
Codec.STRING.fieldOf("targetUUID").forGetter(TotemData::getTargetUUID),
Codec.STRING.fieldOf("targetName").forGetter(TotemData::getTargetName)
).apply(instance, TotemData::new)
);
public static final StreamCodec<ByteBuf, TotemData> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.INT, TotemData::getTargetIndex,
ByteBufCodecs.STRING_UTF8, TotemData::getTargetUUID,
ByteBufCodecs.STRING_UTF8, TotemData::getTargetName,
TotemData::new
);
private int targetIndex;
private String targetUUID;
private String targetName;
public TotemData(int targetIndex, String targetUUID) {
public TotemData(int targetIndex, String targetUUID, String targetName) {
this.targetIndex = targetIndex;
this.targetUUID = targetUUID;
}
@ -32,15 +35,22 @@ public class TotemData {
public int getTargetIndex() {
return targetIndex;
}
public void setTargetIndex(int newTargetIndex) {
targetIndex = newTargetIndex;
public void setTargetIndex(int targetIndex) {
this.targetIndex = targetIndex;
}
public String getTargetUUID() {
return targetUUID;
}
public void setTargetUUID(String newTargetUUID) {
targetUUID = newTargetUUID;
public void setTargetUUID(String targetUUID) {
this.targetUUID = targetUUID;
}
public String getTargetName() {
return targetName;
}
public void setTargetName(String targetName) {
this.targetName = targetName;
}
@Override

View File

@ -73,14 +73,17 @@ public abstract class TotemItem extends Item {
data.get().setTargetUUID(targetUUID.toString());
stack.set(ModDataComponents.TOTEM_DATA.get(), data.get());
}
@Nullable
public static String getTargetName(ItemStack stack) {
if (!isTotem(stack)) { return null; }
return stack.getOrCreateTag().getString(TAG_TARGET_NAME);
return getTotemData(stack).map(TotemData::getTargetName).orElse(null);
}
public static void setTargetName(ItemStack stack, String targetName) {
if (!isTotem(stack)) { return; }
stack.getOrCreateTag().putString(TAG_TARGET_NAME, targetName);
Optional<TotemData> data = getTotemData(stack);
if (data.isEmpty()) { return; }
data.get().setTargetName(targetName);
stack.set(ModDataComponents.TOTEM_DATA.get(), data.get());
}
public static int getTargetCost(ItemStack stack) {