From 401fc4d2ebcfc355d2bd89d531ce55167e759564 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Fri, 5 Feb 2021 14:44:43 -0500 Subject: [PATCH] Fix AntiBuild performing place checks for block state changes (#3914) Bukkit sometimes decides that state changes are also a block placement. Work around this by comparing the previous block state with the new block type. Fixes #3150. --- .../essentials/antibuild/EssentialsAntiBuildListener.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java b/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java index 5edd6ebc7..5270889e1 100644 --- a/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java +++ b/EssentialsAntiBuild/src/main/java/com/earth2me/essentials/antibuild/EssentialsAntiBuildListener.java @@ -100,6 +100,11 @@ public class EssentialsAntiBuildListener implements Listener { final Block block = event.getBlockPlaced(); final Material type = block.getType(); + // Happens with blocks like eyes of ender, we shouldn't treat state changes as a block place. + if (type.equals(event.getBlockReplacedState().getType())) { + return; + } + if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !metaPermCheck(user, "place", block)) { if (ess.getSettings().warnOnBuildDisallow()) { user.sendMessage(tl("antiBuildPlace", EssentialsAntiBuild.getNameForType(type)));