From 37d04a2c6f47b158cc3f71aa0d65aee318616baa Mon Sep 17 00:00:00 2001 From: onebeastchris Date: Sat, 29 Mar 2025 02:40:04 +0100 Subject: [PATCH] Fix saddle inventory slot setting --- .../geysermc/geyser/entity/EntityDefinitions.java | 2 +- .../geysermc/geyser/entity/type/LivingEntity.java | 15 ++++++++------- .../living/animal/horse/AbstractHorseEntity.java | 2 -- .../java/entity/JavaSetEquipmentTranslator.java | 3 +++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java index 5703ea475..a80282333 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java +++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java @@ -482,7 +482,7 @@ public final class EntityDefinitions { .identifier("minecraft:splash_potion") .build(); LINGERING_POTION = EntityDefinition.inherited(ThrownPotionEntity::new, throwableItemBase) - .type(EntityType.SPLASH_POTION) + .type(EntityType.LINGERING_POTION) .heightAndWidth(0.25f) .identifier("minecraft:splash_potion") .build(); diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java index 6ef6ba0c9..928e9b764 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java @@ -136,15 +136,17 @@ public class LivingEntity extends Entity { this.body = ItemTranslator.translateToBedrock(session, stack); } - public void setSaddle(ItemStack stack) { + public void setSaddle(@Nullable ItemStack stack) { this.saddle = ItemTranslator.translateToBedrock(session, stack); boolean saddled = false; - Item item = Registries.JAVA_ITEMS.get(stack.getId()); - if (item != null) { - DataComponents components = item.gatherComponents(stack.getDataComponentsPatch()); - Equippable equippable = components.get(DataComponentTypes.EQUIPPABLE); - saddled = equippable != null && equippable.slot() == EquipmentSlot.SADDLE; + if (stack != null) { + Item item = Registries.JAVA_ITEMS.get(stack.getId()); + if (item != null) { + DataComponents components = item.gatherComponents(stack.getDataComponentsPatch()); + Equippable equippable = components.get(DataComponentTypes.EQUIPPABLE); + saddled = equippable != null && equippable.slot() == EquipmentSlot.SADDLE; + } } updateSaddled(saddled); @@ -163,7 +165,6 @@ public class LivingEntity extends Entity { updateBedrockMetadata(); // Update the interactive tag, if necessary - // TODO 1.21.5 retest Entity mouseoverEntity = session.getMouseoverEntity(); if (mouseoverEntity != null && mouseoverEntity.getEntityId() == entityId) { mouseoverEntity.updateInteractiveTag(); diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java index 80995be1c..7b6184579 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java @@ -86,11 +86,9 @@ public class AbstractHorseEntity extends AnimalEntity { super.updateSaddled(saddled); } - // TODO 1.21.5 saddled flag doesnt exist anymore public void setHorseFlags(ByteEntityMetadata entityMetadata) { byte xd = entityMetadata.getPrimitiveValue(); boolean tamed = (xd & 0x02) == 0x02; - boolean saddled = (xd & 0x04) == 0x04; setFlag(EntityFlag.TAMED, tamed); setFlag(EntityFlag.EATING, (xd & 0x10) == 0x10); setFlag(EntityFlag.STANDING, (xd & 0x20) == 0x20); diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java index 388c03bab..7e43ef6e1 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java @@ -92,6 +92,9 @@ public class JavaSetEquipmentTranslator extends PacketTranslator { + livingEntity.setSaddle(stack); + } case MAIN_HAND -> { livingEntity.setHand(stack); mainHandUpdated = true;