From 238573536b3d4f2419cd79407c951d148861ad66 Mon Sep 17 00:00:00 2001 From: oryxel Date: Thu, 11 Dec 2025 21:15:37 +0700 Subject: [PATCH] Fixed nautilus entity crash, correct entity definition. (#6036) --- .../geysermc/geyser/entity/EntityDefinitions.java | 15 +++++++++------ .../animal/nautilus/AbstractNautilusEntity.java | 4 ++-- .../org/geysermc/geyser/util/EntityUtils.java | 1 + 3 files changed, 12 insertions(+), 8 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 07b925fa0..217dac8ad 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java +++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java @@ -1225,10 +1225,17 @@ public final class EntityDefinitions { .build(); } + EntityDefinition tameableEntityBase = EntityDefinition.inherited(null, ageableEntityBase) // No factory, is abstract + .addTranslator(MetadataTypes.BYTE, TameableEntity::setTameableFlags) + .addTranslator(MetadataTypes.OPTIONAL_LIVING_ENTITY_REFERENCE, TameableEntity::setOwner) + .build(); + // Nautilus { - EntityDefinition abstractNautilusBase = EntityDefinition.inherited(null, ageableEntityBase) // No factory, is abstract - .build(); + EntityDefinition abstractNautilusBase = EntityDefinition.inherited(null, tameableEntityBase) // No factory, is abstract + .width(0.95f).height(0.875f) + .addTranslator(null) + .build(); NAUTILUS = EntityDefinition.inherited(NautilusEntity::new, abstractNautilusBase) .type(EntityType.NAUTILUS) @@ -1241,10 +1248,6 @@ public final class EntityDefinitions { .build(); } - EntityDefinition tameableEntityBase = EntityDefinition.inherited(null, ageableEntityBase) // No factory, is abstract - .addTranslator(MetadataTypes.BYTE, TameableEntity::setTameableFlags) - .addTranslator(MetadataTypes.OPTIONAL_LIVING_ENTITY_REFERENCE, TameableEntity::setOwner) - .build(); CAT = EntityDefinition.inherited(CatEntity::new, tameableEntityBase) .type(EntityType.CAT) .height(0.35f).width(0.3f) diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/nautilus/AbstractNautilusEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/nautilus/AbstractNautilusEntity.java index b577ae87a..127335303 100644 --- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/nautilus/AbstractNautilusEntity.java +++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/nautilus/AbstractNautilusEntity.java @@ -32,7 +32,7 @@ import org.cloudburstmc.math.vector.Vector2f; import org.cloudburstmc.math.vector.Vector3f; import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag; import org.geysermc.geyser.entity.EntityDefinition; -import org.geysermc.geyser.entity.type.living.animal.AnimalEntity; +import org.geysermc.geyser.entity.type.living.animal.tameable.TameableEntity; import org.geysermc.geyser.entity.vehicle.ClientVehicle; import org.geysermc.geyser.entity.vehicle.NautilusVehicleComponent; import org.geysermc.geyser.entity.vehicle.VehicleComponent; @@ -54,7 +54,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet; import java.util.UUID; -public abstract class AbstractNautilusEntity extends AnimalEntity implements ClientVehicle { +public abstract class AbstractNautilusEntity extends TameableEntity implements ClientVehicle { private HolderSet repairableItems = null; private boolean isCurseOfBinding = false; private final NautilusVehicleComponent vehicleComponent; diff --git a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java index 915db8b3a..831764f69 100644 --- a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java +++ b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java @@ -95,6 +95,7 @@ public final class EntityUtils { case OOZING -> 34; case INFESTED -> 35; case RAID_OMEN -> 36; + case BREATH_OF_THE_NAUTILUS -> 37; default -> effect.ordinal() + 1; }; }