mirror of
https://github.com/ViaVersion/ViaVersion.git
synced 2024-11-22 01:55:47 +01:00
Handle attribute_modifiers inside container components in 1.21->1.20.5 (#4035)
Closes https://github.com/ViaVersion/ViaVersion/issues/3968
This commit is contained in:
parent
7f4faab4ab
commit
35fa7e78a0
@ -34,20 +34,42 @@ public final class ComponentRewriter1_21 extends ComponentRewriter<ClientboundPa
|
|||||||
super(protocol, ReadType.NBT);
|
super(protocol, ReadType.NBT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void convertAttributeModifiersComponent(final CompoundTag tag) {
|
||||||
protected void handleShowItem(final UserConnection connection, final CompoundTag componentsTag) {
|
final CompoundTag attributeModifiers = TagUtil.getNamespacedCompoundTag(tag, "minecraft:attribute_modifiers");
|
||||||
final CompoundTag attributeModifiers = TagUtil.getNamespacedCompoundTag(componentsTag, "minecraft:attribute_modifiers");
|
if (attributeModifiers == null) {
|
||||||
if (attributeModifiers != null) {
|
return;
|
||||||
final ListTag<CompoundTag> modifiers = attributeModifiers.getListTag("modifiers", CompoundTag.class);
|
}
|
||||||
for (final CompoundTag modifier : modifiers) {
|
final ListTag<CompoundTag> modifiers = attributeModifiers.getListTag("modifiers", CompoundTag.class);
|
||||||
final String name = modifier.getString("name");
|
for (final CompoundTag modifier : modifiers) {
|
||||||
final UUID uuid = UUIDUtil.fromIntArray(modifier.getIntArrayTag("uuid").getValue());
|
final String name = modifier.getString("name");
|
||||||
final String id = Protocol1_20_5To1_21.mapAttributeUUID(uuid, name);
|
final UUID uuid = UUIDUtil.fromIntArray(modifier.getIntArrayTag("uuid").getValue());
|
||||||
modifier.putString("id", id);
|
final String id = Protocol1_20_5To1_21.mapAttributeUUID(uuid, name);
|
||||||
|
modifier.putString("id", id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleContainerComponent(final CompoundTag tag) {
|
||||||
|
final ListTag<CompoundTag> container = TagUtil.getNamespacedCompoundTagList(tag, "minecraft:container");
|
||||||
|
if (container == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (final CompoundTag entryTag : container) {
|
||||||
|
final CompoundTag itemTag = entryTag.getCompoundTag("item");
|
||||||
|
|
||||||
|
final CompoundTag componentsTag = itemTag.getCompoundTag("components");
|
||||||
|
if (componentsTag != null) {
|
||||||
|
convertAttributeModifiersComponent(componentsTag);
|
||||||
|
handleContainerComponent(componentsTag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void handleShowItem(final UserConnection connection, final CompoundTag componentsTag) {
|
||||||
|
convertAttributeModifiersComponent(componentsTag);
|
||||||
|
handleContainerComponent(componentsTag);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected SerializerVersion inputSerializerVersion() {
|
protected SerializerVersion inputSerializerVersion() {
|
||||||
return SerializerVersion.V1_20_5;
|
return SerializerVersion.V1_20_5;
|
||||||
|
@ -64,6 +64,11 @@ public final class TagUtil {
|
|||||||
return compoundTag != null ? compoundTag : tag.getCompoundTag(Key.stripMinecraftNamespace(key));
|
return compoundTag != null ? compoundTag : tag.getCompoundTag(Key.stripMinecraftNamespace(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static @Nullable ListTag<CompoundTag> getNamespacedCompoundTagList(final CompoundTag tag, final String key) {
|
||||||
|
final ListTag<CompoundTag> listTag = tag.getListTag(Key.namespaced(key), CompoundTag.class);
|
||||||
|
return listTag != null ? listTag : tag.getListTag(Key.stripMinecraftNamespace(key), CompoundTag.class);
|
||||||
|
}
|
||||||
|
|
||||||
public static Tag handleDeep(final Tag tag, final TagUpdater consumer) {
|
public static Tag handleDeep(final Tag tag, final TagUpdater consumer) {
|
||||||
return handleDeep(null, tag, consumer);
|
return handleDeep(null, tag, consumer);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user