From 6e47011b7e86c5eb5fc1a00d000c847b8625e319 Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Fri, 12 Jun 2020 02:04:21 -0700 Subject: [PATCH] workaround banners being weird to showfake banners properly --- .../denizen/nms/util/jnbt/CompoundTagBuilder.java | 2 +- .../com/denizenscript/denizen/utilities/blocks/FakeBlock.java | 3 +++ .../denizen/nms/v1_15/helpers/BlockHelperImpl.java | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/nms/util/jnbt/CompoundTagBuilder.java b/plugin/src/main/java/com/denizenscript/denizen/nms/util/jnbt/CompoundTagBuilder.java index d1010ee8b8..23bd3de243 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/nms/util/jnbt/CompoundTagBuilder.java +++ b/plugin/src/main/java/com/denizenscript/denizen/nms/util/jnbt/CompoundTagBuilder.java @@ -34,7 +34,7 @@ public class CompoundTagBuilder { /** * Create a new instance. */ - CompoundTagBuilder() { + public CompoundTagBuilder() { this.entries = new HashMap<>(); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/blocks/FakeBlock.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/blocks/FakeBlock.java index b27809ae10..c6974d200c 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/blocks/FakeBlock.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/blocks/FakeBlock.java @@ -136,6 +136,9 @@ private void updateBlock(MaterialTag material, DurationTag duration) { } if (material.hasModernData()) { material.getModernData().sendFakeChangeTo(player.getPlayerEntity(), location); + if (material.getMaterial().name().endsWith("_BANNER")) { // Banners are weird + location.getWorld().refreshChunk(chunkCoord.x, chunkCoord.z); + } } else { player.getPlayerEntity().sendBlockChange(location, material.getMaterial(), material.getMaterialData().getData()); diff --git a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/BlockHelperImpl.java b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/BlockHelperImpl.java index 885b907388..b4c42ab080 100644 --- a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/BlockHelperImpl.java +++ b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/BlockHelperImpl.java @@ -122,6 +122,9 @@ public CompoundTag getNbtData(Block block) { NMSHandler.getChunkHelper().changeChunkServerThread(block.getWorld()); org.bukkit.block.BlockState state = block.getState(); NMSHandler.getChunkHelper().restoreServerThread(block.getWorld()); + if (!(state instanceof CraftBlockEntityState)) { + return null; + } TileEntity tileEntity = getTE((CraftBlockEntityState) state); if (tileEntity == null) { return null;