From 5876cca4429e584455b47e43dc8025e20ead16f3 Mon Sep 17 00:00:00 2001 From: Doc Date: Thu, 21 Dec 2023 08:19:29 +1100 Subject: [PATCH] SPIGOT-7550: Fix creation of Arrow instances --- src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java | 2 +- .../java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index dfe6110ef..5ad14d4a3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -93,7 +93,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { CraftEntityTypes.EntityTypeData entityTypeData = CraftEntityTypes.getEntityTypeData(CraftEntityType.minecraftToBukkit(entity.getType())); if (entityTypeData != null) { - return entityTypeData.convertFunction().apply(server, entity); + return (CraftEntity) entityTypeData.convertFunction().apply(server, entity); } throw new AssertionError("Unknown entity " + (entity == null ? null : entity.getClass())); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java index d1258cfd7..658734fd2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntityTypes.java @@ -184,7 +184,7 @@ public final class CraftEntityTypes { public record EntityTypeData(EntityType entityType, Class entityClass, - BiFunction convertFunction, + BiFunction convertFunction, Function spawnFunction) { } @@ -340,7 +340,7 @@ public final class CraftEntityTypes { register(new EntityTypeData<>(EntityType.GLOW_ITEM_FRAME, GlowItemFrame.class, CraftGlowItemFrame::new, createHanging(GlowItemFrame.class, (spawnData, hangingData) -> new net.minecraft.world.entity.decoration.GlowItemFrame(spawnData.minecraftWorld(), hangingData.position(), hangingData.direction())))); // Move no rotation - register(new EntityTypeData<>(EntityType.ARROW, Arrow.class, CraftArrow::new, createAndMoveEmptyRot(EntityTypes.ARROW))); + register(new EntityTypeData<>(EntityType.ARROW, Arrow.class, CraftTippedArrow::new, createAndMoveEmptyRot(EntityTypes.ARROW))); register(new EntityTypeData<>(EntityType.ENDER_PEARL, EnderPearl.class, CraftEnderPearl::new, createAndMoveEmptyRot(EntityTypes.ENDER_PEARL))); register(new EntityTypeData<>(EntityType.THROWN_EXP_BOTTLE, ThrownExpBottle.class, CraftThrownExpBottle::new, createAndMoveEmptyRot(EntityTypes.EXPERIENCE_BOTTLE))); register(new EntityTypeData<>(EntityType.SPECTRAL_ARROW, SpectralArrow.class, CraftSpectralArrow::new, createAndMoveEmptyRot(EntityTypes.SPECTRAL_ARROW)));