Protect emits Bukkit events for most area mutations and player-area interactions.
Most mutation events are cancellable and expose mutable target values.
@EventHandler(ignoreCancelled = true)public void onAreaEnter(PlayerAreaEnterEvent event) { event.getPlayer().sendMessage(Component.text("Entering " + event.getArea().getName()));}@EventHandlerpublic void onFlagChange(AreaFlagChangeEvent<Boolean> event) { if (event.getFlag().key().asString().equals("protect:explosions")) { event.setNewState(false); // force explosions off }}
Calling the same mutating API again from inside the corresponding listener
(for example setParent, setPriority, addMember, delete) can cause recursive loops.