diff --git a/lophine-server/minecraft-patches/features/0020-Leaves-Temporarily-fix-endermite-spawn-position.patch b/lophine-server/minecraft-patches/features/0020-Leaves-Temporarily-fix-endermite-spawn-position.patch new file mode 100644 index 0000000..d5050f4 --- /dev/null +++ b/lophine-server/minecraft-patches/features/0020-Leaves-Temporarily-fix-endermite-spawn-position.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Sat, 2 Aug 2025 12:40:53 +0800 +Subject: [PATCH] Leaves: Temporarily fix endermite spawn position + +Should be removed when [https://github.com/PaperMC/Paper/pull/12912] merged + +Co-authored by: Lumine1909 <133463833Lumine1909@users.noreply.github.com> +As a part of : Leaves (https://github.com/LeavesMC/Leaves/blob/4c4712d3304db7e977324b2bd6739f0c4433f80a/leaves-server/minecraft-patches/features/0140-Fix-endermite-spawn-position.patch) +Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) + +diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +index bded685ed1653e9a1e2d7d4a9c4f68da58a6b06e..7123e56d86db01073e8ea71ccce0f6308070c8ab 100644 +--- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java ++++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +@@ -204,6 +204,9 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { + Vec3 vec3 = this.oldPosition(); + if (owner instanceof ServerPlayer serverPlayer) { + if (serverPlayer.connection.isAcceptingMessages()) { ++ // Paper start - fix endermite spawn position ++ double x = serverPlayer.getX(), y = serverPlayer.getY(), z = serverPlayer.getZ(); ++ float yaw = serverPlayer.getYRot(), pitch = serverPlayer.getXRot(); + // CraftBukkit start + ServerPlayer serverPlayer1 = serverPlayer.teleport(new TeleportTransition(serverLevel, vec3, Vec3.ZERO, 0.0F, 0.0F, Relative.union(Relative.ROTATION, Relative.DELTA), TeleportTransition.DO_NOTHING, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.ENDER_PEARL)); + if (serverPlayer1 == null) { +@@ -214,7 +217,8 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { + if (this.random.nextFloat() < 0.05F && serverLevel.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { + Endermite endermite = EntityType.ENDERMITE.create(serverLevel, EntitySpawnReason.TRIGGERED); + if (endermite != null) { +- endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); ++ endermite.snapTo(x, y, z, yaw, pitch); ++ // Paper end - fix endermite spawn position + serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); + } + }