32 Zeilen
1.7 KiB
Diff
32 Zeilen
1.7 KiB
Diff
From 290cbb38a943a5bb021e5aace7bf3c0cd97f1410 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Sat, 25 Jun 2016 21:04:05 -0500
|
|
Subject: [PATCH] Update clients when setting blocks to air
|
|
|
|
In fixing SPIGOT-611, the server sets an area to air and doesn't update the clients.
|
|
Usually this is fine, most of the time we'll just be setting the intended block shortly after anyway.
|
|
|
|
Except if we're setting air. In which case the server will not send the change because it already sees the block as set.
|
|
We workaround this by telling the server to send the client the block change if it is of ID 0 (Air). I assume this
|
|
patch will not last long enough to warrant moving away from the ID.
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
index a5d6f1d..60a1692 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
|
@@ -137,7 +137,10 @@ public class CraftBlock implements Block {
|
|
BlockPosition position = new BlockPosition(x, y, z);
|
|
|
|
// SPIGOT-611: need to do this to prevent glitchiness. Easier to handle this here (like /setblock) than to fix weirdness in tile entity cleanup
|
|
- chunk.getHandle().getWorld().setTypeAndData(position, Blocks.AIR.getBlockData(), 0);
|
|
+ // Paper start - If we're setting air, we need to explicitly tell it to send to clients
|
|
+ int flag = (type == 0) ? 2 : 0;
|
|
+ chunk.getHandle().getWorld().setTypeAndData(position, Blocks.AIR.getBlockData(), flag);
|
|
+ // Paper end
|
|
|
|
if (applyPhysics) {
|
|
return chunk.getHandle().getWorld().setTypeAndData(position, blockData, 3);
|
|
--
|
|
2.9.0.windows.1
|
|
|