diff --git a/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java b/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java index 75d7c9a..82a3526 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java +++ b/api/src/main/java/net/momirealms/customcrops/api/core/AbstractCustomEventListener.java @@ -186,7 +186,7 @@ public abstract class AbstractCustomEventListener implements Listener { ); } - @EventHandler (ignoreCancelled = true) + @EventHandler(ignoreCancelled = true) public void onItemSpawn(ItemSpawnEvent event) { Item item = event.getEntity(); ItemStack itemStack = item.getItemStack(); @@ -223,7 +223,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true) + @EventHandler(ignoreCancelled = true) public void onBlockChange(BlockFadeEvent event) { Block block = event.getBlock(); if (block.getType() == Material.FARMLAND) { @@ -242,7 +242,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onTrampling(EntityChangeBlockEvent event) { Block block = event.getBlock(); if (block.getType() == Material.FARMLAND && event.getTo() == Material.DIRT) { @@ -254,7 +254,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onMoistureChange(MoistureChangeEvent event) { if (ConfigManager.disableMoistureMechanic()) { event.setCancelled(true); @@ -273,7 +273,7 @@ public abstract class AbstractCustomEventListener implements Listener { // }); } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onPistonExtend(BlockPistonExtendEvent event) { Optional> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld()); if (world.isEmpty()){ @@ -288,7 +288,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onPistonRetract(BlockPistonRetractEvent event) { Optional> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld()); if (world.isEmpty()){ @@ -303,7 +303,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true) + @EventHandler(ignoreCancelled = true) public void onItemDamage(PlayerItemDamageEvent event) { ItemStack itemStack = event.getItem(); String itemID = this.itemManager.id(itemStack); @@ -323,7 +323,7 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGHEST) + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onExplosion(BlockExplodeEvent event) { Block exploder = event.getBlock(); for (Block block : event.blockList()) { @@ -334,14 +334,21 @@ public abstract class AbstractCustomEventListener implements Listener { } } - @EventHandler + @EventHandler(ignoreCancelled = true) public void onBlockPhysics(BlockPhysicsEvent event) { if (ConfigManager.overriddenCrops().contains(event.getBlock().getType())) { event.setCancelled(true); } } - @EventHandler (ignoreCancelled = true, priority = EventPriority.HIGH) + @EventHandler(ignoreCancelled = true) + public void onBlockGrow(BlockGrowEvent event) { + if (ConfigManager.overriddenCrops().contains(event.getBlock().getType())) { + event.setCancelled(true); + } + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onDispenser(BlockDispenseEvent event) { Block block = event.getBlock(); if (!(block.getBlockData() instanceof org.bukkit.block.data.type.Dispenser directional)) { diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/requirement/PlayerRequirementManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/requirement/PlayerRequirementManager.java index d2066ce..384c581 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/requirement/PlayerRequirementManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/requirement/PlayerRequirementManager.java @@ -64,7 +64,19 @@ public class PlayerRequirementManager extends AbstractRequirementManager private void registerItemInHandRequirement() { registerRequirement((args, actions, runActions) -> { if (args instanceof Section section) { - boolean mainOrOff = section.getString("hand","main").equalsIgnoreCase("main"); + String hand = section.getString("hand","main"); + int mode; + if (hand.equalsIgnoreCase("main")) { + mode = 1; + } else if (hand.equalsIgnoreCase("off")) { + mode = 2; + } else if (hand.equalsIgnoreCase("other")) { + mode = 3; + } else { + mode = 0; + plugin.getPluginLogger().warn("Invalid hand argument: " + hand + " which is expected to be main/off/other"); + return Requirement.empty(); + } int amount = section.getInt("amount", 0); List items = ListUtils.toList(section.get("item")); return context -> { @@ -73,9 +85,13 @@ public class PlayerRequirementManager extends AbstractRequirementManager EquipmentSlot slot = context.arg(ContextKeys.SLOT); ItemStack itemStack; if (slot == null) { - itemStack = mainOrOff ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand(); + itemStack = mode == 1 ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand(); } else { - itemStack = player.getInventory().getItem(slot); + if (mode == 3) { + itemStack = player.getInventory().getItem(slot == EquipmentSlot.HAND ? EquipmentSlot.OFF_HAND : EquipmentSlot.HAND); + } else { + itemStack = player.getInventory().getItem(slot); + } } String id = plugin.getItemManager().id(itemStack); if (items.contains(id) && itemStack.getAmount() >= amount) return true;