From 37a8f242637a06f5bd16f2f694030645cb21f5c0 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 1 Jun 2025 01:56:19 +0800 Subject: [PATCH] fix possible NPE from plant action --- .../api/action/builtin/ActionPlant.java | 15 ++++++--------- .../bukkit/config/BukkitConfigManager.java | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionPlant.java b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionPlant.java index 2fbfdbf..12c2b62 100644 --- a/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionPlant.java +++ b/api/src/main/java/net/momirealms/customcrops/api/action/builtin/ActionPlant.java @@ -37,7 +37,6 @@ import net.momirealms.customcrops.api.core.world.Pos3; import net.momirealms.customcrops.api.event.CropPlantEvent; import net.momirealms.customcrops.api.misc.value.MathValue; import net.momirealms.customcrops.api.util.EventUtils; -import net.momirealms.customcrops.api.util.LocationUtils; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.inventory.EquipmentSlot; @@ -51,7 +50,7 @@ public class ActionPlant extends AbstractBuiltInAction { private final int point; private final String key; private final int y; - private final boolean triggerAction; + private final boolean triggerEvent; public ActionPlant( BukkitCustomCropsPlugin plugin, @@ -62,7 +61,7 @@ public class ActionPlant extends AbstractBuiltInAction { this.point = section.getInt("point", 0); this.key = requireNonNull(section.getString("crop")); this.y = section.getInt("y", 0); - this.triggerAction = section.getBoolean("trigger-event", false); + this.triggerEvent = section.getBoolean("trigger-event", true); } @SuppressWarnings("unchecked") @@ -94,16 +93,14 @@ public class ActionPlant extends AbstractBuiltInAction { cropBlock.id(state, key); cropBlock.point(state, point); - if (context.holder() instanceof Player player) { - EquipmentSlot slot = requireNonNull(context.arg(ContextKeys.SLOT)); + if (context.holder() instanceof Player player && this.triggerEvent) { + EquipmentSlot slot = Optional.ofNullable(context.arg(ContextKeys.SLOT)).orElse(EquipmentSlot.HAND); CropPlantEvent plantEvent = new CropPlantEvent(player, player.getInventory().getItem(slot), slot, cropLocation, cropConfig, state, point); if (EventUtils.fireAndCheckCancel(plantEvent)) { return; } cropBlock.point(state, plantEvent.point()); - if (triggerAction) { - ActionManager.trigger((Context) context, cropConfig.plantActions()); - } + ActionManager.trigger((Context) context, cropConfig.plantActions()); } CropStageConfig stageConfigWithModel = cropConfig.stageWithModelByPoint(cropBlock.point(state)); @@ -127,6 +124,6 @@ public class ActionPlant extends AbstractBuiltInAction { } public boolean triggerPlantAction() { - return triggerAction; + return triggerEvent; } } diff --git a/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java b/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java index aa9fd2e..95804d0 100644 --- a/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java +++ b/plugin/src/main/java/net/momirealms/customcrops/bukkit/config/BukkitConfigManager.java @@ -237,7 +237,7 @@ public class BukkitConfigManager extends ConfigManager { save = true; } } catch (Exception e) { - plugin.getPluginLogger().warn("Error occurs during parsing configs", e); + plugin.getPluginLogger().warn("Error occurs during parsing config section " + entry.getKey() + " in file " + subFile.toPath(), e); } } }