aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2022-03-04 20:47:30 +0100
committerNassim Jahnke <[email protected]>2022-03-04 20:47:30 +0100
commitb6616c8a1834a6bb0bd38298d7ca1ca5ab661804 (patch)
treefe1d0952736752272d246419aee92dfedd7be4b8
parent0ee6ddaf33d1332c3e861fbaaced600c81d0e7e2 (diff)
downloadPaper-b6616c8a1834a6bb0bd38298d7ca1ca5ab661804.tar.gz
Paper-b6616c8a1834a6bb0bd38298d7ca1ca5ab661804.zip
Fix falling block spawn methods
For some reason Spigot broke both behavior and the method as a whole
-rw-r--r--build-data/paper.at3
-rw-r--r--patches/server/0879-Fix-falling-block-spawn-methods.patch41
2 files changed, 44 insertions, 0 deletions
diff --git a/build-data/paper.at b/build-data/paper.at
index 7d282dd818..c672e2bab1 100644
--- a/build-data/paper.at
+++ b/build-data/paper.at
@@ -315,3 +315,6 @@ public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listen
# Fix custom inventory holders
public-f net.minecraft.world.inventory.AbstractContainerMenu dataSlots
public-f net.minecraft.world.inventory.AbstractContainerMenu remoteDataSlots
+
+# Fix falling block spawn methods
+public net.minecraft.world.entity.item.FallingBlockEntity <init>(Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
diff --git a/patches/server/0879-Fix-falling-block-spawn-methods.patch b/patches/server/0879-Fix-falling-block-spawn-methods.patch
new file mode 100644
index 0000000000..5ff117ee09
--- /dev/null
+++ b/patches/server/0879-Fix-falling-block-spawn-methods.patch
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Nassim Jahnke <[email protected]>
+Date: Fri, 4 Mar 2022 20:35:19 +0100
+Subject: [PATCH] Fix falling block spawn methods
+
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
+index 850131e601047ab1c585a6f8883ac3c0d0e97ba1..99cb7625d50d5da4ce0999e10fb84403958a7ffe 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
+@@ -549,7 +549,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 b2c5fbfcb64f3056d7975db43b2db45bfd5e9890..028663b86970b8a1ae3e5275429516ee00ef0a04 100644
+--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+@@ -1416,7 +1416,7 @@ 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());
++ 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);
+@@ -1428,7 +1428,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
+ Validate.notNull(location, "Location cannot be null");
+ Validate.notNull(data, "Material cannot be null");
+
+- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState());
++ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), ((CraftBlockData) data).getState()); // Paper
+ entity.time = 1;
+
+ this.world.addFreshEntity(entity, SpawnReason.CUSTOM);