diff --git a/pom.xml b/pom.xml
index a301e533..64f9a389 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,12 +68,28 @@
system
${basedir}/libs/MythicMobs-4.5.5.jar
-
+
com.sk89q
worldguard
6.1
+
+
+ com.sk89q.worldguard
+ worldguard-legacy
+ 7.0.0-SNAPSHOT
+
+
+ bukkit
+ org.bukkit
+
+
+ bukkit-classloader-check
+ org.sk89q.bukkit
+
+
+
com.sk89q.worldedit
diff --git a/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java b/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java
index 299a7fca..031d1646 100644
--- a/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java
+++ b/src/main/java/com/gamingmesh/jobs/Placeholders/Placeholder.java
@@ -42,6 +42,7 @@ public class Placeholder {
user_joinedjobcount,
user_points,
user_total_points,
+ user_archived_jobs,
user_boost_$1_$2("jname/number", "money/exp/points"),
user_isin_$1("jname/number"),
user_canjoin_$1("jname/number"),
@@ -74,9 +75,6 @@ public class Placeholder {
private ChatFilterRule rule = null;
private boolean hidden = false;
- JobsPlaceHolders() {
- }
-
JobsPlaceHolders(String... vars) {
Matcher matcher = numericalRule.getMatcher(this.toString());
if (matcher != null) {
@@ -383,33 +381,35 @@ public class Placeholder {
if (user != null) {
switch (placeHolder) {
case user_id:
- return String.valueOf(user.getUserId());
+ return Integer.toString(user.getUserId());
case user_bstandcount:
- return String.valueOf(user.getBrewingStandCount());
+ return Integer.toString(user.getBrewingStandCount());
case user_maxbstandcount:
- return String.valueOf(user.getMaxBrewingStandsAllowed());
+ return Integer.toString(user.getMaxBrewingStandsAllowed());
case user_furncount:
- return String.valueOf(user.getFurnaceCount());
+ return Integer.toString(user.getFurnaceCount());
case user_maxfurncount:
- return String.valueOf(user.getMaxFurnacesAllowed());
+ return Integer.toString(user.getMaxFurnacesAllowed());
case user_doneq:
- return String.valueOf(user.getDoneQuests());
+ return Integer.toString(user.getDoneQuests());
case user_seen:
return TimeManage.to24hourShort(System.currentTimeMillis() - user.getSeen());
case user_totallevels:
- return String.valueOf(user.getTotalLevels());
+ return Integer.toString(user.getTotalLevels());
case user_points:
PlayerPoints pointInfo = Jobs.getPlayerManager().getPointsData().getPlayerPointsInfo(user.getPlayerUUID());
- return String.valueOf(pointInfo.getCurrentPoints());
+ return Double.toString(pointInfo.getCurrentPoints());
case user_total_points:
pointInfo = Jobs.getPlayerManager().getPointsData().getPlayerPointsInfo(user.getPlayerUUID());
- return String.valueOf(pointInfo.getTotalPoints());
+ return Double.toString(pointInfo.getTotalPoints());
case user_issaved:
return convert(user.isSaved());
case user_displayhonorific:
- return String.valueOf(user.getDisplayHonorific());
+ return user.getDisplayHonorific();
case user_joinedjobcount:
- return String.valueOf(user.getJobProgression().size());
+ return Integer.toString(user.getJobProgression().size());
+ case user_archived_jobs:
+ return Integer.toString(user.getArchivedJobs().getArchivedJobs().size());
default:
break;
}
@@ -422,21 +422,21 @@ public class Placeholder {
switch (placeHolder) {
case limit_$1:
CurrencyType t = CurrencyType.getByName(vals.get(0));
- return String.valueOf(user.getLimit(t));
+ return Integer.toString(user.getLimit(t));
case plimit_$1:
t = CurrencyType.getByName(vals.get(0));
- return String.valueOf(user.getPaymentLimit().GetAmount(t));
+ return Double.toString(user.getPaymentLimit().GetAmount(t));
case plimit_tleft_$1:
t = CurrencyType.getByName(vals.get(0));
return TimeManage.to24hourShort(user.getPaymentLimit().GetLeftTime(t));
case user_jlevel_$1:
- return j == null ? "" : String.valueOf(j.getLevel());
+ return j == null ? "" : Integer.toString(j.getLevel());
case user_jexp_$1:
- return j == null ? "" : String.valueOf(j.getExperience());
+ return j == null ? "" : Double.toString(j.getExperience());
case user_jmaxexp_$1:
- return j == null ? "" : String.valueOf(j.getMaxExperience());
+ return j == null ? "" : Integer.toString(j.getMaxExperience());
case user_jmaxlvl_$1:
- return j == null ? "" : String.valueOf(j.getJob().getMaxLevel(user));
+ return j == null ? "" : Integer.toString(j.getJob().getMaxLevel(user));
case user_boost_$1_$2:
if (vals.size() < 2)
return "";
@@ -451,7 +451,7 @@ public class Placeholder {
case maxjobs:
Double max = Jobs.getPermissionManager().getMaxPermission(user, "jobs.max");
max = max == null ? Jobs.getGCManager().getMaxJobs() : max;
- return String.valueOf(max);
+ return Double.toString(max);
default:
break;
}
@@ -517,17 +517,17 @@ public class Placeholder {
case description_$1:
return jo.getDescription();
case maxdailyq_$1:
- return String.valueOf(jo.getMaxDailyQuests());
+ return Integer.toString(jo.getMaxDailyQuests());
case maxlvl_$1:
- return String.valueOf(jo.getMaxLevel());
+ return Integer.toString(jo.getMaxLevel());
case maxviplvl_$1:
- return String.valueOf(jo.getVipMaxLevel());
+ return Integer.toString(jo.getVipMaxLevel());
case bonus_$1:
- return String.valueOf(jo.getBonus());
+ return Double.toString(jo.getBonus());
case totalplayers_$1:
- return String.valueOf(jo.getTotalPlayers());
+ return Integer.toString(jo.getTotalPlayers());
case maxslots_$1:
- return String.valueOf(jo.getMaxSlots());
+ return Integer.toString(jo.getMaxSlots());
default:
break;
}
@@ -536,13 +536,13 @@ public class Placeholder {
// Global placeholders
switch (placeHolder) {
case maxjobs:
- return String.valueOf(Jobs.getGCManager().getMaxJobs());
+ return Integer.toString(Jobs.getGCManager().getMaxJobs());
case total_workers:
int count = 0;
for (Job one : Jobs.getJobs()) {
count += one.getTotalPlayers();
}
- return String.valueOf(count);
+ return Integer.toString(count);
default:
break;
}
diff --git a/src/main/java/com/gamingmesh/jobs/WorldGuard/WorldGuardManager.java b/src/main/java/com/gamingmesh/jobs/WorldGuard/WorldGuardManager.java
index c1fea7f4..2248f16b 100644
--- a/src/main/java/com/gamingmesh/jobs/WorldGuard/WorldGuardManager.java
+++ b/src/main/java/com/gamingmesh/jobs/WorldGuard/WorldGuardManager.java
@@ -12,28 +12,46 @@ import org.bukkit.plugin.Plugin;
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.container.RestrictedArea;
+import com.sk89q.worldedit.bukkit.BukkitAdapter;
+import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
+import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
+import com.sk89q.worldguard.protection.regions.RegionContainer;
public class WorldGuardManager {
private WorldGuardPlugin wg;
+ private boolean useOld = false;
public WorldGuardManager() {
Plugin pl = Bukkit.getPluginManager().getPlugin("WorldGuard");
if (pl != null && (pl instanceof WorldGuardPlugin)) {
- wg = (WorldGuardPlugin) pl;
+ if (wg != null && wg.getDescription().getVersion().equals("6.1")) {
+ wg = (WorldGuardPlugin) pl;
+ useOld = true;
+ }
}
}
public List getArea(Location loc) {
try {
- ApplicableRegionSet regions = wg.getRegionContainer().get(loc.getWorld()).getApplicableRegions(loc);
- for (ProtectedRegion one : regions.getRegions()) {
- if (!Jobs.getRestrictedAreaManager().isExist(one.getId()))
- continue;
- return Jobs.getRestrictedAreaManager().getRestrictedAreasByName(one.getId());
+ if (useOld) {
+ ApplicableRegionSet regions = wg.getRegionContainer().get(loc.getWorld()).getApplicableRegions(loc);
+ for (ProtectedRegion one : regions.getRegions()) {
+ if (!Jobs.getRestrictedAreaManager().isExist(one.getId()))
+ continue;
+ return Jobs.getRestrictedAreaManager().getRestrictedAreasByName(one.getId());
+ }
+ } else {
+ RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
+ RegionManager regions = container.get(BukkitAdapter.adapt(loc.getWorld()));
+ for (ProtectedRegion one : regions.getRegions().values()) {
+ if (!Jobs.getRestrictedAreaManager().isExist(one.getId()))
+ continue;
+ return Jobs.getRestrictedAreaManager().getRestrictedAreasByName(one.getId());
+ }
}
} catch (Throwable e) {
}
@@ -41,20 +59,38 @@ public class WorldGuardManager {
}
public boolean inArea(Location loc, String name) {
- ApplicableRegionSet regions = wg.getRegionContainer().get(loc.getWorld()).getApplicableRegions(loc);
- for (ProtectedRegion one : regions.getRegions()) {
- if (!one.getId().equalsIgnoreCase(name))
- continue;
- if (!one.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()))
- continue;
- return true;
+ if (useOld) {
+ ApplicableRegionSet regions = wg.getRegionContainer().get(loc.getWorld()).getApplicableRegions(loc);
+ for (ProtectedRegion one : regions.getRegions()) {
+ if (!one.getId().equalsIgnoreCase(name))
+ continue;
+ if (!one.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()))
+ continue;
+ return true;
+ }
+ } else {
+ RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
+ RegionManager regions = container.get(BukkitAdapter.adapt(loc.getWorld()));
+ for (ProtectedRegion one : regions.getRegions().values()) {
+ if (!one.getId().equalsIgnoreCase(name))
+ continue;
+ if (!one.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()))
+ continue;
+ return true;
+ }
}
return false;
}
public String getNameByName(String name) {
for (World one : Bukkit.getWorlds()) {
- Map regions = wg.getRegionContainer().get(one).getRegions();
+ Map regions = null;
+ if (useOld) {
+ regions = wg.getRegionContainer().get(one).getRegions();
+ } else {
+ RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer();
+ regions = container.get(BukkitAdapter.adapt(one)).getRegions();
+ }
for (Entry oneR : regions.entrySet()) {
if (!oneR.getKey().equalsIgnoreCase(name))
continue;
diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/area.java b/src/main/java/com/gamingmesh/jobs/commands/list/area.java
index c6b12704..972e030c 100644
--- a/src/main/java/com/gamingmesh/jobs/commands/list/area.java
+++ b/src/main/java/com/gamingmesh/jobs/commands/list/area.java
@@ -26,63 +26,70 @@ public class area implements Cmd {
}
Player player = (Player) sender;
- if (args.length == 0)
- return false;
-
RestrictedAreaManager ra = Jobs.getRestrictedAreaManager();
- if (args.length == 3 && args[0].equalsIgnoreCase("add") && player.hasPermission("jobs.area.add")) {
- String name = args[1];
- double bonus = 0D;
- try {
- bonus = Double.parseDouble(args[2]);
- } catch (Throwable e) {
- return false;
- }
- Boolean wg = false;
+ if (args.length == 3) {
+ if (args[0].equalsIgnoreCase("add")) {
+ if (!Jobs.hasPermission(player, "jobs.area.add", true))
+ return true;
- if (name.startsWith("wg:")) {
- wg = true;
- name = name.substring("wg:".length(), name.length());
- }
+ String name = args[1];
+ double bonus = 0D;
+ try {
+ bonus = Double.parseDouble(args[2]);
+ } catch (Throwable e) {
+ return false;
+ }
+ boolean wg = false;
- if (ra.isExist(name)) {
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.exist"));
- return true;
- }
+ if (name.startsWith("wg:")) {
+ wg = true;
+ name = name.substring("wg:".length(), name.length());
+ }
- if (!wg && !Jobs.getSelectionManager().hasPlacedBoth(player)) {
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.select", "%tool%", CMIMaterial.get(Jobs.getGCManager().getSelectionTool()).getName()));
- return true;
- }
-
- if (wg && Jobs.getWorldGuardManager() != null) {
- name = Jobs.getWorldGuardManager().getNameByName(name);
- if (name == null) {
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.wgDontExist"));
+ if (ra.isExist(name)) {
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.exist"));
return true;
}
- }
- if (!wg)
- ra.addNew(new RestrictedArea(name, Jobs.getSelectionManager().getSelectionCuboid(player), bonus), true);
- else
- ra.addNew(new RestrictedArea(name, name, bonus), true);
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.addedNew", "%bonus%", bonus));
- return true;
- }
+ if (!wg && !Jobs.getSelectionManager().hasPlacedBoth(player)) {
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.select", "%tool%", CMIMaterial.get(Jobs.getGCManager().getSelectionTool()).getName()));
+ return true;
+ }
- if (args.length == 2 && args[0].equalsIgnoreCase("remove") && player.hasPermission("jobs.area.remove")) {
- String name = args[1];
+ if (wg && Jobs.getWorldGuardManager() != null) {
+ name = Jobs.getWorldGuardManager().getNameByName(name);
+ if (name == null) {
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.wgDontExist"));
+ return true;
+ }
+ }
- if (!ra.isExist(name)) {
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.dontExist"));
+ if (!wg)
+ ra.addNew(new RestrictedArea(name, Jobs.getSelectionManager().getSelectionCuboid(player), bonus), true);
+ else
+ ra.addNew(new RestrictedArea(name, name, bonus), true);
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.addedNew", "%bonus%", bonus));
return true;
}
+ }
- ra.remove(name, true);
- sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.removed", "%name%", name));
- return true;
+ if (args.length == 2) {
+ if (args[0].equalsIgnoreCase("remove")) {
+ if (!Jobs.hasPermission(player, "jobs.area.remove", true))
+ return true;
+
+ String name = args[1];
+
+ if (!ra.isExist(name)) {
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.dontExist"));
+ return true;
+ }
+
+ ra.remove(name);
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.area.output.removed", "%name%", name));
+ return true;
+ }
}
if (args.length == 1 && args[0].equalsIgnoreCase("info")) {
@@ -139,11 +146,12 @@ public class area implements Cmd {
return true;
}
- if (args.length > 1) {
+ if (args.length > 0) {
if (args[0].equalsIgnoreCase("add")) {
sender.sendMessage(Jobs.getLanguage().getMessage("command.area.help.addUsage"));
return true;
}
+
if (args[0].equalsIgnoreCase("remove")) {
sender.sendMessage(Jobs.getLanguage().getMessage("command.area.help.removeUsage"));
return true;
diff --git a/src/main/java/com/gamingmesh/jobs/config/RestrictedAreaManager.java b/src/main/java/com/gamingmesh/jobs/config/RestrictedAreaManager.java
index b4b9c849..db9ca137 100644
--- a/src/main/java/com/gamingmesh/jobs/config/RestrictedAreaManager.java
+++ b/src/main/java/com/gamingmesh/jobs/config/RestrictedAreaManager.java
@@ -40,15 +40,27 @@ public class RestrictedAreaManager {
save();
}
- public void remove(String name, boolean save) {
+ public void remove(String name) {
for (Entry area : restrictedAreas.entrySet()) {
if (area.getKey().equalsIgnoreCase(name)) {
restrictedAreas.remove(area.getKey());
break;
}
}
- if (save)
- save();
+ File f = new File(Jobs.getFolder(), "restrictedAreas.yml");
+ if (f.exists()) {
+ YamlConfiguration conf = YamlConfiguration.loadConfiguration(f);
+ conf.options().indent(2);
+ conf.options().copyDefaults(true);
+ StringBuilder header = new StringBuilder();
+ header = addHeader(header);
+ conf.set("restrictedareas." + name, null);
+ try {
+ conf.save(f);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
public HashMap getRestrictedAres() {
@@ -98,9 +110,8 @@ public class RestrictedAreaManager {
for (RestrictedArea area : getRestrictedAreasByLoc(player.getLocation())) {
if (area.inRestrictedArea(player.getLocation()))
return area.getMultiplier();
- if (area.getWgName() != null && Jobs.getWorldGuardManager() != null && Jobs.getWorldGuardManager().inArea(player.getLocation(), area.getWgName())) {
+ if (area.getWgName() != null && Jobs.getWorldGuardManager() != null && Jobs.getWorldGuardManager().inArea(player.getLocation(), area.getWgName()))
return area.getMultiplier();
- }
}
return 0D;
@@ -113,9 +124,8 @@ public class RestrictedAreaManager {
areas.add(area.getValue());
}
- if (Jobs.getWorldGuardManager() != null) {
+ if (Jobs.getWorldGuardManager() != null)
areas.addAll(Jobs.getWorldGuardManager().getArea(loc));
- }
return areas;
}
@@ -171,7 +181,7 @@ public class RestrictedAreaManager {
* loads from Jobs/restrictedAreas.yml
*/
public synchronized void load() {
- this.restrictedAreas.clear();
+ restrictedAreas.clear();
File f = new File(Jobs.getFolder(), "restrictedAreas.yml");
YamlConfiguration conf = YamlConfiguration.loadConfiguration(f);
conf.options().indent(2);
@@ -186,10 +196,9 @@ public class RestrictedAreaManager {
for (String areaKey : areaSection.getKeys(false)) {
double multiplier = conf.getDouble("restrictedareas." + areaKey + ".multiplier", 0.0);
- if (conf.isBoolean("restrictedareas." + areaKey + ".WG")) {
- RestrictedArea ar = new RestrictedArea(areaKey, areaKey, multiplier);
- addNew(ar);
- } else {
+ if (conf.isBoolean("restrictedareas." + areaKey + ".WG"))
+ addNew(new RestrictedArea(areaKey, areaKey, multiplier));
+ else {
String worldName = conf.getString("restrictedareas." + areaKey + ".world");
World world = Bukkit.getServer().getWorld(worldName);
@@ -205,7 +214,7 @@ public class RestrictedAreaManager {
}
}
- if (restrictedAreas.size() != 0)
+ if (restrictedAreas.size() > 0)
Jobs.consoleMsg("&e[Jobs] Loaded " + restrictedAreas.size() + " restricted areas!");
try {