2022-03-04 20:47:30 +01:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2022-08-01 16:01:20 +02:00
From: Nassim Jahnke <nassim@njahnke.dev>
2022-03-04 20:47:30 +01:00
Date: Fri, 4 Mar 2022 20:35:19 +0100
Subject: [PATCH] Fix falling block spawn methods
2022-04-30 18:27:41 +02:00
Restores the API behavior from previous versions of the server
- Do not call API events
- Do not replace the existing block in the world
2022-03-04 20:47:30 +01:00
2022-11-20 00:53:20 +01:00
== AT ==
public net.minecraft.world.entity.item.FallingBlockEntity <init>(Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
2022-03-04 20:47:30 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
2023-05-12 13:10:08 +02:00
index cc3a90a3337b7d59e4377a1e2448f17a23604e57..b69df51f2a1eec62792e193f64a1815ad6a87e1f 100644
2022-03-04 20:47:30 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
2023-05-12 13:10:08 +02:00
@@ -599,7 +599,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
2022-03-04 20:47:30 +01:00
// Paper end
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
2023-03-14 21:55:49 +01:00
BlockPos pos = BlockPos.containing(x, y, z);
2022-03-04 20:47:30 +01:00
- 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
2023-06-06 11:09:19 +02:00
index 1d50e5ace7035873523ca16d683b196732176ea5..9a0542c06ae30361ac6139bdf02d0464c8a53e7b 100644
2022-03-04 20:47:30 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
2023-06-06 11:09:19 +02:00
@@ -1392,7 +1392,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
2022-03-04 20:47:30 +01:00
Validate.notNull(material, "Material cannot be null");
Validate.isTrue(material.isBlock(), "Material must be a block");
2023-03-14 21:55:49 +01:00
- FallingBlockEntity entity = FallingBlockEntity.fall(world, BlockPos.containing(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState(), SpawnReason.CUSTOM);
2022-04-30 18:27:41 +02:00
+ // Paper start - restore API behavior for spawning falling blocks
2022-03-04 20:47:30 +01:00
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), CraftMagicNumbers.getBlock(material).defaultBlockState()); // Paper
2022-04-30 18:27:41 +02:00
+ entity.time = 1;
+
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
+ // Paper end
return (FallingBlock) entity.getBukkitEntity();
}
2022-03-04 20:47:30 +01:00
2023-06-06 11:09:19 +02:00
@@ -1401,7 +1406,12 @@ public class CraftWorld extends CraftRegionAccessor implements World {
2022-03-04 20:47:30 +01:00
Validate.notNull(location, "Location cannot be null");
2022-04-30 18:27:41 +02:00
Validate.notNull(data, "BlockData cannot be null");
2022-03-04 20:47:30 +01:00
2023-03-14 21:55:49 +01:00
- FallingBlockEntity entity = FallingBlockEntity.fall(world, BlockPos.containing(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState(), SpawnReason.CUSTOM);
2022-04-30 18:27:41 +02:00
+ // 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();
}
2022-03-04 20:47:30 +01:00