Skip to content

Commit 37c0466

Browse files
Add EntityDefinition#is
1 parent c1a8564 commit 37c0466

File tree

7 files changed

+73
-62
lines changed

7 files changed

+73
-62
lines changed

core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.geysermc.geyser.translator.entity.EntityMetadataTranslator;
3939
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
4040
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
41+
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.BuiltinEntityType;
4142

4243
import java.util.List;
4344
import java.util.function.BiConsumer;
@@ -66,6 +67,8 @@ public EntityDefinition(EntityFactory<T> factory, String bedrockIdentifier,
6667
this.registeredProperties = registeredProperties;
6768
}
6869

70+
public abstract boolean is(BuiltinEntityType type);
71+
6972
@Setter
7073
@Accessors(fluent = true, chain = true)
7174
public static abstract class Builder<T extends Entity> extends EntityDefinitionBase.Builder<T> {

core/src/main/java/org/geysermc/geyser/entity/EntityDefinitionBase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public <M> void translateMetadata(T entity, EntityMetadata<M, ? extends Metadata
7676
}
7777

7878
if (translator.acceptedType() != metadata.getType()) {
79-
GeyserImpl.getInstance().getLogger().warning("Metadata ID " + metadata.getId() + " was received with type " + metadata.getType() + " but we expected " + translator.acceptedType() + " for " + entity.getDefinition().entityType());
79+
GeyserImpl.getInstance().getLogger().warning("Metadata ID " + metadata.getId() + " was received with type " + metadata.getType() + " but we expected " + translator.acceptedType() + " for " + entity.getDefinition().bedrockIdentifier());
8080
if (GeyserImpl.getInstance().getConfig().isDebugMode()) {
8181
GeyserImpl.getInstance().getLogger().debug(metadata.toString());
8282
}

core/src/main/java/org/geysermc/geyser/entity/GeyserCustomEntityDefinition.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.geysermc.geyser.translator.entity.EntityMetadataTranslator;
4646
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
4747
import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
48+
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.BuiltinEntityType;
4849

4950
import java.util.List;
5051
import java.util.Objects;
@@ -65,6 +66,11 @@ public GeyserCustomEntityDefinition(EntityFactory<T> factory, String bedrockIden
6566
this.predicateStrategy = predicateStrategy;
6667
}
6768

69+
@Override
70+
public boolean is(BuiltinEntityType type) {
71+
return false;
72+
}
73+
6874
public static Builder<?> inherited(String bedrockIdentifier, JavaEntityType vanillaType) {
6975
if (!vanillaType.vanilla()) {
7076
throw new IllegalArgumentException("vanillaType must be a vanilla entity type, was: " + vanillaType);

core/src/main/java/org/geysermc/geyser/entity/VanillaEntityDefinition.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ public VanillaEntityDefinition(EntityFactory<T> factory, GeyserEntityType entity
5656
this.entityType = entityType;
5757
}
5858

59+
@Override
60+
public boolean is(BuiltinEntityType builtin) {
61+
return entityType.is(builtin);
62+
}
63+
5964
public static <T extends Entity> Builder<T> builder(EntityFactory<T> factory) {
6065
return new Builder<>(factory);
6166
}

core/src/main/java/org/geysermc/geyser/entity/type/ThrowableEntity.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
3232
import org.cloudburstmc.protocol.bedrock.packet.MoveEntityDeltaPacket;
3333
import org.geysermc.geyser.entity.EntityDefinition;
34-
import org.geysermc.geyser.entity.GeyserEntityType;
3534
import org.geysermc.geyser.level.block.BlockStateValues;
3635
import org.geysermc.geyser.session.GeyserSession;
3736
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.BuiltinEntityType;
@@ -120,16 +119,15 @@ protected void moveAbsoluteImmediate(Vector3f position, float yaw, float pitch,
120119
*/
121120
protected float getGravity() {
122121
if (getFlag(EntityFlag.HAS_GRAVITY)) {
123-
GeyserEntityType type = definition.entityType();
124-
if (type.is(BuiltinEntityType.LINGERING_POTION) || type.is(BuiltinEntityType.SPLASH_POTION)) {
122+
if (definition.is(BuiltinEntityType.LINGERING_POTION) || definition.is(BuiltinEntityType.SPLASH_POTION)) {
125123
return 0.05f;
126-
} else if (type.is(BuiltinEntityType.EXPERIENCE_BOTTLE)) {
124+
} else if (definition.is(BuiltinEntityType.EXPERIENCE_BOTTLE)) {
127125
return 0.07f;
128-
} else if (type.is(BuiltinEntityType.FIREBALL) || type.is(BuiltinEntityType.SHULKER_BULLET)) {
126+
} else if (definition.is(BuiltinEntityType.FIREBALL) || definition.is(BuiltinEntityType.SHULKER_BULLET)) {
129127
return 0;
130-
} else if (type.is(BuiltinEntityType.SNOWBALL) || type.is(BuiltinEntityType.EGG) || type.is(BuiltinEntityType.ENDER_PEARL)) {
128+
} else if (definition.is(BuiltinEntityType.SNOWBALL) || definition.is(BuiltinEntityType.EGG) || definition.is(BuiltinEntityType.ENDER_PEARL)) {
131129
return 0.03f;
132-
} else if (type.is(BuiltinEntityType.LLAMA_SPIT)) {
130+
} else if (definition.is(BuiltinEntityType.LLAMA_SPIT)) {
133131
return 0.06f;
134132
}
135133
}
@@ -143,13 +141,12 @@ protected float getDrag() {
143141
if (isInWater()) {
144142
return 0.8f;
145143
} else {
146-
GeyserEntityType type = definition.entityType();
147-
if (type.is(BuiltinEntityType.LINGERING_POTION) || type.is(BuiltinEntityType.SPLASH_POTION) || type.is(BuiltinEntityType.EXPERIENCE_BOTTLE)
148-
|| type.is(BuiltinEntityType.SNOWBALL) || type.is(BuiltinEntityType.EGG) || type.is(BuiltinEntityType.ENDER_PEARL) || type.is(BuiltinEntityType.LLAMA_SPIT)) {
144+
if (definition.is(BuiltinEntityType.LINGERING_POTION) || definition.is(BuiltinEntityType.SPLASH_POTION) || definition.is(BuiltinEntityType.EXPERIENCE_BOTTLE)
145+
|| definition.is(BuiltinEntityType.SNOWBALL) || definition.is(BuiltinEntityType.EGG) || definition.is(BuiltinEntityType.ENDER_PEARL) || definition.is(BuiltinEntityType.LLAMA_SPIT)) {
149146
return 0.99f;
150-
} else if (type.is(BuiltinEntityType.FIREBALL) || type.is(BuiltinEntityType.SMALL_FIREBALL) || type.is(BuiltinEntityType.DRAGON_FIREBALL)) {
147+
} else if (definition.is(BuiltinEntityType.FIREBALL) || definition.is(BuiltinEntityType.SMALL_FIREBALL) || definition.is(BuiltinEntityType.DRAGON_FIREBALL)) {
151148
return 0.95f;
152-
} else if (type.is(BuiltinEntityType.SHULKER_BULLET)) {
149+
} else if (definition.is(BuiltinEntityType.SHULKER_BULLET)) {
153150
return 1;
154151
}
155152
}
@@ -166,7 +163,7 @@ protected boolean isInWater() {
166163

167164
@Override
168165
public void despawnEntity() {
169-
if (definition.entityType().is(BuiltinEntityType.ENDER_PEARL)) {
166+
if (definition.is(BuiltinEntityType.ENDER_PEARL)) {
170167
LevelEventPacket particlePacket = new LevelEventPacket();
171168
particlePacket.setType(LevelEvent.PARTICLE_TELEPORT);
172169
particlePacket.setPosition(position);

core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetPassengersTranslator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.cloudburstmc.protocol.bedrock.data.entity.EntityLinkData;
3131
import org.cloudburstmc.protocol.bedrock.packet.SetEntityLinkPacket;
3232
import org.geysermc.geyser.entity.EntityDefinitions;
33-
import org.geysermc.geyser.entity.GeyserEntityType;
3433
import org.geysermc.geyser.entity.type.Entity;
3534
import org.geysermc.geyser.entity.vehicle.ClientVehicle;
3635
import org.geysermc.geyser.session.GeyserSession;
@@ -126,8 +125,8 @@ public void translate(GeyserSession session, ClientboundSetPassengersPacket pack
126125

127126
entity.setPassengers(newPassengers);
128127

129-
GeyserEntityType type = entity.getDefinition().entityType();
130-
if (type.is(BuiltinEntityType.HORSE) || type.is(BuiltinEntityType.SKELETON_HORSE) || type.is(BuiltinEntityType.DONKEY) || type.is(BuiltinEntityType.MULE) || type.is(BuiltinEntityType.RAVAGER)) {
128+
if (entity.getDefinition().is(BuiltinEntityType.HORSE) || entity.getDefinition().is(BuiltinEntityType.SKELETON_HORSE) || entity.getDefinition().is(BuiltinEntityType.DONKEY)
129+
|| entity.getDefinition().is(BuiltinEntityType.MULE) || entity.getDefinition().is(BuiltinEntityType.RAVAGER)) {
131130
entity.getDirtyMetadata().put(EntityDataTypes.SEAT_ROTATION_OFFSET_DEGREES, 181.0f);
132131
entity.updateBedrockMetadata();
133132
}

0 commit comments

Comments
 (0)