From a2a843498003b4ecbd7c5346df55ad49b9cd1fb0 Mon Sep 17 00:00:00 2001 From: rlf Date: Mon, 29 Dec 2014 16:23:38 +0100 Subject: [PATCH] Added makeleader - to transfer ownership, and prepared WG regions for UUID --- .../command/{island => }/InviteHandler.java | 6 +- .../command/IslandCommand.java | 3 + .../command/admin/AdminIslandCommand.java | 2 +- .../completion/MemberTabCompleter.java | 37 ++++ .../command/island/AcceptRejectCommand.java | 1 + .../command/island/InviteCommand.java | 1 + .../command/island/MakeLeaderCommand.java | 36 ++++ .../command/island/PartyCommand.java | 1 + .../handler/WorldGuardHandler.java | 166 +++++++++--------- .../ultimateskyblock/island/IslandInfo.java | 15 +- .../ultimateskyblock/island/IslandLogic.java | 4 +- .../ultimateskyblock/player/PlayerInfo.java | 5 +- .../talabrek/ultimateskyblock/uSkyBlock.java | 6 +- .../{ => util}/LocationUtil.java | 2 +- .../ultimateskyblock/{ => util}/TimeUtil.java | 4 +- 15 files changed, 186 insertions(+), 103 deletions(-) rename src/main/java/us/talabrek/ultimateskyblock/command/{island => }/InviteHandler.java (95%) create mode 100644 src/main/java/us/talabrek/ultimateskyblock/command/completion/MemberTabCompleter.java create mode 100644 src/main/java/us/talabrek/ultimateskyblock/command/island/MakeLeaderCommand.java rename src/main/java/us/talabrek/ultimateskyblock/{ => util}/LocationUtil.java (90%) rename src/main/java/us/talabrek/ultimateskyblock/{ => util}/TimeUtil.java (87%) diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteHandler.java b/src/main/java/us/talabrek/ultimateskyblock/command/InviteHandler.java similarity index 95% rename from src/main/java/us/talabrek/ultimateskyblock/command/island/InviteHandler.java rename to src/main/java/us/talabrek/ultimateskyblock/command/InviteHandler.java index e75626c48..dc91ba831 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteHandler.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/InviteHandler.java @@ -1,4 +1,4 @@ -package us.talabrek.ultimateskyblock.command.island; +package us.talabrek.ultimateskyblock.command; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; @@ -83,7 +83,7 @@ public synchronized boolean accept(Player player) { uuids.remove(uuid); player.sendMessage(ChatColor.GREEN + "You have joined an island! Use /island party to see the other members."); // TODO: 29/12/2014 - R4zorax: Perhaps these steps should belong somewhere else? - addPlayertoParty(player, island); + addPlayerToParty(player, island); plugin.setRestartCooldown(player); plugin.homeTeleport(player); plugin.clearPlayerInventory(player); @@ -97,7 +97,7 @@ public synchronized Set getPendingInvites(IslandInfo island) { return waitingInvites.get(island.getName()); } - public boolean addPlayertoParty(final Player player, final IslandInfo island) { + public boolean addPlayerToParty(final Player player, final IslandInfo island) { PlayerInfo playerInfo = plugin.getPlayerInfo(player); PlayerInfo leaderInfo = plugin.getPlayerInfo(island.getLeader()); playerInfo.setJoinParty(leaderInfo.getIslandLocation()); diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/IslandCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/IslandCommand.java index f734f5dce..67096af29 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/IslandCommand.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/IslandCommand.java @@ -7,6 +7,7 @@ import us.talabrek.ultimateskyblock.command.common.AbstractCommandExecutor; import us.talabrek.ultimateskyblock.command.completion.AllPlayerTabCompleter; import us.talabrek.ultimateskyblock.command.completion.BiomeTabCompleter; +import us.talabrek.ultimateskyblock.command.completion.MemberTabCompleter; import us.talabrek.ultimateskyblock.command.completion.OnlinePlayerTabCompleter; import us.talabrek.ultimateskyblock.command.island.*; import us.talabrek.ultimateskyblock.uSkyBlock; @@ -26,6 +27,7 @@ public IslandCommand(uSkyBlock plugin, SkyBlockMenu menu) { addTab("player", playerTabCompleter); addTab("oplayer", new OnlinePlayerTabCompleter()); addTab("biome", new BiomeTabCompleter()); + addTab("member", new MemberTabCompleter(plugin)); add(new RestartCommand(plugin)); add(new LogCommand(plugin, menu)); add(new CreateCommand(plugin)); @@ -44,6 +46,7 @@ public IslandCommand(uSkyBlock plugin, SkyBlockMenu menu) { add(new LeaveCommand(plugin)); add(new KickCommand(plugin)); add(new PartyCommand(plugin, menu, inviteHandler)); + add(new MakeLeaderCommand(plugin)); } @Override diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/admin/AdminIslandCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/admin/AdminIslandCommand.java index 017705bd8..2e04d9374 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/admin/AdminIslandCommand.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/admin/AdminIslandCommand.java @@ -97,7 +97,7 @@ private void deleteIsland(CommandSender sender, PlayerInfo playerInfo, IslandInf } private void protectIsland(CommandSender sender, PlayerInfo playerInfo, IslandInfo islandInfo) { - if (WorldGuardHandler.protectIsland(sender, islandInfo.getLeader(), playerInfo)) { + if (WorldGuardHandler.protectIsland(sender, playerInfo)) { sender.sendMessage("\u00a7e" + playerInfo.getPlayerName() + "'s island at " + playerInfo.locationForParty() + " has been protected"); } else { sender.sendMessage("\u00a74" + playerInfo.getPlayerName() + "'s island at " + playerInfo.locationForParty() + " was already protected"); diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/completion/MemberTabCompleter.java b/src/main/java/us/talabrek/ultimateskyblock/command/completion/MemberTabCompleter.java new file mode 100644 index 000000000..b628bb159 --- /dev/null +++ b/src/main/java/us/talabrek/ultimateskyblock/command/completion/MemberTabCompleter.java @@ -0,0 +1,37 @@ +package us.talabrek.ultimateskyblock.command.completion; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import us.talabrek.ultimateskyblock.island.IslandInfo; +import us.talabrek.ultimateskyblock.player.PlayerInfo; +import us.talabrek.ultimateskyblock.uSkyBlock; + +import java.util.List; + +/** + * Only list members of your current party. + */ +public class MemberTabCompleter implements TabCompleter { + private final uSkyBlock plugin; + + public MemberTabCompleter(uSkyBlock plugin) { + this.plugin = plugin; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + if (sender instanceof Player) { + PlayerInfo playerInfo = plugin.getPlayerInfo((Player) sender); + if (playerInfo != null && playerInfo.getHasIsland()) { + IslandInfo islandInfo = plugin.getIslandInfo(playerInfo); + if (islandInfo != null) { + String member = args.length > 0 ? args[args.length-1] : ""; + return AbstractTabCompleter.filter(islandInfo.getMembers(), member); + } + } + } + return null; + } +} diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/island/AcceptRejectCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/island/AcceptRejectCommand.java index 9ac1a36cf..4c205ef5b 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/island/AcceptRejectCommand.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/island/AcceptRejectCommand.java @@ -1,6 +1,7 @@ package us.talabrek.ultimateskyblock.command.island; import org.bukkit.entity.Player; +import us.talabrek.ultimateskyblock.command.InviteHandler; import java.util.Map; diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteCommand.java index e1a891ee8..c79b5cec1 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteCommand.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/island/InviteCommand.java @@ -3,6 +3,7 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import us.talabrek.ultimateskyblock.command.InviteHandler; import us.talabrek.ultimateskyblock.island.IslandInfo; import us.talabrek.ultimateskyblock.player.PlayerInfo; import us.talabrek.ultimateskyblock.uSkyBlock; diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/island/MakeLeaderCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/island/MakeLeaderCommand.java new file mode 100644 index 000000000..76cc34840 --- /dev/null +++ b/src/main/java/us/talabrek/ultimateskyblock/command/island/MakeLeaderCommand.java @@ -0,0 +1,36 @@ +package us.talabrek.ultimateskyblock.command.island; + +import org.bukkit.entity.Player; +import us.talabrek.ultimateskyblock.handler.WorldGuardHandler; +import us.talabrek.ultimateskyblock.island.IslandInfo; +import us.talabrek.ultimateskyblock.player.PlayerInfo; +import us.talabrek.ultimateskyblock.uSkyBlock; + +import java.util.Map; + +public class MakeLeaderCommand extends RequireIslandCommand { + public MakeLeaderCommand(uSkyBlock plugin) { + super(plugin, "makeleader|transfer", "usb.island.create", "member", "transfer leadership to another member"); + } + + @Override + protected boolean doExecute(String alias, Player player, PlayerInfo pi, IslandInfo island, Map data, String... args) { + if (args.length == 1) { + String member = args[0]; + if (!island.getMembers().contains(member)) { + player.sendMessage("\u00a74You can only transfer ownership to party-members!"); + return true; + } + if (island.getLeader().equals(member)) { + player.sendMessage(member + "\u00a7e is already leader of your island!"); + return true; + } + island.setupPartyLeader(member); // Promote member + island.setupPartyMember(player.getName()); // Demote leader + WorldGuardHandler.updateRegion(player, island); + island.sendMessageToIslandGroup("\u00a7bLeadership transferred by " + player.getDisplayName() + "\u00a7b to " + member); + return true; + } + return false; + } +} diff --git a/src/main/java/us/talabrek/ultimateskyblock/command/island/PartyCommand.java b/src/main/java/us/talabrek/ultimateskyblock/command/island/PartyCommand.java index d6b65267c..fe30d2d92 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/command/island/PartyCommand.java +++ b/src/main/java/us/talabrek/ultimateskyblock/command/island/PartyCommand.java @@ -3,6 +3,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import us.talabrek.ultimateskyblock.SkyBlockMenu; +import us.talabrek.ultimateskyblock.command.InviteHandler; import us.talabrek.ultimateskyblock.command.common.AbstractUSBCommand; import us.talabrek.ultimateskyblock.command.common.CompositeUSBCommand; import us.talabrek.ultimateskyblock.island.IslandInfo; diff --git a/src/main/java/us/talabrek/ultimateskyblock/handler/WorldGuardHandler.java b/src/main/java/us/talabrek/ultimateskyblock/handler/WorldGuardHandler.java index 87f9fac81..9d5355025 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/handler/WorldGuardHandler.java +++ b/src/main/java/us/talabrek/ultimateskyblock/handler/WorldGuardHandler.java @@ -1,29 +1,28 @@ package us.talabrek.ultimateskyblock.handler; -import com.sk89q.worldguard.bukkit.*; +import com.sk89q.worldedit.BlockVector; +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldguard.domains.DefaultDomain; +import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.flags.DefaultFlag; +import com.sk89q.worldguard.protection.flags.InvalidFlagFormat; +import com.sk89q.worldguard.protection.flags.StateFlag; import com.sk89q.worldguard.protection.managers.RegionManager; +import com.sk89q.worldguard.protection.managers.storage.StorageException; +import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; +import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.Location; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.plugin.*; -import org.bukkit.entity.*; -import com.sk89q.worldguard.domains.*; -import org.bukkit.command.*; -import com.sk89q.worldguard.protection.flags.*; -import com.sk89q.worldguard.protection.regions.*; -import com.sk89q.worldguard.protection.*; - -import java.util.logging.Level; - -import com.sk89q.worldedit.*; -import org.bukkit.*; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.Plugin; import us.talabrek.ultimateskyblock.Settings; import us.talabrek.ultimateskyblock.island.IslandInfo; import us.talabrek.ultimateskyblock.player.PlayerInfo; import us.talabrek.ultimateskyblock.uSkyBlock; +import java.util.logging.Level; + public class WorldGuardHandler { - private static final int VERSION = 2; + private static final int VERSION = 3; public static WorldGuardPlugin getWorldGuard() { final Plugin plugin = uSkyBlock.getInstance().getServer().getPluginManager().getPlugin("WorldGuard"); @@ -33,34 +32,15 @@ public static WorldGuardPlugin getWorldGuard() { return (WorldGuardPlugin) plugin; } - public static boolean protectIsland(final CommandSender sender, final String islandName, final PlayerInfo pi) { + public static boolean protectIsland(final CommandSender sender, final PlayerInfo pi) { + uSkyBlock plugin = uSkyBlock.getInstance(); try { WorldGuardPlugin worldGuard = getWorldGuard(); RegionManager regionManager = worldGuard.getRegionManager(uSkyBlock.getSkyBlockWorld()); - String regionName = islandName + "Island"; - IslandInfo islandConfig = uSkyBlock.getInstance().getIslandInfo(pi); + IslandInfo islandConfig = plugin.getIslandInfo(pi); + String regionName = islandConfig.getName() + "island"; if (pi.getIslandLocation() != null && noOrOldRegion(regionManager, regionName, islandConfig)) { - ProtectedCuboidRegion region = new ProtectedCuboidRegion(islandName + "Island", - getProtectionVectorLeft(pi.getIslandLocation()), - getProtectionVectorRight(pi.getIslandLocation())); - final DefaultDomain owners = new DefaultDomain(); - owners.addPlayer(pi.getPlayerName()); - for (String member : islandConfig.getMembers()) { - owners.addPlayer(member); - } - region.setOwners(owners); - region.setPriority(100); - region.setFlag(DefaultFlag.GREET_MESSAGE, DefaultFlag.GREET_MESSAGE.parseInput(worldGuard, sender, "\u00a7d** You are entering a protected island area. (" + islandName + ")")); - region.setFlag(DefaultFlag.FAREWELL_MESSAGE, DefaultFlag.FAREWELL_MESSAGE.parseInput(worldGuard, sender, "\u00a7d** You are leaving a protected island area. (" + islandName + ")")); - if (uSkyBlock.getInstance().getConfig().getBoolean("options.island.allowPvP")) { - region.setFlag(DefaultFlag.PVP, StateFlag.State.ALLOW); - } else { - region.setFlag(DefaultFlag.PVP, StateFlag.State.DENY); - } - region.setFlag(DefaultFlag.DESTROY_VEHICLE, StateFlag.State.DENY); - region.setFlag(DefaultFlag.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.DENY); - region.setFlag(DefaultFlag.ENTITY_PAINTING_DESTROY, StateFlag.State.DENY); - + ProtectedCuboidRegion region = setRegionFlags(sender, islandConfig); final ApplicableRegionSet set = regionManager.getApplicableRegions(pi.getIslandLocation()); if (set.size() > 0) { for (ProtectedRegion regions : set) { @@ -70,18 +50,61 @@ public static boolean protectIsland(final CommandSender sender, final String isl } } regionManager.addRegion(region); - System.out.print("New protected region created for " + islandName + "'s Island by " + sender.getName()); + plugin.log(Level.INFO, "New protected region created for " + pi.getPlayerName() + "'s Island by " + sender.getName()); regionManager.save(); islandConfig.setRegionVersion(VERSION); return true; } } catch (Exception ex) { - System.out.print("ERROR: Failed to protect " + islandName + "'s Island (" + sender.getName() + ")"); - ex.printStackTrace(); + plugin.log(Level.SEVERE, "ERROR: Failed to protect " + pi.getPlayerName() + "'s Island (" + sender.getName() + ")", ex); } return false; } + public static void updateRegion(CommandSender sender, IslandInfo islandInfo) { + try { + ProtectedCuboidRegion region = setRegionFlags(sender, islandInfo); + RegionManager regionManager = getWorldGuard().getRegionManager(uSkyBlock.getInstance().getWorld()); + regionManager.removeRegion(islandInfo.getName() + "island"); + regionManager.removeRegion(islandInfo.getLeader() + "island"); + regionManager.addRegion(region); + regionManager.save(); + } catch (StorageException|InvalidFlagFormat e) { + uSkyBlock.getInstance().log(Level.SEVERE, "ERROR: Failed to update region for " + islandInfo.getName(), e); + } + + } + private static ProtectedCuboidRegion setRegionFlags(CommandSender sender, IslandInfo islandConfig) throws InvalidFlagFormat { + String regionName = islandConfig.getName() + "island"; + uSkyBlock plugin = uSkyBlock.getInstance(); + Location islandLocation = islandConfig.getIslandLocation(); + ProtectedCuboidRegion region = new ProtectedCuboidRegion(regionName, + getProtectionVectorLeft(islandLocation), + getProtectionVectorRight(islandLocation)); + final DefaultDomain owners = new DefaultDomain(); + for (String member : islandConfig.getMembers()) { + owners.addPlayer(member); + } + region.setOwners(owners); + region.setPriority(100); + region.setFlag(DefaultFlag.GREET_MESSAGE, DefaultFlag.GREET_MESSAGE.parseInput(getWorldGuard(), sender, "\u00a7d** You are entering a protected island area. (" + islandConfig.getLeader() + ")")); + region.setFlag(DefaultFlag.FAREWELL_MESSAGE, DefaultFlag.FAREWELL_MESSAGE.parseInput(getWorldGuard(), sender, "\u00a7d** You are leaving a protected island area. (" + islandConfig.getLeader() + ")")); + if (plugin.getConfig().getBoolean("options.island.allowPvP")) { + region.setFlag(DefaultFlag.PVP, StateFlag.State.ALLOW); + } else { + region.setFlag(DefaultFlag.PVP, StateFlag.State.DENY); + } + if (islandConfig.isLocked()) { + region.setFlag(DefaultFlag.ENTRY, StateFlag.State.DENY); + } else { + region.setFlag(DefaultFlag.ENTRY, StateFlag.State.ALLOW); + } + region.setFlag(DefaultFlag.DESTROY_VEHICLE, StateFlag.State.DENY); + region.setFlag(DefaultFlag.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.DENY); + region.setFlag(DefaultFlag.ENTITY_PAINTING_DESTROY, StateFlag.State.DENY); + return region; + } + private static boolean noOrOldRegion(RegionManager regionManager, String regionId, IslandInfo island) { if (!regionManager.hasRegion(regionId)) { return true; @@ -89,33 +112,31 @@ private static boolean noOrOldRegion(RegionManager regionManager, String regionI return island.getRegionVersion() < VERSION; } - public static void islandLock(final CommandSender sender, final String player) { + public static void islandLock(final CommandSender sender, final String islandName) { try { - if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(player + "Island")) { - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(player + "Island").setFlag(DefaultFlag.ENTRY, DefaultFlag.ENTRY.parseInput(getWorldGuard(), sender, "deny")); + if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(islandName + "island")) { + getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(islandName + "island").setFlag(DefaultFlag.ENTRY, DefaultFlag.ENTRY.parseInput(getWorldGuard(), sender, "deny")); sender.sendMessage("\u00a7eYour island is now locked. Only your party members may enter."); getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).save(); } else { sender.sendMessage("\u00a74You must be the party leader to lock your island!"); } } catch (Exception ex) { - System.out.print("ERROR: Failed to lock " + player + "'s Island (" + sender.getName() + ")"); - ex.printStackTrace(); + uSkyBlock.getInstance().log(Level.SEVERE, "ERROR: Failed to lock " + islandName + "'s Island (" + sender.getName() + ")", ex); } } - public static void islandUnlock(final CommandSender sender, final String player) { + public static void islandUnlock(final CommandSender sender, final String islandName) { try { - if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(player + "Island")) { - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(player + "Island").setFlag(DefaultFlag.ENTRY, DefaultFlag.ENTRY.parseInput(getWorldGuard(), sender, "allow")); + if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(islandName + "island")) { + getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(islandName + "island").setFlag(DefaultFlag.ENTRY, DefaultFlag.ENTRY.parseInput(getWorldGuard(), sender, "allow")); sender.sendMessage("\u00a7eYour island is unlocked and anyone may enter, however only you and your party members may build or remove blocks."); getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).save(); } else { sender.sendMessage("\u00a74You must be the party leader to unlock your island!"); } } catch (Exception ex) { - System.out.print("ERROR: Failed to unlock " + player + "'s Island (" + sender.getName() + ")"); - ex.printStackTrace(); + uSkyBlock.getInstance().log(Level.SEVERE, "ERROR: Failed to unlock " + islandName + "'s Island (" + sender.getName() + ")", ex); } } @@ -128,45 +149,18 @@ public static BlockVector getProtectionVectorRight(final Location island) { } public static void removePlayerFromRegion(final String owner, final String player) { - if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(owner + "Island")) { - final DefaultDomain owners = getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").getOwners(); + if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(owner + "island")) { + final DefaultDomain owners = getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "island").getOwners(); owners.removePlayer(player); - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").setOwners(owners); + getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "island").setOwners(owners); } } public static void addPlayerToOldRegion(final String owner, final String player) { - if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(owner + "Island")) { - final DefaultDomain owners = getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").getOwners(); + if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(owner + "island")) { + final DefaultDomain owners = getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "island").getOwners(); owners.addPlayer(player); - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").setOwners(owners); - } - } - - public static void resetPlayerRegion(final String owner) { - if (getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).hasRegion(owner + "Island")) { - final DefaultDomain owners = new DefaultDomain(); - owners.addPlayer(owner); - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").setOwners(owners); - } - } - - public static void transferRegion(final String owner, final String player, final CommandSender sender) { - try { - ProtectedRegion region2 = null; - region2 = new ProtectedCuboidRegion(player + "Island", getWorldGuard().getRegionManager(Bukkit.getWorld("skyworld")).getRegion(owner + "Island").getMinimumPoint(), getWorldGuard().getRegionManager(Bukkit.getWorld(Settings.general_worldName)).getRegion(owner + "Island").getMaximumPoint()); - region2.setOwners(getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "Island").getOwners()); - region2.setParent(getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion("__Global__")); - region2.setFlag(DefaultFlag.GREET_MESSAGE, DefaultFlag.GREET_MESSAGE.parseInput(getWorldGuard(), sender, "\u00a7d** You are entering a protected island area. (" + player + ")")); - region2.setFlag(DefaultFlag.FAREWELL_MESSAGE, DefaultFlag.FAREWELL_MESSAGE.parseInput(getWorldGuard(), sender, "\u00a7d** You are leaving a protected island area. (" + player + ")")); - region2.setFlag(DefaultFlag.PVP, DefaultFlag.PVP.parseInput(getWorldGuard(), sender, "deny")); - region2.setFlag(DefaultFlag.DESTROY_VEHICLE, DefaultFlag.DESTROY_VEHICLE.parseInput(getWorldGuard(), sender, "deny")); - region2.setFlag(DefaultFlag.ENTITY_ITEM_FRAME_DESTROY, DefaultFlag.ENTITY_ITEM_FRAME_DESTROY.parseInput(getWorldGuard(), sender, "deny")); - region2.setFlag(DefaultFlag.ENTITY_PAINTING_DESTROY, DefaultFlag.ENTITY_PAINTING_DESTROY.parseInput(getWorldGuard(), sender, "deny")); - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).removeRegion(owner + "Island"); - getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).addRegion(region2); - } catch (Exception e) { - uSkyBlock.log(Level.INFO, "Error transferring WorldGuard Protected Region from (" + owner + ") to (" + player + ")"); + getWorldGuard().getRegionManager(uSkyBlock.getSkyBlockWorld()).getRegion(owner + "island").setOwners(owners); } } diff --git a/src/main/java/us/talabrek/ultimateskyblock/island/IslandInfo.java b/src/main/java/us/talabrek/ultimateskyblock/island/IslandInfo.java index 64258a961..d6d49e1b1 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/island/IslandInfo.java +++ b/src/main/java/us/talabrek/ultimateskyblock/island/IslandInfo.java @@ -3,15 +3,18 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; +import us.talabrek.ultimateskyblock.Settings; import us.talabrek.ultimateskyblock.handler.VaultHandler; import us.talabrek.ultimateskyblock.handler.WorldGuardHandler; import us.talabrek.ultimateskyblock.player.PlayerInfo; import us.talabrek.ultimateskyblock.uSkyBlock; +import us.talabrek.ultimateskyblock.util.LocationUtil; import java.io.File; import java.io.IOException; @@ -210,7 +213,7 @@ public void setWarpActive(boolean active) { } public void lock(Player player) { - WorldGuardHandler.islandLock(player, getLeader()); + WorldGuardHandler.islandLock(player, name); config.set("general.locked", true); sendMessageToIslandGroup(player.getName() + " locked the island."); if (hasWarp()) { @@ -222,7 +225,7 @@ public void lock(Player player) { } public void unlock(Player player) { - WorldGuardHandler.islandUnlock(player, getLeader()); + WorldGuardHandler.islandUnlock(player, name); config.set("general.locked", false); sendMessageToIslandGroup(player.getName() + " unlocked the island."); save(); @@ -338,6 +341,12 @@ public Location getWarpLocation() { return null; } + public Location getIslandLocation() { + World world = uSkyBlock.getInstance().getWorld(); + String[] cords = name.split(","); + return new Location(world, Long.parseLong(cords[0], 10), Settings.island_height, Long.parseLong(cords[1], 10)); + } + @Override public String toString() { String str = "\u00a7bIsland Info:\n"; @@ -345,7 +354,7 @@ public String toString() { str += ChatColor.GRAY + " - location: " + ChatColor.DARK_AQUA + name + "\n"; str += ChatColor.GRAY + " - warp: " + ChatColor.DARK_AQUA + hasWarp() + "\n"; if (hasWarp()) { - str += ChatColor.GRAY + " loc: " + ChatColor.DARK_AQUA + getWarpLocation() + "\n"; + str += ChatColor.GRAY + " loc: " + ChatColor.DARK_AQUA + LocationUtil.asString(getWarpLocation()) + "\n"; } str += ChatColor.GRAY + " - locked: " + ChatColor.DARK_AQUA + isLocked() + "\n"; str += ChatColor.DARK_AQUA + "Party:\n"; diff --git a/src/main/java/us/talabrek/ultimateskyblock/island/IslandLogic.java b/src/main/java/us/talabrek/ultimateskyblock/island/IslandLogic.java index efcb734df..fa2934259 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/island/IslandLogic.java +++ b/src/main/java/us/talabrek/ultimateskyblock/island/IslandLogic.java @@ -10,9 +10,9 @@ import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; -import us.talabrek.ultimateskyblock.LocationUtil; +import us.talabrek.ultimateskyblock.util.LocationUtil; import us.talabrek.ultimateskyblock.Settings; -import us.talabrek.ultimateskyblock.TimeUtil; +import us.talabrek.ultimateskyblock.util.TimeUtil; import us.talabrek.ultimateskyblock.handler.WorldEditHandler; import us.talabrek.ultimateskyblock.handler.WorldGuardHandler; import us.talabrek.ultimateskyblock.player.PlayerInfo; diff --git a/src/main/java/us/talabrek/ultimateskyblock/player/PlayerInfo.java b/src/main/java/us/talabrek/ultimateskyblock/player/PlayerInfo.java index bafb53aa8..3faf123a1 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/player/PlayerInfo.java +++ b/src/main/java/us/talabrek/ultimateskyblock/player/PlayerInfo.java @@ -9,6 +9,7 @@ import org.bukkit.configuration.file.*; import us.talabrek.ultimateskyblock.challenge.ChallengeCompletion; import us.talabrek.ultimateskyblock.uSkyBlock; +import us.talabrek.ultimateskyblock.util.LocationUtil; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.*; @@ -293,8 +294,8 @@ public String toString() { str += ChatColor.GRAY + " - name: " + ChatColor.DARK_AQUA + getPlayerName() + "\n"; str += ChatColor.GRAY + " - nick: " + ChatColor.DARK_AQUA + getDisplayName() + "\n"; str += ChatColor.GRAY + " - hasIsland: " + ChatColor.DARK_AQUA + getHasIsland() + "\n"; - str += ChatColor.GRAY + " - home: " + ChatColor.DARK_AQUA + getHomeLocation() + "\n"; - str += ChatColor.GRAY + " - island: " + ChatColor.DARK_AQUA + getIslandLocation() + "\n"; + str += ChatColor.GRAY + " - home: " + ChatColor.DARK_AQUA + LocationUtil.asString(getHomeLocation()) + "\n"; + str += ChatColor.GRAY + " - island: " + ChatColor.DARK_AQUA + LocationUtil.asString(getIslandLocation()) + "\n"; // TODO: 28/12/2014 - R4zorax: Some info about challenges? return str; } diff --git a/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java b/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java index 0d4d542ab..39bd15129 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java +++ b/src/main/java/us/talabrek/ultimateskyblock/uSkyBlock.java @@ -551,7 +551,7 @@ public boolean devSetPlayerIsland(final Player sender, final Location l, final S pi.setIslandLocation(newLoc); pi.setHomeLocation(getSafeHomeLocation(pi)); islandLogic.createIsland(pi.locationForParty(), player); - if (!WorldGuardHandler.protectIsland(sender, player, pi)) { + if (!WorldGuardHandler.protectIsland(sender, pi)) { sender.sendMessage("\u00a74Player doesn't have an island or it's already protected!"); } return true; @@ -902,7 +902,7 @@ public PlayerInfo loadPlayerData(Player player) { final PlayerInfo pi = loadPlayerInfo(player.getName()); if (pi.getHasIsland()) { IslandInfo islandInfo = islandLogic.getIslandInfo(pi); - WorldGuardHandler.protectIsland(player, islandInfo.getLeader(), pi); + WorldGuardHandler.protectIsland(player, pi); islandLogic.clearFlatland(player, pi.getIslandLocation(), 200); } addActivePlayer(player.getName(), pi); @@ -1103,7 +1103,7 @@ public boolean createIsland(final CommandSender sender, final PlayerInfo pi) { } private void protectWithWorldGuard(CommandSender sender, Player player, PlayerInfo pi) { - if (!WorldGuardHandler.protectIsland(player, sender.getName(), pi)) { + if (!WorldGuardHandler.protectIsland(player, pi)) { sender.sendMessage("Player doesn't have an island or it's already protected!"); } } diff --git a/src/main/java/us/talabrek/ultimateskyblock/LocationUtil.java b/src/main/java/us/talabrek/ultimateskyblock/util/LocationUtil.java similarity index 90% rename from src/main/java/us/talabrek/ultimateskyblock/LocationUtil.java rename to src/main/java/us/talabrek/ultimateskyblock/util/LocationUtil.java index ab3d13788..2dcc00e99 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/LocationUtil.java +++ b/src/main/java/us/talabrek/ultimateskyblock/util/LocationUtil.java @@ -1,4 +1,4 @@ -package us.talabrek.ultimateskyblock; +package us.talabrek.ultimateskyblock.util; import org.bukkit.Location; diff --git a/src/main/java/us/talabrek/ultimateskyblock/TimeUtil.java b/src/main/java/us/talabrek/ultimateskyblock/util/TimeUtil.java similarity index 87% rename from src/main/java/us/talabrek/ultimateskyblock/TimeUtil.java rename to src/main/java/us/talabrek/ultimateskyblock/util/TimeUtil.java index 1191993d0..2d15b9989 100644 --- a/src/main/java/us/talabrek/ultimateskyblock/TimeUtil.java +++ b/src/main/java/us/talabrek/ultimateskyblock/util/TimeUtil.java @@ -1,4 +1,4 @@ -package us.talabrek.ultimateskyblock; +package us.talabrek.ultimateskyblock.util; public enum TimeUtil {; private static final long SEC = 1000; @@ -21,7 +21,7 @@ public static String millisAsString(long millis) { if (m > 0) { str += " " + m + "m"; } - if (s > 0) { + if (s > 0 || str.isEmpty()) { str += " " + s + "s"; } return str.trim();