Skip to content

Commit 1a972da

Browse files
committed
Fix horse saddle handling in 1.21.5->1.21.4
1 parent 44dbbf3 commit 1a972da

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/rewriter/BlockItemPacketRewriter1_21_5.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public final class BlockItemPacketRewriter1_21_5 extends BackwardsStructuredItem
9191
private static final int SIGN_BOCK_ENTITY_ID = 7;
9292
private static final int HANGING_SIGN_BOCK_ENTITY_ID = 8;
9393
private static final int SADDLE_EQUIPMENT_SLOT = 7;
94-
private static final byte SADDLED_FLAG = 4;
94+
static final byte SADDLED_FLAG = 4;
9595

9696
public BlockItemPacketRewriter1_21_5(final Protocol1_21_5To1_21_4 protocol) {
9797
super(protocol);
@@ -187,7 +187,8 @@ public void registerPackets() {
187187
final int equipmentSlot = value & 0x7F;
188188
if (equipmentSlot == SADDLE_EQUIPMENT_SLOT) {
189189
if (trackedEntity != null && trackedEntity.entityType().isOrHasParent(EntityTypes1_21_5.ABSTRACT_HORSE)) {
190-
sendSaddledEntityData(wrapper.user(), trackedEntity, entityId);
190+
final Item item = wrapper.read(itemType());
191+
sendSaddledEntityData(wrapper.user(), trackedEntity, entityId, item.identifier() == 800);
191192
}
192193
wrapper.cancel();
193194
return;
@@ -268,16 +269,24 @@ private void convertClientAsset(final PacketWrapper wrapper) {
268269
wrapper.write(Types.STRING, namespace + ":textures/" + path + ".png");
269270
}
270271

271-
private void sendSaddledEntityData(final UserConnection connection, final TrackedEntity trackedEntity, final int entityId) {
272+
private void sendSaddledEntityData(final UserConnection connection, final TrackedEntity trackedEntity, final int entityId, final boolean saddled) {
272273
byte data = 0;
273274
if (trackedEntity.hasData()) {
274275
final HorseDataStorage horseDataStorage = trackedEntity.data().get(HorseDataStorage.class);
275276
if (horseDataStorage != null) {
277+
if (horseDataStorage.saddled() == saddled) {
278+
return;
279+
}
280+
276281
data = horseDataStorage.data();
277282
}
278283
}
279-
trackedEntity.data().put(new HorseDataStorage(data, true));
280-
data = (byte) (data | SADDLED_FLAG);
284+
285+
trackedEntity.data().put(new HorseDataStorage(data, saddled));
286+
287+
if (saddled) {
288+
data = (byte) (data | SADDLED_FLAG);
289+
}
281290

282291
final PacketWrapper entityDataPacket = PacketWrapper.create(ClientboundPackets1_21_2.SET_ENTITY_DATA, connection);
283292
final List<EntityData> entityDataList = new ArrayList<>();

common/src/main/java/com/viaversion/viabackwards/protocol/v1_21_5to1_21_4/rewriter/EntityPacketRewriter1_21_5.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -306,16 +306,18 @@ protected void registerRewrites() {
306306
}));
307307

308308
filter().type(EntityTypes1_21_5.ABSTRACT_HORSE).index(17).handler((event, data) -> {
309-
// Store data for later
309+
// Store data and set saddled flag if needed
310310
final TrackedEntity entity = event.trackedEntity();
311-
if (entity.hasData()) {
312-
final HorseDataStorage horseDataStorage = entity.data().get(HorseDataStorage.class);
313-
if (horseDataStorage != null && horseDataStorage.saddled()) {
314-
entity.data().put(new HorseDataStorage(data.value(), true));
315-
return;
316-
}
311+
final byte horseData = data.value();
312+
boolean saddled = false;
313+
314+
final HorseDataStorage horseDataStorage;
315+
if (entity.hasData() && (horseDataStorage = entity.data().get(HorseDataStorage.class)) != null && horseDataStorage.saddled()) {
316+
saddled = true;
317+
data.setValue((byte) (horseData | BlockItemPacketRewriter1_21_5.SADDLED_FLAG));
317318
}
318-
entity.data().put(new HorseDataStorage(data.value(), false));
319+
320+
entity.data().put(new HorseDataStorage(horseData, saddled));
319321
});
320322

321323
filter().type(EntityTypes1_21_5.CHICKEN).cancel(17); // Chicken variant

0 commit comments

Comments
 (0)