From fc601bda6b18b9b3a2ba6cb74e2a90a1748fd43b Mon Sep 17 00:00:00 2001 From: VoidAngel Date: Sun, 29 Apr 2018 10:27:30 -0700 Subject: [PATCH 1/5] Updated saw mill block check The saw mill will now only use the CS-CoreLib protection manager. Also Ive added a check to prevent people from duping planks using barrels. --- .../Slimefun/Setup/SlimefunSetup.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a3c69ee1f..7d890f274 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1887,10 +1887,24 @@ public class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { - if(CSCoreLib.getLib().getProtectionManager().canAccessChest(p.getUniqueId(), b, true)) { + if(CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b, true)) { if (Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true)) { - if (b.getRelative(BlockFace.UP).getType() == Material.LOG) BlockBreaker.breakBlock(p, b.getRelative(BlockFace.UP), Arrays.asList(new ItemStack[] {new CustomItem(Material.WOOD, b.getRelative(BlockFace.UP).getData() % 4, 8)}), true); - else if (b.getRelative(BlockFace.UP).getType() == Material.LOG_2) BlockBreaker.breakBlock(p, b.getRelative(BlockFace.UP), Arrays.asList(new ItemStack[] {new CustomItem(Material.WOOD, (b.getRelative(BlockFace.UP).getData() % 2) + 4, 8)}), true); + if (b.getRelative(BlockFace.UP).getType() == Material.LOG) { + Block log = b.getRelative(BlockFace.UP); + if(!BlockStorage.hasBlockInfo(log)) { + log.getWorld().dropItemNaturally(log.getLocation(), new CustomItem(Material.WOOD, log.getData() % 4, 8)); + log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + log.setType(Material.AIR); + } + } + else if (b.getRelative(BlockFace.UP).getType() == Material.LOG_2) { + Block log = b.getRelative(BlockFace.UP); + if(!BlockStorage.hasBlockInfo(log)) { + log.getWorld().dropItemNaturally(log.getLocation(), new CustomItem(Material.WOOD, (log.getData() % 2) + 4, 8)); + log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); + log.setType(Material.AIR); + } + } } } return true; From e0fd8a358ec8bd46bd0c800e47fc8c0b922726c8 Mon Sep 17 00:00:00 2001 From: VoidAngel Date: Sun, 29 Apr 2018 10:37:11 -0700 Subject: [PATCH 2/5] Fixed the protection check location --- src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index 7d890f274..a68243734 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1887,7 +1887,7 @@ public class SlimefunSetup { @Override public boolean onInteract(Player p, MultiBlock mb, Block b) { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { - if(CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b, true)) { + if(CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true)) { if (Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true)) { if (b.getRelative(BlockFace.UP).getType() == Material.LOG) { Block log = b.getRelative(BlockFace.UP); From 9d1ad3c86610cc59bbc4ffec419e7df2f74106bf Mon Sep 17 00:00:00 2001 From: VoidAngel Date: Sun, 29 Apr 2018 11:15:07 -0700 Subject: [PATCH 3/5] Removed redundant code --- .../mrCookieSlime/Slimefun/Setup/SlimefunSetup.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index a68243734..2e448335b 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1889,22 +1889,15 @@ public class SlimefunSetup { if (mb.isMultiBlock(SlimefunItem.getByID("SAW_MILL"))) { if(CSCoreLib.getLib().getProtectionManager().canBuild(p.getUniqueId(), b.getRelative(BlockFace.UP), true)) { if (Slimefun.hasUnlocked(p, SlimefunItems.SAW_MILL, true)) { - if (b.getRelative(BlockFace.UP).getType() == Material.LOG) { + if (b.getRelative(BlockFace.UP).getType() == Material.LOG || b.getRelative(BlockFace.UP).getType() == Material.LOG_2) { Block log = b.getRelative(BlockFace.UP); if(!BlockStorage.hasBlockInfo(log)) { - log.getWorld().dropItemNaturally(log.getLocation(), new CustomItem(Material.WOOD, log.getData() % 4, 8)); + ItemStack item = log.getType() == Material.LOG ? new CustomItem(Material.WOOD, log.getData() % 4, 8) : new CustomItem(Material.WOOD, (log.getData() % 2) + 4, 8); + log.getWorld().dropItemNaturally(log.getLocation(), item); log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); log.setType(Material.AIR); } } - else if (b.getRelative(BlockFace.UP).getType() == Material.LOG_2) { - Block log = b.getRelative(BlockFace.UP); - if(!BlockStorage.hasBlockInfo(log)) { - log.getWorld().dropItemNaturally(log.getLocation(), new CustomItem(Material.WOOD, (log.getData() % 2) + 4, 8)); - log.getWorld().playEffect(log.getLocation(), Effect.STEP_SOUND, log.getType()); - log.setType(Material.AIR); - } - } } } return true; From f8112ccb3751b6f93771e1f099da74453b437127 Mon Sep 17 00:00:00 2001 From: VoidAngel Date: Mon, 30 Apr 2018 17:58:04 -0700 Subject: [PATCH 4/5] Prevent SF items from being used in brewing stands --- .../Slimefun/listeners/ItemListener.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java index 3950c39eb..7a772c91a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemListener.java @@ -8,6 +8,7 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BrewingStand; import org.bukkit.block.Hopper; import org.bukkit.block.Skull; import org.bukkit.entity.FallingBlock; @@ -24,7 +25,9 @@ import org.bukkit.event.inventory.InventoryMoveItemEvent; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerItemConsumeEvent; +import org.bukkit.inventory.BrewerInventory; import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; @@ -386,4 +389,12 @@ public class ItemListener implements Listener { } } } + + @EventHandler (ignoreCancelled = true) + public void onPreBrew(InventoryClickEvent e) { + Inventory inventory = e.getInventory(); + if (inventory instanceof BrewerInventory && inventory.getHolder() instanceof BrewingStand) { + if(e.getRawSlot() < inventory.getSize()) e.setCancelled(SlimefunItem.getByItem(e.getCursor()) != null); + } + } } From b3b2ec5978a1ffbecc430b4b9bd8e6c55fa9892f Mon Sep 17 00:00:00 2001 From: VoidAngel Date: Mon, 30 Apr 2018 18:00:37 -0700 Subject: [PATCH 5/5] Fixes a bug where mobs could pick up altar probe items --- .../Slimefun/listeners/ItemPickupListener.java | 6 ++++-- .../Slimefun/listeners/ItemPickupListener_1_12.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java index dd8336186..d25ceeda6 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener.java @@ -1,6 +1,8 @@ package me.mrCookieSlime.Slimefun.listeners; import me.mrCookieSlime.Slimefun.SlimefunStartup; + +import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryPickupItemEvent; @@ -20,7 +22,7 @@ public class ItemPickupListener implements Listener { @EventHandler public void onPickup(PlayerPickupItemEvent e) { if (e.getItem().hasMetadata("no_pickup")) e.setCancelled(true); - else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith("&5&dALTAR &3Probe - &e")) { + else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith(ChatColor.translateAlternateColorCodes('&', "&5&dALTAR &3Probe - &e"))) { e.setCancelled(true); e.getItem().remove(); } @@ -29,7 +31,7 @@ public class ItemPickupListener implements Listener { @EventHandler public void onMinecartPickup(InventoryPickupItemEvent e) { if (e.getItem().hasMetadata("no_pickup")) e.setCancelled(true); - else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith("&5&dALTAR &3Probe - &e")) { + else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith(ChatColor.translateAlternateColorCodes('&', "&5&dALTAR &3Probe - &e"))) { e.setCancelled(true); e.getItem().remove(); } diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener_1_12.java b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener_1_12.java index 644b3be05..ab5243d6a 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener_1_12.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ItemPickupListener_1_12.java @@ -1,6 +1,8 @@ package me.mrCookieSlime.Slimefun.listeners; import me.mrCookieSlime.Slimefun.SlimefunStartup; + +import org.bukkit.ChatColor; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityPickupItemEvent; @@ -22,7 +24,7 @@ public class ItemPickupListener_1_12 implements Listener { @EventHandler public void onPickup(EntityPickupItemEvent e) { if (e.getItem().hasMetadata("no_pickup")) e.setCancelled(true); - else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith("&5&dALTAR &3Probe - &e")) { + else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith(ChatColor.translateAlternateColorCodes('&', "&5&dALTAR &3Probe - &e"))) { e.setCancelled(true); e.getItem().remove(); } @@ -31,7 +33,7 @@ public class ItemPickupListener_1_12 implements Listener { @EventHandler public void onMinecartPickup(InventoryPickupItemEvent e) { if (e.getItem().hasMetadata("no_pickup")) e.setCancelled(true); - else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith("&5&dALTAR &3Probe - &e")) { + else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith(ChatColor.translateAlternateColorCodes('&', "&5&dALTAR &3Probe - &e"))) { e.setCancelled(true); e.getItem().remove(); }