geforkt von Mirrors/Paper
2873869bb1
Signs no longer have a specific isEdiable state, the entire API in this regard needs updating/deprecation. The boolean field is completely gone, replaced by a uuid (which will need a new setEditingPlayer(UUID) method on the Sign interface), and the current upstream implementation of setEdiable simply flips the is_waxed state. This patch is hence not needed as it neither allows editing (which will be redone in a later patch) nor is required to copy the is_waxed boolean flag as it lives in the signs compound tag and is covered by applyTo.
58 Zeilen
3.5 KiB
Diff
58 Zeilen
3.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Nassim Jahnke <nassim@njahnke.dev>
|
|
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
|
|
|
|
== AT ==
|
|
public net.minecraft.world.entity.item.FallingBlockEntity <init>(Lnet/minecraft/world/level/Level;DDDLnet/minecraft/world/level/block/state/BlockState;)V
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
index c738fb984ffd120e5adccdb5828833f180e72e80..5c8e905bbf56dd2af5b30d34371793c3f98801ab 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java
|
|
@@ -599,7 +599,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor {
|
|
// Paper end
|
|
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
|
|
BlockPos pos = BlockPos.containing(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 4a19f5b1bada47f91516312db12245e11bf88e7d..9cb7163a5a59c804de5ac4e9003f401ef058c86a 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -1387,7 +1387,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, BlockPos.containing(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();
|
|
}
|
|
|
|
@@ -1396,7 +1401,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, BlockPos.containing(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();
|
|
}
|
|
|