From 5569caf610d23cd86da6c6fe5281c64fd19e116d Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:46:20 +0200 Subject: [PATCH] Improve horse armor patch in 1.8->1.9 (#3773) --- .../protocol1_9to1_8/storage/EntityTracker1_9.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java index 5d344a1d1..0c2899691 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java @@ -175,11 +175,13 @@ public class EntityTracker1_9 extends EntityTrackerBase { } } - //ECHOPET Patch - if (type == EntityType.HORSE) { - // Wrong metadata value from EchoPet, patch since it's discontinued. (https://github.com/DSH105/EchoPet/blob/06947a8b08ce40be9a518c2982af494b3b99d140/modules/API/src/main/java/com/dsh105/echopet/compat/api/entity/HorseArmour.java#L22) - if (metadata.id() == 16 && (int) metadata.getValue() == Integer.MIN_VALUE) + // 1.8 can handle out of range values and will just not show any armor, 1.9+ clients will get + // exceptions and won't render the entity at all + if (type == EntityType.HORSE && metadata.id() == 16) { + final int value = metadata.value(); + if (value < 0 || value > 3) { // no armor, iron armor, gold armor and diamond armor metadata.setValue(0); + } } if (type == EntityType.PLAYER) {