385f313a8b
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: d41796de SPIGOT-7071: Add Player#stopSound(SoundCategory category) 61dae5b2 SPIGOT-7011, SPIGOT-7065: Overhaul of structures CraftBukkit Changes: 991aeda12 SPIGOT-1729, SPIGOT-7090: Keep precision in teleportation between worlds 5c9a5f628 SPIGOT-7071: Add Player#stopSound(SoundCategory category) 68f888ded SPIGOT-7011, SPIGOT-7065: Overhaul of structures 0231a3746 Remove outdated build delay. Spigot Changes: 475f6008 Rebuild patches 8ce1761f Rebuild patches
55 Zeilen
3.3 KiB
Diff
55 Zeilen
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Nassim Jahnke <jahnke.nassim@gmail.com>
|
|
Date: Fri, 4 Mar 2022 20:35:19 +0100
|
|
Subject: [PATCH] Fix falling block spawn methods
|
|
|
|
Restores the API behavior from previous versions of the server
|
|
- Do not call API events
|
|
- Do not replace the existing block in the world
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
index d1fca0e3227b5f37c11367548be362f5a49b6a71..5628940cd3c3566c5db2beda506d4f20b6e3cbae 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
@@ -566,7 +566,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
|
|
// Paper end
|
|
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
|
|
BlockPos pos = new BlockPos(x, y, z);
|
|
- entity = FallingBlockEntity.fall(world, pos, this.getHandle().getBlockState(pos));
|
|
+ entity = new FallingBlockEntity(world, x, y, z, this.getHandle().getBlockState(pos)); // Paper
|
|
} else if (Projectile.class.isAssignableFrom(clazz)) {
|
|
if (Snowball.class.isAssignableFrom(clazz)) {
|
|
entity = new net.minecraft.world.entity.projectile.Snowball(world, x, y, z);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index 17b85478749be5be2bec19e49f26e03ebae29852..d7ec9ea48d6c8354bcf40599a9cc1743f64ebffc 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -1416,7 +1416,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
Validate.notNull(material, "Material cannot be null");
|
|
Validate.isTrue(material.isBlock(), "Material must be a block");
|
|
|
|
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState(), SpawnReason.CUSTOM);
|
|
+ // Paper start - restore API behavior for spawning falling blocks
|
|
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), CraftMagicNumbers.getBlock(material).defaultBlockState()); // Paper
|
|
+ entity.time = 1;
|
|
+
|
|
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
|
+ // Paper end
|
|
return (FallingBlock) entity.getBukkitEntity();
|
|
}
|
|
|
|
@@ -1425,7 +1430,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
Validate.notNull(location, "Location cannot be null");
|
|
Validate.notNull(data, "BlockData cannot be null");
|
|
|
|
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState(), SpawnReason.CUSTOM);
|
|
+ // Paper start - restore API behavior for spawning falling blocks
|
|
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), ((CraftBlockData) data).getState());
|
|
+ entity.time = 1;
|
|
+
|
|
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
|
|
+ // Paper end
|
|
return (FallingBlock) entity.getBukkitEntity();
|
|
}
|
|
|