From 23aac2a53f8fd492b19933edebf3a3dd834dd7d2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Tue, 30 Jun 2020 10:55:06 +1000 Subject: [PATCH] SPIGOT-5903: EntityDismountEvent cannot be triggered asynchronously --- nms-patches/Entity.patch | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/nms-patches/Entity.patch b/nms-patches/Entity.patch index b3d4697883..416fcb35a6 100644 --- a/nms-patches/Entity.patch +++ b/nms-patches/Entity.patch @@ -447,7 +447,7 @@ if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.getRidingPassenger() instanceof EntityHuman)) { this.passengers.add(0, entity); } else { -@@ -1604,15 +1872,33 @@ +@@ -1604,15 +1872,36 @@ } } @@ -467,7 +467,10 @@ + (Vehicle) getBukkitEntity(), + (LivingEntity) entity.getBukkitEntity() + ); -+ Bukkit.getPluginManager().callEvent(event); ++ // Suppress during worldgen ++ if (this.valid) { ++ Bukkit.getPluginManager().callEvent(event); ++ } + CraftEntity craftn = (CraftEntity) entity.getBukkitEntity().getVehicle(); + Entity n = craftn == null ? null : craftn.getHandle(); + if (event.isCancelled() || n != orig) { @@ -482,7 +485,7 @@ } protected boolean q(Entity entity) { -@@ -1661,11 +1947,17 @@ +@@ -1661,11 +1950,17 @@ ResourceKey resourcekey = this.world.getDimensionKey() == World.THE_NETHER ? World.OVERWORLD : World.THE_NETHER; WorldServer worldserver1 = minecraftserver.getWorldServer(resourcekey); @@ -502,7 +505,7 @@ this.world.getMethodProfiler().exit(); } -@@ -1765,6 +2057,13 @@ +@@ -1765,6 +2060,13 @@ } public void setSwimming(boolean flag) { @@ -516,7 +519,7 @@ this.setFlag(4, flag); } -@@ -1825,16 +2124,56 @@ +@@ -1825,16 +2127,56 @@ } public void setAirTicks(int i) { @@ -576,7 +579,7 @@ } public void k(boolean flag) { -@@ -1986,18 +2325,45 @@ +@@ -1986,18 +2328,45 @@ @Nullable public Entity a(WorldServer worldserver) { @@ -628,7 +631,7 @@ } else { double d0 = this.locX(); double d1 = this.locZ(); -@@ -2023,7 +2389,16 @@ +@@ -2023,7 +2392,16 @@ Vec3D vec3d1 = this.getPortalOffset(); blockposition = new BlockPosition(d0, this.locY(), d1); @@ -646,7 +649,7 @@ if (shapedetector_shape == null) { return null; -@@ -2033,6 +2408,11 @@ +@@ -2033,6 +2411,11 @@ vec3d = shapedetector_shape.velocity; f = (float) shapedetector_shape.yaw; } @@ -658,7 +661,7 @@ this.world.getMethodProfiler().exitEnter("reloading"); Entity entity = this.getEntityType().a((World) worldserver); -@@ -2042,9 +2422,17 @@ +@@ -2042,9 +2425,17 @@ entity.setPositionRotation(blockposition, entity.yaw + f, entity.pitch); entity.setMot(vec3d); worldserver.addEntityTeleport(entity); @@ -678,7 +681,7 @@ } this.bJ(); -@@ -2253,7 +2641,26 @@ +@@ -2253,7 +2644,26 @@ } public void a(AxisAlignedBB axisalignedbb) {