From 21f3391a9d93433f5518a5c94695416db6059f9c Mon Sep 17 00:00:00 2001 From: Mark Vainomaa Date: Thu, 22 Sep 2016 16:32:11 +0300 Subject: [PATCH] Add ProtocolLib version of Player#sendBlockChange --- .../utils/itemutils/FakeSignFactory.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Itemutils/src/main/java/eu/mikroskeem/utils/itemutils/FakeSignFactory.java b/Itemutils/src/main/java/eu/mikroskeem/utils/itemutils/FakeSignFactory.java index a411b4f..9a73c8a 100644 --- a/Itemutils/src/main/java/eu/mikroskeem/utils/itemutils/FakeSignFactory.java +++ b/Itemutils/src/main/java/eu/mikroskeem/utils/itemutils/FakeSignFactory.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import com.comphenix.packetwrapper.WrapperPlayClientUpdateSign; +import com.comphenix.packetwrapper.WrapperPlayServerBlockChange; import com.comphenix.packetwrapper.WrapperPlayServerOpenSignEditor; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; @@ -16,6 +17,7 @@ import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.wrappers.BlockPosition; +import com.comphenix.protocol.wrappers.WrappedBlockData; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -100,6 +102,14 @@ public class FakeSignFactory { /* Send block change */ player.sendBlockChange(signLocation, Material.WALL_SIGN, (byte)0); + /* + TODO: those didn't seem to work + WrapperPlayServerBlockChange block = new WrapperPlayServerBlockChange(); + block.setBlockData(WrappedBlockData.createData(Material.WALL_SIGN)); + block.setLocation(new BlockPosition(signLocation.toVector())); + block.sendPacket(player); + */ + /* Set sign content */ player.sendSignChange(signLocation, defaultText); } @@ -116,7 +126,17 @@ public class FakeSignFactory { if (defaultText != null) { /* Make sign disappear */ Location signLocation = new Location(player.getWorld(), (double)x, (double)y, (double)z); + + /* Send block change */ player.sendBlockChange(signLocation, Material.AIR, (byte)0); + + /* + TODO: those didn't seem to work + WrapperPlayServerBlockChange block = new WrapperPlayServerBlockChange(); + block.setBlockData(WrappedBlockData.createData(Material.AIR)); + block.setLocation(new BlockPosition(signLocation.toVector())); + block.sendPacket(player); + */ } signLocations.put(player.getName(), new Vector(x, y, z)); listeners.put(player.getName(), response);