From adfd55b419e5c58c09e441fd94cf22f445d63653 Mon Sep 17 00:00:00 2001 From: CoolJWB Date: Fri, 3 Jul 2020 17:03:08 +0200 Subject: [PATCH] Redstone blocker fix (#217) * Redstone blocker fix The redstone blocker caused severe crashes in some cases such as when redstone torches and targets were connected to wire. The event used to block redstone is not efficient in any means so this should be reverted when (or if) it is fixed internally. * Delete encodings.xml * Delete compiler.xml --- .idea/artifacts/TotalFreedomMod_jar.xml | 8 - .idea/codeStyles/Project.xml | 28 -- .idea/codeStyles/codeStyleConfig.xml | 5 - .idea/compiler.xml | 18 -- .idea/encodings.xml | 8 - TotalFreedomMod.iml | 288 ------------------ .../blocking/EventBlocker.java | 31 +- 7 files changed, 21 insertions(+), 365 deletions(-) delete mode 100644 .idea/artifacts/TotalFreedomMod_jar.xml delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/encodings.xml delete mode 100644 TotalFreedomMod.iml diff --git a/.idea/artifacts/TotalFreedomMod_jar.xml b/.idea/artifacts/TotalFreedomMod_jar.xml deleted file mode 100644 index 483f1042..00000000 --- a/.idea/artifacts/TotalFreedomMod_jar.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - $PROJECT_DIR$/target - - - - - diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 9898a0e5..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 0f7bc519..00000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 8ceb59f3..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index af673e73..00000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/TotalFreedomMod.iml b/TotalFreedomMod.iml deleted file mode 100644 index 0e2948f4..00000000 --- a/TotalFreedomMod.iml +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - PAPER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java index 8c467d14..4b54e31e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/EventBlocker.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.blocking; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import me.totalfreedom.totalfreedommod.FreedomService; @@ -9,19 +10,14 @@ import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; +import org.bukkit.block.data.AnaloguePowerable; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.Powerable; import org.bukkit.entity.Entity; import org.bukkit.entity.Tameable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBurnEvent; -import org.bukkit.event.block.BlockDispenseEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockGrowEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.block.BlockPistonExtendEvent; -import org.bukkit.event.block.BlockPistonRetractEvent; -import org.bukkit.event.block.BlockRedstoneEvent; -import org.bukkit.event.block.LeavesDecayEvent; +import org.bukkit.event.block.*; import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDeathEvent; @@ -31,6 +27,7 @@ import org.bukkit.event.entity.FireworkExplodeEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.material.Redstone; public class EventBlocker extends FreedomService { @@ -199,7 +196,7 @@ public class EventBlocker extends FreedomService } } - @EventHandler(priority = EventPriority.HIGH) + //@EventHandler(priority = EventPriority.HIGH) public void onBlockRedstone(BlockRedstoneEvent event) { if (!ConfigEntry.ALLOW_REDSTONE.getBoolean()) @@ -208,6 +205,20 @@ public class EventBlocker extends FreedomService } } + // TODO: Revert back to old redstone block system when (or if) it is fixed in Bukkit, Spigot or Paper. + private ArrayList redstoneBlocks = new ArrayList<>(Arrays.asList(Material.REDSTONE, Material.DISPENSER, Material.DROPPER, Material.REDSTONE_LAMP)); + @EventHandler + public void onBlockPhysics(BlockPhysicsEvent event) { + if (!ConfigEntry.ALLOW_REDSTONE.getBoolean()) + { + // Check if the block is involved with redstone. + if(event.getBlock().getBlockData() instanceof AnaloguePowerable || event.getBlock().getBlockData() instanceof Powerable || redstoneBlocks.contains(event.getBlock().getType())) + { + event.setCancelled(true); + } + } + } + @EventHandler(priority = EventPriority.NORMAL) public void onPlayerRespawn(PlayerRespawnEvent event) {