TheNextLvlTheNextLvl

Events

Complete Protect API event reference

GitHub Edit on GitHub

Events

Protect emits Bukkit events for most area mutations and player-area interactions. Most mutation events are cancellable and expose mutable target values.

Area Lifecycle

EventCancellableNotes
AreaCreateEventNoFired when a new area is created
AreaLoadEventNoFired when an existing area is loaded
AreaDeleteEventYesCancel to prevent deletion

Flag Events

EventCancellableNotes
AreaFlagChangeEvent<T>YesCancel to block change; supports setNewState(...)
AreaFlagResetEvent<T>YesCancel to block reset
AreaProtectEventYesTriggered by /area protect

Inheritance and Priority

EventCancellableNotes
AreaParentChangeEventYesCancel to block parent updates; supports setParent(...)
AreaPriorityChangeEventYesCancel to block priority updates; supports setPriority(...)

Ownership and Members

EventCancellableNotes
AreaOwnerChangeEventYesCancel to block owner update; supports setOwner(...)
AreaMemberAddEventYesCancel to block member add; supports setMember(...)
AreaMemberRemoveEventYesCancel to block member remove; supports setMember(...)

Player Area Movement

EventCancellableNotes
PlayerAreaEnterEventYesCancel to prevent entering an area
PlayerAreaLeaveEventYesCancel to prevent leaving an area
PlayerAreaTransitionEventYesContains previous + next area (getPrevious(), getArea())

Region and Schematic

EventCancellableNotes
AreaRedefineEvent<T extends Region>YesCancel to block region changes; supports setRegion(...)
AreaSchematicLoadEventYesCancel to block schematic load
AreaSchematicLoadedEventNoFired after successful schematic load
AreaSchematicDeleteEventYesCancel to block schematic deletion

Listener Examples

@EventHandler(ignoreCancelled = true)
public void onAreaEnter(PlayerAreaEnterEvent event) {
    event.getPlayer().sendMessage(Component.text("Entering " + event.getArea().getName()));
}

@EventHandler
public 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.

Last updated on

On this page