From 03d7e828a0315ba1eb5a7de6bf4e2a70f8ed9c07 Mon Sep 17 00:00:00 2001 From: Esophose Date: Sat, 23 Feb 2019 20:07:04 -0700 Subject: [PATCH] Fix item frame intractability with /is settings --- .../skyblock/listeners/Entity.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/main/java/me/goodandevil/skyblock/listeners/Entity.java b/src/main/java/me/goodandevil/skyblock/listeners/Entity.java index 0d853787..e476f057 100644 --- a/src/main/java/me/goodandevil/skyblock/listeners/Entity.java +++ b/src/main/java/me/goodandevil/skyblock/listeners/Entity.java @@ -30,13 +30,17 @@ import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.EntityInteractEvent; import org.bukkit.event.entity.EntityTameEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause; import org.bukkit.event.hanging.HangingPlaceEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerShearEntityEvent; +import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; @@ -311,7 +315,49 @@ public class Entity implements Listener { } } } + + @EventHandler + public void onHangingInteract(PlayerInteractEntityEvent event) { + if (!(event.getRightClicked() instanceof Hanging)) { + return; + } + + Player player = event.getPlayer(); + Hanging hanging = (Hanging) event.getRightClicked(); + + if (skyblock.getWorldManager().isIslandWorld(hanging.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, hanging.getLocation(), "HangingDestroy")) { + event.setCancelled(true); + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + + @EventHandler + public void onHangingRemoveItem(EntityDamageByEntityEvent event) { + if (!(event.getDamager() instanceof Player && event.getEntity() instanceof Hanging)) { + return; + } + + Player player = (Player) event.getDamager(); + Hanging hanging = (Hanging) event.getEntity(); + + if (skyblock.getWorldManager().isIslandWorld(hanging.getWorld())) { + if (!skyblock.getIslandManager().hasPermission(player, hanging.getLocation(), "HangingDestroy")) { + event.setCancelled(true); + + skyblock.getMessageManager().sendMessage(player, + skyblock.getFileManager().getConfig(new File(skyblock.getDataFolder(), "language.yml")) + .getFileConfiguration().getString("Island.Settings.Permission.Message")); + skyblock.getSoundManager().playSound(player, Sounds.VILLAGER_NO.bukkitSound(), 1.0F, 1.0F); + } + } + } + @EventHandler public void onEntityTaming(EntityTameEvent event) { if (!(event.getOwner() instanceof Player)) {