9
0
mirror of https://github.com/Xiao-MoMi/Custom-Crops.git synced 2025-12-19 15:09:25 +00:00

Added an option to check the other hand

This commit is contained in:
XiaoMoMi
2024-09-05 02:38:06 +08:00
parent 660e1d26da
commit 3395de1d11
2 changed files with 36 additions and 13 deletions

View File

@@ -186,7 +186,7 @@ public abstract class AbstractCustomEventListener implements Listener {
); );
} }
@EventHandler (ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onItemSpawn(ItemSpawnEvent event) { public void onItemSpawn(ItemSpawnEvent event) {
Item item = event.getEntity(); Item item = event.getEntity();
ItemStack itemStack = item.getItemStack(); 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) { public void onBlockChange(BlockFadeEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
if (block.getType() == Material.FARMLAND) { 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) { public void onTrampling(EntityChangeBlockEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
if (block.getType() == Material.FARMLAND && event.getTo() == Material.DIRT) { 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) { public void onMoistureChange(MoistureChangeEvent event) {
if (ConfigManager.disableMoistureMechanic()) { if (ConfigManager.disableMoistureMechanic()) {
event.setCancelled(true); 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) { public void onPistonExtend(BlockPistonExtendEvent event) {
Optional<CustomCropsWorld<?>> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld()); Optional<CustomCropsWorld<?>> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld());
if (world.isEmpty()){ 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) { public void onPistonRetract(BlockPistonRetractEvent event) {
Optional<CustomCropsWorld<?>> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld()); Optional<CustomCropsWorld<?>> world = BukkitCustomCropsPlugin.getInstance().getWorldManager().getWorld(event.getBlock().getWorld());
if (world.isEmpty()){ if (world.isEmpty()){
@@ -303,7 +303,7 @@ public abstract class AbstractCustomEventListener implements Listener {
} }
} }
@EventHandler (ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onItemDamage(PlayerItemDamageEvent event) { public void onItemDamage(PlayerItemDamageEvent event) {
ItemStack itemStack = event.getItem(); ItemStack itemStack = event.getItem();
String itemID = this.itemManager.id(itemStack); 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) { public void onExplosion(BlockExplodeEvent event) {
Block exploder = event.getBlock(); Block exploder = event.getBlock();
for (Block block : event.blockList()) { for (Block block : event.blockList()) {
@@ -334,14 +334,21 @@ public abstract class AbstractCustomEventListener implements Listener {
} }
} }
@EventHandler @EventHandler(ignoreCancelled = true)
public void onBlockPhysics(BlockPhysicsEvent event) { public void onBlockPhysics(BlockPhysicsEvent event) {
if (ConfigManager.overriddenCrops().contains(event.getBlock().getType())) { if (ConfigManager.overriddenCrops().contains(event.getBlock().getType())) {
event.setCancelled(true); 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) { public void onDispenser(BlockDispenseEvent event) {
Block block = event.getBlock(); Block block = event.getBlock();
if (!(block.getBlockData() instanceof org.bukkit.block.data.type.Dispenser directional)) { if (!(block.getBlockData() instanceof org.bukkit.block.data.type.Dispenser directional)) {

View File

@@ -64,7 +64,19 @@ public class PlayerRequirementManager extends AbstractRequirementManager<Player>
private void registerItemInHandRequirement() { private void registerItemInHandRequirement() {
registerRequirement((args, actions, runActions) -> { registerRequirement((args, actions, runActions) -> {
if (args instanceof Section section) { 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); int amount = section.getInt("amount", 0);
List<String> items = ListUtils.toList(section.get("item")); List<String> items = ListUtils.toList(section.get("item"));
return context -> { return context -> {
@@ -73,9 +85,13 @@ public class PlayerRequirementManager extends AbstractRequirementManager<Player>
EquipmentSlot slot = context.arg(ContextKeys.SLOT); EquipmentSlot slot = context.arg(ContextKeys.SLOT);
ItemStack itemStack; ItemStack itemStack;
if (slot == null) { if (slot == null) {
itemStack = mainOrOff ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand(); itemStack = mode == 1 ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand();
} else { } 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); String id = plugin.getItemManager().id(itemStack);
if (items.contains(id) && itemStack.getAmount() >= amount) return true; if (items.contains(id) && itemStack.getAmount() >= amount) return true;