From ca11fd1695b2817b765bef167ce88c0912169ed3 Mon Sep 17 00:00:00 2001 From: Yasin <20637793+bertek41@users.noreply.github.com> Date: Sun, 5 Dec 2021 21:42:32 +0300 Subject: [PATCH] API: add ClaimTransferEvent (#1641) --- .../GriefPrevention/DataStore.java | 14 +++- .../events/ClaimTransferEvent.java | 84 +++++++++++++++++++ 2 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/ryanhamshire/GriefPrevention/events/ClaimTransferEvent.java diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/DataStore.java b/src/main/java/me/ryanhamshire/GriefPrevention/DataStore.java index e800290..05a70a5 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/DataStore.java @@ -23,6 +23,7 @@ import me.ryanhamshire.GriefPrevention.events.ClaimCreatedEvent; import me.ryanhamshire.GriefPrevention.events.ClaimDeletedEvent; import me.ryanhamshire.GriefPrevention.events.ClaimExtendEvent; import me.ryanhamshire.GriefPrevention.events.ClaimModifiedEvent; +import me.ryanhamshire.GriefPrevention.events.ClaimTransferEvent; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Chunk; @@ -410,16 +411,23 @@ public abstract class DataStore ownerData = this.getPlayerData(claim.ownerID); } + //call event + ClaimTransferEvent event = new ClaimTransferEvent(claim, newOwnerID); + Bukkit.getPluginManager().callEvent(event); + + //return if event is cancelled + if (event.isCancelled()) return; + //determine new owner PlayerData newOwnerData = null; - if (newOwnerID != null) + if (event.getNewOwner() != null) { - newOwnerData = this.getPlayerData(newOwnerID); + newOwnerData = this.getPlayerData(event.getNewOwner()); } //transfer - claim.ownerID = newOwnerID; + claim.ownerID = event.getNewOwner(); this.saveClaim(claim); //adjust blocks and other records diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/events/ClaimTransferEvent.java b/src/main/java/me/ryanhamshire/GriefPrevention/events/ClaimTransferEvent.java new file mode 100644 index 0000000..f234343 --- /dev/null +++ b/src/main/java/me/ryanhamshire/GriefPrevention/events/ClaimTransferEvent.java @@ -0,0 +1,84 @@ +package me.ryanhamshire.GriefPrevention.events; + +import me.ryanhamshire.GriefPrevention.Claim; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +import java.util.UUID; + +/** + * This Event is thrown when a claim is being transferred. If it is cancelled the claim will not be transferred. + *

+ * Created by bertek41 on 30/10/2021. + */ + +public class ClaimTransferEvent extends Event implements Cancellable +{ + + private static final HandlerList handlers = new HandlerList(); + + public static HandlerList getHandlerList() + { + return handlers; + } + + private final Claim claim; + + private UUID newOwner; + + private boolean cancelled = false; + + public ClaimTransferEvent(Claim claim, UUID newOwner) { + this.claim = claim; + this.newOwner = newOwner; + } + + @Override + public HandlerList getHandlers() + { + return handlers; + } + + @Override + public boolean isCancelled() + { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) + { + this.cancelled = cancelled; + } + + /** + * The Claim + * + * @return {@link Claim} + */ + public Claim getClaim() + { + return claim; + } + + /** + * New owner of the claim + * + * @return the {@link java.util.UUID} of new owner or null + */ + public UUID getNewOwner() + { + return newOwner; + } + + /** + * Sets the new owner of the claim + * + * @param {@link java.util.UUID} newOwner can be null + */ + public void setNewOwner(UUID newOwner) + { + this.newOwner = newOwner; + } +}