|
1 | 1 | --- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
2 | 2 | +++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
3 |
| -@@ -119,11 +_,18 @@ |
| 3 | +@@ -119,11 +_,21 @@ |
4 | 4 | Vec3 vec3 = this.oldPosition();
|
5 | 5 | if (owner instanceof ServerPlayer serverPlayer) {
|
6 | 6 | if (serverPlayer.connection.isAcceptingMessages()) {
|
7 | 7 | + // CraftBukkit start
|
| 8 | ++ // Store pre teleportation position as the teleport has been moved up. |
| 9 | ++ final double preTeleportX = serverPlayer.getX(), preTeleportY = serverPlayer.getY(), preTeleportZ = serverPlayer.getZ(); |
| 10 | ++ final float preTeleportYRot = serverPlayer.getYRot(), preTeleportXRot = serverPlayer.getXRot(); |
8 | 11 | + 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));
|
9 | 12 | + if (serverPlayer1 == null) {
|
10 | 13 | + this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.HIT);
|
|
14 | 17 | if (this.random.nextFloat() < 0.05F && serverLevel.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
|
15 | 18 | Endermite endermite = EntityType.ENDERMITE.create(serverLevel, EntitySpawnReason.TRIGGERED);
|
16 | 19 | if (endermite != null) {
|
17 |
| - endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); |
| 20 | +- endermite.snapTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot()); |
18 | 21 | - serverLevel.addFreshEntity(endermite);
|
| 22 | ++ endermite.snapTo(preTeleportX, preTeleportY, preTeleportZ, preTeleportYRot, preTeleportXRot); // Paper - spawn endermite at pre teleport position as teleport has been moved up |
19 | 23 | + serverLevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
|
20 | 24 | }
|
21 | 25 | }
|
|
0 commit comments