Fix entity data handling.

Co-authored-by: oragejuice <lnadav941@gmail.com>
This commit is contained in:
basaigh 2024-04-29 18:44:26 +01:00
parent 7cd054175a
commit 53f1441f29
3 changed files with 32 additions and 36 deletions

View file

@ -1,10 +0,0 @@
package org.geysermc.mcprotocollib.protocol.data.game.entity.object;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class SplashPotionData implements ObjectData {
private final int potionData;
}

View file

@ -1,11 +1,13 @@
package org.geysermc.mcprotocollib.protocol.data.game.entity.type;
import lombok.Getter;
public enum EntityType {
ALLAY,
AREA_EFFECT_CLOUD,
ARMADILLO,
ARMOR_STAND,
ARROW,
ARROW(true),
AXOLOTL,
BAT,
BEE,
@ -14,7 +16,7 @@ public enum EntityType {
BOAT,
BOGGED,
BREEZE,
BREEZE_WIND_CHARGE,
BREEZE_WIND_CHARGE(true),
CAMEL,
CAT,
CAVE_SPIDER,
@ -27,22 +29,22 @@ public enum EntityType {
CREEPER,
DOLPHIN,
DONKEY,
DRAGON_FIREBALL,
DRAGON_FIREBALL(true),
DROWNED,
EGG,
EGG(true),
ELDER_GUARDIAN,
END_CRYSTAL,
ENDER_DRAGON,
ENDER_PEARL,
ENDER_PEARL(true),
ENDERMAN,
ENDERMITE,
EVOKER,
EVOKER_FANGS,
EXPERIENCE_BOTTLE,
EXPERIENCE_BOTTLE(true),
EXPERIENCE_ORB,
EYE_OF_ENDER,
FALLING_BLOCK,
FIREWORK_ROCKET,
FIREWORK_ROCKET(true),
FOX,
FROG,
FURNACE_MINECART,
@ -63,11 +65,11 @@ public enum EntityType {
ITEM_DISPLAY,
ITEM_FRAME,
OMINOUS_ITEM_SPAWNER,
FIREBALL,
FIREBALL(true),
LEASH_KNOT,
LIGHTNING_BOLT,
LLAMA,
LLAMA_SPIT,
LLAMA_SPIT(true),
MAGMA_CUBE,
MARKER,
MINECART,
@ -83,24 +85,24 @@ public enum EntityType {
PIGLIN_BRUTE,
PILLAGER,
POLAR_BEAR,
POTION,
POTION(true),
PUFFERFISH,
RABBIT,
RAVAGER,
SALMON,
SHEEP,
SHULKER,
SHULKER_BULLET,
SHULKER_BULLET(true),
SILVERFISH,
SKELETON,
SKELETON_HORSE,
SLIME,
SMALL_FIREBALL,
SMALL_FIREBALL(true),
SNIFFER,
SNOW_GOLEM,
SNOWBALL,
SNOWBALL(true),
SPAWNER_MINECART,
SPECTRAL_ARROW,
SPECTRAL_ARROW(true),
SPIDER,
SQUID,
STRAY,
@ -110,7 +112,7 @@ public enum EntityType {
TNT,
TNT_MINECART,
TRADER_LLAMA,
TRIDENT,
TRIDENT(true),
TROPICAL_FISH,
TURTLE,
VEX,
@ -118,11 +120,11 @@ public enum EntityType {
VINDICATOR,
WANDERING_TRADER,
WARDEN,
WIND_CHARGE,
WIND_CHARGE(true),
WITCH,
WITHER,
WITHER_SKELETON,
WITHER_SKULL,
WITHER_SKULL(true),
WOLF,
ZOGLIN,
ZOMBIE,
@ -130,7 +132,18 @@ public enum EntityType {
ZOMBIE_VILLAGER,
ZOMBIFIED_PIGLIN,
PLAYER,
FISHING_BOBBER;
FISHING_BOBBER(true);
@Getter
private final boolean projectile;
EntityType() {
this.projectile = false;
}
EntityType(boolean projectile) {
this.projectile = projectile;
}
private static final EntityType[] VALUES = values();

View file

@ -13,7 +13,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.object.GenericObject
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.MinecartType;
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.ObjectData;
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.ProjectileData;
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.SplashPotionData;
import org.geysermc.mcprotocollib.protocol.data.game.entity.object.WardenData;
import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
@ -73,11 +72,7 @@ public class ClientboundAddEntityPacket implements MinecraftPacket {
this.data = Direction.VALUES[data];
} else if (this.type == EntityType.FALLING_BLOCK) {
this.data = new FallingBlockData(data & 65535, data >> 16);
} else if (this.type == EntityType.POTION) {
this.data = new SplashPotionData(data);
} else if (this.type == EntityType.SPECTRAL_ARROW || this.type == EntityType.FIREBALL || this.type == EntityType.SMALL_FIREBALL
|| this.type == EntityType.DRAGON_FIREBALL || this.type == EntityType.WITHER_SKULL || this.type == EntityType.FISHING_BOBBER
|| this.type == EntityType.BREEZE_WIND_CHARGE) {
} else if (this.type.isProjectile()) {
this.data = new ProjectileData(data);
} else if (this.type == EntityType.WARDEN) {
this.data = new WardenData(data);
@ -113,8 +108,6 @@ public class ClientboundAddEntityPacket implements MinecraftPacket {
data = ((Direction) this.data).ordinal();
} else if (this.data instanceof FallingBlockData) {
data = ((FallingBlockData) this.data).getId() | ((FallingBlockData) this.data).getMetadata() << 16;
} else if (this.data instanceof SplashPotionData) {
data = ((SplashPotionData) this.data).getPotionData();
} else if (this.data instanceof ProjectileData) {
data = ((ProjectileData) this.data).getOwnerId();
} else if (this.data instanceof GenericObjectData) {