Added owner to WarpRemoveEvent
https://github.com/BentoBoxWorld/Warps/issues/91
This commit is contained in:
parent
4817c2c913
commit
c882ca3288
|
@ -10,6 +10,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.UUID;
|
||||
|
@ -128,6 +129,16 @@ public class WarpSignsManager {
|
|||
return getWarpMap(location.getWorld()).entrySet().stream().filter(en -> en.getValue().equals(location))
|
||||
.findFirst().map(en -> plugin.getPlayers().getName(en.getKey())).orElse("");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the optional UUID of the warp owner by location
|
||||
* @param location to search
|
||||
* @return Optional UUID of warp owner or empty if there is none
|
||||
*/
|
||||
public Optional<UUID> getWarpOwnerUUID(Location location) {
|
||||
return getWarpMap(location.getWorld()).entrySet().stream().filter(en -> en.getValue().equals(location))
|
||||
.findFirst().map(Map.Entry::getKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sorted list of warps with most recent players listed first
|
||||
|
|
|
@ -5,8 +5,8 @@ import java.util.UUID;
|
|||
import org.bukkit.Location;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import world.bentobox.warps.Warp;
|
||||
import org.eclipse.jdt.annotation.NonNull;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* This event is fired when a Warp is removed (when a warp sign is broken)
|
||||
|
@ -18,32 +18,48 @@ import world.bentobox.warps.Warp;
|
|||
public class WarpRemoveEvent extends Event{
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
|
||||
private Location warpLoc;
|
||||
private UUID remover;
|
||||
private final Location warpLoc;
|
||||
private final UUID remover;
|
||||
private final UUID owner;
|
||||
|
||||
/**
|
||||
* @param plugin - BSkyBlock plugin objects
|
||||
* @param warpLoc
|
||||
* @param remover
|
||||
* @param warpLoc - Warp location
|
||||
* @param remover - UUID of remover
|
||||
* @param owner - UUID of warp owner - rarely, may be null
|
||||
*/
|
||||
public WarpRemoveEvent(Warp plugin, Location warpLoc, UUID remover){
|
||||
public WarpRemoveEvent(@NonNull Location warpLoc, UUID remover, @Nullable UUID owner){
|
||||
this.warpLoc = warpLoc;
|
||||
this.remover = remover;
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the location of the removed Warp
|
||||
* @return removed warp's location
|
||||
*/
|
||||
public Location getWarpLocation(){return this.warpLoc;}
|
||||
@NonNull
|
||||
public Location getWarpLocation(){
|
||||
return this.warpLoc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get who has removed the warp
|
||||
* @return the warp's remover
|
||||
*/
|
||||
public UUID getRemover(){return this.remover;}
|
||||
@NonNull
|
||||
public UUID getRemover(){
|
||||
return this.remover;
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* @return the owner
|
||||
*/
|
||||
@Nullable
|
||||
protected UUID getOwner() {
|
||||
return owner;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,11 @@ import java.util.Iterator;
|
|||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -14,9 +18,10 @@ import org.bukkit.event.EventPriority;
|
|||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.SignChangeEvent;
|
||||
|
||||
import org.bukkit.event.world.ChunkLoadEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
import world.bentobox.bentobox.BentoBox;
|
||||
import world.bentobox.bentobox.api.events.addon.AddonEvent;
|
||||
import world.bentobox.bentobox.api.events.team.TeamKickEvent;
|
||||
|
@ -99,21 +104,21 @@ public class WarpSignsListener implements Listener {
|
|||
boolean inWorld = addon.getPlugin().getIWM().inWorld(b.getWorld());
|
||||
// Signs only
|
||||
// FIXME: When we drop support for 1.13, switch to Tag.SIGNS
|
||||
if (!e.getBlock().getType().name().contains("SIGN")
|
||||
if (!b.getType().name().contains("SIGN")
|
||||
|| (inWorld && !addon.inRegisteredWorld(b.getWorld()))
|
||||
|| (!inWorld && !addon.getSettings().isAllowInOtherWorlds()) ) {
|
||||
|| (!inWorld && !addon.getSettings().isAllowInOtherWorlds())
|
||||
|| !isWarpSign(b)) {
|
||||
return;
|
||||
}
|
||||
User user = User.getInstance(e.getPlayer());
|
||||
if (isWarpSign(b)) {
|
||||
if (isPlayersSign(e.getPlayer(), b, inWorld)) {
|
||||
addon.getWarpSignsManager().removeWarp(b.getLocation());
|
||||
Bukkit.getPluginManager().callEvent(new WarpRemoveEvent(addon, b.getLocation(), user.getUniqueId()));
|
||||
} else {
|
||||
// Someone else's sign - not allowed
|
||||
user.sendMessage("warps.error.no-remove");
|
||||
e.setCancelled(true);
|
||||
}
|
||||
UUID owner = addon.getWarpSignsManager().getWarpOwnerUUID(b.getLocation()).orElse(null);
|
||||
if (isPlayersSign(e.getPlayer(), b, inWorld)) {
|
||||
addon.getWarpSignsManager().removeWarp(b.getLocation());
|
||||
Bukkit.getPluginManager().callEvent(new WarpRemoveEvent(b.getLocation(), user.getUniqueId(), owner));
|
||||
} else {
|
||||
// Someone else's sign - not allowed
|
||||
user.sendMessage("warps.error.no-remove");
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -175,7 +180,9 @@ public class WarpSignsListener implements Listener {
|
|||
oldSign.update(true, false);
|
||||
user.sendMessage("warps.deactivate");
|
||||
addon.getWarpSignsManager().removeWarp(oldSignBlock.getWorld(), user.getUniqueId());
|
||||
Bukkit.getPluginManager().callEvent(new WarpRemoveEvent(addon, oldSign.getLocation(), user.getUniqueId()));
|
||||
@Nullable
|
||||
UUID owner = addon.getWarpSignsManager().getWarpOwnerUUID(oldSignLoc).orElse(null);
|
||||
Bukkit.getPluginManager().callEvent(new WarpRemoveEvent(oldSign.getLocation(), user.getUniqueId(), owner));
|
||||
}
|
||||
}
|
||||
// Set up the new warp sign
|
||||
|
|
Loading…
Reference in New Issue