commit 7244cdbc8534def56c49616cabe50f034ae940a6 Author: AirDog46 Date: Tue May 13 19:40:51 2025 +0300 hi diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..5cdae5c --- /dev/null +++ b/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..24d653c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +bin/ +out/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..fb001d5 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +InvadedLands PlayerWarps.iml \ No newline at end of file diff --git a/.idea/artifacts/PlayerWarps.xml b/.idea/artifacts/PlayerWarps.xml new file mode 100644 index 0000000..5cf4a59 --- /dev/null +++ b/.idea/artifacts/PlayerWarps.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/out + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..38d573b --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..368d7c1 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..1cff6a0 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..36dce93 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ecefeac --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..be6ad4d --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + InvadedLands PlayerWarps + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/InvadedLands PlayerWarps.iml b/InvadedLands PlayerWarps.iml new file mode 100644 index 0000000..48fbc87 --- /dev/null +++ b/InvadedLands PlayerWarps.iml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + SPIGOT + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/config.yml b/src/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/src/data.yml b/src/data.yml new file mode 100644 index 0000000..9ce711c --- /dev/null +++ b/src/data.yml @@ -0,0 +1,22 @@ +#PlaceHolders +# Duped-WarpCreate-Punishment: %player% - player being punished, %id% warpcreate ID. + +Warps-Created-By: + +Saved-Blocks: + +Blocked-Items: + +Blocked-Warp-Wall-Items: + +Main-world: "world" + +Server-name: "&6&lServerName" + +WarpCreateBlock-Use-Region: "spawn" + +AntiFly-Region: "spawn" + +Duped-WarpCreate-Punishment: "blacklist %player% &cUsage of duplicated warpcreate ID: %id%." + +WarpSort: \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..9b946e6 --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,14 @@ +name: PlayerWarps +main: str.playerwarps.PlayerWarps +version: Build-15 +author: StarZorrow +description: Creation of PlayerWarps like InvadedLands +softdepend: [WorldEdit, WorldGuard, Multiverse-core, FastAsyncWorldEdit] +commands: + warpcreate: + description: "Main command for PlayerWarps." + warpcreateblock: + description: "Give physical playerwarp creation blocks to players." + pw: + aliases: [playerwarps, playerwarp, pwarp] + description: "PlayerWarp command GUI." \ No newline at end of file diff --git a/src/str/playerwarps/PlayerWarps.java b/src/str/playerwarps/PlayerWarps.java new file mode 100644 index 0000000..961c3a9 --- /dev/null +++ b/src/str/playerwarps/PlayerWarps.java @@ -0,0 +1,289 @@ +package str.playerwarps; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.block.Block; +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 org.bukkit.event.Listener; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitScheduler; + +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; + +import str.playerwarps.commands.Commands; +import str.playerwarps.commands.gui.GUI; +import str.playerwarps.gui.types.PaginatedGUI; +import str.playerwarps.gui.types.PaginatedGUIAllPages; +import str.playerwarps.gui.types.PaginatedGUICP; +import str.playerwarps.listener.InventoryListener; +import str.playerwarps.listener.PlayerListener; +import str.playerwarps.listener.WarpBlockListener; +import str.playerwarps.listener.WorldListener; +import str.playerwarps.setup.WarpBox; +import str.playerwarps.util.Utils; +import str.playerwarps.util.Zone; + +public class PlayerWarps extends JavaPlugin implements Listener { + + public static PlayerWarps plugin; + public static WarpBox wb; + public static WarpBlockListener wbl; + public static WorldListener wl; + public static GUI gui; + private File dataFile; + private FileConfiguration data; + public static List warpsort; + public boolean featherBoardHook = false; + private boolean depend1, depend2, depend3 = true; + public static Location nextLocation = new Location(Bukkit.getWorld("PlayerWarps-World"), -10000, 0, 0); + + @Override + public void onEnable() { + plugin = this; + gui = new GUI(); + System.out.println("[PlayerWarps] Loading Config"); + createCustomData(); + System.out.println("[PlayerWarps] Loaded Config"); + System.out.println("[PlayerWarps] Registering Events"); + getServer().getPluginManager().registerEvents(this, this); + PaginatedGUI.prepare(this); + PaginatedGUIAllPages.prepare(this); + PaginatedGUICP.prepare(this); + if (isFeatherBoardPresent()) { + setfeatherBoardHook(true); + Utils.sendConsoleMessage("&a[PlayerWarps] Featherboard support enabled"); + } + else { + setfeatherBoardHook(false); + Utils.sendConsoleMessage("&c[PlayerWarps] Featherboard not found, disabling support"); + } + if (Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core") != null) { + Utils.sendConsoleMessage("&a[PlayerWarps] Dependencies found: Multiverse-Core"); + } + else { + Utils.sendConsoleMessage("&c[PlayerWarps] Dependencies not found: Multiverse-Core"); + Utils.sendConsoleMessage("&c[PlayerWarps] Disabling plugin as required dependencies not found!"); + onDisable(); + return; + } + if (Bukkit.getServer().getPluginManager().getPlugin("WorldEdit") != null) { + Utils.sendConsoleMessage("&a[PlayerWarps] Dependencies found: WorldEdit"); + } + else { + Utils.sendConsoleMessage("&c[PlayerWarps] Dependencies not found: WorldEdit"); + Utils.sendConsoleMessage("&c[PlayerWarps] Disabling plugin as required dependencies not found!"); + onDisable(); + return; + } + if (Bukkit.getServer().getPluginManager().getPlugin("WorldGuard") != null) { + Utils.sendConsoleMessage("&a[PlayerWarps] Dependencies found: WorldGuard"); + } + else { + Utils.sendConsoleMessage("&c[PlayerWarps] Dependencies not found: WorldGuard"); + Utils.sendConsoleMessage("&c[PlayerWarps] Disabling plugin as required dependencies not found!"); + onDisable(); + return; + } + if (Bukkit.getServer().getPluginManager().getPlugin("FastAsyncWorldEdit") != null) { + Utils.sendConsoleMessage("&a[PlayerWarps] Dependencies found: FastAsyncWorldEdit"); + } + else { + Utils.sendConsoleMessage("&c[PlayerWarps] Dependencies not found: FastAsyncWorldEdit"); + Utils.sendConsoleMessage("&c[PlayerWarps] Disabling plugin as required dependencies not found!"); + onDisable(); + return; + } + Bukkit.getServer().getPluginManager().registerEvents(new WorldListener(), this); + Bukkit.getServer().getPluginManager().registerEvents(new InventoryListener(), this); + Bukkit.getServer().getPluginManager().registerEvents(new PlayerListener(), this); + Bukkit.getServer().getPluginManager().registerEvents(new WarpBlockListener(), this); + Bukkit.getServer().getPluginManager().registerEvents(new WarpBox(), this); + System.out.println("[PlayerWarps] Loading Variables"); + wb = new WarpBox(); + wl = new WorldListener(); + System.out.println("[PlayerWarps] Loaded Variables"); + System.out.println("[PlayerWarps] Loaded Events"); + System.out.println("[PlayerWarps] Registering Commands"); + getCommand("warpcreate").setExecutor(new Commands(this)); + getCommand("warpcreateblock").setExecutor(new Commands(this)); + getCommand("pw").setExecutor(new GUI()); +// getCommand("pwgui").setExecutor(new GUI()); + System.out.println("[PlayerWarps] Loaded Commands"); + System.out.println("[PlayerWarps] Loading Cache"); + if (getCustomData().getConfigurationSection("Saved-Blocks") != null) { + for (String key : getCustomData().getConfigurationSection("Saved-Blocks").getKeys(false)) { + wbl.placedBlock.add(new Location(Bukkit.getWorld(getCustomData().getString("Saved-Blocks." + key + ".world")), getCustomData().getInt("Saved-Blocks." + key + ".x"), getCustomData().getInt("Saved-Blocks." + key + ".y"), getCustomData().getInt("Saved-Blocks." + key + ".z"))); + } + } +// if (getCustomData().getConfigurationSection("Saved-Walls") != null) { +// for (String key : getCustomData().getConfigurationSection("Saved-Walls").getKeys(false)) { +// wbl.walls.add(new Location(Bukkit.getWorld(getCustomData().getString("Saved-Walls." + key + ".world")), getCustomData().getInt("Saved-Walls." + key + ".x"), getCustomData().getInt("Saved-Walls." + key + ".y"), getCustomData().getInt("Saved-Walls." + key + ".z"))); +// } +// } + warpsort = (List) getCustomData().getStringList("WarpSort"); + if (getCustomData().get("guiRefreshRateInSeconds") == null) { + getCustomData().set("guiRefreshRateInSeconds", 5); + saveConfig(); + } + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By") != null && Bukkit.getWorld("PlayerWarps-World") != null) { + BukkitScheduler scheduler = getServer().getScheduler(); + scheduler.scheduleSyncRepeatingTask(this, new Runnable() { + @Override + public void run() { + warpsort.clear(); + Set set = getCustomData().getConfigurationSection("Warps-Created-By").getKeys(false); + for (Iterator it = set.iterator(); it.hasNext(); ) { + UUID uuid = UUID.fromString(it.next()); + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString()) != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString() + ".Need-Approval") != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString() + ".Building") != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString() + ".Building").equalsIgnoreCase("false")) { + if (PlayerWarps.get().getCustomData().get("Warps-Created-By." + uuid.toString() + ".worldname") == null) { + continue; + } + else { + int sort = 0; + Location loc = Utils.getPlayerWarpLocation(Bukkit.getOfflinePlayer(uuid).getUniqueId().toString()); + for (Player players : Bukkit.getWorld("PlayerWarps-World").getPlayers()) { + if (Zone.contains(players.getLocation(), loc.getBlockX() + 25, loc.getBlockX() + 20 - 69, -7, 66)) { + sort++; + } + } + warpsort.add(sort + " - " + uuid.toString()); + } + } + } + } + } + } + Collections.sort(warpsort, Collections.reverseOrder()); + if (getCustomData().getStringList("WarpList") == null) { + getCustomData().set("WarpSort", warpsort); + saveConfig(); + reloadConfig(); + } + else { + getCustomData().set("WarpSort", null); + getCustomData().set("WarpSort", warpsort); + saveConfig(); + reloadConfig(); + } + } + }, 20l, (long)(20 * getCustomData().getLong("guiRefreshRateInSeconds"))); + } + loadNextLocation(); + System.out.println("[PlayerWarps] Loaded Cache"); + System.out.println("[PlayerWarps] Loading FilterList"); +// InventoryListener.addFilterList(); + System.out.println("[PlayerWarps] Loaded FilterList"); + System.out.println("[PlayerWarps] Enabled"); + } + + public void onDisable() { + getCustomData().set("nextXLocation", nextLocation.getX()); + saveConfig(); + int i = 0; + for (Location loc : wbl.placedBlock) { + i++; + getCustomData().set("Saved-Blocks." + i + ".x", loc.getX()); + getCustomData().set("Saved-Blocks." + i + ".y", loc.getY()); + getCustomData().set("Saved-Blocks." + i + ".z", loc.getZ()); + getCustomData().set("Saved-Blocks." + i + ".world", loc.getWorld().getName()); + } + saveConfig(); + + System.out.println("[PlayerWarps] Disabled"); + } + + public boolean getFeatherboardSupport() { + return featherBoardHook; + } + + public void loadNextLocation() { + if (getCustomData().contains("nextXLocation")) { + double x = getCustomData().getDouble("nextXLocation"); + nextLocation = new Location(Bukkit.getWorld("PlayerWarps-World"), x, 0, 0); + } + else { + getCustomData().set("nextXLocation", nextLocation.getX()); + saveConfig(); + } + } + + public FileConfiguration getCustomData() { + return this.data; + } + + private void createCustomData() { + dataFile = new File(getDataFolder(), "data.yml"); + if (!dataFile.exists()) { + dataFile.getParentFile().mkdirs(); + saveResource("data.yml", false); + } + + data = new YamlConfiguration(); + try { + data.load(dataFile); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + } + + public static PlayerWarps get() { + return plugin; + } + + public static WarpBox getWarpBox() { + return wb; + } + + public static WorldListener getWorldSetup() { + return wl; + } + + public static WarpBlockListener getWarpBlock() { + return wbl; + } + + public void saveConfig() { + try { + this.data.save(this.dataFile); + } catch (IOException e) { + getLogger().warning("Unable to save data.yml"); + } + } + + public void reloadConfig() { + this.data = YamlConfiguration.loadConfiguration(this.dataFile); + } + + private boolean isFeatherBoardPresent() { + if (getServer().getPluginManager().getPlugin("FeatherBoard") == null) { + setfeatherBoardHook(false); + return featherBoardHook; + } + if (getServer().getPluginManager().getPlugin("FeatherBoard").isEnabled()) { + setfeatherBoardHook(true); + } + + return featherBoardHook; + } + + private void setfeatherBoardHook(boolean a) { + featherBoardHook = a; + } +} diff --git a/src/str/playerwarps/commands/Commands.java b/src/str/playerwarps/commands/Commands.java new file mode 100644 index 0000000..f139db2 --- /dev/null +++ b/src/str/playerwarps/commands/Commands.java @@ -0,0 +1,778 @@ +package str.playerwarps.commands; + +import org.bukkit.event.*; +import str.playerwarps.*; +import org.bukkit.command.*; +import org.bukkit.entity.*; +import str.playerwarps.listener.*; +import java.text.*; +import org.bukkit.potion.*; +import org.apache.commons.lang.*; +import org.bukkit.inventory.*; +import str.playerwarps.util.*; +import java.util.regex.*; +import org.bukkit.*; +import java.util.*; +import org.bukkit.inventory.meta.*; + +public class Commands implements CommandExecutor, Listener +{ + static PlayerWarps plugin; + public static ArrayList warpqueue; + private String help; + private String usageWC; + private String usageWCB; + private static String noPerms; + + public Commands(final PlayerWarps instance) { + this.help = "&e=== &6WarpCreate Help-Menu &e==="; + this.usageWC = "&eUsage: &f/&ewarpcreate &6 &e(warpqueue-page-#) (command) &e(<10m, 20m, 30m, 90m>) ()."; + this.usageWCB = "&eUsage: &f/&ewarpcreateblock &6giveBlock <10m, 20m, 30m, 90m> &e."; + Commands.plugin = instance; + } + + public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { + if (cmd.getName().equalsIgnoreCase("warpcreate")) { + if (sender instanceof ConsoleCommandSender) { + Utils.sendConsoleMessage("&cYou cannot use this command in console."); + } + else if (!sender.hasPermission("core.warpcreates")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + if (args.length == 0) { + this.helpMenu(sender); + return false; + } + if (args.length == 1) { + if (args[0].equalsIgnoreCase("reload")) { + if (!sender.hasPermission("core.warpcreates.reload")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + PlayerWarps.get().reloadConfig(); + Utils.sendMessage(sender, "&aSuccessfully reloaded PlayerWarps."); + } + } + else if (args[0].equalsIgnoreCase("warpqueue")) { + if (sender.hasPermission("core.warpcreate.warpqueue")) { + Utils.sendMessage(sender, "&cPlease enter a page number."); + return false; + } + Utils.sendMessage(sender, Commands.noPerms); + } + else if (args[0].equalsIgnoreCase("create")) { + if (!sender.hasPermission("core.warpcreates.create")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + else if (args[0].equalsIgnoreCase("delete")) { + if (!sender.hasPermission("core.warpcreates.delete")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + else if (args[0].equalsIgnoreCase("fix")) { + if (!sender.hasPermission("core.warpcreates.fix")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + } + else if (args.length == 4) { + if (args[0].equalsIgnoreCase("create")) { + if (!sender.hasPermission("core.warpcreates.create")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else if (args[1] != null) { + if (!args[2].equalsIgnoreCase("h") && !args[2].equalsIgnoreCase("m") && !args[2].equalsIgnoreCase("s")) { + Utils.sendMessage(sender, "&cYou can only use 1 time span in warpcreation."); + return false; + } + final Player target = Bukkit.getPlayer(args[3].toString()); + final Player player = (Player)sender; + if (target != null) { + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target.getUniqueId().toString()) != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building").equalsIgnoreCase("false")) { + final Pattern pattern = Pattern.compile("[^0-9 ]"); + final Matcher match = pattern.matcher(args[1]); + final boolean found = match.find(); + if (found) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time = 0; + if (args[2].equalsIgnoreCase("h")) { + time = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time = Integer.parseInt(args[1]) * 60; + } + else if (args[2].equalsIgnoreCase("s")) { + time = Integer.parseInt(args[1]); + } + PlayerWarps.getWorldSetup(); + WorldListener.createWarp(target); + final Date now = new Date(); + final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); + Utils.saveEditTime(target.getUniqueId().toString(), time, "(+" + args[1] + args[2] + ") " + format.format(now), "true"); + Utils.sendMessage(sender, "&eYou've successfully added &6" + args[1] + args[2] + " &eof edit time to &6" + target.getName() + "'s warp."); + Utils.sendMessage((CommandSender)target, "&6" + args[1] + args[2] + " &eof edit time has been successfully added to your warp."); + Utils.sendMessage((CommandSender)target, "&eYou may start editing your warp by accessing the &6control panel &eblock at your warp."); + Utils.sendMessage((CommandSender)target, "&eTo go to your warp issue the follow command: &6/pw " + target.getName()); + } + else { + Utils.sendMessage(sender, "&cYou cannot add edit time to &6" + target.getName() + "'s &cwarp as they are building."); + } + } + else if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target.getUniqueId().toString()) == null) { + final Pattern pattern = Pattern.compile("[^0-9 ]"); + final Matcher match = pattern.matcher(args[1]); + final boolean found = match.find(); + if (found) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time = 0; + if (args[2].equalsIgnoreCase("h")) { + time = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time = Integer.parseInt(args[1]) * 60; + } + else if (args[2].equalsIgnoreCase("s")) { + time = Integer.parseInt(args[1]); + } + PlayerWarps.getWorldSetup(); + WorldListener.createWarp(target); + final Date now = new Date(); + final SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); + Utils.saveEditTime(target.getUniqueId().toString(), time, "(+" + args[1] + args[2] + ") " + format.format(now), "true"); + Utils.sendMessage(sender, "&eYou've successfully &a&lcreated &eand added &6" + args[1] + args[2] + " &eof edit time to &6" + target.getName() + "'s warp."); + Utils.sendMessage((CommandSender)target, "&eYour warp has successfully been &a&lcreated &eand &6" + args[1] + args[2] + " &eof edit time has been added to your warp."); + Utils.sendMessage((CommandSender)target, "&eYou may start editing your warp by accessing the &6control panel &eblock at your warp."); + Utils.sendMessage((CommandSender)target, "&eTo go to your warp issue the follow command: &6/pw " + target.getName()); + } + } + else { + final OfflinePlayer target2 = Bukkit.getOfflinePlayer(args[3].toString()); + if (target2 == null) { + Utils.sendMessage(sender, "&cError: This player has never joined the server"); + return false; + } + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target2.getUniqueId().toString()) != null) { + final Pattern pattern2 = Pattern.compile("[^0-9 ]"); + final Matcher match2 = pattern2.matcher(args[1]); + final boolean found2 = match2.find(); + if (found2) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time2 = 0; + if (args[2].equalsIgnoreCase("h")) { + time2 = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time2 = Integer.parseInt(args[1]) * 60; + } + else if (args[2].equalsIgnoreCase("s")) { + time2 = Integer.parseInt(args[1]); + } + PlayerWarps.getWorldSetup(); + WorldListener.createWarp(target); + final Date now2 = new Date(); + final SimpleDateFormat format2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); + Utils.saveEditTime(target2.getUniqueId().toString(), time2, "(+" + args[1] + args[2] + ") " + format2.format(now2), "true"); + Utils.sendMessage(sender, "&eYou've successfully added &6" + args[1] + args[2] + " &eof edit time to &6" + target2.getName() + "'s warp."); + } + else if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target2.getUniqueId().toString()) == null) { + final Pattern pattern2 = Pattern.compile("[^0-9 ]"); + final Matcher match2 = pattern2.matcher(args[1]); + final boolean found2 = match2.find(); + if (found2) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time2 = 0; + if (args[2].equalsIgnoreCase("h")) { + time2 = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time2 = Integer.parseInt(args[1]) * 60; + } + else if (args[2].equalsIgnoreCase("s")) { + time2 = Integer.parseInt(args[1]); + } + PlayerWarps.getWorldSetup(); + WorldListener.createWarp(target); + final Date now2 = new Date(); + final SimpleDateFormat format2 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss a"); + Utils.saveEditTime(target2.getUniqueId().toString(), time2, "(+" + args[1] + args[2] + ") " + format2.format(now2), "true"); + Utils.sendMessage(sender, "&eYou've successfully &a&lcreated &eand added &6" + args[1] + args[2] + " &eof edit time to &6" + target2.getName() + "'s warp."); + } + } + } + else { + this.helpMenu(sender); + } + } + else { + this.helpMenu(sender); + } + } + else if (args.length == 3) { + if (args[0].equalsIgnoreCase("warpqueue")) { + if (sender.hasPermission("core.warpcreate.warpqueue")) { + Utils.sendMessage(sender, "&cPlease enter a page number."); + return false; + } + Utils.sendMessage(sender, Commands.noPerms); + } + else { + this.helpMenu(sender); + } + } + else if (args.length == 2) { + if (args[0].equalsIgnoreCase("create")) { + if (!sender.hasPermission("core.warpcreates.create")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + else if (args[0].equalsIgnoreCase("commandDel")) { + if (!sender.hasPermission("core.warpcreates.commandDel")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + else if (args[0].equalsIgnoreCase("commandAdd")) { + if (!sender.hasPermission("core.warpcreates.commandAdd")) { + Utils.sendMessage(sender, Commands.noPerms); + return false; + } + this.helpMenu(sender); + return false; + } + else if (args[0].equalsIgnoreCase("delete")) { + if (!sender.hasPermission("core.warpcreates.delete")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + final Player target = Bukkit.getPlayer(args[1]); + final Player player = (Player)sender; + if (target != null) { + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target.getUniqueId().toString()) != null) { + Utils.removeWarp(target.getUniqueId().toString()); + PlayerWarps.get().reloadConfig(); + if (Bukkit.getWorld(PlayerWarps.get().getCustomData().getString("Main-world")) != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building").equalsIgnoreCase("true")) { + target.teleport(Bukkit.getWorld(PlayerWarps.get().getCustomData().getString("Main-world")).getSpawnLocation()); + target.setGameMode(GameMode.SURVIVAL); + target.getInventory().clear(); + for (final PotionEffect effects : target.getActivePotionEffects()) { + target.removePotionEffect(effects.getType()); + } + } + Utils.sendMessage(sender, "&6" + target.getName() + "'s &eplayerwarp has been deleted!"); + } + else { + Utils.sendMessage(sender, "&6" + target.getName() + " &edoesn't have a playerwarp."); + } + } + else { + final OfflinePlayer target2 = Bukkit.getOfflinePlayer(args[1]); + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target2.getUniqueId().toString()) != null) { + Utils.removeWarp(target2.getUniqueId().toString()); + PlayerWarps.get().reloadConfig(); + Utils.sendMessage(sender, "&6" + target2.getName() + "'s &eplayerwarp has been deleted!"); + } + else { + Utils.sendMessage(sender, "&6" + target2.getName() + " &edoesn't have a playerwarp."); + } + } + } + } + else if (args[0].equalsIgnoreCase("fix")) { + if (!sender.hasPermission("core.warpcreates.fix")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + final Player target = Bukkit.getPlayer(args[1]); + final Player player = (Player)sender; + if (target != null) { + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target.getUniqueId().toString()) != null) { + Utils.fixWarp(target.getUniqueId().toString()); + PlayerWarps.get().reloadConfig(); + if (Bukkit.getWorld(PlayerWarps.get().getCustomData().getString("Main-world")) != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building").equalsIgnoreCase("true")) { + target.teleport(Bukkit.getWorld(PlayerWarps.get().getCustomData().getString("Main-world")).getSpawnLocation()); + target.setGameMode(GameMode.SURVIVAL); + target.getInventory().clear(); + for (final PotionEffect effects : target.getActivePotionEffects()) { + target.removePotionEffect(effects.getType()); + } + } + Utils.sendMessage(sender, "&6" + target.getName() + "'s &eplayerwarp was put in ready to build state (Fixed if broken)!"); + } + else { + Utils.sendMessage(sender, "&6" + target.getName() + " &edoesn't have a playerwarp."); + } + } + else { + final OfflinePlayer target2 = Bukkit.getOfflinePlayer(args[1]); + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target2.getUniqueId().toString()) != null) { + Utils.fixWarp(target2.getUniqueId().toString()); + PlayerWarps.get().reloadConfig(); + Utils.sendMessage(sender, "&6" + target2.getName() + "'s &eplayerwarp was put in ready to build state (Fixed if broken)!"); + } + else { + Utils.sendMessage(sender, "&6" + target2.getName() + " &edoesn't have a playerwarp."); + } + } + } + } + else if (args[0].equalsIgnoreCase("warpqueue")) { + if (!sender.hasPermission("core.warpcreates.warpqueue")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else if (args.length == 2) { + final ArrayList warpqueue = new ArrayList(); + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By") == null) { + Utils.sendMessage(sender, "&eThere are no &6warps &ein queue for &6approval&e."); + return false; + } + int count = 0; + final Set set = (Set)PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By").getKeys(false); + final Iterator it = set.iterator(); + while (it.hasNext()) { + final UUID uuid = UUID.fromString(it.next()); + final OfflinePlayer target3 = Bukkit.getOfflinePlayer(uuid); + final Player player2 = (Player)sender; + if ((target3.hasPlayedBefore() || target3 != null) && PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + uuid.toString()) != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target3.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString() + ".Building").equalsIgnoreCase("false")) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + uuid.toString() + ".Need-Approval").equalsIgnoreCase("true")) { + warpqueue.add(target3.getName()); + } + else { + ++count; + } + } + } + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By").getKeys(false).size() == count) { + Utils.sendMessage(sender, "&eThere are no &6warps &ein queue for &6approval&e."); + return false; + } + final Pattern pattern2 = Pattern.compile("[^0-9 ]"); + final Matcher match2 = pattern2.matcher(args[1]); + final boolean found2 = match2.find(); + if (found2) { + Utils.sendMessage(sender, "&cPlease enter a page number."); + } + else { + Utils.sendMessage(sender, "&eShowing all results for &3PlayerWarps &eneeding approval: "); + Utils.paginate(sender, warpqueue, Integer.parseInt(args[1])); + } + } + else { + Utils.sendMessage(sender, "&cPlease enter a page number."); + } + } + else if (args[0].equalsIgnoreCase("approve")) { + if (!sender.hasPermission("core.warpcreates.approve")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + final OfflinePlayer target4 = Bukkit.getOfflinePlayer(args[1]); + final Player player = (Player)sender; + if (target4.hasPlayedBefore() || target4 != null) { + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target4.getUniqueId().toString()) != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Building").equalsIgnoreCase("false")) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Approved") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Approved").equalsIgnoreCase("false")) { + PlayerWarps.getWorldSetup(); + WorldListener.approveVoidWorld(player, target4); + PlayerWarps.get().reloadConfig(); + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + "'s &eplayerwarp is already approved."); + } + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + "'s &eplayerwarp cannot be approved while they are building."); + } + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + " &edoesn't have a playerwarp."); + } + } + } + } + else if (args[0].equalsIgnoreCase("approveconfirm")) { + if (!sender.hasPermission("core.warpcreates.approve")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else { + final OfflinePlayer target4 = Bukkit.getOfflinePlayer(args[1]); + if (PlayerWarps.get().getCustomData().getConfigurationSection("Warps-Created-By." + target4.getUniqueId().toString()) != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Building").equalsIgnoreCase("false")) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Approved") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Approved").equalsIgnoreCase("false")) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Need-Approval") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target4.getUniqueId().toString() + ".Need-Approval").equalsIgnoreCase("true")) { + PlayerWarps.getWorldSetup(); + if (WorldListener.ready.containsKey(target4)) { + PlayerWarps.getWorldSetup(); + WorldListener.approveConfirmVoidWorld(target4, false); + Utils.sendMessage(sender, "&eYou have confirmed approval of &6" + target4.getName() + "'s &eplayerwarp!"); + } + else { + Utils.sendMessage(sender, "&eYou cannot confirm approval for &6" + target4.getName() + "'s &eplayerwarp as no one has looked at it:"); + Utils.sendMessage(sender, "&f/&ewarpcreate approve &6" + target4.getName()); + } + PlayerWarps.get().reloadConfig(); + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + "'s &eplayerwarp is not ready yet."); + } + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + "'s &eplayerwarp is already approved."); + } + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + "'s &eplayerwarp cannot be approved while they are building."); + } + } + else { + Utils.sendMessage(sender, "&6" + target4.getName() + " &edoesn't have a playerwarp."); + } + } + } + else { + this.helpMenu(sender); + } + } + else if (args.length >= 1) { + if (args[0].equals("commandAdd")) { + if (!sender.hasPermission("core.warpcreates.commandAdd")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else if (args.length >= 1) { + if (sender instanceof Player) { + String command = ""; + for (int i = 1; i < args.length; ++i) { + final String arg = args[i] + " "; + command += arg; + } + final Player p = (Player)sender; + if (PlayerWarps.get().getCustomData().getStringList("command-whitelist").contains(StringUtils.chop(command))) { + p.sendMessage(Utils.replace("&6" + command + "&eis already whitelisted")); + } + else { + final List commands = (List)PlayerWarps.get().getCustomData().getStringList("command-whitelist"); + commands.add(StringUtils.chop(command)); + PlayerWarps.get().getCustomData().set("command-whitelist", (Object)commands); + PlayerWarps.get().saveConfig(); + PlayerWarps.get().reloadConfig(); + p.sendMessage(Utils.replace("&6" + command + "&ehas been added to the command whitelist")); + } + } + else { + sender.sendMessage(Utils.replace("&eOnly players can execute that command")); + } + } + else { + sender.sendMessage(Utils.replace("&ePlease specify a command to whitelist")); + } + } + else if (args[0].equals("commandDel")) { + if (!sender.hasPermission("core.warpcreates.commandDel")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else if (args.length >= 1) { + if (sender instanceof Player) { + String command = ""; + for (int i = 1; i < args.length; ++i) { + final String arg = args[i] + " "; + command += arg.toLowerCase(); + } + final Player p = (Player)sender; + if (!PlayerWarps.get().getCustomData().getStringList("command-whitelist").contains(StringUtils.chop(command))) { + p.sendMessage(Utils.replace("&6" + command + "&ewasn't already whitelisted")); + } + else { + final List commands = (List)PlayerWarps.get().getCustomData().getStringList("command-whitelist"); + commands.remove(StringUtils.chop(command)); + PlayerWarps.get().getCustomData().set("command-whitelist", (Object)commands); + PlayerWarps.get().saveConfig(); + PlayerWarps.get().reloadConfig(); + p.sendMessage(Utils.replace("&6" + command + "&ehas been removed from the command whitelist")); + } + } + else { + sender.sendMessage(Utils.replace("&eOnly players can execute that command")); + } + } + else { + sender.sendMessage(Utils.replace("&ePlease specify a command to unwhitelist")); + } + } + else { + this.helpMenu(sender); + } + } + } + } + else if (cmd.getName().equalsIgnoreCase("warpcreateblock")) { + if (!sender.hasPermission("core.warpcreates.giveblock")) { + Utils.sendMessage(sender, Commands.noPerms); + } + else if (sender instanceof ConsoleCommandSender) { + if (args.length == 0) { + this.helpMenu2Console(); + } + else if (args.length == 4) { + if (args[0].equalsIgnoreCase("giveBlock")) { + if (args[1] != null) { + if (args[2].equalsIgnoreCase("h") || args[2].equalsIgnoreCase("m") || args[2].equalsIgnoreCase("s")) { + final Player target = Bukkit.getPlayer(args[3].toString()); + if (target != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building").equalsIgnoreCase("true")) { + Utils.sendConsoleMessage("&6" + target.getName() + " &ccannot be given this item as they're building a warp already."); + } + else { + final Pattern pattern3 = Pattern.compile("[^0-9 ]"); + final Matcher match3 = pattern3.matcher(args[1]); + final boolean found3 = match3.find(); + if (found3) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time3 = 0; + final String timelength = "" + args[1] + "" + args[2]; + if (args[2].equalsIgnoreCase("h")) { + time3 = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time3 = Integer.parseInt(args[1]) * 60; + } + else if (args[1].equalsIgnoreCase("s")) { + time3 = Integer.parseInt(args[1]); + } + final List wclore = new ArrayList(); + ItemStack wcblock = new ItemStack(Material.LAPIS_BLOCK); + final ItemMeta im = wcblock.getItemMeta(); + wclore.add(Utils.replace("&3This is a WarpCreate.")); + wclore.add(Utils.replace("&3WarpCreates allow the player with")); + wclore.add(Utils.replace("&3this item to create a PlayerWarp.")); + wclore.add(Utils.replace("&3This will clear your inventory so put away any other items.")); + wclore.add(Utils.replace("&7[&eRight-Click this to create a " + timelength + " WarpCreate&7]")); + im.setDisplayName(Utils.replace("&3WarpCreate &7[&3" + timelength + "&7]")); + im.setLore((List)wclore); + wcblock.setItemMeta(im); + final String antiDupe = RandomStringGenerator.randomString(35, true, true, false); + wcblock = ItemMetadata.setMetadata(wcblock, "AntiDupe", antiDupe); + target.getInventory().addItem(new ItemStack[] { ItemMetadata.setMetadata(wcblock, "WarpCreate", timelength) }); + Utils.sendConsoleMessage("&eYou have given a &3" + timelength + " &eWarpCreate &eto &6" + target.getName() + " &e."); + Utils.sendMessage((CommandSender)target, "&eYou have been given a &3" + timelength + " &eWarpCreate &eto &6" + target.getName() + " &e."); + } + } + else { + Utils.sendMessage(sender, "&6" + args[3].toString() + " &eis not online."); + } + } + else { + Utils.sendMessage(sender, "&cYou can only use 1 time span in warpcreation."); + } + } + else { + this.helpMenu2Console(); + } + } + else { + this.helpMenu2Console(); + } + } + else { + this.helpMenu2Console(); + } + } + else if (sender instanceof Player) { + if (args.length == 0) { + this.helpMenu2(sender); + } + else if (args.length == 4) { + if (args[0].equalsIgnoreCase("giveBlock")) { + if (args[1] != null) { + if (args[2].equalsIgnoreCase("h") || args[2].equalsIgnoreCase("m") || args[2].equalsIgnoreCase("s")) { + final Player target = Bukkit.getPlayer(args[3].toString()); + final Player player = (Player)sender; + if (target != null) { + if (PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building") != null && PlayerWarps.get().getCustomData().getString("Warps-Created-By." + target.getUniqueId().toString() + ".Building").equalsIgnoreCase("true")) { + Utils.sendMessage(sender, "&6" + target.getName() + "&ccannot be given this item as they're building a warp already."); + } + else { + final Pattern pattern = Pattern.compile("[^0-9 ]"); + final Matcher match = pattern.matcher(args[1]); + final boolean found = match.find(); + if (found) { + Utils.sendMessage(sender, "&cError: the time is not alphabetic nor symbolized."); + return false; + } + int time = 0; + final String timelength2 = "" + args[1] + "" + args[2]; + if (args[2].equalsIgnoreCase("h")) { + time = Integer.parseInt(args[1]) * 3600; + } + else if (args[2].equalsIgnoreCase("m")) { + time = Integer.parseInt(args[1]) * 60; + } + else if (args[1].equalsIgnoreCase("s")) { + time = Integer.parseInt(args[1]); + } + final List wclore2 = new ArrayList(); + ItemStack wcblock2 = new ItemStack(Material.LAPIS_BLOCK); + final ItemMeta im2 = wcblock2.getItemMeta(); + im2.setDisplayName(Utils.replace("&3WarpCreate &7[&3" + timelength2 + "&7]")); + wclore2.add(Utils.replace("&3This is a WarpCreate.")); + wclore2.add(Utils.replace("&3WarpCreates allow the player with")); + wclore2.add(Utils.replace("&3this item to create a PlayerWarp.")); + wclore2.add(Utils.replace("&3This will clear your inventory so put away any other items.")); + wclore2.add(Utils.replace("&7[&eRight-Click this to create a " + timelength2 + " WarpCreate&7]")); + im2.setLore((List)wclore2); + wcblock2.setItemMeta(im2); + final String antiDupe2 = RandomStringGenerator.randomString(35, true, true, false); + wcblock2 = ItemMetadata.setMetadata(wcblock2, "AntiDupe", antiDupe2); + target.getInventory().addItem(new ItemStack[] { ItemMetadata.setMetadata(wcblock2, "WarpCreate", timelength2) }); + Utils.sendMessage(sender, "&eYou have given a &3" + timelength2 + " &eWarpCreate &eto &6" + target.getName() + " &e."); + Utils.sendMessage((CommandSender)target, "&eYou have been given a &3" + timelength2 + " &eWarpCreate &eto &6" + target.getName() + " &e."); + } + } + else { + Utils.sendMessage(sender, "&6" + args[3].toString() + " &eis not online."); + } + } + else { + Utils.sendMessage(sender, "&cYou can only use 1 time span in warpcreation."); + } + } + else { + this.helpMenu2(sender); + } + } + else { + this.helpMenu2(sender); + } + } + else { + this.helpMenu2(sender); + } + } + } + return true; + } + + private void helpMenu(final CommandSender player) { + final List helpMenu = new ArrayList(); + int count = 0; + helpMenu.add(Utils.replace(this.help)); + if (player.hasPermission("core.warpcreates.create")) { + helpMenu.add(Utils.replace(" &e- /warpcreate create