Add default firework flight length in 1.20.5->1.20.3 (#3866)

This commit is contained in:
EnZaXD 2024-05-20 14:11:16 +02:00 committed by GitHub
parent 47f5617f83
commit d5ccb17951
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 5 deletions

View File

@ -387,6 +387,13 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
return dataItem; return dataItem;
} }
if (dataConverter.backupInconvertibleData()) {
// In 1.20.6, some items have default values which are not written into the components
if (item.identifier() == 1105 && !data.contains(StructuredDataKey.FIREWORKS)) {
data.set(StructuredDataKey.FIREWORKS, new Fireworks(1, new FireworkExplosion[0]));
}
}
for (final StructuredData<?> structuredData : data.data().values()) { for (final StructuredData<?> structuredData : data.data().values()) {
dataConverter.writeToTag(connection, structuredData, tag); dataConverter.writeToTag(connection, structuredData, tag);
} }

View File

@ -234,14 +234,16 @@ public final class StructuredDataConverter {
}); });
register(StructuredDataKey.FIREWORKS, (data, tag) -> { register(StructuredDataKey.FIREWORKS, (data, tag) -> {
final CompoundTag fireworksTag = new CompoundTag(); final CompoundTag fireworksTag = new CompoundTag();
fireworksTag.putInt("Flight", data.flightDuration()); fireworksTag.putByte("Flight", (byte) data.flightDuration());
tag.put("Fireworks", fireworksTag); tag.put("Fireworks", fireworksTag);
if (data.explosions().length > 0) {
final ListTag<CompoundTag> explosionsTag = new ListTag<>(CompoundTag.class); final ListTag<CompoundTag> explosionsTag = new ListTag<>(CompoundTag.class);
for (final FireworkExplosion explosion : data.explosions()) { for (final FireworkExplosion explosion : data.explosions()) {
explosionsTag.add(convertExplosion(explosion)); explosionsTag.add(convertExplosion(explosion));
} }
fireworksTag.put("Explosions", explosionsTag); fireworksTag.put("Explosions", explosionsTag);
}
}); });
register(StructuredDataKey.FIREWORK_EXPLOSION, (data, tag) -> tag.put("Explosion", convertExplosion(data))); register(StructuredDataKey.FIREWORK_EXPLOSION, (data, tag) -> tag.put("Explosion", convertExplosion(data)));
register(StructuredDataKey.PROFILE, (data, tag) -> { register(StructuredDataKey.PROFILE, (data, tag) -> {
@ -871,6 +873,10 @@ public final class StructuredDataConverter {
rewriters.put(key, c); rewriters.put(key, c);
} }
public boolean backupInconvertibleData() {
return backupInconvertibleData;
}
@FunctionalInterface @FunctionalInterface
interface SimpleDataConverter<T> { interface SimpleDataConverter<T> {