From 1fbc200936b2a66f6b70740ba53caa3f3917c7e7 Mon Sep 17 00:00:00 2001 From: Adrian Victor Date: Wed, 17 Jun 2026 17:21:41 -0300 Subject: [PATCH] Add TAKE_LECTERN_BOOK action. --- docs/Nodes.md | 4 +++- .../java/io/github/adrianvic/nemesiseye/ModernEvents.java | 7 +++++++ .../java/io/github/adrianvic/nemesiseye/policy/Action.java | 3 ++- .../github/adrianvic/nemesiseye/policy/NodeHandlers.java | 3 ++- .../nemesiseye/policy/handlers/{ => generic}/Boolean.java | 2 +- .../adrianvic/nemesiseye/impl/v1_21/EventListener.java | 4 ++++ 6 files changed, 19 insertions(+), 4 deletions(-) rename src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/{ => generic}/Boolean.java (86%) diff --git a/docs/Nodes.md b/docs/Nodes.md index d5a88bf..d5b475b 100644 --- a/docs/Nodes.md +++ b/docs/Nodes.md @@ -36,6 +36,8 @@ Triggered on `BlockBreakEvent` and `onEntityDamageByEntityEvent`, returns true w ### FORMBLOCK Triggered on `BlockFormEvent` (ex. triggers when snow is formed from rain), returns true when the block being formed is in the provided list of materials. -## ENDERMAN_ATTACK_PLAYER +### ENDERMAN_ATTACK_PLAYER Triggered on `EndermanAttackPlayerEvent` (from actions other than hitting the Enderman), returns true. +### TAKE_LECTURN_BOOK +Triggered on `PlayerTakeLecturnBookEvent`, returns true. \ No newline at end of file diff --git a/src/main/java/io/github/adrianvic/nemesiseye/ModernEvents.java b/src/main/java/io/github/adrianvic/nemesiseye/ModernEvents.java index 7208703..e93f7c8 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/ModernEvents.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/ModernEvents.java @@ -5,6 +5,7 @@ import io.github.adrianvic.nemesiseye.policy.Action; import org.bukkit.entity.HumanEntity; import org.bukkit.event.block.BlockFormEvent; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerTakeLecternBookEvent; public class ModernEvents { public static void onInventoryClickEvent(InventoryClickEvent event) { @@ -29,4 +30,10 @@ public class ModernEvents { boolean canceled = !Validator.can(event.getBlock().getWorld(), Action.FORMBLOCK, event); event.setCancelled(canceled); } + + public static void onPlayerTakeLecternBookEvent(PlayerTakeLecternBookEvent event) { + if (!Validator.can(event.getPlayer().getWorld(), Action.TAKE_LECTERN_BOOK, event)) { + event.setCancelled(true); + } + } } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java index 7b85c69..ca63c96 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/Action.java @@ -12,5 +12,6 @@ public enum Action { GLYDE, SPAWN, ENDERMAN_ATTACK_PLAYER, - FORMBLOCK + FORMBLOCK, + TAKE_LECTERN_BOOK } diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java index bef30f1..2bc4f0d 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/NodeHandlers.java @@ -2,7 +2,7 @@ package io.github.adrianvic.nemesiseye.policy; import io.github.adrianvic.nemesiseye.Nemesis; import io.github.adrianvic.nemesiseye.policy.handlers.*; -import io.github.adrianvic.nemesiseye.policy.handlers.Boolean; +import io.github.adrianvic.nemesiseye.policy.handlers.generic.Boolean; import java.util.HashMap; import java.util.Map; @@ -21,6 +21,7 @@ public class NodeHandlers { handlers.put(Action.BREAK, new UseItem()); // TODO: implement place handler handlers.put(Action.INTERACTWITH, new InteractWith()); handlers.put(Action.ENDERMAN_ATTACK_PLAYER, new Boolean()); + handlers.put(Action.TAKE_LECTERN_BOOK, new Boolean()); } public static NodeHandler get(Action type) { diff --git a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Boolean.java b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/generic/Boolean.java similarity index 86% rename from src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Boolean.java rename to src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/generic/Boolean.java index 8b9f16c..2b09322 100644 --- a/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/Boolean.java +++ b/src/main/java/io/github/adrianvic/nemesiseye/policy/handlers/generic/Boolean.java @@ -1,4 +1,4 @@ -package io.github.adrianvic.nemesiseye.policy.handlers; +package io.github.adrianvic.nemesiseye.policy.handlers.generic; import io.github.adrianvic.nemesiseye.policy.Action; import io.github.adrianvic.nemesiseye.policy.NodeHandler; diff --git a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/v1_21/EventListener.java b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/v1_21/EventListener.java index a096dd1..e7a7d8e 100644 --- a/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/v1_21/EventListener.java +++ b/src/r1_21/java/io/github/adrianvic/nemesiseye/impl/v1_21/EventListener.java @@ -13,6 +13,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerTakeLecternBookEvent; public class EventListener implements Listener { @EventHandler @@ -53,4 +54,7 @@ public class EventListener implements Listener { public void onBlockFormEvent(BlockFormEvent event) { ModernEvents.onBlockFormEvent(event); } + + @EventHandler + public void onPlayerTakeLecternBook(PlayerTakeLecternBookEvent event) { ModernEvents.onPlayerTakeLecternBookEvent(event); } } \ No newline at end of file