Skip to content

Commit b6616c8

Browse files
committed
Fix falling block spawn methods
For some reason Spigot broke both behavior and the method as a whole
1 parent 0ee6dda commit b6616c8

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

build-data/paper.at

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,3 +315,6 @@ public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listen
315315
# Fix custom inventory holders
316316
public-f net.minecraft.world.inventory.AbstractContainerMenu dataSlots
317317
public-f net.minecraft.world.inventory.AbstractContainerMenu remoteDataSlots
318+
319+
# Fix falling block spawn methods
320+
public net.minecraft.world.entity.item.FallingBlockEntity <init>(Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Nassim Jahnke <jahnke.nassim@gmail.com>
3+
Date: Fri, 4 Mar 2022 20:35:19 +0100
4+
Subject: [PATCH] Fix falling block spawn methods
5+
6+
7+
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
8+
index 850131e601047ab1c585a6f8883ac3c0d0e97ba1..99cb7625d50d5da4ce0999e10fb84403958a7ffe 100644
9+
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
10+
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
11+
@@ -549,7 +549,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
12+
// Paper end
13+
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
14+
BlockPos pos = new BlockPos(x, y, z);
15+
- entity = FallingBlockEntity.fall(world, pos, this.getHandle().getBlockState(pos));
16+
+ entity = new FallingBlockEntity(world, x, y, z, this.getHandle().getBlockState(pos)); // Paper
17+
} else if (Projectile.class.isAssignableFrom(clazz)) {
18+
if (Snowball.class.isAssignableFrom(clazz)) {
19+
entity = new net.minecraft.world.entity.projectile.Snowball(world, x, y, z);
20+
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
21+
index b2c5fbfcb64f3056d7975db43b2db45bfd5e9890..028663b86970b8a1ae3e5275429516ee00ef0a04 100644
22+
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
23+
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
24+
@@ -1416,7 +1416,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
25+
Validate.notNull(material, "Material cannot be null");
26+
Validate.isTrue(material.isBlock(), "Material must be a block");
27+
28+
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState());
29+
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), CraftMagicNumbers.getBlock(material).defaultBlockState()); // Paper
30+
entity.time = 1;
31+
32+
this.world.addFreshEntity(entity, SpawnReason.CUSTOM);
33+
@@ -1428,7 +1428,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
34+
Validate.notNull(location, "Location cannot be null");
35+
Validate.notNull(data, "Material cannot be null");
36+
37+
- FallingBlockEntity entity = FallingBlockEntity.fall(world, new BlockPos(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState());
38+
+ FallingBlockEntity entity = new FallingBlockEntity(this.world, location.getX(), location.getY(), location.getZ(), ((CraftBlockData) data).getState()); // Paper
39+
entity.time = 1;
40+
41+
this.world.addFreshEntity(entity, SpawnReason.CUSTOM);

0 commit comments

Comments
 (0)