diff --git a/changelog.txt b/changelog.txt index b4a9bf6..393e51e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,35 @@ +3.5.53 + Added ability to disable per-world-inventories + +3.5.52 + Fixed timings. Should prevent item duplication + +3.7.51 + Fixed possible bug where some items can be duplicated. + Added support for offhand transfer + +3.7.50 + Added chatcolor support + Added ID support + Added Data support + Fixed error which clicking decor + +3.7.49 + added /lobbyapi addDecor and /lobbyapi removeDecor + added decor items! now you can include non-clickable items to the hub menu + +3.7.48 + Changed title for menu + +3.7.47 + Fixed updater time-out error. + +3.7.46 + Fixed changeslot saving + +3.7.45 + Added support for yaw changes + 3.7.44 Added /lobbyapi changeWorldSlot diff --git a/plugin.yml b/plugin.yml index e3ddde3..be04196 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ main: me.zombie_striker.lobbyapi.Main -version: 3.7.44 +version: 3.7.53 name: LobbyAPI commands: Lobby: diff --git a/src/me/zombie_striker/lobbyapi/LobbyCommands.java b/src/me/zombie_striker/lobbyapi/LobbyCommands.java index 954f936..988f8eb 100644 --- a/src/me/zombie_striker/lobbyapi/LobbyCommands.java +++ b/src/me/zombie_striker/lobbyapi/LobbyCommands.java @@ -13,6 +13,7 @@ import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; public class LobbyCommands implements CommandExecutor, TabCompleter { @@ -72,9 +73,16 @@ private boolean b(String arg, String... s) { return false; } + private List c(String arg, String... s) { + List cc = new ArrayList(); + for (String ss : s) + if (ss.toLowerCase().startsWith(arg.toLowerCase())) + cc.add(ss); + return cc; + } + @Override - public List onTabComplete(CommandSender sender, Command command, - String alias, String[] args) { + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { if (command.getName().equalsIgnoreCase("lobbyAPI")) { List tab = new ArrayList(); if (args.length == 1) { @@ -83,10 +91,23 @@ public List onTabComplete(CommandSender sender, Command command, } return tab; } else if (args.length > 1) { - if (b(args[0], "ChangeSpawn", "addJoiningCommand","setDisplayName", - "ListJoiningCommands", "setDescription", "RemoveWorld", - "SetMainLobby", "AddDefaultItem","changeWorldSlot", "RemoveDefaultItem", - "ListDefaultItems")) { + if (b(args[0], "addDecor")) { + if (args.length == 2) { + tab.add("1"); + tab.add("2"); + tab.add("3"); + } else if (args.length == 3) { + c(args[2], "DIRT", "GRASS", "OBSIDIAN", "APPLE", "DIAMOND_SWORD", "GOLDEN_SHOVEL"); + } else if (args.length == 4) { + tab.add("DisplayName"); + } + } else if (b(args[0], "removeDecor")) { + if (args.length == 2) + for (LobbyDecor d : m.decor) + tab.add(d.getSlot() + ""); + } else if (b(args[0], "ChangeSpawn", "addJoiningCommand", "setDisplayName", "ListJoiningCommands", + "setDescription", "RemoveWorld", "SetMainLobby", "AddDefaultItem", "changeWorldSlot", + "RemoveDefaultItem", "ListDefaultItems")) { if (args.length == 2) { bLW(tab, args[1]); } @@ -95,8 +116,7 @@ public List onTabComplete(CommandSender sender, Command command, bLW(tab, args[1]); } else if (args.length == 3) { for (Material m : Material.values()) { - if (m.name().toLowerCase() - .startsWith(args[2].toLowerCase())) + if (m.name().toLowerCase().startsWith(args[2].toLowerCase())) tab.add(m.name()); } } @@ -105,8 +125,7 @@ public List onTabComplete(CommandSender sender, Command command, bLW(tab, args[1]); } else if (args.length == 3) { for (WeatherState ws : WeatherState.values()) { - if (ws.name().toLowerCase() - .startsWith(args[2].toLowerCase())) + if (ws.name().toLowerCase().startsWith(args[2].toLowerCase())) tab.add(ws.name()); } } @@ -117,14 +136,12 @@ public List onTabComplete(CommandSender sender, Command command, if ("~".toLowerCase().startsWith(args[2].toLowerCase())) tab.add("~"); for (GameMode gm : GameMode.values()) { - if (gm.name().toLowerCase() - .startsWith(args[2].toLowerCase())) + if (gm.name().toLowerCase().startsWith(args[2].toLowerCase())) tab.add(gm.name()); } } - } else if (b(args[0], "setcanuseportals", "setLocationSaving", - "setdisablehealthandhunger", "setvoidlooping", - "hideWorld", "showWorld")) { + } else if (b(args[0], "setcanuseportals", "setLocationSaving", "setdisablehealthandhunger", + "setvoidlooping", "hideWorld", "showWorld")) { if (args.length == 2) { bLW(tab, args[1]); } @@ -181,17 +198,14 @@ public List onTabComplete(CommandSender sender, Command command, } @SuppressWarnings("deprecation") - public boolean onCommand(CommandSender sender, Command cmd, - String commandLabel, String[] args) { + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { if (cmd.getName().equalsIgnoreCase("lobbyapi")) { if (args.length > 0 && args[0].equalsIgnoreCase("version")) { - sender.sendMessage(prefix + " Current version :" - + ChatColor.GRAY + m.getDescription().getVersion()); + sender.sendMessage(prefix + " Current version :" + ChatColor.GRAY + m.getDescription().getVersion()); return false; } - if (args.length == 0 || args[0].equalsIgnoreCase("?") - || args[0].equalsIgnoreCase("help")) { + if (args.length == 0 || args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help")) { int page = 0; if (args.length > 1) { try { @@ -203,16 +217,13 @@ public boolean onCommand(CommandSender sender, Command cmd, } final int msgPerPage = 5; - sender.sendMessage(prefix + " ===== Page: " + (page + 1) + "/ " - + ((usages.size() / msgPerPage) + 1) + " ====="); - for (int i = page * msgPerPage; i < (page * msgPerPage) - + msgPerPage; i++) { + sender.sendMessage( + prefix + " ===== Page: " + (page + 1) + "/ " + ((usages.size() / msgPerPage) + 1) + " ====="); + for (int i = page * msgPerPage; i < (page * msgPerPage) + msgPerPage; i++) { if (i >= usages.size()) break; - sender.sendMessage(ChatColor.GOLD + "/LobbyAPI " - + ((String) usages.keySet().toArray()[i])); - sender.sendMessage(ChatColor.WHITE - + usages.get((String) usages.keySet().toArray()[i])); + sender.sendMessage(ChatColor.GOLD + "/LobbyAPI " + ((String) usages.keySet().toArray()[i])); + sender.sendMessage(ChatColor.WHITE + usages.get((String) usages.keySet().toArray()[i])); } return true; } @@ -220,22 +231,17 @@ public boolean onCommand(CommandSender sender, Command cmd, // Regaurdless of if they are op, if they are looking for versions, // they should see it. if (!sender.hasPermission("lobbyapi.commands")) { - sender.sendMessage(prefix + ChatColor.RED - + "You do not have permission to access this command."); + sender.sendMessage(prefix + ChatColor.RED + "You do not have permission to access this command."); return false; } if (args[0].equalsIgnoreCase("bungee")) { - m.getConfig().set("hasBungee", - !m.getConfig().getBoolean("hasBungee")); + m.getConfig().set("hasBungee", !m.getConfig().getBoolean("hasBungee")); m.saveConfig(); - sender.sendMessage(ChatColor.GOLD - + "Bungee for LobbyAPI has been set to " - + ChatColor.WHITE + sender.sendMessage(ChatColor.GOLD + "Bungee for LobbyAPI has been set to " + ChatColor.WHITE + m.getConfig().getBoolean("hasBungee") + "!"); - sender.sendMessage(ChatColor.GOLD - + "Reload/Restart server for this to take effect."); + sender.sendMessage(ChatColor.GOLD + "Reload/Restart server for this to take effect."); } else if (args[0].equalsIgnoreCase("addDefaultItem")) { if (args.length >= 2) { @@ -250,27 +256,90 @@ public boolean onCommand(CommandSender sender, Command cmd, items = new ArrayList<>(); items.add(p.getItemInHand()); lw.setSpawnItems(items); - ConfigHandler.setWorldVariable(lw, - ConfigKeys.DefaultItems.s, items); - sender.sendMessage(prefix + " Added the item " - + (items.size() - 1) + " = " - + p.getItemInHand().getType().name() + ":" - + p.getItemInHand().getDurability()); + ConfigHandler.setWorldVariable(lw, ConfigKeys.DefaultItems.s, items); + sender.sendMessage(prefix + " Added the item " + (items.size() - 1) + " = " + + p.getItemInHand().getType().name() + ":" + p.getItemInHand().getDurability()); } else { - sender.sendMessage(prefix - + " The item must be in your main hand."); + sender.sendMessage(prefix + " The item must be in your main hand."); } } else { - sender.sendMessage(prefix - + " Only players can send this command."); + sender.sendMessage(prefix + " Only players can send this command."); } } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI addDefaultItem [world]"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI addDefaultItem [world]"); sender.sendMessage(prefix + " [world] = '~' for the world you are in or the world's name (it is Case Sensitive)"); } + } else if (args[0].equalsIgnoreCase("addDecor")) { + if (args.length >= 4) { + int slot = Integer.parseInt(args[1]); + Material m = Material.SPONGE; + short data = 0; + try{ + m= Material.matchMaterial(args[2]); + }catch(Exception e) { + String[] vals = args[2].split(":"); + m=Material.getMaterial(Integer.parseInt(vals[0])); + if(vals.length>1) { + data = Short.parseShort(vals[1]); + } + } + StringBuilder display = new StringBuilder(); + for (int i = 3; i < args.length; i++) + display.append(args[i] + (i < args.length ? " " : "")); + + for (LobbyWorld lw : this.m.worlds) + if (lw.getSlot() == slot) { + sender.sendMessage(prefix + " There is already a world at slot " + slot + "!"); + return true; + } + for (LobbyDecor decor : this.m.decor) + if (decor.getSlot() == slot) { + sender.sendMessage(prefix + " There is already a decor object at slot " + slot + "!"); + return true; + } + + LobbyDecor decor = new LobbyDecor(slot, slot + "", ChatColor.translateAlternateColorCodes('&',display.toString())); + decor.setMaterial(m); + decor.setData(data); + this.m.getConfig().set("Decor." + decor.getSaveName() + ".displayname", decor.getDisplayname()); + this.m.getConfig().set("Decor." + decor.getSaveName() + ".material", decor.getMaterial().name()); + this.m.getConfig().set("Decor." + decor.getSaveName() + ".durib", decor.getData()); + this.m.getConfig().set("Decor." + decor.getSaveName() + ".slot", decor.getSlot()); + this.m.getConfig().set("Decor." + decor.getSaveName() + ".lore", decor.getLore()); + this.m.saveConfig(); + sender.sendMessage(prefix + " Added decor item at slot " + slot + "!"); + this.m.decor.add(decor); + } else { + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + + " /LobbyAPI addDecor [slot] [material] [display name] "); + sender.sendMessage(prefix + " [slot] = the new slot for the decor object"); + sender.sendMessage(prefix + " [material] = the Material for the decor object"); + sender.sendMessage(prefix + " [display name] = the displayname"); + } + + } else if (args[0].equalsIgnoreCase("removeDecor")) { + if (args.length >= 2) { + int slot = Integer.parseInt(args[1]); + LobbyDecor d = null; + for (LobbyDecor decor : m.decor) + if (decor.getSlot() == slot) { + this.m.getConfig().set("Decor." + decor.getSaveName(), null); + this.m.saveConfig(); + sender.sendMessage(prefix + " Removed decor item at slot " + slot + "!"); + d = decor; + break; + } + if(d!=null) { + m.decor.remove(d); + return true; + } + sender.sendMessage(prefix + " There is no decor item at slot " + slot + "!"); + } else { + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI removeDecor [slot]"); + sender.sendMessage(prefix + " [slot] = the slot for the decor object you want to remove"); + } } else if (args[0].equalsIgnoreCase("changeWorldSlot")) { if (args.length >= 3) { LobbyWorld lw = gLW(sender, args[1]); @@ -280,19 +349,20 @@ public boolean onCommand(CommandSender sender, Command cmd, try { index = Integer.parseInt(args[2]); } catch (Exception e) { - sender.sendMessage(prefix - + " The index must be a number"); + sender.sendMessage(prefix + " The index must be a number"); return true; } lw.setSlot(index); - sender.sendMessage(prefix + "The slot for the world has been changed to "+index); - }else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI changeWorldSlot [world] [slot]"); + + m.getConfig().set("Worlds." + lw.getSaveName() + ".i", index); + m.saveConfig(); + sender.sendMessage(prefix + "The slot for the world has been changed to " + index); + } else { + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI changeWorldSlot [world] [slot]"); sender.sendMessage(prefix + " [world] = '~' for the world you are in or the world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [slot] = the new slot for the world"); + sender.sendMessage(prefix + " [slot] = the new slot for the world"); } } else if (args[0].equalsIgnoreCase("removeDefaultItem")) { @@ -304,32 +374,25 @@ public boolean onCommand(CommandSender sender, Command cmd, try { index = Integer.parseInt(args[2]); } catch (Exception e) { - sender.sendMessage(prefix - + " The index must be a number"); + sender.sendMessage(prefix + " The index must be a number"); return true; } if (lw.getSpawnItems() == null) { - sender.sendMessage(prefix - + " There are no default items for this world."); + sender.sendMessage(prefix + " There are no default items for this world."); return true; } List items = lw.getSpawnItems(); - sender.sendMessage(prefix + " Removed the item " + index - + " = " - + lw.getSpawnItems().get(index).getType().name() - + ":" + sender.sendMessage(prefix + " Removed the item " + index + " = " + + lw.getSpawnItems().get(index).getType().name() + ":" + lw.getSpawnItems().get(index).getDurability()); items.remove(index); lw.setSpawnItems(items); - ConfigHandler.setWorldVariable(lw, - ConfigKeys.DefaultItems.s, items); + ConfigHandler.setWorldVariable(lw, ConfigKeys.DefaultItems.s, items); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI addDefaultItem [world]"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI addDefaultItem [world]"); sender.sendMessage(prefix + " [world] = '~' for the world you are in or the world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [index] = the index of the item you wish to remove"); + sender.sendMessage(prefix + " [index] = the index of the item you wish to remove"); } } else if (args[0].equalsIgnoreCase("listDefaultItems")) { @@ -338,19 +401,15 @@ public boolean onCommand(CommandSender sender, Command cmd, if (lw == null) return false; if (lw.getSpawnItems() == null) { - sender.sendMessage(prefix - + " There are no default items for this world."); + sender.sendMessage(prefix + " There are no default items for this world."); return true; } for (int i = 0; i < lw.getSpawnItems().size(); i++) { - sender.sendMessage(i + "- " - + lw.getSpawnItems().get(i).getType().name() - + ":" + sender.sendMessage(i + "- " + lw.getSpawnItems().get(i).getType().name() + ":" + lw.getSpawnItems().get(i).getDurability()); } } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI addDefaultItem [world]"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI addDefaultItem [world]"); sender.sendMessage(prefix + " [world] = '~' for the world you are in or the world's name (it is Case Sensitive)"); } @@ -361,41 +420,22 @@ public boolean onCommand(CommandSender sender, Command cmd, if (lw == null) return false; if (LobbyWorld.getMainLobby() != null) { - if (m.getConfig() - .getString( - "Worlds." - + LobbyWorld.getMainLobby() - .getSaveName() - + ".name") - .equalsIgnoreCase( - LobbyWorld.getMainLobby() - .getWorldName())) { - m.getConfig().set( - "Worlds." - + LobbyWorld.getMainLobby() - .getSaveName() - + ".isMainLobby", false); + if (m.getConfig().getString("Worlds." + LobbyWorld.getMainLobby().getSaveName() + ".name") + .equalsIgnoreCase(LobbyWorld.getMainLobby().getWorldName())) { + m.getConfig().set("Worlds." + LobbyWorld.getMainLobby().getSaveName() + ".isMainLobby", + false); m.saveConfig(); } } - if (m.getConfig().contains( - "Worlds." + lw.getSaveName() + ".name") - && m.getConfig() - .getString( - "Worlds." + lw.getSaveName() - + ".name") - .equalsIgnoreCase(lw.getWorldName())) { - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".isMainLobby", - true); + if (m.getConfig().contains("Worlds." + lw.getSaveName() + ".name") && m.getConfig() + .getString("Worlds." + lw.getSaveName() + ".name").equalsIgnoreCase(lw.getWorldName())) { + m.getConfig().set("Worlds." + lw.getSaveName() + ".isMainLobby", true); m.saveConfig(); } lw.setAsMainLobby(); - sender.sendMessage(prefix + "Set world \"" - + lw.getWorldName() + "\" to be the main lobby."); + sender.sendMessage(prefix + "Set world \"" + lw.getWorldName() + "\" to be the main lobby."); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI seMaintLobby [name]"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI seMaintLobby [name]"); sender.sendMessage(prefix + " [name] = '~' for the world you are in or the world's name (it is Case Sensitive)"); } @@ -406,26 +446,16 @@ public boolean onCommand(CommandSender sender, Command cmd, sender.sendMessage(prefix + " There is no main lobby!"); return true; } - if (m.getConfig() - .getString( - "Worlds." - + LobbyWorld.getMainLobby() - .getSaveName() + ".name") + if (m.getConfig().getString("Worlds." + LobbyWorld.getMainLobby().getSaveName() + ".name") .equalsIgnoreCase(lw.getWorldName())) { - m.getConfig() - .set("Worlds." - + LobbyWorld.getMainLobby() - .getSaveName() + ".isMainLobby", - false); + m.getConfig().set("Worlds." + LobbyWorld.getMainLobby().getSaveName() + ".isMainLobby", false); m.saveConfig(); LobbyWorld.removeMainLobby(); } sender.sendMessage(prefix + "Removed the main lobby."); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI removeMainLobby [name]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI removeMainLobby [name]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); } } else if (args[0].equalsIgnoreCase("setDescription")) { if (args.length >= 2) { @@ -437,25 +467,17 @@ public boolean onCommand(CommandSender sender, Command cmd, sb.append(args[i] + " "); } List g = new ArrayList(); - g.add(ChatColor.translateAlternateColorCodes('&', - sb.toString())); + g.add(ChatColor.translateAlternateColorCodes('&', sb.toString())); lw.setDescription(g); - m.getConfig() - .set("Worlds." + lw.getSaveName() + ".desc", g); + m.getConfig().set("Worlds." + lw.getSaveName() + ".desc", g); m.saveConfig(); - sender.sendMessage(prefix - + "Changed world description for world \"" - + lw.getWorldName() + "\" to " + sb.toString() - + "."); + sender.sendMessage(prefix + "Changed world description for world \"" + lw.getWorldName() + "\" to " + + sb.toString() + "."); } else { - sender.sendMessage(prefix - + " Usage:" - + ChatColor.BOLD - + " /LobbyAPI setDescription [world] [description...]"); - sender.sendMessage(prefix - + " [world] = '~' or the world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [description] = The desctiption of the world."); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setDescription [world] [description...]"); + sender.sendMessage(prefix + " [world] = '~' or the world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [description] = The desctiption of the world."); } } else if (args[0].equalsIgnoreCase("addworld")) { @@ -465,8 +487,7 @@ public boolean onCommand(CommandSender sender, Command cmd, if (sender instanceof Player) { wo = ((Player) sender).getWorld(); } else { - sender.sendMessage(prefix - + " Only players can use '~' "); + sender.sendMessage(prefix + " Only players can use '~' "); return true; } } else { @@ -475,14 +496,12 @@ public boolean onCommand(CommandSender sender, Command cmd, sender.sendMessage(prefix + " This world does not exist. Creating world using LobbyAPI WorldGenerator"); wo = Bukkit.createWorld(new WorldCreator(args[1])); - ConfigHandler.setCustomWorldValue(wo.getName(), - ConfigKeys.CustomAddedWorlds_Seed.s, + ConfigHandler.setCustomWorldValue(wo.getName(), ConfigKeys.CustomAddedWorlds_Seed.s, wo.getSeed()); } } if (LobbyAPI.getLobbyWorld(wo) != null) { - sender.sendMessage(prefix - + " This world has already been registered!"); + sender.sendMessage(prefix + " This world has already been registered!"); return false; } int i = LobbyAPI.getOpenSlot(Integer.parseInt(args[2])); @@ -525,57 +544,45 @@ public boolean onCommand(CommandSender sender, Command cmd, if (wo != null) { Location l = new Location(wo, x, y, z); - LobbyAPI.registerWorldFromConfig(wo, l, savename, - wo.getName(), color, i, GameMode.SURVIVAL); + if (sender instanceof Player) { + l.setYaw(((Player) sender).getLocation().getYaw()); + l.setPitch(((Player) sender).getLocation().getPitch()); + } + LobbyAPI.registerWorldFromConfig(wo, l, savename, wo.getName(), color, i, GameMode.SURVIVAL); String fi = wo.getName(); if (m.getConfig().contains("Worlds." + fi)) { sender.sendMessage(prefix + " The config already has registered this world, even though LobbyAPI has not. This should not happen, but if it did, report this to Zombie_Striker on the bukkitdev page: https://dev.bukkit.org/projects/lobbyapi"); return false; } - m.getConfig().set("Worlds." + fi + ".name", - wo.getName()); - m.getConfig().set("Worlds." + fi + ".displayname", - wo.getName()); - m.getConfig().set("Worlds." + fi + ".spawnLoc.x", - l.getX()); - m.getConfig().set("Worlds." + fi + ".spawnLoc.y", - l.getY()); - m.getConfig().set("Worlds." + fi + ".spawnLoc.z", - l.getZ()); - m.getConfig().set("Worlds." + fi + ".spawnLoc.w", - l.getWorld().getName()); - m.getConfig().set("Worlds." + fi + ".weatherstate", - WeatherState.NORMAL.name()); + m.getConfig().set("Worlds." + fi + ".name", wo.getName()); + m.getConfig().set("Worlds." + fi + ".displayname", wo.getName()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.x", l.getX()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.y", l.getY()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.z", l.getZ()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.yaw", l.getYaw()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.pitch", l.getPitch()); + m.getConfig().set("Worlds." + fi + ".spawnLoc.w", l.getWorld().getName()); + m.getConfig().set("Worlds." + fi + ".weatherstate", WeatherState.NORMAL.name()); m.getConfig().set("Worlds." + fi + ".i", i); m.getConfig().set("Worlds." + fi + ".save", savename); m.getConfig().set("Worlds." + fi + ".desc", ""); - m.getConfig().set("Worlds." + fi + ".gamemode", - GameMode.SURVIVAL.name()); + m.getConfig().set("Worlds." + fi + ".gamemode", GameMode.SURVIVAL.name()); m.getConfig().set("Worlds." + fi + ".color", color); m.saveConfig(); - sender.sendMessage(prefix + "Added world \"" - + wo.getName() + "\" with a slot of " + i + sender.sendMessage(prefix + "Added world \"" + wo.getName() + "\" with a slot of " + i + ": Spawn at " + x + " " + y + " " + z + "."); m.loadLocalWorlds(); } } else { - sender.sendMessage(prefix - + " Usage:" - + ChatColor.BOLD + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI addword [name] [slot] [x] [y] [z] [color] [savename]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [slot] = The slot in the menu for the world"); - sender.sendMessage(prefix - + " [x] = The world's spawn's X location"); - sender.sendMessage(prefix - + " [y] = The world's spawn's Y location"); - sender.sendMessage(prefix - + " [z] = The world's spawn's z location"); - sender.sendMessage(prefix - + " [color] = OPTIONAL: The color of the block."); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [slot] = The slot in the menu for the world"); + sender.sendMessage(prefix + " [x] = The world's spawn's X location"); + sender.sendMessage(prefix + " [y] = The world's spawn's Y location"); + sender.sendMessage(prefix + " [z] = The world's spawn's z location"); + sender.sendMessage(prefix + " [color] = OPTIONAL: The color of the block."); sender.sendMessage(prefix + " [savename] = OPTIONAL: The name of inventory save (only useful if you wish for multiple worlds to have the same inventory)"); } @@ -583,14 +590,12 @@ public boolean onCommand(CommandSender sender, Command cmd, } else if (args[0].equalsIgnoreCase("removeWorldSelector")) { m.setWorldSelector(null); sender.sendMessage(prefix + "World selector removed."); - } else if (args.length > 0 - && args[0].equalsIgnoreCase("setWorldSelector")) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("setWorldSelector")) { if (sender instanceof Player) { Player p = (Player) sender; if (p.getItemInHand() != null) { m.setWorldSelector(p.getItemInHand()); - sender.sendMessage(prefix - + " World seelector set to item in player's hand"); + sender.sendMessage(prefix + " World seelector set to item in player's hand"); } else { sender.sendMessage(prefix + " You need to have an item in your hands in order to set it as a world selector."); @@ -603,17 +608,12 @@ public boolean onCommand(CommandSender sender, Command cmd, return false; Boolean b = Boolean.parseBoolean(args[2]); lw.setWorldShouldSavePlayerLocation(b); - ConfigHandler.setWorldVariable(lw, - ConfigHandler.ConfigKeys.ShouldBeSavingLocation.s, - b); + ConfigHandler.setWorldVariable(lw, ConfigHandler.ConfigKeys.ShouldBeSavingLocation.s, b); sender.sendMessage(prefix + " Set location saving to " + b); } else { - sender.sendMessage(prefix - + " Usage:" - + ChatColor.BOLD + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setLocationSaving [name] [True or false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); sender.sendMessage(prefix + " [True or false] = If the world should save the locations of the players when they log off."); } @@ -624,8 +624,7 @@ public boolean onCommand(CommandSender sender, Command cmd, return false; Material change = Material.WOOL; try { - change = Material - .getMaterial(Integer.parseInt(args[2])); + change = Material.getMaterial(Integer.parseInt(args[2])); } catch (Exception e) { change = Material.matchMaterial(args[2]); if (change == null || change == Material.AIR) { @@ -637,27 +636,18 @@ public boolean onCommand(CommandSender sender, Command cmd, lw.setMaterial(change); lw.setColor((short) 0); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".material", - change.toString()); - m.getConfig().set("Worlds." + lw.getSaveName() + ".color", - 0); + m.getConfig().set("Worlds." + lw.getSaveName() + ".material", change.toString()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".color", 0); m.saveConfig(); - sender.sendMessage(prefix + "Changed material for \"" - + lw.getWorldName() + "\" to " + change.toString() - + "."); + sender.sendMessage(prefix + "Changed material for \"" + lw.getWorldName() + "\" to " + + change.toString() + "."); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setMaterial [name] [material]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [material] = The new material of the icon"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setMaterial [name] [material]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [material] = The new material of the icon"); } - - - } else if (args[0].equalsIgnoreCase("setDisplayName")) { if (args.length >= 3) { @@ -672,16 +662,12 @@ public boolean onCommand(CommandSender sender, Command cmd, if (i != args.length - 1) sb.append(" "); } - lw.setDisplayName(ChatColor.translateAlternateColorCodes('&',sb.toString())); - sender.sendMessage(prefix + " Changing the worlds displayname to \"" - + sb.toString() + "\""); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".displayname", - lw.getDisplayName()); + lw.setDisplayName(ChatColor.translateAlternateColorCodes('&', sb.toString())); + sender.sendMessage(prefix + " Changing the worlds displayname to \"" + sb.toString() + "\""); + m.getConfig().set("Worlds." + lw.getSaveName() + ".displayname", lw.getDisplayName()); m.saveConfig(); } else { - sender.sendMessage(prefix - + " Usage: /lobbyAPI setDisplayName [World] [The displayname]"); + sender.sendMessage(prefix + " Usage: /lobbyAPI setDisplayName [World] [The displayname]"); } } else if (args[0].equalsIgnoreCase("addJoiningCommand")) { if (args.length >= 3) { @@ -697,16 +683,15 @@ public boolean onCommand(CommandSender sender, Command cmd, sb.append(" "); } lw.addCommand(sb.toString()); - sender.sendMessage(prefix + " Adding command " - + (lw.getCommandsOnJoin().size() - 1) + " (" + sender.sendMessage(prefix + " Adding command " + (lw.getCommandsOnJoin().size() - 1) + " (" + sb.toString() + ")"); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".joincommands", - lw.getCommandsOnJoin()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".joincommands", lw.getCommandsOnJoin()); m.saveConfig(); } else { - sender.sendMessage(prefix - + " Usage: /lobbyAPI addJoiningCommand [World] [The command [can include spaces]]"); + sender.sendMessage( + prefix + " Usage: /lobbyAPI addJoiningCommand [World] [The command [can include spaces]]"); + sender.sendMessage( + prefix + " Use %player% to get the player's name."); } } else if (args[0].equalsIgnoreCase("removeJoiningCommand")) { if (args.length >= 3) { @@ -717,17 +702,13 @@ public boolean onCommand(CommandSender sender, Command cmd, try { i = Integer.parseInt(args[2]); } catch (Exception e) { - sender.sendMessage(prefix - + " You must provide the index of the command you want to remove"); + sender.sendMessage(prefix + " You must provide the index of the command you want to remove"); return true; } String command = lw.getCommandsOnJoin().get(i); lw.getCommandsOnJoin().remove(i); - sender.sendMessage(prefix + " Removing command " + i + " (" - + command + ")"); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".joincommands", - lw.getCommandsOnJoin()); + sender.sendMessage(prefix + " Removing command " + i + " (" + command + ")"); + m.getConfig().set("Worlds." + lw.getSaveName() + ".joincommands", lw.getCommandsOnJoin()); m.saveConfig(); } } else if (args[0].equalsIgnoreCase("ListJoiningCommands")) { @@ -736,9 +717,7 @@ public boolean onCommand(CommandSender sender, Command cmd, if (lw == null) return false; - sender.sendMessage(prefix - + " Listing joining commands for " - + lw.getWorldName()); + sender.sendMessage(prefix + " Listing joining commands for " + lw.getWorldName()); int i = 0; for (String command : lw.getCommandsOnJoin()) { sender.sendMessage("-" + i + " = " + command); @@ -759,20 +738,15 @@ public boolean onCommand(CommandSender sender, Command cmd, } lw.setGameMode(change); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".gamemode", - change.toString()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".gamemode", change.toString()); m.saveConfig(); - sender.sendMessage(prefix + "Changed gamemode for \"" - + lw.getWorldName() + "\" to " + change.name() - + "."); + sender.sendMessage( + prefix + "Changed gamemode for \"" + lw.getWorldName() + "\" to " + change.name() + "."); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setGameMode [name] [gamemode]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [gamemode] = The new default gamemode"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setGameMode [name] [gamemode]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [gamemode] = The new default gamemode"); } } else if (args[0].equalsIgnoreCase("changespawn")) { @@ -799,31 +773,26 @@ public boolean onCommand(CommandSender sender, Command cmd, z = Double.parseDouble(args[4]); Location l = new Location(lw.getMainWorld(), x, y, z); + if (sender instanceof Player) { + l.setYaw(((Player) sender).getLocation().getYaw()); + l.setPitch(((Player) sender).getLocation().getPitch()); + } lw.setSpawn(l); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".spawnLoc.x", - l.getX()); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".spawnLoc.y", - l.getY()); - m.getConfig().set( - "Worlds." + lw.getSaveName() + ".spawnLoc.z", - l.getZ()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".spawnLoc.x", l.getX()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".spawnLoc.y", l.getY()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".spawnLoc.z", l.getZ()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".spawnLoc.yaw", l.getYaw()); + m.getConfig().set("Worlds." + lw.getSaveName() + ".spawnLoc.pitch", l.getPitch()); m.saveConfig(); - sender.sendMessage(prefix + "Changed spawn for world \"" - + lw.getWorldName() + "\" to " + x + " " + y + " " - + z + "."); + sender.sendMessage(prefix + "Changed spawn for world \"" + lw.getWorldName() + "\" to " + x + " " + + y + " " + z + "."); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI changeSpawn [name] [x] [y] [z]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [x] = The world's spawn's X location"); - sender.sendMessage(prefix - + " [y] = The world's spawn's Y location"); - sender.sendMessage(prefix - + " [z] = The world's spawn's z location"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI changeSpawn [name] [x] [y] [z]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [x] = The world's spawn's X location"); + sender.sendMessage(prefix + " [y] = The world's spawn's Y location"); + sender.sendMessage(prefix + " [z] = The world's spawn's z location"); } } else if (args[0].equalsIgnoreCase("removeworld")) { if (args.length >= 2) { @@ -832,8 +801,7 @@ public boolean onCommand(CommandSender sender, Command cmd, if (sender instanceof Player) { wo = ((Player) sender).getWorld(); } else { - sender.sendMessage(prefix - + " Only players can use '~' "); + sender.sendMessage(prefix + " Only players can use '~' "); return true; } } else { @@ -841,42 +809,29 @@ public boolean onCommand(CommandSender sender, Command cmd, } if (wo != null) { if (ConfigHandler.getCustomWorldKeys() == null) { - sender.sendMessage(prefix - + "There are no worlds registered!"); + sender.sendMessage(prefix + "There are no worlds registered!"); return true; } - if (ConfigHandler.getCustomWorldKeys().contains( - wo.getName()) - && wo.getPlayers().size() > 0) { - sender.sendMessage(prefix - + "There are still " - + wo.getPlayers().size() + if (ConfigHandler.getCustomWorldKeys().contains(wo.getName()) && wo.getPlayers().size() > 0) { + sender.sendMessage(prefix + "There are still " + wo.getPlayers().size() + " players in that world! There must not be any players in the world when you remove it."); return true; } - m.getConfig().set( - "Worlds." - + LobbyAPI.getLobbyWorld(wo) - .getSaveName(), null); + m.getConfig().set("Worlds." + LobbyAPI.getLobbyWorld(wo).getSaveName(), null); m.saveConfig(); LobbyAPI.unregisterWorld(wo); - sender.sendMessage(prefix + "Removed world \"" - + wo.getName() + "\""); + sender.sendMessage(prefix + "Removed world \"" + wo.getName() + "\""); m.loadLocalWorlds(); - ConfigHandler.setCustomWorldValue(wo.getName(), - ConfigKeys.CustomAddedWorlds_Seed.s, null); + ConfigHandler.setCustomWorldValue(wo.getName(), ConfigKeys.CustomAddedWorlds_Seed.s, null); Bukkit.unloadWorld(wo, true); } else { - sender.sendMessage(prefix - + "Could not remove world: World does not exist"); + sender.sendMessage(prefix + "Could not remove world: World does not exist"); } } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI removeworld [name]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI removeworld [name]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); } } else if (args[0].equalsIgnoreCase("setCanUsePortals")) { if (args.length >= 3) { @@ -885,19 +840,16 @@ public boolean onCommand(CommandSender sender, Command cmd, return false; boolean b = Boolean.parseBoolean(args[2]); lw.setPortal(b); - ConfigHandler.setWorldVariable(lw, - ConfigKeys.CanUsePortals.s, b); + ConfigHandler.setWorldVariable(lw, ConfigKeys.CanUsePortals.s, b); m.saveConfig(); - sender.sendMessage(prefix - + "Set the CanUsePortals for world \"" - + lw.getWorldName() + "\" to " + b + ""); + sender.sendMessage( + prefix + "Set the CanUsePortals for world \"" + lw.getWorldName() + "\" to " + b + ""); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setCanUsePortals [name] [true/false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [true/false] If the world should allow portals (needed for MV-Portals)"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setCanUsePortals [name] [true/false]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage( + prefix + " [true/false] If the world should allow portals (needed for MV-Portals)"); } } else if (args[0].equalsIgnoreCase("setdisablehealthandhunger")) { @@ -907,19 +859,16 @@ public boolean onCommand(CommandSender sender, Command cmd, return false; boolean b = Boolean.parseBoolean(args[2]); lw.setDisableHungerAndHealth(b); - ConfigHandler.setWorldVariable(lw, - ConfigKeys.DisableHealthAndHunger.s, b); + ConfigHandler.setWorldVariable(lw, ConfigKeys.DisableHealthAndHunger.s, b); m.saveConfig(); - sender.sendMessage(prefix - + "Set the DisableHealthAndHunger for world \"" - + lw.getWorldName() + "\" to " + b + ""); + sender.sendMessage(prefix + "Set the DisableHealthAndHunger for world \"" + lw.getWorldName() + + "\" to " + b + ""); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setCanUsePortals [name] [true/false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [true/false] If the world should disable hunger (useful for lobbies)"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setCanUsePortals [name] [true/false]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage( + prefix + " [true/false] If the world should disable hunger (useful for lobbies)"); } } else if (args[0].equalsIgnoreCase("setvoidlooping")) { if (args.length >= 3) { @@ -928,17 +877,14 @@ public boolean onCommand(CommandSender sender, Command cmd, return false; boolean b = Boolean.parseBoolean(args[2]); lw.setVoidDisable(b); - ConfigHandler.setWorldVariable(lw, - ConfigKeys.DisableVoid.s, b); + ConfigHandler.setWorldVariable(lw, ConfigKeys.DisableVoid.s, b); m.saveConfig(); - sender.sendMessage(prefix - + "Set the DisableVoid for world \"" - + lw.getWorldName() + "\" to " + b + ""); + sender.sendMessage( + prefix + "Set the DisableVoid for world \"" + lw.getWorldName() + "\" to " + b + ""); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setCanUsePortals [name] [true/false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setCanUsePortals [name] [true/false]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); sender.sendMessage(prefix + " [true/false] If the world should teleport players back to spawn if they are in the void."); } @@ -948,16 +894,13 @@ public boolean onCommand(CommandSender sender, Command cmd, if (lw == null) return false; lw.setHidden(true); - ConfigHandler.setWorldVariable(lw, ConfigKeys.isHidden.s, - true); + ConfigHandler.setWorldVariable(lw, ConfigKeys.isHidden.s, true); m.saveConfig(); - sender.sendMessage(prefix + "Hidding world \"" - + lw.getWorldName()); + sender.sendMessage(prefix + "Hidding world \"" + lw.getWorldName()); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI hideworld [name] [true/false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI hideworld [name] [true/false]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); sender.sendMessage(prefix + " [true/false] If the world should teleport players back to spawn if they are in the void."); } @@ -967,54 +910,44 @@ public boolean onCommand(CommandSender sender, Command cmd, if (lw == null) return false; lw.setHidden(false); - ConfigHandler.setWorldVariable(lw, ConfigKeys.isHidden.s, - false); + ConfigHandler.setWorldVariable(lw, ConfigKeys.isHidden.s, false); m.saveConfig(); - sender.sendMessage(prefix + "Showing world \"" - + lw.getWorldName()); + sender.sendMessage(prefix + "Showing world \"" + lw.getWorldName()); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI showworld [name] [true/false]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI showworld [name] [true/false]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); sender.sendMessage(prefix + " [true/false] If the world should teleport players back to spawn if they are in the void."); } - } else if (args.length > 0 - && args[0].equalsIgnoreCase("setDefaultWeather")) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("setDefaultWeather")) { if (args.length >= 3) { LobbyWorld lw = gLW(sender, args[1]); if (lw == null) return false; - WeatherState ws = WeatherState - .getWeatherStateByName(args[2]); + WeatherState ws = WeatherState.getWeatherStateByName(args[2]); if (ws == null) { - sender.sendMessage(prefix - + "The weather state is invalid. Choose either NORMAL, ALWAYS_RAIN, or NO_RAIN"); + sender.sendMessage( + prefix + "The weather state is invalid. Choose either NORMAL, ALWAYS_RAIN, or NO_RAIN"); return false; } lw.setWeatherState(ws); - ConfigHandler.setWorldVariable(lw, ConfigKeys.Weather.s, - ws.name()); + ConfigHandler.setWorldVariable(lw, ConfigKeys.Weather.s, ws.name()); m.saveConfig(); - sender.sendMessage(prefix - + "Set the default weather for world \"" - + lw.getWorldName() + "\" to " + ws.name() + ""); + sender.sendMessage(prefix + "Set the default weather for world \"" + lw.getWorldName() + "\" to " + + ws.name() + ""); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI setDefaultWeather [name] [weather]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [weather] = The world's weather (NO_RAIN, ALWAYS_RAIN, NORMAL) "); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI setDefaultWeather [name] [weather]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [weather] = The world's weather (NO_RAIN, ALWAYS_RAIN, NORMAL) "); } } else if (args.length > 0 && args[0].equalsIgnoreCase("addserver")) { if (args.length >= 3) { String server = args[1]; if (LobbyAPI.getServer(server) != null) { - sender.sendMessage(prefix - + " This server has already been registered!"); + sender.sendMessage(prefix + " This server has already been registered!"); return false; } int i = LobbyAPI.getOpenSlot(Integer.parseInt(args[2])); @@ -1034,176 +967,91 @@ public boolean onCommand(CommandSender sender, Command cmd, m.getConfig().set("Server." + server + ".i", i); m.getConfig().set("Server." + server + ".color", color); m.saveConfig(); - sender.sendMessage(prefix + "Added server \"" + server - + "\" with a slot of " + i + "."); + sender.sendMessage(prefix + "Added server \"" + server + "\" with a slot of " + i + "."); m.loadLocalServers(); } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI addserver [name] [slot] [color]"); - sender.sendMessage(prefix - + " [name] = The world's name (it is Case Sensitive)"); - sender.sendMessage(prefix - + " [slot] = The slot in the menu for the world"); - sender.sendMessage(prefix - + " [color] = OPTIONAL: The color of the block."); + sender.sendMessage( + prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI addserver [name] [slot] [color]"); + sender.sendMessage(prefix + " [name] = The world's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " [slot] = The slot in the menu for the world"); + sender.sendMessage(prefix + " [color] = OPTIONAL: The color of the block."); } - } else if (args.length > 0 - && args[0].equalsIgnoreCase("removeserver")) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("removeserver")) { if (args.length >= 2) { String server = args[1]; LobbyAPI.unregisterBungeeServer(server); - for (String fi : m.getConfig() - .getConfigurationSection("Server").getKeys(false)) { + for (String fi : m.getConfig().getConfigurationSection("Server").getKeys(false)) { if (m.getConfig().getString("Server." + fi + ".name") != null - && m.getConfig() - .getString("Server." + fi + ".name") - .equals(server)) { + && m.getConfig().getString("Server." + fi + ".name").equals(server)) { m.getConfig().set("Server." + fi, null); m.saveConfig(); break; } - sender.sendMessage(prefix + "Removed server \"" - + server + "\""); + sender.sendMessage(prefix + "Removed server \"" + server + "\""); m.loadLocalServers(); } } else { - sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD - + " /LobbyAPI removeserver [name]"); - sender.sendMessage(prefix - + " [name] = The server's name (it is Case Sensitive)"); + sender.sendMessage(prefix + " Usage:" + ChatColor.BOLD + " /LobbyAPI removeserver [name]"); + sender.sendMessage(prefix + " [name] = The server's name (it is Case Sensitive)"); } - } else if (args.length > 0 - && args[0].equalsIgnoreCase("listWorlds")) { - sender.sendMessage(prefix - + " Worlds that have been added via command"); - for (String fi : m.getConfig() - .getConfigurationSection("Worlds").getKeys(false)) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("listWorlds")) { + sender.sendMessage(prefix + " Worlds that have been added via command"); + for (String fi : m.getConfig().getConfigurationSection("Worlds").getKeys(false)) { if (m.getConfig().getString("Worlds." + fi + ".name") != null) { - sender.sendMessage(prefix - + " Savename=" - + fi - + ": World=" - + m.getConfig().getString( - "Worlds." + fi + ".name")); + sender.sendMessage(prefix + " Savename=" + fi + ": World=" + + m.getConfig().getString("Worlds." + fi + ".name")); } } - } else if (args.length > 0 - && args[0].equalsIgnoreCase("listServers")) { - sender.sendMessage(prefix - + " Servers that have been added via command"); - for (String fi : m.getConfig() - .getConfigurationSection("Server").getKeys(false)) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("listServers")) { + sender.sendMessage(prefix + " Servers that have been added via command"); + for (String fi : m.getConfig().getConfigurationSection("Server").getKeys(false)) { if (m.getConfig().getString("Server." + fi + ".name") != null) { - sender.sendMessage(prefix - + " " - + fi - + ": Server " - + m.getConfig().getString( - "Server." + fi + ".name") + "."); + sender.sendMessage(prefix + " " + fi + ": Server " + + m.getConfig().getString("Server." + fi + ".name") + "."); } } - } else if (args.length > 0 - && args[0].equalsIgnoreCase("clearPlayerData")) { + } else if (args.length > 0 && args[0].equalsIgnoreCase("clearPlayerData")) { if (args.length >= 4) { if (m.getServer().getPlayer(args[1]) != null) { if (m.getServer().getWorld(args[2]) != null) { - if (args[3].equalsIgnoreCase("exp") - || args[3].equalsIgnoreCase("xp")) { - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".xp", - null); - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".xpl", - null); + if (args[3].equalsIgnoreCase("exp") || args[3].equalsIgnoreCase("xp")) { + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".xp", null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".xpl", null); } if (args[3].equalsIgnoreCase("Health")) - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".health", - 20); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".health", 20); if (args[3].equalsIgnoreCase("Hunger")) - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".hunger", - 20); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".hunger", 20); if (args[3].equalsIgnoreCase("Inventory")) { for (int kl = 0; kl < 36; kl++) { - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() - + ".i." - + kl, null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".i." + kl, null); } - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".a." + 1, - null); - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".a." + 2, - null); - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".a." + 3, - null); - m.getConfig().set( - m.getServer().getPlayer(args[1]) - .getName() - + "." - + m.getServer() - .getWorld(args[2]) - .getName() + ".a." + 4, - null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".a." + 1, null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".a." + 2, null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".a." + 3, null); + m.getConfig().set(m.getServer().getPlayer(args[1]).getName() + "." + + m.getServer().getWorld(args[2]).getName() + ".a." + 4, null); } m.saveConfig(); } else { - sender.sendMessage(prefix - + " That world does not exist"); + sender.sendMessage(prefix + " That world does not exist"); } } else { - sender.sendMessage(prefix - + " That player does not exist."); + sender.sendMessage(prefix + " That player does not exist."); } } else { sender.sendMessage(prefix + " Useage: clearPlayerData (Player) (WorldName) (Exp,exp / Health / Hunger / Inventory)"); - sender.sendMessage(prefix - + " This will allow OPs to delete player data for specific worlds."); + sender.sendMessage(prefix + " This will allow OPs to delete player data for specific worlds."); } } else { @@ -1218,38 +1066,35 @@ public boolean onCommand(CommandSender sender, Command cmd, } final int msgPerPage = 5; - sender.sendMessage(prefix + " ===== Page: " + (page + 1) + "/ " - + ((usages.size() / msgPerPage) + 1) + " ====="); - for (int i = page * msgPerPage; i < (page * msgPerPage) - + msgPerPage; i++) { + sender.sendMessage( + prefix + " ===== Page: " + (page + 1) + "/ " + ((usages.size() / msgPerPage) + 1) + " ====="); + for (int i = page * msgPerPage; i < (page * msgPerPage) + msgPerPage; i++) { if (i >= usages.size()) break; - sender.sendMessage(ChatColor.GOLD + "/lobbyAPI " - + ((String) usages.keySet().toArray()[i])); - sender.sendMessage(ChatColor.WHITE - + usages.get((String) usages.keySet().toArray()[i])); + sender.sendMessage(ChatColor.GOLD + "/lobbyAPI " + ((String) usages.keySet().toArray()[i])); + sender.sendMessage(ChatColor.WHITE + usages.get((String) usages.keySet().toArray()[i])); } return true; } } - if (cmd.getName().equalsIgnoreCase("Lobby") - || cmd.getName().equalsIgnoreCase("hub")) { + if (cmd.getName().equalsIgnoreCase("Lobby") || cmd.getName().equalsIgnoreCase("hub")) { if (sender instanceof Player) { Player player = (Player) sender; - if (m.getConfig().contains("disallowHubCommandNoPerm") &&m - .getConfig().getBoolean("disallowHubCommandNoPerm") && !player.hasPermission("lobbyapi.hub")) { - sender.sendMessage(prefix - + ChatColor.RED - + "You do not have permission to access this command."); + if (m.getConfig().contains("disallowHubCommandNoPerm") + && m.getConfig().getBoolean("disallowHubCommandNoPerm") + && !player.hasPermission("lobbyapi.hub")) { + sender.sendMessage(prefix + ChatColor.RED + "You do not have permission to access this command."); return false; } m.setInventorySize(false); - m.inventory = m.getServer().createInventory(null, - m.inventorySize, "LobbyAPI"); + m.inventory = m.getServer().createInventory(null, m.inventorySize, + ChatColor.GOLD + "LobbyAPI " + ChatColor.WHITE + "- World selector"); + + for (LobbyWorld wo : m.worlds) { if (wo != null) { if (wo.isHidden()) @@ -1257,16 +1102,13 @@ public boolean onCommand(CommandSender sender, Command cmd, List ls = new ArrayList(); if (wo == LobbyWorld.getMainLobby()) - ls.add(ChatColor.BOLD + "" + ChatColor.YELLOW - + "Main World"); + ls.add(ChatColor.BOLD + "" + ChatColor.YELLOW + "Main World"); ls.addAll(wo.getDescription()); Set players = wo.getPlayers(); - String players2 = ChatColor.GOLD + "" + players.size() - + " Players "; + String players2 = ChatColor.GOLD + "" + players.size() + " Players "; if (wo.hasMaxPlayers()) { - players2 = ChatColor.GOLD + "" + players.size() - + " out of " + wo.getMaxPlayers(); + players2 = ChatColor.GOLD + "" + players.size() + " out of " + wo.getMaxPlayers(); } ls.add(players2); @@ -1277,10 +1119,8 @@ public boolean onCommand(CommandSender sender, Command cmd, ls.add(ChatColor.GRAY + s.getName()); } - if ((wo.isPrivate() && players.contains(player)) - || !wo.isPrivate()) { - ItemStack is = LobbyAPI.setName(wo.getDisplayName(), - wo.getColor(), wo.getMaterial(), ls); + if ((wo.isPrivate() && players.contains(player)) || !wo.isPrivate()) { + ItemStack is = LobbyAPI.setName(wo.getDisplayName(), wo.getColor(), wo.getMaterial(), ls); is.setAmount(wo.getSlotAmount()); if (player.getWorld().equals(wo.getMainWorld())) { try { @@ -1296,15 +1136,26 @@ public boolean onCommand(CommandSender sender, Command cmd, } } - if (m.getConfig() != null - && m.getConfig().contains("hasBungee") + for (LobbyDecor d : m.decor) { + Material mk = d.getMaterial(); + if(mk==null ||mk==Material.AIR) + mk=Material.BARRIER; + + ItemStack material = new ItemStack(mk); + material.setAmount(d.getAmount()); + material.setDurability(d.getData()); + ItemMeta im = material.getItemMeta(); + im.setDisplayName(d.getDisplayname()); + im.setLore(d.getLore()); + material.setItemMeta(im); + m.inventory.setItem(d.getSlot(), material); + } + if (m.getConfig() != null && m.getConfig().contains("hasBungee") && m.getConfig().getBoolean("hasBungee")) { for (LobbyServer lb : m.bungeeServers) { List ls = new ArrayList(); - ls.add(ChatColor.RED + "" + ChatColor.GREEN - + ChatColor.GOLD + "BungeeCord Server"); - ItemStack is = LobbyAPI.setName(lb.getName(), - lb.getColor(), lb.getMaterial(), ls); + ls.add(ChatColor.RED + "" + ChatColor.GREEN + ChatColor.GOLD + "BungeeCord Server"); + ItemStack is = LobbyAPI.setName(lb.getName(), lb.getColor(), lb.getMaterial(), ls); is.setAmount(lb.getAmount()); m.inventory.addItem(is); @@ -1312,8 +1163,7 @@ public boolean onCommand(CommandSender sender, Command cmd, } player.openInventory(m.inventory); } else { - sender.sendMessage(prefix - + " The sender must be a player to operate this command!"); + sender.sendMessage(prefix + " The sender must be a player to operate this command!"); } } return false; @@ -1324,35 +1174,25 @@ public void addUsages() { usages.put("removeWorld", "Removes a world from the list"); usages.put("listWorlds", "Lists all the worlds added"); usages.put("Worlds", "Shows all stats of worlds"); - - usages.put("setMainLobby", "Changes the default spawn world"); usages.put("removeMainLobby", "Removes default spawn world"); - - usages.put("setmaterial", "Sets the material icon for a world"); - usages.put("setDisplayName", - "Changes a display name for a world."); + + usages.put("setmaterial", "Sets the material icon for a world"); + usages.put("setDisplayName", "Changes a display name for a world."); usages.put("setDescription", "Sets the description for a world"); usages.put("hideWorld", "Hides a world from the menu."); - usages.put("showWorld", - "Shows the world from the menu, if previously hidden"); - - usages.put("addJoiningCommand", - "Adds a command that should be issued when a player joins the world"); - usages.put("listJoiningCommands", - "Lists all the commands that are sent when a player joins a world."); - usages.put("removeJoiningCommand", - "Removes a command that issued when a player joins that world"); - - usages.put("setWorldSelector", - "Sets the word selector to be the item in the sender's hand"); + usages.put("showWorld", "Shows the world from the menu, if previously hidden"); + + usages.put("addJoiningCommand", "Adds a command that should be issued when a player joins the world"); + usages.put("listJoiningCommands", "Lists all the commands that are sent when a player joins a world."); + usages.put("removeJoiningCommand", "Removes a command that issued when a player joins that world"); + + usages.put("setWorldSelector", "Sets the word selector to be the item in the sender's hand"); usages.put("removeWorldSelector", "removes word selector"); - - - usages.put("setDefaultWeather", - "Changes the default weather to either No-rain, always-raining, or default"); + + usages.put("setDefaultWeather", "Changes the default weather to either No-rain, always-raining, or default"); usages.put("setGamemode", "Sets the description for a world"); usages.put("changeSpawn", "Changes the spawn location for a world"); usages.put("version", "Gets the version of the plugin"); @@ -1360,20 +1200,15 @@ public void addUsages() { usages.put("Bungee", "Toggles if this server has bungee enabled"); usages.put("listServer", "Lists all the registered servers"); usages.put("removeServer", "Removes a server from the list"); - usages.put("setvoidlooping", - "Enables or disables teleporting players to spawn if they are in the void"); - usages.put("setdisablehealthandhunger", - "Enables or disables health or hunger changes for worlds"); - usages.put("setlocationsaving", - "Enables or disables location saving when a player leaves the world"); - usages.put("setcanuseportals", - "Enables or disables portals for certain worlds."); - usages.put("addDefaultItem", - "Adds the item in your hand to the list of default items."); - usages.put("removeDefaultItem", - "Adds the item in your hand to the list of default items."); - usages.put("listDefaultItems", - "Adds the item in your hand to the list of default items."); + usages.put("setvoidlooping", "Enables or disables teleporting players to spawn if they are in the void"); + usages.put("setdisablehealthandhunger", "Enables or disables health or hunger changes for worlds"); + usages.put("setlocationsaving", "Enables or disables location saving when a player leaves the world"); + usages.put("setcanuseportals", "Enables or disables portals for certain worlds."); + usages.put("addDefaultItem", "Adds the item in your hand to the list of default items."); + usages.put("removeDefaultItem", "Adds the item in your hand to the list of default items."); + usages.put("listDefaultItems", "Adds the item in your hand to the list of default items."); + usages.put("addDecor", "Adds a decor item to the hub menu"); + usages.put("removeDecor", "Removes a decor item."); } } diff --git a/src/me/zombie_striker/lobbyapi/LobbyDecor.java b/src/me/zombie_striker/lobbyapi/LobbyDecor.java new file mode 100644 index 0000000..50de43e --- /dev/null +++ b/src/me/zombie_striker/lobbyapi/LobbyDecor.java @@ -0,0 +1,73 @@ +package me.zombie_striker.lobbyapi; + +import java.util.List; + +import org.bukkit.Material; + +public class LobbyDecor { + private int ID; + + private int amount=1; + private short color; + private Material material = Material.WOOL; + private short data = 0; + + private String displayname; + private List lore; + + private String name; + + public LobbyDecor(int slot, String name, String displayname) { + this.ID = slot; + this.displayname = displayname; + this.name = name; + } + + public short getData() { + return data; + } + public void setData(short d) { + this.data = d; + } + + public int getSlot() { + return ID; + } + + public int getAmount() { + return amount; + } + + public void setAmount(int amount) { + this.amount = amount; + } + + public Material getMaterial() { + return material; + } + + public void setMaterial(Material material) { + this.material = material; + } + + public String getDisplayname() { + return displayname; + } + + public void setDisplayname(String displayname) { + this.displayname = displayname; + } + + public List getLore() { + return lore; + } + + public void setLore(List lore) { + this.lore = lore; + } + + public String getSaveName() { + return name; + } + +} diff --git a/src/me/zombie_striker/lobbyapi/Main.java b/src/me/zombie_striker/lobbyapi/Main.java index 8addfdb..1eecc96 100644 --- a/src/me/zombie_striker/lobbyapi/Main.java +++ b/src/me/zombie_striker/lobbyapi/Main.java @@ -48,6 +48,7 @@ public class Main extends JavaPlugin implements Listener { private HashMap lastWorld = new HashMap(); Set worlds = new HashSet(); Set bungeeServers = new HashSet(); + Set decor = new HashSet(); Random random = ThreadLocalRandom.current(); int inventorySize = 9; @@ -55,10 +56,12 @@ public class Main extends JavaPlugin implements Listener { @SuppressWarnings("unused") private LobbyAPI la = new LobbyAPI(this); + private boolean enablePWI = true; + private ItemStack worldSelector = null; - private static String prefix = ChatColor.GOLD + "[" + ChatColor.WHITE - + "LobbyAPI" + ChatColor.GOLD + "]" + ChatColor.WHITE; + private static String prefix = ChatColor.GOLD + "[" + ChatColor.WHITE + "LobbyAPI" + ChatColor.GOLD + "]" + + ChatColor.WHITE; int enchID = 1; @EventHandler @@ -66,66 +69,64 @@ public void event(WeatherChangeEvent e) { LobbyWorld lw = LobbyAPI.getLobbyWorld(e.getWorld()); if (lw == null) return; - if (lw.getWeatherState() != WeatherState.NORMAL) + if (lw.getWeatherState() != WeatherState.NORMAL) if ((e.toWeatherState() == (lw.getWeatherState() == WeatherState.NO_RAIN)) || (e.toWeatherState() != (lw.getWeatherState() == WeatherState.ALWAYS_RAIN))) e.setCancelled(true); - + } @EventHandler public void onHungerChange(FoodLevelChangeEvent e) { if (LobbyAPI.getLobbyWorld(e.getEntity().getWorld()) != null - && LobbyAPI.getLobbyWorld(e.getEntity().getWorld()) - .hasDisabledHungerAndHealth()) + && LobbyAPI.getLobbyWorld(e.getEntity().getWorld()).hasDisabledHungerAndHealth()) e.setCancelled(true); } @EventHandler public void onDamage(EntityDamageEvent e) { if (e.getEntity() instanceof Player) - if (LobbyAPI.getLobbyWorld(e.getEntity().getWorld()) - .hasDisabledHungerAndHealth()) + if (LobbyAPI.getLobbyWorld(e.getEntity().getWorld()).hasDisabledHungerAndHealth()) e.setCancelled(true); } public void onEnable() { - if(!getDataFolder().exists()&&!new File(getDataFolder(),"config.yml").exists()){ + if (!getDataFolder().exists() && !new File(getDataFolder(), "config.yml").exists()) { getConfig().set("disallowHubCommandNoPerm", true); saveConfig(); } - ConfigHandler.setConfig(getConfig(), new File(getDataFolder(), - "config.yml")); + ConfigHandler.setConfig(getConfig(), new File(getDataFolder(), "config.yml")); // Download the API dependancy if (Bukkit.getPluginManager().getPlugin("PluginConstructorAPI") == null) { - // new DependencyDownloader(this, 276723); - me.zombie_striker.lobbyapi.utils.GithubDependDownloader.autoUpdate(this, new File(getDataFolder().getParentFile(),"PluginConstructorAPI.jar"), "ZombieStriker", "PluginConstructorAPI", "PluginConstructorAPI.jar"); + // new DependencyDownloader(this, 276723); + me.zombie_striker.lobbyapi.utils.GithubDependDownloader.autoUpdate(this, + new File(getDataFolder().getParentFile(), "PluginConstructorAPI.jar"), "ZombieStriker", + "PluginConstructorAPI", "PluginConstructorAPI.jar"); } if (ConfigHandler.getCustomWorldKeys() != null) - for (String w : ConfigHandler.getCustomWorldKeys()) - Bukkit.createWorld(new WorldCreator(w).seed(ConfigHandler - .getCustomWorldInt(w, - ConfigKeys.CustomAddedWorlds_Seed.s))); - - - if (ConfigHandler.containsLobbyAPIVariable(ConfigKeys.WorldSelector.s)){ - - setWorldSelector(ConfigHandler - .getLobbyAPIVariableItemstack(ConfigKeys.WorldSelector.s)); + for (String w : ConfigHandler.getCustomWorldKeys()) + Bukkit.createWorld(new WorldCreator(w) + .seed(ConfigHandler.getCustomWorldInt(w, ConfigKeys.CustomAddedWorlds_Seed.s))); + + if (ConfigHandler.containsLobbyAPIVariable(ConfigKeys.WorldSelector.s)) { + + setWorldSelector(ConfigHandler.getLobbyAPIVariableItemstack(ConfigKeys.WorldSelector.s)); + } + + if (!ConfigHandler.containsLobbyAPIVariable(ConfigKeys.ENABLE_PER_WORLD_INVENTORIES.s)) { + ConfigHandler.setLobbyAPIVariable(ConfigKeys.ENABLE_PER_WORLD_INVENTORIES.s, true); + enablePWI = ConfigHandler.getLobbyAPIVariableBoolean(ConfigKeys.ENABLE_PER_WORLD_INVENTORIES.s); } if (Bukkit.getPluginManager().getPlugin("Multiverse-Inventories") != null) { - Bukkit.getPluginManager().disablePlugin( - Bukkit.getPluginManager().getPlugin( - "Multiverse-Inventories")); + Bukkit.getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("Multiverse-Inventories")); Bukkit.broadcastMessage(prefix + " LobbyAPI is incompatible with Multiverse-Inventories. Remove Multiverse-Inventories, as LobbyAPI should handle multiple inventories"); } if (Bukkit.getPluginManager().getPlugin("PerWorldInventory") != null) { - Bukkit.getPluginManager().disablePlugin( - Bukkit.getPluginManager().getPlugin("PerWorldInventory")); + Bukkit.getPluginManager().disablePlugin(Bukkit.getPluginManager().getPlugin("PerWorldInventory")); Bukkit.broadcastMessage(prefix + " LobbyAPI is incompatible with PerWorldInventory. Remove PerWorldInventory, as LobbyAPI should handle multiple inventories"); } @@ -155,24 +156,16 @@ public void run() { // Time Check new BukkitRunnable() { public void run() { - for (LobbyWorld wo : worlds) - if (wo != null && wo.hasStaticTime()) - getServer().getWorld(wo.getWorldName()).setTime( - wo.getStaticTime()); + for (LobbyWorld wo : worlds) + if (wo != null && wo.hasStaticTime()) + getServer().getWorld(wo.getWorldName()).setTime(wo.getStaticTime()); } }.runTaskTimer(this, 0, 10 * 20L); - if (getConfig() != null && getConfig().contains("hasBungee") - && getConfig().getBoolean("hasBungee")) { - getServer().getMessenger().registerOutgoingPluginChannel(this, - "BungeeCord"); - getServer().getConsoleSender() - .sendMessage( - prefix + ChatColor.GREEN - + "Bungee For LobbyAPI is enabled"); + if (getConfig() != null && getConfig().contains("hasBungee") && getConfig().getBoolean("hasBungee")) { + getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); + getServer().getConsoleSender().sendMessage(prefix + ChatColor.GREEN + "Bungee For LobbyAPI is enabled"); } else { - getServer().getConsoleSender().sendMessage( - prefix + ChatColor.DARK_RED - + "Bungee For LobbyAPI is disabled"); + getServer().getConsoleSender().sendMessage(prefix + ChatColor.DARK_RED + "Bungee For LobbyAPI is disabled"); } try { enchID = PluginConstructorAPI.registerGlow(); @@ -180,6 +173,7 @@ && getConfig().getBoolean("hasBungee")) { } loadLocalWorlds(); loadLocalServers(); + loadDecor(); if (!getConfig().contains("auto-update")) { getConfig().set("auto-update", true); @@ -190,8 +184,8 @@ && getConfig().getBoolean("hasBungee")) { saveConfig(); } - //@SuppressWarnings("unused") - //final Updater updater = new Updater(this, 91206, true); + // @SuppressWarnings("unused") + // final Updater updater = new Updater(this, 91206, true); GithubUpdater.autoUpdate(this, "ZombieStriker", "LobbyAPI", "LobbyAPI"); Metrics met = new Metrics(this); @@ -214,16 +208,15 @@ public String getValue() { } }); if (!getConfig().contains("Version") - || !getConfig().getString("Version").equals( - this.getDescription().getVersion())) { + || !getConfig().getString("Version").equals(this.getDescription().getVersion())) { new UpdateAnouncer(this); getConfig().set("Version", this.getDescription().getVersion()); saveConfig(); } /* - * new BukkitRunnable() { public void run() { // TODO: Works well. Make - * changes for the updaters of // PixelPrinter and Music later. if + * new BukkitRunnable() { public void run() { // TODO: Works well. Make changes + * for the updaters of // PixelPrinter and Music later. if * (updater.updaterActive) updater.download(false); } * }.runTaskTimerAsynchronously(this, 20 * 60, (long) (20 * 60 * 5.5)); */ @@ -239,8 +232,7 @@ public void onDisable() { } for (LobbyWorld lw : worlds) if (lw.shouldWorldShouldSavePlayerLocation()) - ConfigHandler.setWorldVariable(lw, ConfigKeys.SavingLocation.s, - lw.getLastLocation()); + ConfigHandler.setWorldVariable(lw, ConfigKeys.SavingLocation.s, lw.getLastLocation()); } void setInventorySize(boolean isOp) { @@ -277,11 +269,8 @@ public void onClicky(PlayerInteractEvent e) { && e.getPlayer().getItemInHand().isSimilar(getWorldSelector())) Bukkit.dispatchCommand(e.getPlayer(), "lobby"); - if (e.getClickedBlock() != null - && e.getClickedBlock().getType() == Material.ENDER_CHEST) { - if (LobbyAPI - .getLobbyWorld(e.getClickedBlock().getWorld().getName()) - .hasEnderChest()) { + if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.ENDER_CHEST) { + if (LobbyAPI.getLobbyWorld(e.getClickedBlock().getWorld().getName()).hasEnderChest()) { e.getPlayer().closeInventory(); e.setCancelled(true); } @@ -293,8 +282,7 @@ private void onPlayerLeave(PlayerQuitEvent event) { LobbyWorld lw = LobbyAPI.getLobbyWorld(event.getPlayer().getWorld()); if (lw != null) { if (lw.shouldWorldShouldSavePlayerLocation()) - lw.setLastLocation(event.getPlayer(), event.getPlayer() - .getLocation()); + lw.setLastLocation(event.getPlayer(), event.getPlayer().getLocation()); saveInventory(event.getPlayer(), event.getPlayer().getWorld()); } } @@ -309,23 +297,19 @@ private void onDeath(PlayerDeathEvent event) { @EventHandler private void onPlayerDeath(PlayerRespawnEvent event) { - LobbyWorld lb = LobbyAPI.getLobbyWorld(event.getPlayer().getWorld() - .getName()); + LobbyWorld lb = LobbyAPI.getLobbyWorld(event.getPlayer().getWorld().getName()); - if (!event.getPlayer().getWorld().getGameRuleValue("keepInventory") - .equalsIgnoreCase("true")) + if (!event.getPlayer().getWorld().getGameRuleValue("keepInventory").equalsIgnoreCase("true")) clearInventory(event.getPlayer()); saveInventory(event.getPlayer(), event.getPlayer().getWorld()); if (event.getPlayer().getBedSpawnLocation() != null - && event.getPlayer().getBedSpawnLocation().getWorld() - .equals(lb.getMainWorld())) + && event.getPlayer().getBedSpawnLocation().getWorld().equals(lb.getMainWorld())) return; // Do not interfere if the player has a bed in this world. if (lb.getRespawnWorld() != null) { - event.setRespawnLocation(LobbyAPI.getLobbyWorld( - lb.getRespawnWorld()).getSpawn()); + event.setRespawnLocation(LobbyAPI.getLobbyWorld(lb.getRespawnWorld()).getSpawn()); } else if (LobbyWorld.getMainLobby() == null) { event.setRespawnLocation(lb.getSpawn()); } else if (LobbyWorld.getMainLobby() != null) { @@ -347,26 +331,22 @@ private void onPlayeJoin(final PlayerJoinEvent event) { goingTo = LobbyWorld.getMainLobby().getMainWorld(); new BukkitRunnable() { public void run() { - if (event.getPlayer() != null - && LobbyWorld.getMainLobby() != null + if (event.getPlayer() != null && LobbyWorld.getMainLobby() != null && LobbyWorld.getMainLobby().getSpawn() != null) { - event.getPlayer().teleport( - LobbyWorld.getMainLobby().getSpawn()); + event.getPlayer().teleport(LobbyWorld.getMainLobby().getSpawn()); cancel(); } } }.runTaskTimer(this, 0, 5); } for (LobbyWorld wo : worlds) - lastWorld.put(event.getPlayer().getName(), - wo.hasMainWorld() ? wo.getMainWorld() : goingTo); + lastWorld.put(event.getPlayer().getName(), wo.hasMainWorld() ? wo.getMainWorld() : goingTo); } @EventHandler(priority = EventPriority.LOWEST) private void onTeleport(PlayerPortalEvent event) { if (LobbyAPI.getLobbyWorld(event.getFrom().getWorld()) != null - && !LobbyAPI.getLobbyWorld(event.getFrom().getWorld()) - .hasPortal()) + && !LobbyAPI.getLobbyWorld(event.getFrom().getWorld()).hasPortal()) event.setCancelled(true); } @@ -374,26 +354,26 @@ private void onTeleport(PlayerPortalEvent event) { private void onWorldchange(PlayerChangedWorldEvent event) { final Player p = event.getPlayer(); saveInventory(p, event.getFrom()); + if (enablePWI) + clearInventory(p); LobbyWorld lw = LobbyAPI.getLobbyWorld(p.getWorld()); if (lw != null) if (lw.shouldWorldShouldSavePlayerLocation()) - lw.setLastLocation(event.getPlayer(), event.getPlayer() - .getLocation()); + lw.setLastLocation(event.getPlayer(), event.getPlayer().getLocation()); new BukkitRunnable() { public void run() { if (LobbyAPI.getLobbyWorld(p.getWorld()) != null) { - clearInventory(p); - loadInventory(p, p.getWorld()); + if (enablePWI) { + clearInventory(p); + loadInventory(p, p.getWorld()); + } if (LobbyAPI.getLobbyWorld(p.getWorld()).getGameMode() != null) - p.setGameMode(LobbyAPI.getLobbyWorld( - p.getWorld().getName()).getGameMode()); + p.setGameMode(LobbyAPI.getLobbyWorld(p.getWorld().getName()).getGameMode()); if (LobbyAPI.getLobbyWorld(p.getWorld()).getSpawnItems() != null - && LobbyAPI.getLobbyWorld(p.getWorld()) - .getSpawnItems().size() > 0) - for (ItemStack is : LobbyAPI - .getLobbyWorld(p.getWorld()).getSpawnItems()) + && LobbyAPI.getLobbyWorld(p.getWorld()).getSpawnItems().size() > 0) + for (ItemStack is : LobbyAPI.getLobbyWorld(p.getWorld()).getSpawnItems()) if (is != null) if (!p.getInventory().contains(is)) p.getInventory().addItem(is); @@ -411,15 +391,14 @@ public void onSelect(InventoryClickEvent event) { return; if (!event.getInventory().equals(event.getWhoClicked().getInventory())) { - if (event.getInventory().getTitle().equals("LobbyAPI")) { - if (event.getCurrentItem().hasItemMeta() - && event.getCurrentItem().getItemMeta() - .hasDisplayName()) { + if (inventory != null && event.getInventory().getTitle().equals(inventory.getTitle())) { + if (event.getCurrentItem().hasItemMeta() && event.getCurrentItem().getItemMeta().hasDisplayName()) { + event.setCancelled(true); + boolean isBungee = false; if (this.bungeeServers.size() > 0) { - for (String s : event.getCurrentItem().getItemMeta() - .getLore()) { + for (String s : event.getCurrentItem().getItemMeta().getLore()) { if (s.contains(ChatColor.RED + "" + ChatColor.GREEN)) { isBungee = true; break; @@ -429,42 +408,37 @@ public void onSelect(InventoryClickEvent event) { if (isBungee) { for (LobbyServer s : bungeeServers) { - if (event.getCurrentItem().getItemMeta() - .getDisplayName().equals(s.getName())) { - teleportBungee((Player) event.getWhoClicked(), - s.getName()); + if (s.getSlot() == event.getSlot()) { + // if + // (event.getCurrentItem().getItemMeta().getDisplayName().equals(s.getName())) { + teleportBungee((Player) event.getWhoClicked(), s.getName()); + event.getWhoClicked().closeInventory(); break; } - event.setCancelled(true); - event.getWhoClicked().closeInventory(); } } else for (LobbyWorld wo : worlds) { if (wo == null) continue; - if (wo.getDisplayName() == null) { - Bukkit.getConsoleSender().sendMessage( - "This world has no name :" + wo); - event.getWhoClicked().sendMessage( - "This world has no name :" + wo); - continue; - } - if (event.getCurrentItem().getItemMeta() - .getDisplayName().equals(wo.getDisplayName())) { - if (event.getWhoClicked().hasPermission("lobbyapi.bypassworldlimits")||!wo.isPrivate() - || (wo.isPrivate() && getServer() - .getWorld(wo.getWorldName()) - .getPlayers().size() < wo - .getMaxPlayers())) { + /* + * if (wo.getDisplayName() == null) { + * Bukkit.getConsoleSender().sendMessage("This world has no name :" + wo); + * event.getWhoClicked().sendMessage("This world has no name :" + wo); continue; + * } + */ + if (wo.getSlot() == event.getSlot()) { + // if + // (event.getCurrentItem().getItemMeta().getDisplayName().equals(wo.getDisplayName())) + // { + if (event.getWhoClicked().hasPermission("lobbyapi.bypassworldlimits") || !wo.isPrivate() + || (wo.isPrivate() && getServer().getWorld(wo.getWorldName()).getPlayers() + .size() < wo.getMaxPlayers())) { final PlayerSelectWorldEvent e = new PlayerSelectWorldEvent( (Player) event.getWhoClicked(), wo); if (wo.shouldWorldShouldSavePlayerLocation() - && wo.getPlayersLastLocation(e - .getPlayer()) != null) - e.setDestination(wo - .getPlayersLastLocation(e - .getPlayer())); + && wo.getPlayersLastLocation(e.getPlayer()) != null) + e.setDestination(wo.getPlayersLastLocation(e.getPlayer())); Bukkit.getPluginManager().callEvent(e); if (!e.getIsCanceled()) { @@ -473,114 +447,70 @@ public void onSelect(InventoryClickEvent event) { // teleported from another world, this // will not save their location. - LobbyWorld lw = LobbyAPI - .getLobbyWorld(event - .getWhoClicked() - .getWorld()); + LobbyWorld lw = LobbyAPI.getLobbyWorld(event.getWhoClicked().getWorld()); if (lw != null) { if (lw.shouldWorldShouldSavePlayerLocation()) - lw.setLastLocation( - (Player) event - .getWhoClicked(), - event.getWhoClicked() - .getLocation()); + lw.setLastLocation((Player) event.getWhoClicked(), + event.getWhoClicked().getLocation()); } - e.getPlayer().teleport( - e.getDestination()); + e.getPlayer().teleport(e.getDestination()); StringBuilder playersOnline = new StringBuilder(); Object[] oo = wo.getPlayers().toArray(); - for (int i = 0; i < (wo.getPlayers() - .size() < 6 ? wo.getPlayers() - .size() : 7); i++) + for (int i = 0; i < (wo.getPlayers().size() < 6 ? wo.getPlayers().size() + : 7); i++) playersOnline - .append(((Player) oo[i]) - .getDisplayName() - + (i != (oo.length - 1 < 7 ? oo.length - 1 - : 7) ? " ," - : (oo.length - 7 > 0 ? " ...(" - + (oo.length - 7) - + " more)" + .append(((Player) oo[i]).getDisplayName() + + (i != (oo.length - 1 < 7 ? oo.length - 1 : 7) ? " ," + : (oo.length - 7 > 0 + ? " ...(" + (oo.length - 7) + " more)" : ""))); try { - Method method = e - .getPlayer() - .getClass() - .getMethod("sendTitle", - String.class, - String.class); + Method method = e.getPlayer().getClass().getMethod("sendTitle", + String.class, String.class); if (method != null) { - method.invoke( - e.getPlayer(), - ChatColor.GOLD - + "Teleporting to " - + (wo.getWorldName()), - ChatColor.GRAY - + "Players: " - + playersOnline - .toString()); + method.invoke(e.getPlayer(), + ChatColor.GOLD + "Teleporting to " + (wo.getWorldName()), + ChatColor.GRAY + "Players: " + playersOnline.toString()); } else { - e.getPlayer() - .sendMessage( - ChatColor.GOLD - + "Teleporting to " - + (wo.getWorldName())); - e.getPlayer() - .sendMessage( - ChatColor.GRAY - + "Players: " - + playersOnline - .toString()); + e.getPlayer().sendMessage( + ChatColor.GOLD + "Teleporting to " + (wo.getWorldName())); + e.getPlayer().sendMessage( + ChatColor.GRAY + "Players: " + playersOnline.toString()); } } catch (Exception e2) { - e.getPlayer() - .sendMessage( - ChatColor.GOLD - + "Teleporting to " - + (wo.getWorldName())); - e.getPlayer() - .sendMessage( - ChatColor.GRAY - + "Players: " - + playersOnline - .toString()); + e.getPlayer().sendMessage( + ChatColor.GOLD + "Teleporting to " + (wo.getWorldName())); + e.getPlayer().sendMessage( + ChatColor.GRAY + "Players: " + playersOnline.toString()); } event.setCancelled(true); event.getWhoClicked().closeInventory(); - Bukkit.getScheduler() - .scheduleSyncDelayedTask(this, - new Runnable() { - public void run() { - PlayerChangeWorldEvent e2 = new PlayerChangeWorldEvent( - e.getPlayer()); - Bukkit.getPluginManager() - .callEvent( - e2); - } - }, 2); + Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { + public void run() { + PlayerChangeWorldEvent e2 = new PlayerChangeWorldEvent(e.getPlayer()); + Bukkit.getPluginManager().callEvent(e2); + } + }, 2); for (String s : wo.getCommandsOnJoin()) { - s = s.replaceAll("%player%", e - .getPlayer().getName()); - Bukkit.dispatchCommand( - e.getPlayer(), s); + s = s.replaceAll("%player%", e.getPlayer().getName()); + Bukkit.dispatchCommand(e.getPlayer(), s); } } else { return; } } else { event.getWhoClicked() - .sendMessage( - ChatColor.RED - + "This world is full, please try again later."); + .sendMessage(ChatColor.RED + "This world is full, please try again later."); } + event.getWhoClicked().closeInventory(); break; } event.setCancelled(true); - event.getWhoClicked().closeInventory(); } } } @@ -611,23 +541,13 @@ private void clearInventory(Player p) { private void loadInventory(Player p, World w) { if (w == null) { - getServer() - .getConsoleSender() - .sendMessage( - prefix - + " The world \"" - + w - + "\" is null! Inventories for this world will not be saved."); + getServer().getConsoleSender().sendMessage( + prefix + " The world \"" + w + "\" is null! Inventories for this world will not be saved."); return; } if (LobbyAPI.getLobbyWorld(w) == null) { - getServer() - .getConsoleSender() - .sendMessage( - prefix - + " You have no registered world called \"" - + w.getName() - + "\"! Inventories for this world will not be loaded."); + getServer().getConsoleSender().sendMessage(prefix + " You have no registered world called \"" + w.getName() + + "\"! Inventories for this world will not be loaded."); return; } if (p.getInventory() == null) { @@ -637,289 +557,207 @@ private void loadInventory(Player p, World w) { String s = LobbyAPI.getLobbyWorld(w).getSaveName(); for (int kl = 0; kl < 36; kl++) if ((ItemStack) getConfig().get(p.getName() + "." + s + ".i." + kl) != null) - p.getInventory().setItem( - kl, - (ItemStack) getConfig().get( - p.getName() + "." + s + ".i." + kl)); - p.getInventory().setBoots( - (ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 1)); - p.getInventory().setLeggings( - (ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 2)); - p.getInventory().setChestplate( - (ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 3)); - p.getInventory().setHelmet( - (ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 4)); + p.getInventory().setItem(kl, (ItemStack) getConfig().get(p.getName() + "." + s + ".i." + kl)); + p.getInventory().setBoots((ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 1)); + p.getInventory().setLeggings((ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 2)); + p.getInventory().setChestplate((ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 3)); + p.getInventory().setHelmet((ItemStack) getConfig().get(p.getName() + "." + s + ".a." + 4)); + + try { + p.getInventory().setItemInOffHand(getConfig().getItemStack(p.getName() + "." + s + ".i.offhand")); + } catch (Error | Exception e2) { + } if (getConfig().get(p.getName() + "." + s + ".xpl") != null) p.setLevel((int) getConfig().get(p.getName() + "." + s + ".xpl")); if (getConfig().get(p.getName() + "." + s + ".hunger") != null) - p.setFoodLevel((int) getConfig().get( - p.getName() + "." + s + ".hunger")); + p.setFoodLevel((int) getConfig().get(p.getName() + "." + s + ".hunger")); } private void saveInventory(Player p, World w) { if (w == null) { - getServer() - .getConsoleSender() - .sendMessage( - prefix - + " The world \"" - + w - + "\" is null! Inventories for this world will not be saved."); + getServer().getConsoleSender().sendMessage( + prefix + " The world \"" + w + "\" is null! Inventories for this world will not be saved."); return; } if (LobbyAPI.getLobbyWorld(w) == null) { - getServer() - .getConsoleSender() - .sendMessage( - prefix - + " You have no registered world called \"" - + w.getName() - + "\"! Inventories for this world will not be saved."); + getServer().getConsoleSender().sendMessage(prefix + " You have no registered world called \"" + w.getName() + + "\"! Inventories for this world will not be saved."); return; } String world2 = LobbyAPI.getLobbyWorld(w.getName()).getSaveName(); getConfig().set(p.getName() + "." + world2 + ".xp", p.getExp()); getConfig().set(p.getName() + "." + world2 + ".xpl", p.getLevel()); getConfig().set(p.getName() + "." + world2 + ".health", p.getHealth()); - getConfig().set(p.getName() + "." + world2 + ".hunger", - p.getFoodLevel()); + getConfig().set(p.getName() + "." + world2 + ".hunger", p.getFoodLevel()); ItemStack[] is = p.getInventory().getContents(); - for (int kl = 0; kl < 36; kl++) - getConfig().set(p.getName() + "." + world2 + ".i." + kl, is[kl]); - - getConfig().set(p.getName() + "." + world2 + ".a." + 1, - p.getInventory().getBoots()); - getConfig().set(p.getName() + "." + world2 + ".a." + 2, - p.getInventory().getLeggings()); - getConfig().set(p.getName() + "." + world2 + ".a." + 3, - p.getInventory().getChestplate()); - getConfig().set(p.getName() + "." + world2 + ".a." + 4, - p.getInventory().getHelmet()); + getConfig().set(p.getName() + "." + world2 + ".i", null); + for (int itemIndex = 0; itemIndex < 36; itemIndex++) + getConfig().set(p.getName() + "." + world2 + ".i." + itemIndex, is[itemIndex]); + + try { + getConfig().set(p.getName() + "." + world2 + ".i.offhand", p.getInventory().getItemInOffHand()); + } catch (Error | Exception e2) { + } + + getConfig().set(p.getName() + "." + world2 + ".a." + 1, p.getInventory().getBoots()); + getConfig().set(p.getName() + "." + world2 + ".a." + 2, p.getInventory().getLeggings()); + getConfig().set(p.getName() + "." + world2 + ".a." + 3, p.getInventory().getChestplate()); + getConfig().set(p.getName() + "." + world2 + ".a." + 4, p.getInventory().getHelmet()); saveConfig(); } - public void loadLocalWorlds() { + public void loadDecor() { + for (String name : getConfig().getConfigurationSection("Decor").getKeys(false)) { + String displayname = getConfig().getString("Decor." + name + ".displayname"); + int slot = getConfig().getInt("Decor." + name + ".slot"); + List lore = getConfig().getStringList("Decor." + name + ".lore"); + Material material = Material.matchMaterial(getConfig().getString("Decor." + name + ".material")); + int data = getConfig().getInt("Decor." + name + ".durib"); + + LobbyDecor decor = new LobbyDecor(slot, name, displayname); + decor.setMaterial(material); + decor.setData(Short.parseShort("" + data)); + decor.setLore(lore); + this.decor.add(decor); + } + } - getServer().getScheduler().scheduleSyncDelayedTask(this, - new Runnable() { - @SuppressWarnings({ "deprecation", "unchecked" }) - public void run() { - if (getConfig().contains("Worlds")) { - for (String name : getConfig() - .getConfigurationSection("Worlds").getKeys( - false)) { - String s = getConfig().getString( - "Worlds." + name + ".name"); - String displayname=null; - if(getConfig().contains( - "Worlds." + name + ".displayname")) { - displayname = getConfig().getString( - "Worlds." + name + ".displayname"); - }else { - displayname = s; - getConfig().set( - "Worlds." + name + ".displayname",s); - saveConfig(); - } - if (getConfig().contains( - "Worlds." + name + ".loc")) { - Location l = (Location) getConfig().get( - "Worlds." + name + ".loc"); - if (l != null) { - getConfig().set( - "Worlds." + name + ".spawnLoc.x", - l.getX()); - getConfig().set( - "Worlds." + name + ".spawnLoc.y", - l.getY()); - getConfig().set( - "Worlds." + name + ".spawnLoc.z", - l.getZ()); - } else { - getConfig().set( - "Worlds." + name + ".spawnLoc.x", - 0); - getConfig().set( - "Worlds." + name + ".spawnLoc.y", - 90); - getConfig().set( - "Worlds." + name + ".spawnLoc.z", - 0); - Bukkit.broadcastMessage(prefix - + " SpawnLocation has been reset for world " - + s - + ". Please reset the spawnlocation by using /LobbyAPI changeSpawn."); - } - getConfig().set( - "Worlds." + name + ".spawnLoc.w", s); - /** - * Only here to make sure that the loc - * variable will **always** be removed in - * case a user updates - */ - getConfig().set("Worlds." + name + ".loc", - null); - saveConfig(); - } - double x = getConfig().getDouble( - "Worlds." + name + ".spawnLoc.x"); - double y = getConfig().getDouble( - "Worlds." + name + ".spawnLoc.y"); - double z = getConfig().getDouble( - "Worlds." + name + ".spawnLoc.z"); - WeatherState ws = WeatherState - .getWeatherStateByName(getConfig() - .getString( - "Worlds." - + name - + ".weatherstate")); - World w = Bukkit - .getWorld(getConfig().getString( - "Worlds." + name + ".spawnLoc.w")); - Location l = new Location(w, x, y, z); - if (l == null || l.getWorld() == null) - continue; - - int i = getConfig().getInt( - "Worlds." + name + ".i"); - String save = "" - + getConfig().getString( - "Worlds." + name + ".save"); - String desc = getConfig().getString( - "Worlds." + name + ".desc"); - int color = getConfig().getInt( - "Worlds." + name + ".color"); - GameMode gm = GameMode.SURVIVAL; - try { - String s4 = getConfig().getString( - "Worlds." + name + ".gamemode"); - for (GameMode g : GameMode.values()) - if (g.name().equals(s4)) - gm = g; - - } catch (Exception e) { - e.printStackTrace(); - } + public void loadLocalWorlds() { - if (LobbyAPI.getLobbyWorld(s) != null) - LobbyAPI.unregisterWorld(getServer() - .getWorld(s)); - - LobbyWorld lw = LobbyAPI - .registerWorldFromConfig(w, l, save, - desc, color, i, - GameMode.SURVIVAL); - for (String jC : getConfig().getStringList( - "Worlds." + lw.getSaveName() - + ".joincommands")) - lw.addCommand(jC); - - lw.setWeatherState(ws); - lw.setGameMode(gm); - - lw.setDisplayName(displayname); - - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.CanUsePortals.s)) - lw.setPortal(ConfigHandler - .getWorldVariableBoolean(lw, - ConfigKeys.CanUsePortals.s)); - - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.DefaultItems.s)) - lw.setSpawnItems((List) ConfigHandler - .getWorldVariableObject(lw, - ConfigKeys.DefaultItems.s)); - - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.DisableHealthAndHunger.s)) - lw.setDisableHungerAndHealth(ConfigHandler - .getWorldVariableBoolean( - lw, - ConfigKeys.DisableHealthAndHunger.s)); - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.DisableVoid.s)) - lw.setVoidDisable(ConfigHandler - .getWorldVariableBoolean(lw, - ConfigKeys.DisableVoid.s)); - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.ShouldBeSavingLocation.s)) - lw.setWorldShouldSavePlayerLocation(ConfigHandler - .getWorldVariableBoolean( - lw, - ConfigKeys.ShouldBeSavingLocation.s)); - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.SavingLocation.s)) - lw.setLastLocation((HashMap) ConfigHandler - .getWorldVariableObject(lw, - ConfigKeys.SavingLocation.s)); - - - if (ConfigHandler.containsWorldVariable(lw, - ConfigKeys.isHidden.s)) - lw.setHidden(ConfigHandler.getWorldVariableBoolean(lw, - ConfigKeys.isHidden.s)); - - if (getConfig().contains( - "Worlds." + name + ".material")) - lw.setMaterial(Material - .matchMaterial(getConfig() - .getString( - "Worlds." - + name - + ".material"))); - - Bukkit.getConsoleSender().sendMessage( - prefix + " Added world '" + s + "'"); - if (getConfig().contains( - "Worlds." + name + ".isMainLobby") - && getConfig() - .getBoolean( - "Worlds." - + name - + ".isMainLobby")) { - LobbyWorld.setMainLobby(LobbyAPI - .getLobbyWorld(getServer() - .getWorld(s))); - Bukkit.getConsoleSender() - .sendMessage( - prefix - + ChatColor.GOLD - + "'" - + s - + "' is now the main lobby."); - } + getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { + @SuppressWarnings({ "deprecation", "unchecked" }) + public void run() { + if (getConfig().contains("Worlds")) { + for (String name : getConfig().getConfigurationSection("Worlds").getKeys(false)) { + String s = getConfig().getString("Worlds." + name + ".name"); + String displayname = null; + if (getConfig().contains("Worlds." + name + ".displayname")) { + displayname = getConfig().getString("Worlds." + name + ".displayname"); + } else { + displayname = s; + getConfig().set("Worlds." + name + ".displayname", s); + saveConfig(); + } + if (getConfig().contains("Worlds." + name + ".loc")) { + Location l = (Location) getConfig().get("Worlds." + name + ".loc"); + if (l != null) { + getConfig().set("Worlds." + name + ".spawnLoc.x", l.getX()); + getConfig().set("Worlds." + name + ".spawnLoc.y", l.getY()); + getConfig().set("Worlds." + name + ".spawnLoc.z", l.getZ()); + } else { + getConfig().set("Worlds." + name + ".spawnLoc.x", 0); + getConfig().set("Worlds." + name + ".spawnLoc.y", 90); + getConfig().set("Worlds." + name + ".spawnLoc.z", 0); + Bukkit.broadcastMessage(prefix + " SpawnLocation has been reset for world " + s + + ". Please reset the spawnlocation by using /LobbyAPI changeSpawn."); } + getConfig().set("Worlds." + name + ".spawnLoc.w", s); + /** + * Only here to make sure that the loc variable will **always** be removed in + * case a user updates + */ + getConfig().set("Worlds." + name + ".loc", null); + saveConfig(); + } + double x = getConfig().getDouble("Worlds." + name + ".spawnLoc.x"); + double y = getConfig().getDouble("Worlds." + name + ".spawnLoc.y"); + double z = getConfig().getDouble("Worlds." + name + ".spawnLoc.z"); + WeatherState ws = WeatherState + .getWeatherStateByName(getConfig().getString("Worlds." + name + ".weatherstate")); + World w = Bukkit.getWorld(getConfig().getString("Worlds." + name + ".spawnLoc.w")); + Location l = new Location(w, x, y, z); + if (l == null || l.getWorld() == null) + continue; + if (getConfig().contains("Worlds." + name + ".spawnLoc.yaw")) { + float yaw = (float) getConfig().getDouble("Worlds." + name + ".spawnLoc.yaw"); + float pitch = (float) getConfig().getDouble("Worlds." + name + ".spawnLoc.pitch"); + l.setYaw(yaw); + l.setPitch(pitch); + } + + int i = getConfig().getInt("Worlds." + name + ".i"); + String save = "" + getConfig().getString("Worlds." + name + ".save"); + String desc = getConfig().getString("Worlds." + name + ".desc"); + int color = getConfig().getInt("Worlds." + name + ".color"); + GameMode gm = GameMode.SURVIVAL; + try { + String s4 = getConfig().getString("Worlds." + name + ".gamemode"); + for (GameMode g : GameMode.values()) + if (g.name().equals(s4)) + gm = g; + + } catch (Exception e) { + e.printStackTrace(); + } + + if (LobbyAPI.getLobbyWorld(s) != null) + LobbyAPI.unregisterWorld(getServer().getWorld(s)); + + LobbyWorld lw = LobbyAPI.registerWorldFromConfig(w, l, save, desc, color, i, GameMode.SURVIVAL); + for (String jC : getConfig().getStringList("Worlds." + lw.getSaveName() + ".joincommands")) + lw.addCommand(jC); + + lw.setWeatherState(ws); + lw.setGameMode(gm); + + lw.setDisplayName(displayname); + + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.CanUsePortals.s)) + lw.setPortal(ConfigHandler.getWorldVariableBoolean(lw, ConfigKeys.CanUsePortals.s)); + + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.DefaultItems.s)) + lw.setSpawnItems((List) ConfigHandler.getWorldVariableObject(lw, + ConfigKeys.DefaultItems.s)); + + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.DisableHealthAndHunger.s)) + lw.setDisableHungerAndHealth( + ConfigHandler.getWorldVariableBoolean(lw, ConfigKeys.DisableHealthAndHunger.s)); + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.DisableVoid.s)) + lw.setVoidDisable(ConfigHandler.getWorldVariableBoolean(lw, ConfigKeys.DisableVoid.s)); + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.ShouldBeSavingLocation.s)) + lw.setWorldShouldSavePlayerLocation( + ConfigHandler.getWorldVariableBoolean(lw, ConfigKeys.ShouldBeSavingLocation.s)); + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.SavingLocation.s)) + lw.setLastLocation((HashMap) ConfigHandler.getWorldVariableObject(lw, + ConfigKeys.SavingLocation.s)); + + if (ConfigHandler.containsWorldVariable(lw, ConfigKeys.isHidden.s)) + lw.setHidden(ConfigHandler.getWorldVariableBoolean(lw, ConfigKeys.isHidden.s)); + + if (getConfig().contains("Worlds." + name + ".material")) + lw.setMaterial( + Material.matchMaterial(getConfig().getString("Worlds." + name + ".material"))); + + Bukkit.getConsoleSender().sendMessage(prefix + " Added world '" + s + "'"); + if (getConfig().contains("Worlds." + name + ".isMainLobby") + && getConfig().getBoolean("Worlds." + name + ".isMainLobby")) { + LobbyWorld.setMainLobby(LobbyAPI.getLobbyWorld(getServer().getWorld(s))); + Bukkit.getConsoleSender() + .sendMessage(prefix + ChatColor.GOLD + "'" + s + "' is now the main lobby."); } } - }, 2L); + } + } + }, 2L); } public void loadLocalServers() { - getServer().getScheduler().scheduleSyncDelayedTask(this, - new Runnable() { - @SuppressWarnings("deprecation") - public void run() { - if (getConfig().contains("Server")) { - for (String fi : getConfig() - .getConfigurationSection("Server").getKeys( - false)) { - String s = getConfig().getString( - "Server." + fi + ".name"); - int i = getConfig().getInt( - "Server." + fi + ".i"); - int color = getConfig().getInt( - "Server." + fi + ".color"); - LobbyAPI.unregisterBungeeServer(s); - LobbyAPI.registerBungeeServerFromConfig(s, i, - color); - Bukkit.getConsoleSender().sendMessage( - prefix + " added server '" + s + "'"); - } - } + getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() { + @SuppressWarnings("deprecation") + public void run() { + if (getConfig().contains("Server")) { + for (String fi : getConfig().getConfigurationSection("Server").getKeys(false)) { + String s = getConfig().getString("Server." + fi + ".name"); + int i = getConfig().getInt("Server." + fi + ".i"); + int color = getConfig().getInt("Server." + fi + ".color"); + LobbyAPI.unregisterBungeeServer(s); + LobbyAPI.registerBungeeServerFromConfig(s, i, color); + Bukkit.getConsoleSender().sendMessage(prefix + " added server '" + s + "'"); } - }, 2L); + } + } + }, 2L); } public ItemStack getWorldSelector() { diff --git a/src/me/zombie_striker/lobbyapi/utils/ConfigHandler.java b/src/me/zombie_striker/lobbyapi/utils/ConfigHandler.java index b2af9cb..2d7d12d 100644 --- a/src/me/zombie_striker/lobbyapi/utils/ConfigHandler.java +++ b/src/me/zombie_striker/lobbyapi/utils/ConfigHandler.java @@ -26,7 +26,7 @@ public enum ConfigKeys { "disablehealthandhunger"), DisableVoid("disablevoid"),isHidden("hidden"), Material( "material"), Weather("weatherstate"), Color("color"), JoiningCommands( "joincommands"), GameMode("gamemode"), SavingLocation( - "playerworldsavinglocations"), ShouldBeSavingLocation("shouldsavelocation"),DefaultItems("defaultitems"),CustomAddedWorlds("CustomWorlds"),CustomAddedWorlds_Seed("Seeds"); + "playerworldsavinglocations"), ShouldBeSavingLocation("shouldsavelocation"),DefaultItems("defaultitems"),CustomAddedWorlds("CustomWorlds"),CustomAddedWorlds_Seed("Seeds"), ENABLE_PER_WORLD_INVENTORIES("Enable_Per_World_Inventories"); public String s; @@ -70,6 +70,9 @@ public static ItemStack getLobbyAPIVariableItemstack(String key) { public static String getLobbyAPIVariableString(String key) { return config.getString("Settings." + key); } + public static boolean getLobbyAPIVariableBoolean(String key) { + return config.getBoolean("Settings." + key); + } public static boolean containsLobbyAPIVariable(String key) { return config.contains("Settings." + key); diff --git a/src/me/zombie_striker/lobbyapi/utils/GithubUpdater.java b/src/me/zombie_striker/lobbyapi/utils/GithubUpdater.java index cb75e25..63f7b54 100644 --- a/src/me/zombie_striker/lobbyapi/utils/GithubUpdater.java +++ b/src/me/zombie_striker/lobbyapi/utils/GithubUpdater.java @@ -107,14 +107,12 @@ public void run() { } } catch (IOException e) { - e.printStackTrace(); } } }.runTaskLaterAsynchronously(main, 0); return true; } } catch (IOException e) { - e.printStackTrace(); } return false; }