Skip to content

Commit 0d460b4

Browse files
committed
Add missing backup code to 1.21.2->1.21 item handling
Signed-off-by: Florian Reuth <git@florianreuth.de>
1 parent cbafc05 commit 0d460b4

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

‎common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_2to1_21/rewriter/BlockItemPacketRewriter1_21_2.java‎

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,21 @@
4545
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
4646
import com.viaversion.viaversion.api.minecraft.item.Item;
4747
import com.viaversion.viaversion.api.minecraft.item.StructuredItem;
48+
import com.viaversion.viaversion.api.minecraft.item.data.DamageResistant1_21_2;
4849
import com.viaversion.viaversion.api.minecraft.item.data.DeathProtection;
4950
import com.viaversion.viaversion.api.minecraft.item.data.Enchantable;
5051
import com.viaversion.viaversion.api.minecraft.item.data.Enchantments;
5152
import com.viaversion.viaversion.api.minecraft.item.data.Equippable;
5253
import com.viaversion.viaversion.api.minecraft.item.data.FoodProperties1_20_5;
5354
import com.viaversion.viaversion.api.minecraft.item.data.Instrument1_21_2;
5455
import com.viaversion.viaversion.api.minecraft.item.data.ItemModel;
56+
import com.viaversion.viaversion.api.minecraft.item.data.PotionContents;
5557
import com.viaversion.viaversion.api.minecraft.item.data.PotionEffect;
5658
import com.viaversion.viaversion.api.minecraft.item.data.PotionEffectData;
5759
import com.viaversion.viaversion.api.minecraft.item.data.Repairable;
5860
import com.viaversion.viaversion.api.minecraft.item.data.UseCooldown;
5961
import com.viaversion.viaversion.api.minecraft.item.data.consumable.ApplyStatusEffects;
62+
import com.viaversion.viaversion.api.minecraft.item.data.consumable.Consumable1_21_2;
6063
import com.viaversion.viaversion.api.minecraft.item.data.consumable.ConsumeEffect;
6164
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
6265
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
@@ -570,6 +573,34 @@ private void backupInconvertibleData(final Item item) {
570573
backupTag.put("death_protection", tag);
571574
}
572575

576+
final Consumable1_21_2 consumable = data.get(StructuredDataKey.CONSUMABLE1_21_2);
577+
if (consumable != null) {
578+
final CompoundTag tag = new CompoundTag();
579+
tag.putFloat("consume_seconds", consumable.consumeSeconds());
580+
tag.putInt("animation", consumable.animationType());
581+
saveSoundEventHolder(tag, consumable.sound());
582+
tag.putBoolean("has_consume_particles", consumable.hasConsumeParticles());
583+
584+
final ListTag<CompoundTag> effects = new ListTag<>(CompoundTag.class);
585+
for (final ConsumeEffect<?> effect : consumable.consumeEffects()) {
586+
final CompoundTag effectTag = new CompoundTag();
587+
convertConsumableEffect(effectTag, effect);
588+
effects.add(effectTag);
589+
}
590+
tag.put("consume_effects", effects);
591+
backupTag.put("consumable", tag);
592+
}
593+
594+
final DamageResistant1_21_2 damageResistant = data.get(StructuredDataKey.DAMAGE_RESISTANT1_21_2);
595+
if (damageResistant != null) {
596+
backupTag.putString("damage_resistant", damageResistant.typesTagKey().original());
597+
}
598+
599+
final PotionContents potionContents = data.get(StructuredDataKey.POTION_CONTENTS1_21_2);
600+
if (potionContents != null && potionContents.customName() != null) {
601+
backupTag.putString("potion_custom_name", potionContents.customName());
602+
}
603+
573604
if (!backupTag.isEmpty()) {
574605
saveTag(createCustomTag(item), backupTag, "inconvertible_data");
575606
}
@@ -730,6 +761,34 @@ private void restoreInconvertibleData(final Item item) {
730761
data.set(StructuredDataKey.DEATH_PROTECTION1_21_2, new DeathProtection(effects.toArray(ConsumeEffect[]::new)));
731762
}
732763

764+
final CompoundTag consumable = backupTag.getCompoundTag("consumable");
765+
if (consumable != null) {
766+
final List<ConsumeEffect<?>> effects = new ArrayList<>();
767+
for (final CompoundTag effectTag : consumable.getListTag("consume_effects", CompoundTag.class)) {
768+
final ConsumeEffect<?> effect = convertConsumableEffect(effectTag);
769+
if (effect != null) {
770+
effects.add(effect);
771+
}
772+
}
773+
data.set(StructuredDataKey.CONSUMABLE1_21_2, new Consumable1_21_2(
774+
consumable.getFloat("consume_seconds"),
775+
consumable.getInt("animation"),
776+
restoreSoundEventHolder(consumable),
777+
consumable.getBoolean("has_consume_particles"),
778+
effects.toArray(ConsumeEffect[]::new)
779+
));
780+
}
781+
782+
final String damageResistant = backupTag.getString("damage_resistant");
783+
if (damageResistant != null) {
784+
data.set(StructuredDataKey.DAMAGE_RESISTANT1_21_2, new DamageResistant1_21_2(Key.of(damageResistant)));
785+
}
786+
787+
final String potionCustomName = backupTag.getString("potion_custom_name");
788+
if (potionCustomName != null) {
789+
data.replace(StructuredDataKey.POTION_CONTENTS1_21_2, potionContents -> new PotionContents(potionContents.potion(), potionContents.customColor(), potionContents.customEffects(), potionCustomName));
790+
}
791+
733792
removeCustomTag(data, customData);
734793
}
735794
}

0 commit comments

Comments
 (0)