Event fix with deprecation (#1623)

* Break out events and add individual handlers

https://github.com/BentoBoxWorld/BentoBox/issues/1613

* Corrected AddonEvents to have proper static handlers

* Made constructors protected.

Abstract classes should not have public constructors. Constructors of
abstract classes can only be called in constructors of their subclasses.
So there is no point in making them public. The protected modifier
should be enough.
This commit is contained in:
tastybento 2020-12-27 10:35:49 -08:00 committed by GitHub
parent f281d37a8d
commit 999d196e8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
78 changed files with 1852 additions and 241 deletions

View File

@ -14,7 +14,7 @@ import org.bukkit.event.Listener;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeletedEvent;
import world.bentobox.bentobox.api.events.island.IslandDeletedEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;

View File

@ -107,9 +107,12 @@ public class IslandBanCommand extends CompositeCommand {
.admin(false)
.reason(IslandEvent.Reason.BAN)
.build();
if (banEvent.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(banEvent.isCancelled()) ) {
// Banning was blocked due to an event cancellation. Fail silently.
return false;
}
// Event is not cancelled
if (!banEvent.isCancelled() && island.ban(issuer.getUniqueId(), target.getUniqueId())) {
if (island.ban(issuer.getUniqueId(), target.getUniqueId())) {
issuer.sendMessage("commands.island.ban.player-banned", TextVariables.NAME, target.getName());
target.sendMessage("commands.island.ban.owner-banned-you", TextVariables.NAME, issuer.getName());
// If the player is online, has an island and on the banned island, move them home immediately
@ -122,7 +125,7 @@ public class IslandBanCommand extends CompositeCommand {
} else {
issuer.sendMessage("commands.island.ban.cannot-ban-more-players");
}
// Banning was blocked, maybe due to an event cancellation. Fail silently.
// Fail silently.
return false;
}

View File

@ -112,7 +112,7 @@ public class IslandExpelCommand extends CompositeCommand {
.admin(false)
.reason(IslandEvent.Reason.EXPEL)
.build();
if (expelEvent.isCancelled()) {
if (expelEvent.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(expelEvent.isCancelled())) {
user.sendMessage(CANNOT_EXPEL);
return false;
}

View File

@ -85,9 +85,12 @@ public class IslandUnbanCommand extends CompositeCommand {
.admin(false)
.reason(IslandEvent.Reason.UNBAN)
.build();
if (unbanEvent.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(unbanEvent.isCancelled())) {
// Unbanning was blocked due to an event cancellation.
return false;
}
// Event is not cancelled
if (!unbanEvent.isCancelled() && island.unban(user.getUniqueId(), target.getUniqueId())) {
if (island.unban(user.getUniqueId(), target.getUniqueId())) {
user.sendMessage("commands.island.unban.player-unbanned", TextVariables.NAME, target.getName());
target.sendMessage("commands.island.unban.you-are-unbanned", TextVariables.NAME, user.getName());
// Set cooldown
@ -97,7 +100,7 @@ public class IslandUnbanCommand extends CompositeCommand {
}
return true;
}
// Unbanning was blocked, maybe due to an event cancellation. Fail silently.
// Unbanning was blocked, fail silently.
return false;
}

View File

@ -15,6 +15,7 @@ import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.team.TeamEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
@ -164,13 +165,14 @@ public class IslandTeamCommand extends CompositeCommand {
}
private boolean fireEvent(User user) {
return TeamEvent.builder()
IslandBaseEvent e = TeamEvent.builder()
.island(getIslands()
.getIsland(getWorld(), user.getUniqueId()))
.reason(TeamEvent.Reason.INFO)
.involvedPlayer(user.getUniqueId())
.build()
.isCancelled();
.build();
return e.getNewEvent().map(IslandBaseEvent::isCancelled)
.orElse(e.isCancelled());
}
/**

View File

@ -6,6 +6,7 @@ import java.util.UUID;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.commands.ConfirmableCommand;
import world.bentobox.bentobox.api.commands.island.team.Invite.Type;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent;
import world.bentobox.bentobox.api.events.team.TeamEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
@ -65,12 +66,13 @@ public class IslandTeamInviteAcceptCommand extends ConfirmableCommand {
return false;
}
// Fire event so add-ons can run commands, etc.
return !TeamEvent.builder()
IslandBaseEvent e = TeamEvent.builder()
.island(getIslands().getIsland(getWorld(), prospectiveOwnerUUID))
.reason(TeamEvent.Reason.JOIN)
.involvedPlayer(playerUUID)
.build()
.isCancelled();
.build();
return !e.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(e.isCancelled());
}
return true;
}

View File

@ -11,6 +11,7 @@ import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.commands.island.team.Invite.Type;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.team.TeamEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
@ -121,12 +122,12 @@ public class IslandTeamInviteCommand extends CompositeCommand {
user.sendMessage("commands.island.team.invite.removing-invite");
}
// Fire event so add-ons can run commands, etc.
if (TeamEvent.builder()
IslandBaseEvent e = TeamEvent.builder()
.island(getIslands().getIsland(getWorld(), user.getUniqueId()))
.reason(TeamEvent.Reason.INVITE)
.involvedPlayer(invitedPlayer.getUniqueId())
.build()
.isCancelled()) {
.build();
if (e.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(e.isCancelled())) {
return false;
}
// Put the invited player (key) onto the list with inviter (value)

View File

@ -4,6 +4,7 @@ import java.util.List;
import java.util.UUID;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.team.TeamEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.user.User;
@ -30,13 +31,12 @@ public class IslandTeamInviteRejectCommand extends CompositeCommand {
// Reject /island reject
if (itc.isInvited(playerUUID)) {
// Fire event so add-ons can run commands, etc.
if (TeamEvent.builder()
.island(getIslands()
.getIsland(getWorld(), itc.getInviter(playerUUID)))
IslandBaseEvent e = TeamEvent.builder()
.island(getIslands().getIsland(getWorld(), user.getUniqueId()))
.reason(TeamEvent.Reason.REJECT)
.involvedPlayer(playerUUID)
.build()
.isCancelled()) {
.build();
if (e.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(e.isCancelled())) {
return false;
}

View File

@ -8,6 +8,7 @@ import java.util.UUID;
import org.bukkit.Bukkit;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent;
import world.bentobox.bentobox.api.events.team.TeamEvent;
import world.bentobox.bentobox.api.localization.TextVariables;
@ -64,31 +65,32 @@ public class IslandTeamSetownerCommand extends CompositeCommand {
}
// Fire event so add-ons can run commands, etc.
Island island = getIslands().getIsland(getWorld(), playerUUID);
if (TeamEvent.builder()
.island(island)
// Fire event so add-ons can run commands, etc.
IslandBaseEvent e = TeamEvent.builder()
.island(getIslands().getIsland(getWorld(), user.getUniqueId()))
.reason(TeamEvent.Reason.SETOWNER)
.involvedPlayer(targetUUID)
.build()
.isCancelled()) {
.build();
if (e.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(e.isCancelled())) {
return false;
}
getIslands().setOwner(getWorld(), user, targetUUID);
// Call the event for the new owner
IslandEvent.builder()
.island(island)
.involvedPlayer(targetUUID)
.admin(false)
.reason(IslandEvent.Reason.RANK_CHANGE)
.rankChange(island.getRank(User.getInstance(targetUUID)), RanksManager.OWNER_RANK)
.build();
.island(island)
.involvedPlayer(targetUUID)
.admin(false)
.reason(IslandEvent.Reason.RANK_CHANGE)
.rankChange(island.getRank(User.getInstance(targetUUID)), RanksManager.OWNER_RANK)
.build();
// Call the event for the previous owner
IslandEvent.builder()
.island(island)
.involvedPlayer(playerUUID)
.admin(false)
.reason(IslandEvent.Reason.RANK_CHANGE)
.rankChange(RanksManager.OWNER_RANK, island.getRank(user))
.build();
.island(island)
.involvedPlayer(playerUUID)
.admin(false)
.reason(IslandEvent.Reason.RANK_CHANGE)
.rankChange(RanksManager.OWNER_RANK, island.getRank(user))
.build();
getIslands().save(island);
return true;
}

View File

@ -22,6 +22,12 @@ import world.bentobox.bentobox.BentoBox;
*/
public abstract class BentoBoxEvent extends Event {
/**
* Event handler list
* @deprecated This field will be removed from BentoBoxEvent.
* Events must provide their own handlers.
*/
@Deprecated
private static final HandlerList handlers = new HandlerList();
/**
@ -111,4 +117,5 @@ public abstract class BentoBoxEvent extends Event {
});
} catch (IntrospectionException ignore) {}
}
}

View File

@ -1,8 +1,23 @@
package world.bentobox.bentobox.api.events;
import org.bukkit.event.HandlerList;
/**
* Fired when plugin is ready to play and all files are loaded
*
* @author tastybento
*/
public class BentoBoxReadyEvent extends BentoBoxEvent {}
public class BentoBoxReadyEvent extends BentoBoxEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
}

View File

@ -1,5 +1,6 @@
package world.bentobox.bentobox.api.events;
import java.util.Optional;
import java.util.UUID;
import org.bukkit.Location;
@ -10,9 +11,9 @@ import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.database.objects.Island;
/**
* @author Poslovitch
* @author Poslovitch, tastybento
*/
public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
public abstract class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
private boolean cancelled;
protected final Island island;
@ -20,8 +21,9 @@ public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
protected final boolean admin;
protected final Location location;
protected final Event rawEvent;
protected IslandBaseEvent newEvent;
public IslandBaseEvent(Island island) {
protected IslandBaseEvent(Island island) {
super();
this.island = island;
playerUUID = island == null ? null : island.getOwner();
@ -36,7 +38,7 @@ public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
* @param admin - true if ths is due to an admin event
* @param location - the location
*/
public IslandBaseEvent(Island island, UUID playerUUID, boolean admin, Location location) {
protected IslandBaseEvent(Island island, UUID playerUUID, boolean admin, Location location) {
super();
this.island = island;
this.playerUUID = playerUUID;
@ -44,15 +46,15 @@ public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
this.location = location;
rawEvent = null;
}
/**
/**
* @param island - island
* @param playerUUID - the player's UUID
* @param admin - true if ths is due to an admin event
* @param location - the location
* @param rawEvent - the raw event
*/
public IslandBaseEvent(Island island, UUID playerUUID, boolean admin, Location location, Event rawEvent) {
protected IslandBaseEvent(Island island, UUID playerUUID, boolean admin, Location location, Event rawEvent) {
super();
this.island = island;
this.playerUUID = playerUUID;
@ -95,7 +97,7 @@ public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
public Location getLocation() {
return location;
}
/**
* @return the raw event
*/
@ -113,4 +115,20 @@ public class IslandBaseEvent extends BentoBoxEvent implements Cancellable {
public void setCancelled(boolean cancel) {
cancelled = cancel;
}
/**
* Get new event if this event is deprecated
* @return optional newEvent or empty if there is none
*/
public Optional<IslandBaseEvent> getNewEvent() {
return Optional.ofNullable(newEvent);
}
/**
* Set the newer event so it can be obtained if this event is deprecated
* @param newEvent the newEvent to set
*/
public void setNewEvent(IslandBaseEvent newEvent) {
this.newEvent = newEvent;
}
}

View File

@ -2,6 +2,8 @@ package world.bentobox.bentobox.api.events;
import java.util.UUID;
import org.bukkit.event.HandlerList;
/**
* Fired when a message is going to an offline player
*
@ -11,6 +13,16 @@ import java.util.UUID;
public class OfflineMessageEvent extends BentoBoxEvent {
private final UUID offlinePlayer;
private final String message;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* @param offlinePlayer - offline player

View File

@ -1,19 +1,22 @@
package world.bentobox.bentobox.api.events.addon;
import java.util.Map;
import java.util.Optional;
import world.bentobox.bentobox.api.addons.Addon;
import world.bentobox.bentobox.api.events.BentoBoxEvent;
/**
* Base abstract class for addon events
* @author Poslovitch
*/
public class AddonBaseEvent extends BentoBoxEvent {
public abstract class AddonBaseEvent extends BentoBoxEvent {
private final Addon addon;
private final Map<String, Object> keyValues;
private AddonBaseEvent newEvent;
public AddonBaseEvent(Addon addon, Map<String, Object> keyValues) {
protected AddonBaseEvent(Addon addon, Map<String, Object> keyValues) {
super();
this.addon = addon;
this.keyValues = keyValues;
@ -30,4 +33,22 @@ public class AddonBaseEvent extends BentoBoxEvent {
public Map<String, Object> getKeyValues() {
return keyValues;
}
/**
* Get new event if this event is deprecated
* @return optional newEvent or empty if there is none
*/
public Optional<AddonBaseEvent> getNewEvent() {
return Optional.ofNullable(newEvent);
}
/**
* Set the newer event so it can be obtained if this event is deprecated
* @param newEvent the newEvent to set
*/
public void setNewEvent(AddonBaseEvent newEvent) {
this.newEvent = newEvent;
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.addon;
import java.util.Map;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.addons.Addon;
/**
* Called when an addon is disabled
* @author tastybento
*
*/
public class AddonDisableEvent extends AddonBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
AddonDisableEvent(Addon addon, Map<String, Object> keyValues) {
// Final variables have to be declared in the constructor
super(addon, keyValues);
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.addon;
import java.util.Map;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.addons.Addon;
/**
* Called when an addon is enabled
* @author tastybento
*
*/
public class AddonEnableEvent extends AddonBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
AddonEnableEvent(Addon addon, Map<String, Object> keyValues) {
// Final variables have to be declared in the constructor
super(addon, keyValues);
}
}

View File

@ -26,7 +26,8 @@ public class AddonEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.addon.AddonEnableEvent}
*/
@Deprecated
public class AddonEnableEvent extends AddonBaseEvent {
@ -37,7 +38,8 @@ public class AddonEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.addon.AddonDisableEvent}
*/
@Deprecated
public class AddonDisableEvent extends AddonBaseEvent {
@ -48,7 +50,8 @@ public class AddonEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.addon.AddonLoadEvent}
*/
@Deprecated
public class AddonLoadEvent extends AddonBaseEvent {
@ -59,7 +62,8 @@ public class AddonEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.addon.AddonGeneralEvent}
*/
@Deprecated
public class AddonGeneralEvent extends AddonBaseEvent {
@ -95,7 +99,7 @@ public class AddonEvent {
return this;
}
private AddonBaseEvent getEvent() {
private AddonBaseEvent getDeprecatedEvent() {
switch (reason) {
case ENABLE:
return new AddonEnableEvent(addon, keyValues);
@ -108,12 +112,31 @@ public class AddonEvent {
}
}
private AddonBaseEvent getEvent() {
switch (reason) {
case ENABLE:
return new world.bentobox.bentobox.api.events.addon.AddonEnableEvent(addon, keyValues);
case DISABLE:
return new world.bentobox.bentobox.api.events.addon.AddonDisableEvent(addon, keyValues);
case LOAD:
return new world.bentobox.bentobox.api.events.addon.AddonLoadEvent(addon, keyValues);
default:
return new world.bentobox.bentobox.api.events.addon.AddonGeneralEvent(addon, keyValues);
}
}
/**
* Build and fire event
* @return event
* @return event - deprecated event. To obtain the new event use {@link AddonBaseEvent#getNewEvent()}
*/
public AddonBaseEvent build() {
AddonBaseEvent e = getEvent();
// Call new event
AddonBaseEvent newEvent = getEvent();
Bukkit.getPluginManager().callEvent(newEvent);
// Get the old event
AddonBaseEvent e = getDeprecatedEvent();
e.setNewEvent(newEvent);
// Call deprecated event
Bukkit.getPluginManager().callEvent(e);
return e;
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.addon;
import java.util.Map;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.addons.Addon;
/**
* General event that can be called for Addons
* @author tastybento
*
*/
public class AddonGeneralEvent extends AddonBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
AddonGeneralEvent(Addon addon, Map<String, Object> keyValues) {
// Final variables have to be declared in the constructor
super(addon, keyValues);
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.addon;
import java.util.Map;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.addons.Addon;
/**
* Called when an addon is loaded
* @author tastybento
*
*/
public class AddonLoadEvent extends AddonBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
AddonLoadEvent(Addon addon, Map<String, Object> keyValues) {
// Final variables have to be declared in the constructor
super(addon, keyValues);
}
}

View File

@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.BentoBoxEvent;
@ -20,6 +21,16 @@ public class CommandEvent extends BentoBoxEvent implements Cancellable {
private final Command command;
private final String label;
private final String[] args;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
private CommandEvent(CommandSender sender, Command command, String label, String[] args) {
super();

View File

@ -2,6 +2,8 @@ package world.bentobox.bentobox.api.events.flags;
import java.util.UUID;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.flags.Flag;
import world.bentobox.bentobox.database.objects.Island;
@ -13,6 +15,16 @@ public class FlagProtectionChangeEvent extends FlagChangeEvent {
private final Island island;
private final int setTo;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Event that fires when an island protection flag is changed

View File

@ -2,6 +2,8 @@ package world.bentobox.bentobox.api.events.flags;
import java.util.UUID;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.flags.Flag;
import world.bentobox.bentobox.database.objects.Island;
@ -13,6 +15,16 @@ public class FlagSettingChangeEvent extends FlagChangeEvent {
private final Island island;
private final boolean setTo;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Event that fires when an island setting flag is changed

View File

@ -3,6 +3,7 @@ package world.bentobox.bentobox.api.events.flags;
import java.util.UUID;
import org.bukkit.World;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.flags.Flag;
@ -14,6 +15,16 @@ public class FlagWorldSettingChangeEvent extends FlagChangeEvent {
private final World world;
private final boolean setTo;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Event that fires when a world setting is changed

View File

@ -0,0 +1,34 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player will be banned from an island.
* May be cancelled.
* Cancellation will result in the ban being aborted.
*
* @since 1.1
*/
public class IslandBanEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandBanEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,51 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.NonNull;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is going to be created.
* May be cancelled.
*
*/
public class IslandCreateEvent extends IslandBaseEvent {
private @NonNull BlueprintBundle blueprintBundle;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandCreateEvent(Island island, UUID player, boolean admin, Location location, @NonNull BlueprintBundle blueprintBundle) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
this.blueprintBundle = blueprintBundle;
}
/**
* @since 1.6.0
*/
@NonNull
public BlueprintBundle getBlueprintBundle() {
return blueprintBundle;
}
/**
* @since 1.6.0
*/
public void setBlueprintBundle(@NonNull BlueprintBundle blueprintBundle) {
this.blueprintBundle = blueprintBundle;
}
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is created.
*
*/
public class IslandCreatedEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandCreatedEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,39 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.database.objects.IslandDeletion;
/**
* Fired when an island chunks are going to be deleted.
* May be cancelled.
*
*/
public class IslandDeleteChunksEvent extends IslandBaseEvent {
private final IslandDeletion deletedIslandInfo;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandDeleteChunksEvent(Island island, UUID player, boolean admin, Location location, IslandDeletion deletedIsland) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
this.deletedIslandInfo = deletedIsland;
}
public IslandDeletion getDeletedIslandInfo() {
return deletedIslandInfo;
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is going to be deleted.
* May be cancelled.
*
*/
public class IslandDeleteEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandDeleteEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,41 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.database.objects.IslandDeletion;
/**
* Fired when island blocks are going to be deleted.
* If canceled, the island blocks will not be deleted. Note that by the time this is called
* the ownership of the island may have been removed. This event is just for detecting
* that the island blocks are going to be removed.
*
*/
public class IslandDeletedEvent extends IslandBaseEvent {
private final IslandDeletion deletedIslandInfo;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandDeletedEvent(Island island, UUID player, boolean admin, Location location, IslandDeletion deletedIsland) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
this.deletedIslandInfo = deletedIsland;
}
public IslandDeletion getDeletedIslandInfo() {
return deletedIslandInfo;
}
}

View File

@ -0,0 +1,41 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an a player enters an island.
* Cancellation has no effect.
*/
public class IslandEnterEvent extends IslandBaseEvent {
private final @Nullable Island fromIsland;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandEnterEvent(Island island, UUID player, boolean admin, Location location, Island fromIsland, Event rawEvent) {
// Final variables have to be declared in the constructor
super(island, player, admin, location, rawEvent);
this.fromIsland = fromIsland;
}
@Nullable
public Island getFromIsland() {
return fromIsland;
}
}

View File

@ -5,6 +5,7 @@ import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
@ -22,6 +23,16 @@ import world.bentobox.bentobox.lists.Flags;
public class IslandEvent extends IslandBaseEvent {
private final Reason reason;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Fired every time an island event occurs. For developers who just want one event and will use an enum to track the reason
@ -164,8 +175,11 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when a player's rank has changed on an island.
* Cancellation has no effect.
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandRankChangeEvent}
* @since 1.13.0
*/
@Deprecated
public static class IslandRankChangeEvent extends IslandBaseEvent {
private final int oldRank;
@ -192,7 +206,8 @@ public class IslandEvent extends IslandBaseEvent {
* Cancellation will result in the expel being aborted.
*
* @since 1.4.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandExpelEvent}
*/
@Deprecated
public static class IslandExpelEvent extends IslandBaseEvent {
@ -208,7 +223,8 @@ public class IslandEvent extends IslandBaseEvent {
* Cancellation will result in the ban being aborted.
*
* @since 1.1
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandBanEvent}
*/
@Deprecated
public static class IslandBanEvent extends IslandBaseEvent {
@ -224,7 +240,8 @@ public class IslandEvent extends IslandBaseEvent {
* Cancellation will result in the unban being aborted.
*
* @since 1.1
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandUnbanEvent}
*/
@Deprecated
public static class IslandUnbanEvent extends IslandBaseEvent {
@ -238,7 +255,8 @@ public class IslandEvent extends IslandBaseEvent {
* Fired when attempting to make a new island.
* May be cancelled. No island object exists at this point.
* @since 1.15.1
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandPreCreateEvent}
*/
@Deprecated
public static class IslandPreCreateEvent extends IslandBaseEvent {
@ -252,7 +270,8 @@ public class IslandEvent extends IslandBaseEvent {
* Fired when an island is going to be created.
* May be cancelled.
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandCreateEvent}
*/
@Deprecated
public static class IslandCreateEvent extends IslandBaseEvent {
@ -282,7 +301,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an island is created.
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandCreatedEvent}
*/
@Deprecated
public static class IslandCreatedEvent extends IslandBaseEvent {
@ -295,7 +315,8 @@ public class IslandEvent extends IslandBaseEvent {
* Fired when an island is going to be deleted.
* May be cancelled.
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandDeleteEvent}
*/
@Deprecated
public static class IslandDeleteEvent extends IslandBaseEvent {
@ -308,7 +329,8 @@ public class IslandEvent extends IslandBaseEvent {
* Fired when an island chunks are going to be deleted.
* May be cancelled.
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandDeleteChunksEvent}
*/
@Deprecated
public static class IslandDeleteChunksEvent extends IslandBaseEvent {
@ -330,7 +352,11 @@ public class IslandEvent extends IslandBaseEvent {
* the ownership of the island may have been removed. This event is just for detecting
* that the island blocks are going to be removed.
*
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.
*
*/
@Deprecated
public static class IslandDeletedEvent extends IslandBaseEvent {
private final IslandDeletion deletedIslandInfo;
@ -348,7 +374,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when a player is unregistered from an island.
* @since 1.3.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandUnregisteredEvent}
*/
@Deprecated
public static class IslandUnregisteredEvent extends IslandBaseEvent {
@ -360,7 +387,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when a player is registered from an island.
* @since 1.3.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandRegisteredEvent}
*/
@Deprecated
public static class IslandRegisteredEvent extends IslandBaseEvent {
@ -372,7 +400,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an island is reserved for a player
* @since 1.12.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandReservedEvent}
*/
@Deprecated
public static class IslandReservedEvent extends IslandBaseEvent {
@ -384,7 +413,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an a player enters an island.
* Cancellation has no effect.
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandEnterEvent}
*/
@Deprecated
public static class IslandEnterEvent extends IslandBaseEvent {
@ -405,7 +435,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when a player exits an island.
* Cancellation has no effect.
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandExitEvent}
*/
@Deprecated
public static class IslandExitEvent extends IslandBaseEvent {
@ -429,7 +460,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an island is locked
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandLockEvent}
*/
@Deprecated
public static class IslandLockEvent extends IslandBaseEvent {
@ -441,7 +473,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an island is unlocked
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandUnlockEvent}
*/
@Deprecated
public static class IslandUnlockEvent extends IslandBaseEvent {
@ -454,7 +487,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired before an island has its player data cleared, e.g., just before a reset
* @since 1.12.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandPreclearEvent}
*/
@Deprecated
public static class IslandPreclearEvent extends IslandBaseEvent {
@ -479,7 +513,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when an island is going to be reset.
* May be cancelled.
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandResetEvent}
*/
@Deprecated
public static class IslandResetEvent extends IslandBaseEvent {
@ -520,7 +555,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired after an island is reset
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandResettedEvent}
*/
@Deprecated
public static class IslandResettedEvent extends IslandBaseEvent {
@ -544,7 +580,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when something happens to the island not covered by other events
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandGeneralEvent}
*/
@Deprecated
public static class IslandGeneralEvent extends IslandBaseEvent {
@ -558,7 +595,8 @@ public class IslandEvent extends IslandBaseEvent {
/**
* Fired when island protection range is changed.
* @since 1.11.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.island.IslandProtectionRangeChangeEvent}
*/
@Deprecated
public static class IslandProtectionRangeChangeEvent extends IslandBaseEvent {
@ -626,7 +664,6 @@ public class IslandEvent extends IslandBaseEvent {
}
public static class IslandEventBuilder {
// Here field are NOT final. They are just used for the building.
private Island island;
@ -755,101 +792,123 @@ public class IslandEvent extends IslandBaseEvent {
return this;
}
/**
* Get the deprecated IslandEvent
* @return deprecated event
*/
private IslandBaseEvent getDeprecatedEvent() {
switch (reason) {
case EXPEL:
return new IslandExpelEvent(island, player, admin, location);
case BAN:
return new IslandBanEvent(island, player, admin, location);
case PRECREATE:
return new IslandPreCreateEvent(player);
case CREATE:
return new IslandCreateEvent(island, player, admin, location, blueprintBundle);
case CREATED:
return new IslandCreatedEvent(island, player, admin, location);
case DELETE:
return new IslandDeleteEvent(island, player, admin, location);
case DELETE_CHUNKS:
return new IslandDeleteChunksEvent(island, player, admin, location, deletedIslandInfo);
case DELETED:
return new IslandDeletedEvent(island, player, admin, location, deletedIslandInfo);
case ENTER:
return new IslandEnterEvent(island, player, admin, location, oldIsland, rawEvent);
case EXIT:
return new IslandExitEvent(island, player, admin, location, oldIsland, rawEvent);
case LOCK:
return new IslandLockEvent(island, player, admin, location);
case RESET:
return new IslandResetEvent(island, player, admin, location, blueprintBundle, oldIsland);
case RESETTED:
return new IslandResettedEvent(island, player, admin, location, oldIsland);
case UNBAN:
return new IslandUnbanEvent(island, player, admin, location);
case UNLOCK:
return new IslandUnlockEvent(island, player, admin, location);
case REGISTERED:
return new IslandRegisteredEvent(island, player, admin, location);
case UNREGISTERED:
return new IslandUnregisteredEvent(island, player, admin, location);
case RANGE_CHANGE:
return new IslandProtectionRangeChangeEvent(island, player, admin, location, newRange, oldRange);
case PRECLEAR:
return new IslandPreclearEvent(island, player, admin, location, oldIsland);
case RESERVED:
return new IslandReservedEvent(island, player, admin, location);
case RANK_CHANGE:
return new IslandRankChangeEvent(island, player, admin, location, oldRank, newRank);
default:
return new IslandGeneralEvent(island, player, admin, location);
}
}
private IslandBaseEvent getEvent() {
switch (reason) {
case EXPEL:
return new world.bentobox.bentobox.api.events.island.IslandExpelEvent(island, player, admin, location);
case BAN:
return new world.bentobox.bentobox.api.events.island.IslandBanEvent(island, player, admin, location);
case PRECREATE:
return new world.bentobox.bentobox.api.events.island.IslandPreCreateEvent(player);
case CREATE:
return new world.bentobox.bentobox.api.events.island.IslandCreateEvent(island, player, admin, location, blueprintBundle);
case CREATED:
return new world.bentobox.bentobox.api.events.island.IslandCreatedEvent(island, player, admin, location);
case DELETE:
return new world.bentobox.bentobox.api.events.island.IslandDeleteEvent(island, player, admin, location);
case DELETE_CHUNKS:
return new world.bentobox.bentobox.api.events.island.IslandDeleteChunksEvent(island, player, admin, location, deletedIslandInfo);
case DELETED:
return new world.bentobox.bentobox.api.events.island.IslandDeletedEvent(island, player, admin, location, deletedIslandInfo);
case ENTER:
return new world.bentobox.bentobox.api.events.island.IslandEnterEvent(island, player, admin, location, oldIsland, rawEvent);
case EXIT:
return new world.bentobox.bentobox.api.events.island.IslandExitEvent(island, player, admin, location, oldIsland, rawEvent);
case LOCK:
return new world.bentobox.bentobox.api.events.island.IslandLockEvent(island, player, admin, location);
case RESET:
return new world.bentobox.bentobox.api.events.island.IslandResetEvent(island, player, admin, location, blueprintBundle, oldIsland);
case RESETTED:
return new world.bentobox.bentobox.api.events.island.IslandResettedEvent(island, player, admin, location, oldIsland);
case UNBAN:
return new world.bentobox.bentobox.api.events.island.IslandUnbanEvent(island, player, admin, location);
case UNLOCK:
return new world.bentobox.bentobox.api.events.island.IslandUnlockEvent(island, player, admin, location);
case REGISTERED:
return new world.bentobox.bentobox.api.events.island.IslandRegisteredEvent(island, player, admin, location);
case UNREGISTERED:
return new world.bentobox.bentobox.api.events.island.IslandUnregisteredEvent(island, player, admin, location);
case RANGE_CHANGE:
return new world.bentobox.bentobox.api.events.island.IslandProtectionRangeChangeEvent(island, player, admin, location, newRange, oldRange);
case PRECLEAR:
return new world.bentobox.bentobox.api.events.island.IslandPreclearEvent(island, player, admin, location, oldIsland);
case RESERVED:
return new world.bentobox.bentobox.api.events.island.IslandReservedEvent(island, player, admin, location);
case RANK_CHANGE:
return new world.bentobox.bentobox.api.events.island.IslandRankChangeEvent(island, player, admin, location, oldRank, newRank);
default:
return new world.bentobox.bentobox.api.events.island.IslandGeneralEvent(island, player, admin, location);
}
}
/**
* Builds and fires the deprecated and new IslandEvent.
* @return deprecated event. To obtain the new event use {@link IslandBaseEvent#getNewEvent()}
*/
public IslandBaseEvent build() {
// Call the generic event for developers who just want one event and use the Reason enum
Bukkit.getPluginManager().callEvent(new IslandEvent(island, player, admin, location, reason));
// Generate explicit events
switch (reason) {
case EXPEL:
IslandExpelEvent expel = new IslandExpelEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(expel);
return expel;
case BAN:
IslandBanEvent ban = new IslandBanEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(ban);
return ban;
case PRECREATE:
IslandPreCreateEvent precreate = new IslandPreCreateEvent(player);
Bukkit.getPluginManager().callEvent(precreate);
return precreate;
case CREATE:
IslandCreateEvent create = new IslandCreateEvent(island, player, admin, location, blueprintBundle);
Bukkit.getPluginManager().callEvent(create);
return create;
case CREATED:
IslandCreatedEvent created = new IslandCreatedEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(created);
return created;
case DELETE:
IslandDeleteEvent delete = new IslandDeleteEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(delete);
return delete;
case DELETE_CHUNKS:
IslandDeleteChunksEvent deleteChunks = new IslandDeleteChunksEvent(island, player, admin, location, deletedIslandInfo);
Bukkit.getPluginManager().callEvent(deleteChunks);
return deleteChunks;
case DELETED:
IslandDeletedEvent deleted = new IslandDeletedEvent(island, player, admin, location, deletedIslandInfo);
Bukkit.getPluginManager().callEvent(deleted);
return deleted;
case ENTER:
IslandEnterEvent enter = new IslandEnterEvent(island, player, admin, location, oldIsland, rawEvent);
Bukkit.getPluginManager().callEvent(enter);
return enter;
case EXIT:
IslandExitEvent exit = new IslandExitEvent(island, player, admin, location, oldIsland, rawEvent);
Bukkit.getPluginManager().callEvent(exit);
return exit;
case LOCK:
IslandLockEvent lock = new IslandLockEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(lock);
return lock;
case RESET:
IslandResetEvent reset = new IslandResetEvent(island, player, admin, location, blueprintBundle, oldIsland);
Bukkit.getPluginManager().callEvent(reset);
return reset;
case RESETTED:
IslandResettedEvent resetted = new IslandResettedEvent(island, player, admin, location, oldIsland);
Bukkit.getPluginManager().callEvent(resetted);
return resetted;
case UNBAN:
IslandUnbanEvent unban = new IslandUnbanEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(unban);
return unban;
case UNLOCK:
IslandUnlockEvent unlock = new IslandUnlockEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(unlock);
return unlock;
case REGISTERED:
IslandRegisteredEvent reg = new IslandRegisteredEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(reg);
return reg;
case UNREGISTERED:
IslandUnregisteredEvent unreg = new IslandUnregisteredEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(unreg);
return unreg;
case RANGE_CHANGE:
IslandProtectionRangeChangeEvent
change = new IslandProtectionRangeChangeEvent(island, player, admin, location, newRange, oldRange);
Bukkit.getPluginManager().callEvent(change);
return change;
case PRECLEAR:
IslandPreclearEvent preclear = new IslandPreclearEvent(island, player, admin, location, oldIsland);
Bukkit.getPluginManager().callEvent(preclear);
return preclear;
case RESERVED:
IslandReservedEvent res = new IslandReservedEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(res);
return res;
case RANK_CHANGE:
IslandRankChangeEvent rankChange = new IslandRankChangeEvent(island, player, admin, location, oldRank, newRank);
Bukkit.getPluginManager().callEvent(rankChange);
return rankChange;
default:
IslandGeneralEvent general = new IslandGeneralEvent(island, player, admin, location);
Bukkit.getPluginManager().callEvent(general);
return general;
}
// Generate new event
IslandBaseEvent newEvent = getEvent();
Bukkit.getPluginManager().callEvent(newEvent);
// Generate deprecated events
IslandBaseEvent e = getDeprecatedEvent();
e.setNewEvent(newEvent);
Bukkit.getPluginManager().callEvent(e);
return e;
}
}
}

View File

@ -0,0 +1,43 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.Nullable;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player exits an island.
* Cancellation has no effect.
*/
public class IslandExitEvent extends IslandBaseEvent {
private final @Nullable Island toIsland;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandExitEvent(Island island, UUID player, boolean admin, Location location, Island toIsland, Event rawEvent) {
// Final variables have to be declared in the constructor
super(island, player, admin, location, rawEvent);
this.toIsland = toIsland;
}
@Nullable
public Island getToIsland() {
return toIsland;
}
}

View File

@ -0,0 +1,35 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player will be expelled from an island.
* May be cancelled.
* Cancellation will result in the expel being aborted.
*
* @since 1.4.0
*/
public class IslandExpelEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandExpelEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when something happens to the island not covered by other events
*
*/
public class IslandGeneralEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandGeneralEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is locked
*
*/
public class IslandLockEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandLockEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
/**
* Fired when attempting to make a new island.
* May be cancelled. No island object exists at this point.
* @since 1.15.1
*/
public class IslandPreCreateEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandPreCreateEvent(UUID player) {
// Final variables have to be declared in the constructor
super(null, player, false, null);
}
}

View File

@ -0,0 +1,44 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.NonNull;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired before an island has its player data cleared, e.g., just before a reset
* @since 1.12.0
*/
public class IslandPreclearEvent extends IslandBaseEvent {
private final @NonNull Island oldIsland;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandPreclearEvent(Island island, UUID player, boolean admin, Location location, @NonNull Island oldIsland) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
// Create a copy of the old island
this.oldIsland = new Island(oldIsland);
}
/**
* @since 1.12.0
*/
@NonNull
public Island getOldIsland() {
return oldIsland;
}
}

View File

@ -0,0 +1,89 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when island protection range is changed.
* @since 1.11.0
*/
public class IslandProtectionRangeChangeEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* New protection range value.
*/
private int newRange;
/**
* Old protection range value.
*/
private int oldRange;
/**
* Constructor IslandProtectionRangeChange creates a new IslandProtectionRangeChange instance.
*
* @param island of type Island
* @param player of type UUID
* @param admin of type boolean
* @param location of type Location
* @param newRange of type int
* @param oldRange of type int
*/
IslandProtectionRangeChangeEvent(Island island, UUID player, boolean admin, Location location, int newRange, int oldRange) {
super(island, player, admin, location);
this.newRange = newRange;
this.oldRange = oldRange;
}
/**
* This method returns the newRange value.
* @return the value of newRange.
*/
public int getNewRange() {
return newRange;
}
/**
* This method returns the oldRange value.
* @return the value of oldRange.
*/
public int getOldRange() {
return oldRange;
}
/**
* This method sets the newRange value.
* @param newRange the newRange new value.
*/
public void setNewRange(int newRange) {
this.newRange = newRange;
}
/**
* This method sets the oldRange value.
* @param oldRange the oldRange new value.
*/
public void setOldRange(int oldRange) {
this.oldRange = oldRange;
}
}

View File

@ -0,0 +1,44 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player's rank has changed on an island.
* Cancellation has no effect.
* @since 1.13.0
*/
public class IslandRankChangeEvent extends IslandBaseEvent {
private final int oldRank;
private final int newRank;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
public IslandRankChangeEvent(Island island, UUID playerUUID, boolean admin, Location location, int oldRank, int newRank) {
super(island, playerUUID, admin, location);
this.oldRank = oldRank;
this.newRank = newRank;
}
public int getOldRank() {
return oldRank;
}
public int getNewRank(){
return newRank;
}
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player is registered from an island.
* @since 1.3.0
*/
public class IslandRegisteredEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandRegisteredEvent(Island island, UUID player, boolean admin, Location location) {
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is reserved for a player
* @since 1.12.0
*/
public class IslandReservedEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandReservedEvent(Island island, UUID player, boolean admin, Location location) {
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,62 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.NonNull;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is going to be reset.
* May be cancelled.
*/
public class IslandResetEvent extends IslandBaseEvent {
private final @NonNull Island oldIsland;
private @NonNull BlueprintBundle blueprintBundle;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandResetEvent(Island island, UUID player, boolean admin, Location location, @NonNull BlueprintBundle blueprintBundle, @NonNull Island oldIsland) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
this.blueprintBundle = blueprintBundle;
// Create a copy of the old island
this.oldIsland = new Island(oldIsland);
}
/**
* @since 1.12.0
*/
@NonNull
public Island getOldIsland() {
return oldIsland;
}
/**
* @since 1.6.0
*/
@NonNull
public BlueprintBundle getBlueprintBundle() {
return blueprintBundle;
}
/**
* @since 1.6.0
*/
public void setBlueprintBundle(@NonNull BlueprintBundle blueprintBundle) {
this.blueprintBundle = blueprintBundle;
}
}

View File

@ -0,0 +1,44 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import org.eclipse.jdt.annotation.NonNull;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired after an island is reset
*
*/
public class IslandResettedEvent extends IslandBaseEvent {
private final @NonNull Island oldIsland;
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandResettedEvent(Island island, UUID player, boolean admin, Location location, Island oldIsland) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
// Create a copy of the old island
this.oldIsland = new Island(oldIsland);
}
/**
* @since 1.12.0
*/
@NonNull
public Island getOldIsland() {
return oldIsland;
}
}

View File

@ -0,0 +1,35 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player will be banned from an island.
* May be cancelled.
* Cancellation will result in the unban being aborted.
*
* @since 1.1
*/
public class IslandUnbanEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
public IslandUnbanEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,32 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when an island is unlocked
*
*/
public class IslandUnlockEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandUnlockEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,31 @@
package world.bentobox.bentobox.api.events.island;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Fired when a player is unregistered from an island.
* @since 1.3.0
*/
public class IslandUnregisteredEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
IslandUnregisteredEvent(Island island, UUID player, boolean admin, Location location) {
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamDeleteEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamDeleteEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -37,7 +37,8 @@ public class TeamEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamJoinEvent}
*/
@Deprecated
public static class TeamJoinEvent extends IslandBaseEvent {
@ -50,7 +51,8 @@ public class TeamEvent {
/**
* Called after a player has joined an island
* @since 1.3.0
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamJoinedEvent}
*/
@Deprecated
public static class TeamJoinedEvent extends IslandBaseEvent {
@ -68,7 +70,8 @@ public class TeamEvent {
}
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamInviteEvent}
*/
@Deprecated
public static class TeamInviteEvent extends IslandBaseEvent {
@ -78,7 +81,8 @@ public class TeamEvent {
}
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamLeaveEvent}
*/
@Deprecated
public static class TeamLeaveEvent extends IslandBaseEvent {
@ -88,7 +92,8 @@ public class TeamEvent {
}
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamRejectEvent}
*/
@Deprecated
public static class TeamRejectEvent extends IslandBaseEvent {
@ -98,7 +103,8 @@ public class TeamEvent {
}
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamKickEvent}
*/
@Deprecated
public static class TeamKickEvent extends IslandBaseEvent {
@ -112,7 +118,8 @@ public class TeamEvent {
* To get the old owner, get from the island object. The new owner is the player's UUID.
* @author tastybento
*
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamSetownerEvent}
*/
@Deprecated
public static class TeamSetownerEvent extends IslandBaseEvent {
@ -137,7 +144,8 @@ public class TeamEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamInfoEvent}
*/
@Deprecated
public static class TeamInfoEvent extends IslandBaseEvent {
@ -148,7 +156,8 @@ public class TeamEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamDeleteEvent}
*/
@Deprecated
public static class TeamDeleteEvent extends IslandBaseEvent {
@ -159,7 +168,8 @@ public class TeamEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamUninviteEvent}
*/
@Deprecated
public static class TeamUninviteEvent extends IslandBaseEvent {
@ -170,7 +180,8 @@ public class TeamEvent {
}
/**
* @deprecated This event is moving to its own class in 1.16.0
* @deprecated This event is moving to its own class.
* Use {@link world.bentobox.bentobox.api.events.team.TeamGeneralEvent}
*/
@Deprecated
public static class TeamGeneralEvent extends IslandBaseEvent {
@ -225,7 +236,7 @@ public class TeamEvent {
return this;
}
private IslandBaseEvent getEvent() {
private IslandBaseEvent getDeprecatedEvent() {
switch (reason) {
case JOIN:
return new TeamJoinEvent(island, player, admin, location);
@ -252,12 +263,44 @@ public class TeamEvent {
}
}
private IslandBaseEvent getEvent() {
switch (reason) {
case JOIN:
return new world.bentobox.bentobox.api.events.team.TeamJoinEvent(island, player, admin, location);
case JOINED:
return new world.bentobox.bentobox.api.events.team.TeamJoinedEvent(island, player, admin, location);
case INVITE:
return new world.bentobox.bentobox.api.events.team.TeamInviteEvent(island, player, admin, location);
case LEAVE:
return new world.bentobox.bentobox.api.events.team.TeamLeaveEvent(island, player, admin, location);
case REJECT:
return new world.bentobox.bentobox.api.events.team.TeamRejectEvent(island, player, admin, location);
case KICK:
return new world.bentobox.bentobox.api.events.team.TeamKickEvent(island, player, admin, location);
case SETOWNER:
return new world.bentobox.bentobox.api.events.team.TeamSetownerEvent(island, player, admin, location);
case INFO:
return new world.bentobox.bentobox.api.events.team.TeamInfoEvent(island, player, admin, location);
case DELETE:
return new world.bentobox.bentobox.api.events.team.TeamDeleteEvent(island, player, admin, location);
case UNINVITE:
return new world.bentobox.bentobox.api.events.team.TeamUninviteEvent(island, player, admin, location);
default:
return new world.bentobox.bentobox.api.events.team.TeamGeneralEvent(island, player, admin, location);
}
}
/**
* Build the event and call it
* @return event
*/
public IslandBaseEvent build() {
IslandBaseEvent e = getEvent();
// Generate new event
IslandBaseEvent newEvent = getEvent();
Bukkit.getPluginManager().callEvent(newEvent);
// Generate deprecated events
IslandBaseEvent e = getDeprecatedEvent();
e.setNewEvent(newEvent);
Bukkit.getPluginManager().callEvent(e);
return e;
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamGeneralEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamGeneralEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamInfoEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamInfoEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamInviteEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamInviteEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamJoinEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamJoinEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,40 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Called after a player has joined an island
* @since 1.3.0
*/
public class TeamJoinedEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
/**
* Called after a player has joined an island
* @param island - island
* @param player - player
* @param admin - whether this was due to an admin action
* @param location - location
* @since 1.3.0
*/
TeamJoinedEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamKickEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamKickEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamLeaveEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamLeaveEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamRejectEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamRejectEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -0,0 +1,48 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
/**
* Event fires before a setowner is performed on an island.
* To get the old owner, get from the island object. The new owner is the player's UUID.
* @author tastybento
*
*/
public class TeamSetownerEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamSetownerEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
/**
* Convenience method to get the old owner of the island
* @return UUID of old owner
*/
public UUID getOldOwner() {
return island.getOwner();
}
/**
* Convenience method to get the new owner of the island
* @return UUID of new owner
*/
public UUID getNewOwner() {
return playerUUID;
}
}

View File

@ -0,0 +1,28 @@
package world.bentobox.bentobox.api.events.team;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.event.HandlerList;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.database.objects.Island;
public class TeamUninviteEvent extends IslandBaseEvent {
private static final HandlerList handlers = new HandlerList();
@Override
public HandlerList getHandlers() {
return getHandlerList();
}
public static HandlerList getHandlerList() {
return handlers;
}
TeamUninviteEvent(Island island, UUID player, boolean admin, Location location) {
// Final variables have to be declared in the constructor
super(island, player, admin, location);
}
}

View File

@ -263,7 +263,7 @@ public class Island implements DataObject {
/**
* Unbans the target player from this Island.
* <br/>
* Calling this method won't call the {@link world.bentobox.bentobox.api.events.island.IslandEvent.IslandUnbanEvent}.
* Calling this method won't call the {@link world.bentobox.bentobox.api.events.island.IslandUnbanEvent}.
* @param issuer UUID of the issuer, may be null.
* Whenever possible, one should be provided.
* @param target UUID of the target, must be provided.

View File

@ -3,9 +3,9 @@ package world.bentobox.bentobox.hooks.placeholders;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Set;
import org.bukkit.entity.Player;
import org.eclipse.jdt.annotation.NonNull;

View File

@ -17,9 +17,9 @@ import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.panels.Panel;
import world.bentobox.bentobox.api.panels.PanelItem;
import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler;
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
import world.bentobox.bentobox.api.panels.Tab;
import world.bentobox.bentobox.api.panels.TabbedPanel;
import world.bentobox.bentobox.api.panels.builders.PanelItemBuilder;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.util.Util;

View File

@ -18,7 +18,7 @@ import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.lists.Flags;
/**
* Handles {@link Flags#ENTER_EXIT_MESSAGES} flag and {@link world.bentobox.bentobox.api.events.island.IslandEvent.IslandExitEvent} and {@link world.bentobox.bentobox.api.events.island.IslandEvent.IslandEnterEvent}.
* Handles {@link Flags#ENTER_EXIT_MESSAGES} flag and {@link world.bentobox.bentobox.api.events.island.IslandExitEvent} and {@link world.bentobox.bentobox.api.events.island.IslandEnterEvent}.
* @author tastybento
*/
public class EnterExitListener extends FlagListener {

View File

@ -12,8 +12,8 @@ import org.bukkit.event.Listener;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteChunksEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeletedEvent;
import world.bentobox.bentobox.api.events.island.IslandDeleteChunksEvent;
import world.bentobox.bentobox.api.events.island.IslandDeletedEvent;
import world.bentobox.bentobox.database.Database;
import world.bentobox.bentobox.database.objects.IslandDeletion;
import world.bentobox.bentobox.util.DeleteIslandChunks;

View File

@ -1,7 +1,19 @@
package world.bentobox.bentobox.managers;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Queue;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@ -327,7 +339,7 @@ public class IslandsManager {
public void deleteIsland(@NonNull Island island, boolean removeBlocks, @Nullable UUID involvedPlayer) {
// Fire event
IslandBaseEvent event = IslandEvent.builder().island(island).involvedPlayer(involvedPlayer).reason(Reason.DELETE).build();
if (event.isCancelled()) {
if (event.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(event.isCancelled())) {
return;
}
// Set the owner of the island to no one.

View File

@ -13,8 +13,10 @@ import world.bentobox.bentobox.BStats;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.island.IslandCreateEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.Reason;
import world.bentobox.bentobox.api.events.island.IslandResetEvent;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.managers.BlueprintsManager;
@ -54,7 +56,7 @@ public class NewIsland {
.involvedPlayer(user.getUniqueId())
.reason(Reason.PRECREATE)
.build();
if (event.isCancelled()) {
if (event.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(event.isCancelled())) {
// Do nothing
return;
}
@ -181,16 +183,17 @@ public class NewIsland {
.blueprintBundle(plugin.getBlueprintsManager().getBlueprintBundles(addon).get(name))
.oldIsland(oldIsland)
.build();
if (event.isCancelled()) {
if (event.getNewEvent().map(IslandBaseEvent::isCancelled).orElse(event.isCancelled())) {
// Do nothing
return;
}
// Get the new BlueprintBundle if it was changed
switch (reason) {
case CREATE:
name = ((IslandEvent.IslandCreateEvent) event).getBlueprintBundle().getUniqueId();
name = ((IslandCreateEvent) event).getBlueprintBundle().getUniqueId();
break;
case RESET:
name = ((IslandEvent.IslandResetEvent) event).getBlueprintBundle().getUniqueId();
name = ((IslandResetEvent) event).getBlueprintBundle().getUniqueId();
break;
default:
break;

View File

@ -1,10 +1,12 @@
package world.bentobox.bentobox.util.heads;
import java.lang.reflect.Field;
import java.util.UUID;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.lang.reflect.Field;
import java.util.UUID;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;

View File

@ -1,8 +1,5 @@
package world.bentobox.bentobox.util.heads;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
@ -19,6 +16,10 @@ import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.eclipse.jdt.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.panels.PanelItem;
import world.bentobox.bentobox.util.Pair;

View File

@ -34,7 +34,7 @@ import org.powermock.reflect.Whitebox;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.addons.Addon;
import world.bentobox.bentobox.api.commands.CompositeCommand;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeletedEvent;
import world.bentobox.bentobox.api.events.island.IslandDeletedEvent;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.managers.CommandsManager;

View File

@ -235,6 +235,7 @@ public class AdminTeamDisbandCommandTest {
verify(user).sendMessage("commands.admin.team.disband.success", TextVariables.NAME, name[0]);
verify(p).sendMessage("commands.admin.team.disband.disbanded");
verify(p2).sendMessage("commands.admin.team.disband.disbanded");
verify(pim, times(3)).callEvent(any());
// 2 * 2 + 1
verify(pim, times(5)).callEvent(any());
}
}

View File

@ -217,8 +217,8 @@ public class AdminTeamKickCommandTest {
verify(im).removePlayer(eq(world), eq(notUUID));
verify(pm).clearHomeLocations(eq(world), eq(notUUID));
verify(user).sendMessage(eq("commands.admin.team.kick.success"), eq(TextVariables.NAME), eq(name), eq("[owner]"), anyString());
// Offline so event will be called four time
verify(pim, times(4)).callEvent(any());
// Offline so event will be called six time
verify(pim, times(6)).callEvent(any());
}
}

View File

@ -257,8 +257,8 @@ public class IslandResetCommandTest {
assertTrue(irc.execute(user, irc.getLabel(), Collections.emptyList()));
// TODO Verify that panel was shown
// verify(bpm).showPanel(any(), eq(user), eq(irc.getLabel()));
// Verify event
verify(pim, times(14)).callEvent(any(IslandBaseEvent.class));
// Verify event (13 * 2 + 1)
verify(pim, times(27)).callEvent(any(IslandBaseEvent.class));
// Verify messaging
verify(user).sendMessage("commands.island.create.creating-island");
verify(user, never()).sendMessage(eq("commands.island.reset.kicked-from-island"), eq(TextVariables.GAMEMODE), anyString());
@ -446,8 +446,8 @@ public class IslandResetCommandTest {
// Reset command, no confirmation required
assertTrue(irc.execute(user, irc.getLabel(), Collections.singletonList("custom")));
verify(user).sendMessage("commands.island.create.creating-island");
// Verify event
verify(pim, times(14)).callEvent(any(IslandBaseEvent.class));
// Verify event (13 * 2 + 1)
verify(pim, times(27)).callEvent(any(IslandBaseEvent.class));
}
}

View File

@ -10,6 +10,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.times;
import java.util.Collections;
import java.util.HashMap;
@ -222,7 +223,7 @@ public class IslandTeamInviteAcceptCommandTest {
assertTrue(c.canExecute(user, "accept", Collections.emptyList()));
verify(user, never()).sendMessage("commands.island.team.invite.errors.you-already-are-in-team");
verify(user, never()).sendMessage("commands.island.team.invite.errors.invalid-invite");
verify(pim).callEvent(any());
verify(pim, times(2)).callEvent(any());
}
/**
@ -249,7 +250,7 @@ public class IslandTeamInviteAcceptCommandTest {
assertTrue(c.canExecute(user, "accept", Collections.emptyList()));
verify(user, never()).sendMessage("commands.island.team.invite.errors.you-already-are-in-team");
verify(user, never()).sendMessage("commands.island.team.invite.errors.invalid-invite");
verify(pim).callEvent(any());
verify(pim, times(2)).callEvent(any());
}
/**

View File

@ -10,6 +10,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.times;
import java.util.Collections;
import java.util.HashMap;
@ -233,7 +234,7 @@ public class IslandTeamInviteCommandTest {
assertFalse(itl.canExecute(user, itl.getLabel(), Collections.singletonList("target")));
verify(user).sendMessage(eq("general.errors.offline-player"));
}
/**
* Test method for {@link world.bentobox.bentobox.api.commands.island.team.IslandTeamInviteCommand#canExecute(User, String, java.util.List)}.
*/
@ -293,7 +294,7 @@ public class IslandTeamInviteCommandTest {
when(im.hasIsland(any(), eq(notUUID))).thenReturn(true);
testCanExecuteSuccess();
assertTrue(itl.execute(user, itl.getLabel(), Collections.singletonList("target")));
verify(pim).callEvent(any(IslandBaseEvent.class));
verify(pim, times(2)).callEvent(any(IslandBaseEvent.class));
verify(user, never()).sendMessage(eq("commands.island.team.invite.removing-invite"));
verify(ic).addInvite(eq(Invite.Type.TEAM), eq(uuid), eq(notUUID));
verify(user).sendMessage(eq("commands.island.team.invite.invitation-sent"), eq(TextVariables.NAME), eq("target"));
@ -310,7 +311,7 @@ public class IslandTeamInviteCommandTest {
public void testExecuteSuccessTargetHasNoIsland() {
testCanExecuteSuccess();
assertTrue(itl.execute(user, itl.getLabel(), Collections.singletonList("target")));
verify(pim).callEvent(any(IslandBaseEvent.class));
verify(pim, times(2)).callEvent(any(IslandBaseEvent.class));
verify(user, never()).sendMessage(eq("commands.island.team.invite.removing-invite"));
verify(ic).addInvite(eq(Invite.Type.TEAM), eq(uuid), eq(notUUID));
verify(user).sendMessage(eq("commands.island.team.invite.invitation-sent"), eq(TextVariables.NAME), eq("target"));
@ -334,7 +335,7 @@ public class IslandTeamInviteCommandTest {
when(invite.getType()).thenReturn(Type.TEAM);
when(ic.getInvite(eq(notUUID))).thenReturn(invite);
assertTrue(itl.execute(user, itl.getLabel(), Collections.singletonList("target")));
verify(pim).callEvent(any(IslandBaseEvent.class));
verify(pim, times(2)).callEvent(any(IslandBaseEvent.class));
verify(ic).removeInvite(eq(notUUID));
verify(user).sendMessage(eq("commands.island.team.invite.removing-invite"));
}

View File

@ -24,26 +24,6 @@ import org.powermock.modules.junit4.PowerMockRunner;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.events.IslandBaseEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandBanEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandCreateEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandCreatedEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteChunksEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeletedEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandEnterEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandExitEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandExpelEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandGeneralEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandLockEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandPreclearEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandProtectionRangeChangeEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandRegisteredEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandReservedEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandResetEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandResettedEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandUnbanEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandUnlockEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandUnregisteredEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.Reason;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle;
import world.bentobox.bentobox.database.objects.Island;
@ -121,6 +101,7 @@ public class IslandEventTest {
.protectionRange(120, 100)
.reason(reason)
.build();
e = e.getNewEvent().orElse(e);
switch (reason) {
case BAN:
assertTrue(e instanceof IslandBanEvent);
@ -187,7 +168,7 @@ public class IslandEventTest {
}
}
verify(pim, Mockito.times(Reason.values().length * 2)).callEvent(any());
verify(pim, Mockito.times(Reason.values().length * 3)).callEvent(any());
}
}

View File

@ -40,8 +40,8 @@ import com.google.common.collect.ImmutableSet;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.Settings;
import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandEnterEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandExitEvent;
import world.bentobox.bentobox.api.events.island.IslandEnterEvent;
import world.bentobox.bentobox.api.events.island.IslandExitEvent;
import world.bentobox.bentobox.api.user.Notifier;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;

View File

@ -36,7 +36,7 @@ import org.powermock.reflect.Whitebox;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.Settings;
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteChunksEvent;
import world.bentobox.bentobox.api.events.island.IslandDeleteChunksEvent;
import world.bentobox.bentobox.database.DatabaseSetup.DatabaseType;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.database.objects.IslandDeletion;

View File

@ -72,7 +72,7 @@ import io.papermc.lib.environments.Environment;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.Settings;
import world.bentobox.bentobox.api.configuration.WorldSettings;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandDeleteEvent;
import world.bentobox.bentobox.api.events.island.IslandDeleteEvent;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.Database;
import world.bentobox.bentobox.database.DatabaseSetup.DatabaseType;

View File

@ -34,11 +34,11 @@ import org.powermock.reflect.Whitebox;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.events.island.IslandCreateEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandCreateEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandEventBuilder;
import world.bentobox.bentobox.api.events.island.IslandEvent.IslandResetEvent;
import world.bentobox.bentobox.api.events.island.IslandEvent.Reason;
import world.bentobox.bentobox.api.events.island.IslandResetEvent;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.blueprints.dataobjects.BlueprintBundle;
import world.bentobox.bentobox.database.objects.Island;
@ -206,7 +206,7 @@ public class NewIslandTest {
verify(pm).clearHomeLocations(eq(world), any(UUID.class));
verify(island).setProtectionRange(eq(20));
}
/**
* Test method for {@link world.bentobox.bentobox.managers.island.NewIsland#builder()}.
* @throws Exception