diff --git a/.classpath b/.classpath
index 1e8eb336..9315a064 100644
--- a/.classpath
+++ b/.classpath
@@ -5,7 +5,7 @@
-
+
diff --git a/com/gamingmesh/jobs/Gui/GuiManager.java b/com/gamingmesh/jobs/Gui/GuiManager.java
index 34406beb..e733de0f 100644
--- a/com/gamingmesh/jobs/Gui/GuiManager.java
+++ b/com/gamingmesh/jobs/Gui/GuiManager.java
@@ -19,6 +19,7 @@ import com.gamingmesh.jobs.container.Job;
import com.gamingmesh.jobs.container.JobInfo;
import com.gamingmesh.jobs.container.JobProgression;
import com.gamingmesh.jobs.container.JobsPlayer;
+import com.gamingmesh.jobs.stuff.Perm;
public class GuiManager {
@@ -91,7 +92,7 @@ public class GuiManager {
}
int maxlevel = 0;
- if (player.hasPermission("jobs." + job.getName() + ".vipmaxlevel") && job.getVipMaxLevel() != 0)
+ if (Perm.hasPermission(player, "jobs." + job.getName() + ".vipmaxlevel") && job.getVipMaxLevel() != 0)
maxlevel = job.getVipMaxLevel();
else
maxlevel = job.getMaxLevel();
diff --git a/com/gamingmesh/jobs/Jobs.java b/com/gamingmesh/jobs/Jobs.java
index fe829190..7068ca52 100644
--- a/com/gamingmesh/jobs/Jobs.java
+++ b/com/gamingmesh/jobs/Jobs.java
@@ -410,6 +410,28 @@ public class Jobs {
*/
public static void startup() throws IOException {
reload();
+
+ // add all online players
+ if (!Jobs.getGCManager().MultiServerCompatability()) {
+ int i = 0;
+ long time = System.currentTimeMillis();
+ for (OfflinePlayer offline : Bukkit.getServer().getOfflinePlayers()) {
+ if (offline.isOnline())
+ continue;
+
+ long lastPlayed = offline.getLastPlayed();
+ int dif = (int) ((time - lastPlayed) / 1000 / 60 / 60 / 24);
+ if (dif >= 7)
+ continue;
+
+ JobsPlayer jPlayer = JobsPlayer.loadFromDao(Jobs.getJobsDAO(), offline);
+ JobsPlayer.loadLogFromDao(jPlayer);
+ Jobs.getPlayerManager().getPlayersCache().put(offline.getName().toLowerCase(), jPlayer);
+ i++;
+ }
+ Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[Jobs] Preloaded " + i + " players data from last week");
+ }
+
// add all online players
for (Player online : Bukkit.getServer().getOnlinePlayers()) {
Jobs.getPlayerManager().playerJoin(online);
diff --git a/com/gamingmesh/jobs/JobsPlugin.java b/com/gamingmesh/jobs/JobsPlugin.java
index d9510814..1f4227e6 100644
--- a/com/gamingmesh/jobs/JobsPlugin.java
+++ b/com/gamingmesh/jobs/JobsPlugin.java
@@ -40,10 +40,9 @@ public class JobsPlugin extends JavaPlugin {
@Override
public void onEnable() {
- String packageName = getServer().getClass().getPackage().getName();
-
- String[] packageSplit = packageName.split("\\.");
- String version = packageSplit[packageSplit.length - 1].split("(?<=\\G.{4})")[0];
+ String packageName = getServer().getClass().getPackage().getName();
+ String[] packageSplit = packageName.split("\\.");
+ String version = packageSplit[packageSplit.length - 1].substring(0,packageSplit[packageSplit.length - 1].length()-3);
try {
Class> nmsClass;
nmsClass = Class.forName("com.gamingmesh.jobs.nmsUtil." + version);
@@ -53,110 +52,94 @@ public class JobsPlugin extends JavaPlugin {
System.out.println("Something went wrong, please note down version and contact author v:" + version);
this.setEnabled(false);
}
- } catch (ClassNotFoundException e) {
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
+ | SecurityException e) {
System.out.println("Your server version is not compatible with this plugins version! Plugin will be disabled: " + version);
this.setEnabled(false);
+ e.printStackTrace();
return;
- } catch (InstantiationException e) {
- e.printStackTrace();
- this.setEnabled(false);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- this.setEnabled(false);
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- this.setEnabled(false);
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- this.setEnabled(false);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- this.setEnabled(false);
- } catch (SecurityException e) {
- e.printStackTrace();
- this.setEnabled(false);
}
- Jobs.setActionBar(new ActionBar());
-
-// OfflinePlayerList.fillList();
- YmlMaker jobConfig = new YmlMaker(this, "jobConfig.yml");
- jobConfig.saveDefaultConfig();
-
- YmlMaker jobSigns = new YmlMaker(this, "Signs.yml");
- jobSigns.saveDefaultConfig();
-
- YmlMaker jobSchedule = new YmlMaker(this, "schedule.yml");
- jobSchedule.saveDefaultConfig();
-
- YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml");
- jobShopItems.saveDefaultConfig();
-
- Jobs.setPermissionHandler(new PermissionHandler(this));
-
- Jobs.setPlayerManager(this);
-
- Jobs.setScboard(this);
- Jobs.setLanguage(this);
- Jobs.setGUIManager(this);
- Jobs.setExplore();
-
- Jobs.setBBManager(this);
-
- Jobs.setPluginLogger(getLogger());
-
- Jobs.setDataFolder(getDataFolder());
-
- Jobs.setGCManager(this);
- Jobs.setConfigManager(this);
-
- Jobs.setCommandManager(this);
-
- getCommand("jobs").setExecutor(Jobs.getCommandManager());
-
- this.getCommand("jobs").setTabCompleter(new TabComplete());
-
try {
+ Jobs.setActionBar(new ActionBar());
+// OfflinePlayerList.fillList();
+ YmlMaker jobConfig = new YmlMaker(this, "jobConfig.yml");
+ jobConfig.saveDefaultConfig();
+
+ YmlMaker jobSigns = new YmlMaker(this, "Signs.yml");
+ jobSigns.saveDefaultConfig();
+
+ YmlMaker jobSchedule = new YmlMaker(this, "schedule.yml");
+ jobSchedule.saveDefaultConfig();
+
+ YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml");
+ jobShopItems.saveDefaultConfig();
+
+ Jobs.setPermissionHandler(new PermissionHandler(this));
+
+ Jobs.setPlayerManager(this);
+
+ Jobs.setScboard(this);
+ Jobs.setLanguage(this);
+ Jobs.setGUIManager(this);
+ Jobs.setExplore();
+
+ Jobs.setBBManager(this);
+
+ Jobs.setPluginLogger(getLogger());
+
+ Jobs.setDataFolder(getDataFolder());
+
+ Jobs.setGCManager(this);
+ Jobs.setConfigManager(this);
+
+ Jobs.setCommandManager(this);
+
+ getCommand("jobs").setExecutor(Jobs.getCommandManager());
+
+ this.getCommand("jobs").setTabCompleter(new TabComplete());
+
Jobs.startup();
+
+ // register the listeners
+ getServer().getPluginManager().registerEvents(new JobsListener(this), this);
+ getServer().getPluginManager().registerEvents(new JobsPaymentListener(this), this);
+
+ if (McMMOlistener.CheckmcMMO())
+ getServer().getPluginManager().registerEvents(new McMMOlistener(this), this);
+
+ Jobs.setMythicManager(this);
+ if (Jobs.getMythicManager().Check() && Jobs.getGCManager().MythicMobsEnabled) {
+ getServer().getPluginManager().registerEvents(new MythicMobsListener(this), this);
+ }
+
+ if (Jobs.getGCManager().useBlockProtection)
+ getServer().getPluginManager().registerEvents(new PistonProtectionListener(this), this);
+
+ // register economy
+ Bukkit.getScheduler().runTask(this, new HookEconomyTask(this));
+
+ if (getServer().getPluginManager().getPlugin("CoreProtect") != null) {
+ Jobs.setCoreProtectApi(((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI());
+ }
+
+ // all loaded properly.
+
+ Jobs.getScheduleManager().DateUpdater();
+
+ String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] Plugin has been enabled succesfully.");
+ ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
+ console.sendMessage(message);
+ Jobs.getLanguage().reload(Jobs.getGCManager().getLocale());
+
+ Jobs.getJobsDAO().loadExplore();
+
+ Jobs.getCommandManager().fillCommands();
} catch (IOException e) {
+ System.out.println("There was some issues when starting plugin. Please contact dev about this. Plugin will be disabled.");
+ this.setEnabled(false);
e.printStackTrace();
}
-
- // register the listeners
- getServer().getPluginManager().registerEvents(new JobsListener(this), this);
- getServer().getPluginManager().registerEvents(new JobsPaymentListener(this), this);
-
- if (McMMOlistener.CheckmcMMO())
- getServer().getPluginManager().registerEvents(new McMMOlistener(this), this);
-
- Jobs.setMythicManager(this);
- if (Jobs.getMythicManager().Check() && Jobs.getGCManager().MythicMobsEnabled) {
- getServer().getPluginManager().registerEvents(new MythicMobsListener(this), this);
- }
-
- if (Jobs.getGCManager().useBlockProtection)
- getServer().getPluginManager().registerEvents(new PistonProtectionListener(this), this);
-
- // register economy
- Bukkit.getScheduler().runTask(this, new HookEconomyTask(this));
-
- if (getServer().getPluginManager().getPlugin("CoreProtect") != null) {
- Jobs.setCoreProtectApi(((CoreProtect) getServer().getPluginManager().getPlugin("CoreProtect")).getAPI());
- }
-
- // all loaded properly.
-
- Jobs.getScheduleManager().DateUpdater();
-
- String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] Plugin has been enabled succesfully.");
- ConsoleCommandSender console = Bukkit.getServer().getConsoleSender();
- console.sendMessage(message);
- Jobs.getLanguage().reload(Jobs.getGCManager().getLocale());
-
- Jobs.getJobsDAO().loadExplore();
-
- Jobs.getCommandManager().fillCommands();
-
}
@Override
diff --git a/com/gamingmesh/jobs/NMS.java b/com/gamingmesh/jobs/NMS.java
index b1af693a..3acbb08a 100644
--- a/com/gamingmesh/jobs/NMS.java
+++ b/com/gamingmesh/jobs/NMS.java
@@ -11,7 +11,7 @@ public interface NMS {
public List getPistonRetractBlocks(BlockPistonRetractEvent event);
- public boolean isElderGuardian(Entity entity);
+ public String getRealType(Entity entity);
public ItemStack getItemInMainHand(Player player);
diff --git a/com/gamingmesh/jobs/PlayerManager.java b/com/gamingmesh/jobs/PlayerManager.java
index 066eb9d3..52c46538 100644
--- a/com/gamingmesh/jobs/PlayerManager.java
+++ b/com/gamingmesh/jobs/PlayerManager.java
@@ -34,7 +34,6 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
-
import com.gamingmesh.jobs.api.JobsJoinEvent;
import com.gamingmesh.jobs.api.JobsLeaveEvent;
import com.gamingmesh.jobs.api.JobsLevelUpEvent;
@@ -50,10 +49,13 @@ import com.gamingmesh.jobs.dao.JobsDAO;
import com.gamingmesh.jobs.dao.JobsDAOData;
import com.gamingmesh.jobs.economy.PointsData;
import com.gamingmesh.jobs.stuff.ChatColor;
+import com.gamingmesh.jobs.stuff.Debug;
import com.gamingmesh.jobs.stuff.PerformCommands;
+import com.gamingmesh.jobs.stuff.Perm;
public class PlayerManager {
// private Map players = Collections.synchronizedMap(new HashMap());
+ private ConcurrentHashMap playersCache = new ConcurrentHashMap();
private ConcurrentHashMap players = new ConcurrentHashMap();
private PointsData PointsDatabase = new PointsData();
@@ -72,6 +74,14 @@ public class PlayerManager {
return PlayerMap;
}
+ public ConcurrentHashMap getPlayersCache() {
+ return playersCache;
+ }
+
+ public ConcurrentHashMap getPlayers() {
+ return players;
+ }
+
public int getPlayerIdByName(String name) {
for (Entry one : PlayerMap.entrySet()) {
if (one.getValue().getName() == null)
@@ -107,12 +117,16 @@ public class PlayerManager {
* @param playername
*/
public void playerJoin(Player player) {
- JobsPlayer jPlayer = players.get(player.getName().toLowerCase());
+ JobsPlayer jPlayer = playersCache.get(player.getName().toLowerCase());
if (jPlayer == null) {
jPlayer = JobsPlayer.loadFromDao(Jobs.getJobsDAO(), player);
+
JobsPlayer.loadLogFromDao(jPlayer);
- players.put(player.getName().toLowerCase(), jPlayer);
+ playersCache.put(player.getName().toLowerCase(), jPlayer);
}
+
+ players.put(player.getName().toLowerCase(), jPlayer);
+
AutoJoinJobs(player);
jPlayer.onConnect();
jPlayer.reloadHonorific();
@@ -174,7 +188,7 @@ public class PlayerManager {
* @return the player job info of the player
*/
public JobsPlayer getJobsPlayer(Player player) {
- return players.get(player.getName().toLowerCase());
+ return playersCache.get(player.getName().toLowerCase());
}
/**
@@ -183,7 +197,7 @@ public class PlayerManager {
* @return the player job info of the player
*/
public JobsPlayer getJobsPlayer(String playerName) {
- return players.get(playerName.toLowerCase());
+ return playersCache.get(playerName.toLowerCase());
}
public JobsPlayer getJobsPlayerOffline(OfflinePlayer player) {
@@ -196,7 +210,7 @@ public class PlayerManager {
* @return the player job info of the player
*/
public JobsPlayer getJobsPlayerOffline(String playerName) {
- JobsPlayer jPlayer = players.get(playerName.toLowerCase());
+ JobsPlayer jPlayer = playersCache.get(playerName.toLowerCase());
if (jPlayer != null)
return jPlayer;
@@ -419,7 +433,7 @@ public class PlayerManager {
*/
public void performLevelUp(JobsPlayer jPlayer, Job job, int oldLevel) {
- Player player = (Player) jPlayer.getPlayer();
+ Player player = jPlayer.getPlayer();
JobProgression prog = jPlayer.getJobProgression(job);
if (prog == null)
return;
@@ -594,14 +608,14 @@ public class PlayerManager {
*/
public boolean getJobsLimit(Player player, Short currentCount) {
- if (Perm(player, "jobs.max.*"))
+ if (Perm.hasPermission(player, "jobs.max.*"))
return true;
int totalJobs = Jobs.getJobs().size() + 5;
short count = (short) Jobs.getGCManager().getMaxJobs();
for (short ctr = 0; ctr < totalJobs; ctr++) {
- if (Perm(player, "jobs.max." + ctr))
+ if (Perm.hasPermission(player, "jobs.max." + ctr))
count = ctr;
if (count > currentCount)
return true;
@@ -609,29 +623,27 @@ public class PlayerManager {
return false;
}
- private boolean Perm(Player player, String permission) {
- return player.hasPermission(permission);
- }
-
/**
* Get job money boost
* @param player
* @param job
* @return double of boost
*/
- public Double GetMoneyBoost(Player dude, Job job) {
+ public Double GetMoneyBoost(Player player, Job job) {
Double Boost = 1.0;
- if (dude != null && job.getName() != null) {
- if (Perm(dude, "jobs.boost." + job.getName() + ".money") || Perm(dude, "jobs.boost." + job.getName() + ".all") || Perm(dude, "jobs.boost.all.all") || Perm(
- dude, "jobs.boost.all.money")) {
+ if (player != null && job.getName() != null) {
+ if (Perm.hasPermission(player, "jobs.boost." + job.getName() + ".money") ||
+ Perm.hasPermission(player, "jobs.boost." + job.getName() + ".all") ||
+ Perm.hasPermission(player, "jobs.boost.all.all") ||
+ Perm.hasPermission(player, "jobs.boost.all.money")) {
Boost = Jobs.getGCManager().BoostMoney;
}
}
return Boost;
}
- public double GetMoneyBoostInPerc(Player dude, Job job) {
- double Boost = GetMoneyBoost(dude, job) * 100.0 - 100.0;
+ public double GetMoneyBoostInPerc(Player player, Job job) {
+ double Boost = GetMoneyBoost(player, job) * 100.0 - 100.0;
return Boost;
}
@@ -641,19 +653,21 @@ public class PlayerManager {
* @param job
* @return double of boost
*/
- public Double GetPointBoost(Player dude, Job job) {
+ public Double GetPointBoost(Player player, Job job) {
Double Boost = 1.0;
- if (dude != null && job.getName() != null) {
- if (Perm(dude, "jobs.boost." + job.getName() + ".points") || Perm(dude, "jobs.boost." + job.getName() + ".all") || Perm(dude, "jobs.boost.all.all") || Perm(
- dude, "jobs.boost.all.points")) {
+ if (player != null && job.getName() != null) {
+ if (Perm.hasPermission(player, "jobs.boost." + job.getName() + ".points") ||
+ Perm.hasPermission(player, "jobs.boost." + job.getName() + ".all") ||
+ Perm.hasPermission(player, "jobs.boost.all.all") ||
+ Perm.hasPermission(player, "jobs.boost.all.points")) {
Boost = Jobs.getGCManager().BoostPoints;
}
}
return Boost;
}
- public double GetPointBoostInPerc(Player dude, Job job) {
- double Boost = GetPointBoost(dude, job) * 100.0 - 100.0;
+ public double GetPointBoostInPerc(Player player, Job job) {
+ double Boost = GetPointBoost(player, job) * 100.0 - 100.0;
return Boost;
}
@@ -663,20 +677,22 @@ public class PlayerManager {
* @param job
* @return double of boost
*/
- public Double GetExpBoost(Player dude, Job job) {
+ public Double GetExpBoost(Player player, Job job) {
Double Boost = 1.0;
- if (dude == null || job.getName() == null)
+ if (player == null || job.getName() == null)
return 1.0;
- if (Perm(dude, "jobs.boost." + job.getName() + ".exp") || Perm(dude, "jobs.boost." + job.getName() + ".all") || Perm(dude, "jobs.boost.all.all") || Perm(dude,
- "jobs.boost.all.exp")) {
+ if (Perm.hasPermission(player, "jobs.boost." + job.getName() + ".exp") ||
+ Perm.hasPermission(player, "jobs.boost." + job.getName() + ".all") ||
+ Perm.hasPermission(player, "jobs.boost.all.all") ||
+ Perm.hasPermission(player, "jobs.boost.all.exp")) {
Boost = Jobs.getGCManager().BoostExp;
}
return Boost;
}
- public double GetExpBoostInPerc(Player dude, Job job) {
- double Boost = GetExpBoost(dude, job) * 100.0 - 100.0;
+ public double GetExpBoostInPerc(Player player, Job job) {
+ double Boost = GetExpBoost(player, job) * 100.0 - 100.0;
return Boost;
}
@@ -814,7 +830,6 @@ public class PlayerManager {
public void AutoJoinJobs(final Player player) {
if (player == null)
return;
- // ignoring OP players for obvious reasons
if (player.isOp())
return;
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@@ -824,11 +839,21 @@ public class PlayerManager {
JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(player);
if (jPlayer == null)
return;
+ int confMaxJobs = Jobs.getGCManager().getMaxJobs();
for (Job one : Jobs.getJobs()) {
- JobProgression cur = jPlayer.getJobProgression(one);
- if (cur == null && player.hasPermission("jobs.autojoin." + one.getName().toLowerCase())) {
+
+ if (one.getMaxSlots() != null && Jobs.getUsedSlots(one) >= one.getMaxSlots())
+ continue;
+
+ short PlayerMaxJobs = (short) jPlayer.getJobProgression().size();
+ if (confMaxJobs > 0 && PlayerMaxJobs >= confMaxJobs && !Jobs.getPlayerManager().getJobsLimit(player, PlayerMaxJobs))
+ break;
+
+ if (jPlayer.isInJob(one))
+ continue;
+
+ if (Perm.hasPermission(player, "jobs.autojoin." + one.getName().toLowerCase()))
Jobs.getPlayerManager().joinJob(jPlayer, one);
- }
}
return;
}
diff --git a/com/gamingmesh/jobs/Signs/SignUtil.java b/com/gamingmesh/jobs/Signs/SignUtil.java
index a5119336..e531099c 100644
--- a/com/gamingmesh/jobs/Signs/SignUtil.java
+++ b/com/gamingmesh/jobs/Signs/SignUtil.java
@@ -9,6 +9,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
+import org.bukkit.block.BlockFace;
import org.bukkit.block.Skull;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -148,7 +149,7 @@ public class SignUtil {
sign.setLine(i, line);
}
sign.update();
- UpdateHead(sign.getLocation(), ((TopList) PlayerList.get(0)).getPlayerName(), timelapse);
+ UpdateHead(sign, ((TopList) PlayerList.get(0)).getPlayerName(), timelapse);
} else {
String PlayerName = ((TopList) PlayerList.get(0)).getPlayerName();
if (PlayerName.length() > 8) {
@@ -183,7 +184,7 @@ public class SignUtil {
sign.setLine(3, line1);
sign.update();
- UpdateHead(sign.getLocation(), ((TopList) PlayerList.get(0)).getPlayerName(), timelapse);
+ UpdateHead(sign, ((TopList) PlayerList.get(0)).getPlayerName(), timelapse);
}
timelapse++;
@@ -194,22 +195,28 @@ public class SignUtil {
return true;
}
- public void UpdateHead(final Location loc, final String Playername, final int timelapse) {
+ public void UpdateHead(final org.bukkit.block.Sign sign, final String Playername, final int timelapse) {
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
public void run() {
- loc.setY(loc.getY() + 1);
+ org.bukkit.material.Sign signMat = (org.bukkit.material.Sign) sign.getData();
+ BlockFace directionFacing = signMat.getFacing();
+
+ Location loc = sign.getLocation().clone();
+ loc.add(0, 1, 0);
if (Playername == null)
return;
Block block = loc.getBlock();
- if (block == null)
- return;
+ if (block == null || !(block.getState() instanceof Skull))
+ loc.add(directionFacing.getOppositeFace().getModX(), 0, directionFacing.getOppositeFace().getModZ());
- if (!(block.getState() instanceof Skull))
+ block = loc.getBlock();
+
+ if (block == null || !(block.getState() instanceof Skull))
return;
Skull skull = (Skull) block.getState();
diff --git a/com/gamingmesh/jobs/actions/BlockActionInfo.java b/com/gamingmesh/jobs/actions/BlockActionInfo.java
index 268393a0..71ccba1e 100644
--- a/com/gamingmesh/jobs/actions/BlockActionInfo.java
+++ b/com/gamingmesh/jobs/actions/BlockActionInfo.java
@@ -18,14 +18,41 @@
package com.gamingmesh.jobs.actions;
+import org.bukkit.Material;
import org.bukkit.block.Block;
import com.gamingmesh.jobs.container.ActionInfo;
import com.gamingmesh.jobs.container.ActionType;
public class BlockActionInfo extends MaterialActionInfo implements ActionInfo {
- @SuppressWarnings("deprecation")
- public BlockActionInfo(Block block, ActionType type) {
- super(block.getType(), block.getData(), type);
+ public BlockActionInfo(Block block, ActionType type) {
+ super(block.getType(), getData(block), type);
+ }
+
+ private static byte getData(Block block) {
+ @SuppressWarnings("deprecation")
+ byte data = block.getData();
+ if (block.getType() == Material.COCOA)
+ switch (data) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ data = 0;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data = 1;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ data = 2;
+ break;
+ }
+ return data;
}
}
diff --git a/com/gamingmesh/jobs/actions/EntityActionInfo.java b/com/gamingmesh/jobs/actions/EntityActionInfo.java
index a49ed68b..b8b9819a 100644
--- a/com/gamingmesh/jobs/actions/EntityActionInfo.java
+++ b/com/gamingmesh/jobs/actions/EntityActionInfo.java
@@ -19,10 +19,6 @@
package com.gamingmesh.jobs.actions;
import org.bukkit.entity.Entity;
-import org.bukkit.entity.Skeleton;
-import org.bukkit.entity.Skeleton.SkeletonType;
-import org.bukkit.entity.Zombie;
-
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.container.ActionInfo;
import com.gamingmesh.jobs.container.ActionType;
@@ -37,23 +33,8 @@ public class EntityActionInfo extends BaseActionInfo implements ActionInfo {
}
@Override
- public String getName() {
- if (this.entity instanceof Skeleton) {
- Skeleton skeleton = (Skeleton) this.entity;
- if (skeleton.getSkeletonType() == SkeletonType.WITHER)
- return "WitherSkeleton";
- }
-
- if (this.entity instanceof Zombie) {
- Zombie zombie = (Zombie) this.entity;
- if (zombie.isVillager())
- return "ZombieVillager";
- }
-
- if (Jobs.getNms().isElderGuardian(this.entity))
- return "ElderGuardian";
-
- return entity.getType().toString();
+ public String getName() {
+ return Jobs.getNms().getRealType(entity);
}
@Override
diff --git a/com/gamingmesh/jobs/commands/JobsCommands.java b/com/gamingmesh/jobs/commands/JobsCommands.java
index e90bae95..09c9ca5e 100644
--- a/com/gamingmesh/jobs/commands/JobsCommands.java
+++ b/com/gamingmesh/jobs/commands/JobsCommands.java
@@ -518,10 +518,16 @@ public class JobsCommands implements CommandExecutor {
String pros = ChatColor.YELLOW + "\u258F";
if (current < 0)
current = 0;
+ if (max < current)
+ max = current;
int percentage = (int) ((current * 50.0) / max);
for (int i = 0; i < percentage; i++) {
message += pos;
}
+
+ if (50 - percentage < 0)
+ percentage = 50;
+
for (int i = 0; i < 50 - percentage; i++) {
message += pros;
}
diff --git a/com/gamingmesh/jobs/commands/list/blockinfo.java b/com/gamingmesh/jobs/commands/list/blockinfo.java
index 92110460..66e6d243 100644
--- a/com/gamingmesh/jobs/commands/list/blockinfo.java
+++ b/com/gamingmesh/jobs/commands/list/blockinfo.java
@@ -31,12 +31,12 @@ public class blockinfo implements Cmd {
if (block == null || block.getState().getType() == Material.AIR)
return true;
- String dataString = block.getData() == 0 ? "" : "-" + block.getData();
+ String dataString = getData(block) == 0 ? "" : "-" + getData(block);
sender.sendMessage(Jobs.getLanguage().getMessage("general.info.separator"));
sender.sendMessage(Jobs.getLanguage().getMessage("command.blockinfo.output.name", "%blockname%", block.getType().name()));
sender.sendMessage(Jobs.getLanguage().getMessage("command.blockinfo.output.id", "%blockid%", block.getTypeId()));
- sender.sendMessage(Jobs.getLanguage().getMessage("command.blockinfo.output.data", "%blockdata%", block.getData()));
+ sender.sendMessage(Jobs.getLanguage().getMessage("command.blockinfo.output.data", "%blockdata%", getData(block)));
sender.sendMessage(Jobs.getLanguage().getMessage("command.blockinfo.output.usage", "%first%", block.getTypeId() + dataString,
"%second%", block.getType().name() + dataString));
sender.sendMessage(Jobs.getLanguage().getMessage("general.info.separator"));
@@ -44,4 +44,31 @@ public class blockinfo implements Cmd {
return true;
}
+ private byte getData(Block block) {
+ @SuppressWarnings("deprecation")
+ byte data = block.getData();
+ if (block.getType() == Material.COCOA)
+ switch (data) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ data = 0;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data = 1;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ data = 2;
+ break;
+ }
+ return data;
+ }
+
}
diff --git a/com/gamingmesh/jobs/commands/list/fire.java b/com/gamingmesh/jobs/commands/list/fire.java
index f9728725..81030cb5 100644
--- a/com/gamingmesh/jobs/commands/list/fire.java
+++ b/com/gamingmesh/jobs/commands/list/fire.java
@@ -31,6 +31,12 @@ public class fire implements Cmd {
sender.sendMessage(ChatColor.RED + Jobs.getLanguage().getMessage("general.error.job"));
return true;
}
+
+ if (jPlayer == null){
+ sender.sendMessage(Jobs.getLanguage().getMessage("general.error.noinfoByPlayer", "%playername%", args[0]));
+ return true;
+ }
+
if (!jPlayer.isInJob(job)) {
String message = ChatColor.RED + Jobs.getLanguage().getMessage("command.fire.error.nojob", "%jobname%", job.getChatColor() + job.getName() + ChatColor.RED);
sender.sendMessage(message);
diff --git a/com/gamingmesh/jobs/config/ConfigManager.java b/com/gamingmesh/jobs/config/ConfigManager.java
index 9792871c..48a24bde 100644
--- a/com/gamingmesh/jobs/config/ConfigManager.java
+++ b/com/gamingmesh/jobs/config/ConfigManager.java
@@ -584,6 +584,10 @@ public class ConfigManager {
}
Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[Jobs] Loaded " + Jobs.getJobs().size() + " jobs!");
+ if (!Jobs.getExplore().isExploreEnabled()) {
+ Bukkit.getConsoleSender().sendMessage(ChatColor.GOLD + "[Jobs] Explorer jobs manager are not enabled!");
+ } else
+ Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[Jobs] Explorer job manager registered!");
//try {
// conf.save(f);
//} catch (IOException e) {
diff --git a/com/gamingmesh/jobs/config/ExploreManager.java b/com/gamingmesh/jobs/config/ExploreManager.java
index 67ee0aba..b77890c8 100644
--- a/com/gamingmesh/jobs/config/ExploreManager.java
+++ b/com/gamingmesh/jobs/config/ExploreManager.java
@@ -1,6 +1,7 @@
package com.gamingmesh.jobs.config;
import java.util.HashMap;
+
import org.bukkit.Chunk;
import org.bukkit.entity.Player;
@@ -32,8 +33,10 @@ public class ExploreManager {
}
public void setExploreEnabled() {
- this.exploreEnabled = true;
- Jobs.getJobsDAO().loadExplore();
+ if (!exploreEnabled) {
+ this.exploreEnabled = true;
+ Jobs.getJobsDAO().loadExplore();
+ }
}
public HashMap getWorlds() {
diff --git a/com/gamingmesh/jobs/config/LanguageManager.java b/com/gamingmesh/jobs/config/LanguageManager.java
index 08ae20df..7f9fc9b5 100644
--- a/com/gamingmesh/jobs/config/LanguageManager.java
+++ b/com/gamingmesh/jobs/config/LanguageManager.java
@@ -379,8 +379,8 @@ public class LanguageManager {
c.get("command.reload.help.info", "Reload configurations.");
- c.get("command.toggle.help.info", "Toggles payment output on action bar.");
- c.get("command.toggle.help.args", "");
+ c.get("command.toggle.help.info", "Toggles payment output on action bar or bossbar.");
+ c.get("command.toggle.help.args", "[actionbar/bossbar]");
c.get("command.toggle.output.turnedoff", "&4This feature are turned off!");
c.get("command.toggle.output.paid.main", "&aYou got:");
c.get("command.toggle.output.paid.money", "&e[amount] money");
diff --git a/com/gamingmesh/jobs/config/ShopManager.java b/com/gamingmesh/jobs/config/ShopManager.java
index 08c3aa39..bb5e31fa 100644
--- a/com/gamingmesh/jobs/config/ShopManager.java
+++ b/com/gamingmesh/jobs/config/ShopManager.java
@@ -27,6 +27,7 @@ import com.gamingmesh.jobs.container.JobProgression;
import com.gamingmesh.jobs.container.JobsPlayer;
import com.gamingmesh.jobs.container.PlayerPoints;
import com.gamingmesh.jobs.container.ShopItem;
+import com.gamingmesh.jobs.stuff.Perm;
public class ShopManager {
private JobsPlugin plugin;
@@ -46,9 +47,9 @@ public class ShopManager {
ShopItem item = list.get(slot);
PlayerPoints pointsInfo = Jobs.getPlayerManager().getPointsData().getPlayerPointsInfo(player.getUniqueId());
- if (!player.hasPermission("jobs.items.bypass")) {
+ if (!Perm.hasPermission(player, "jobs.items.bypass")) {
for (String onePerm : item.getRequiredPerm()) {
- if (!player.hasPermission(onePerm)) {
+ if (!Perm.hasPermission(player, onePerm)) {
player.sendMessage(Jobs.getLanguage().getMessage("command.shop.info.NoPermForItem"));
return;
}
@@ -119,7 +120,7 @@ public class ShopManager {
}
- if (!player.hasPermission("jobs.items.bypass")) {
+ if (!Perm.hasPermission(player, "jobs.items.bypass")) {
pointsInfo.takePoints(item.getPrice());
player.sendMessage(Jobs.getLanguage().getMessage("command.shop.info.Paid", "%amount%", item.getPrice()));
}
@@ -169,7 +170,7 @@ public class ShopManager {
if (item.isHideWithoutPerm()) {
for (String onePerm : item.getRequiredPerm()) {
- if (!player.hasPermission(onePerm)) {
+ if (!Perm.hasPermission(player, onePerm)) {
mat = Material.STONE_BUTTON;
Lore.add(Jobs.getLanguage().getMessage("command.shop.info.NoPermToBuy"));
break;
diff --git a/com/gamingmesh/jobs/container/JobsPlayer.java b/com/gamingmesh/jobs/container/JobsPlayer.java
index 9b747d6c..77b4da7e 100644
--- a/com/gamingmesh/jobs/container/JobsPlayer.java
+++ b/com/gamingmesh/jobs/container/JobsPlayer.java
@@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.List;
import java.util.UUID;
+import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
@@ -46,7 +47,8 @@ public class JobsPlayer {
// player online status
private volatile boolean isOnline = false;
- private OfflinePlayer player = null;
+ private OfflinePlayer OffPlayer = null;
+ private Player player = null;
private double VipSpawnerMultiplier = -1;
@@ -66,7 +68,7 @@ public class JobsPlayer {
public JobsPlayer(String userName, OfflinePlayer player) {
this.userName = userName;
- this.player = player;
+ this.OffPlayer = player;
}
public static JobsPlayer loadFromDao(JobsDAO dao, OfflinePlayer player) {
@@ -99,6 +101,10 @@ public class JobsPlayer {
return jPlayer;
}
+ public void setPlayer(Player p) {
+ this.player = p;
+ }
+
public static void loadLogFromDao(JobsPlayer jPlayer) {
Jobs.getJobsDAO().loadLog(jPlayer);
}
@@ -109,7 +115,6 @@ public class JobsPlayer {
public synchronized void clearUpdateBossBarFor() {
this.updateBossBarFor.clear();
- ;
}
public synchronized List getBossBarInfo() {
@@ -138,8 +143,10 @@ public class JobsPlayer {
* Get the player
* @return the player
*/
- public OfflinePlayer getPlayer() {
- return this.player;
+ public Player getPlayer() {
+ if (this.player != null)
+ return this.player;
+ return Bukkit.getPlayer(this.playerUUID);
}
/**
@@ -147,7 +154,7 @@ public class JobsPlayer {
* @return the Multiplier
*/
public double getVipSpawnerMultiplier() {
- if (!this.player.isOnline())
+ if (!this.OffPlayer.isOnline())
return 1.0;
if (VipSpawnerMultiplier < 0)
updateVipSpawnerMultiplier();
@@ -165,7 +172,7 @@ public class JobsPlayer {
* Get the MoneyBoost
* @return the MoneyBoost
*/
- public static double getMoneyBoost(String JobName, OfflinePlayer player) {
+ public static double getMoneyBoost(String JobName, Player player) {
double MoneyBoost = 1.0;
if (JobName != null) {
if (Perm.hasPermission(player, "jobs.boost." + JobName + ".money") || Perm.hasPermission(player, "jobs.boost." + JobName + ".both") || Perm.hasPermission(
@@ -180,7 +187,7 @@ public class JobsPlayer {
* Get the PointBoost
* @return the PointBoost
*/
- public static double getPointBoost(String JobName, OfflinePlayer player) {
+ public static double getPointBoost(String JobName, Player player) {
double PointBoost = 1.0;
if (JobName != null) {
if (Perm.hasPermission(player, "jobs.boost." + JobName + ".points") || Perm.hasPermission(player, "jobs.boost." + JobName + ".both") || Perm.hasPermission(
@@ -195,7 +202,7 @@ public class JobsPlayer {
* Get the ExpBoost
* @return the ExpBoost
*/
- public static double getExpBoost(String JobName, OfflinePlayer player) {
+ public static double getExpBoost(String JobName, Player player) {
Double ExpBoost = 1.0;
if (player == null || JobName == null)
return 1.0;
@@ -285,8 +292,10 @@ public class JobsPlayer {
* @return true if have
*/
public boolean havePermission(String perm) {
- if (this.isOnline)
- return ((Player) player).hasPermission(perm);
+ if (this.player == null)
+ this.player = Bukkit.getPlayer(this.playerUUID);
+ if (this.player != null)
+ return Perm.hasPermission(player, perm);
return false;
}
@@ -446,7 +455,7 @@ public class JobsPlayer {
if (level != prog.getLevel()) {
prog.setLevel(level);
reloadHonorific();
- Jobs.getPermissionHandler().recalculatePermissions(this);
+ Jobs.getPermissionHandler().recalculatePermissions(this);
}
// }
}
diff --git a/com/gamingmesh/jobs/dao/JobsDAO.java b/com/gamingmesh/jobs/dao/JobsDAO.java
index 8abf73d5..3b3efdcf 100644
--- a/com/gamingmesh/jobs/dao/JobsDAO.java
+++ b/com/gamingmesh/jobs/dao/JobsDAO.java
@@ -43,7 +43,6 @@ import com.gamingmesh.jobs.container.LogAmounts;
import com.gamingmesh.jobs.container.PlayerInfo;
import com.gamingmesh.jobs.container.PlayerPoints;
import com.gamingmesh.jobs.container.TopList;
-import com.gamingmesh.jobs.stuff.Debug;
import com.gamingmesh.jobs.stuff.Loging;
import com.gamingmesh.jobs.stuff.TimeManage;
@@ -77,18 +76,17 @@ public abstract class JobsDAO {
}
try {
-
- Debug.D("V"+version);
if (version <= 1)
checkUpdate();
else {
if (version <= 2)
checkUpdate2();
-
checkUpdate4();
checkUpdate5();
- checkUpdate6();
- checkUpdate7();
+ if (version <= 6)
+ checkUpdate6();
+ if (version <= 7)
+ checkUpdate7();
// creating explore database
checkUpdate8();
checkUpdate9();
@@ -126,7 +124,7 @@ public abstract class JobsDAO {
return prefix;
}
- public synchronized List getAllJobs(OfflinePlayer player) {
+ public List getAllJobs(OfflinePlayer player) {
return getAllJobs(player.getName(), player.getUniqueId());
}
@@ -135,7 +133,7 @@ public abstract class JobsDAO {
* @param playerUUID - the player being searched for
* @return list of all of the names of the jobs the players are part of.
*/
- public synchronized List getAllJobs(String playerName, UUID uuid) {
+ public List getAllJobs(String playerName, UUID uuid) {
int id = -1;
PlayerInfo userData = null;
@@ -924,9 +922,10 @@ public abstract class JobsDAO {
JobsPlayer jobsinfo = Jobs.getPlayerManager().getJobsPlayer(player);
Job job = Jobs.getJob(jobsname);
- if (job != null) {
+ if (job != null && jobsinfo != null) {
JobProgression prog = jobsinfo.getJobProgression(job);
- jobs.add(new TopList(jobsinfo.getUserId(), prog.getLevel(), (int) prog.getExperience()));
+ if (prog != null)
+ jobs.add(new TopList(jobsinfo.getUserId(), prog.getLevel(), (int) prog.getExperience()));
}
} else {
jobs.add(new TopList(res.getInt("userid"), res.getInt("level"), res.getInt("experience")));
diff --git a/com/gamingmesh/jobs/dao/JobsDAOMySQL.java b/com/gamingmesh/jobs/dao/JobsDAOMySQL.java
index 1cc544bd..67947612 100644
--- a/com/gamingmesh/jobs/dao/JobsDAOMySQL.java
+++ b/com/gamingmesh/jobs/dao/JobsDAOMySQL.java
@@ -162,6 +162,8 @@ public class JobsDAOMySQL extends JobsDAO {
if (res.next()) {
rows = res.getInt(1);
}
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
if (prest != null) {
try {
@@ -175,6 +177,8 @@ public class JobsDAOMySQL extends JobsDAO {
if (rows == 0)
executeSQL("CREATE TABLE `" + getPrefix()
+ "archive` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `player_uuid` binary(16) NOT NULL, `username` varchar(20), `job` varchar(20), `experience` int, `level` int);");
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
}
}
@@ -224,6 +228,7 @@ public class JobsDAOMySQL extends JobsDAO {
try {
executeSQL("ALTER TABLE `" + getPrefix() + "log` MODIFY `itemname` VARCHAR(60);");
} catch (Exception e) {
+ e.printStackTrace();
}
}
@@ -440,6 +445,7 @@ public class JobsDAOMySQL extends JobsDAO {
try {
executeSQL("ALTER TABLE `" + getPrefix() + "log_temp` RENAME TO `" + getPrefix() + "log`;");
} catch (Exception e) {
+ e.printStackTrace();
}
}
}
@@ -462,6 +468,8 @@ public class JobsDAOMySQL extends JobsDAO {
if (res.next()) {
rows = res.getInt(1);
}
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
if (prest != null) {
try {
@@ -473,8 +481,13 @@ public class JobsDAOMySQL extends JobsDAO {
try {
if (rows == 0)
- createDefaultExploreBase();
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "explore` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `worldname` varchar(64), `chunkX` int, `chunkZ` int, `playerName` varchar(32));");
+ } catch (SQLException e) {
+ }
} catch (Exception e) {
+ e.printStackTrace();
} finally {
}
}
@@ -498,6 +511,8 @@ public class JobsDAOMySQL extends JobsDAO {
if (res.next()) {
rows = res.getInt(1);
}
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
if (tempPrest != null) {
try {
@@ -516,13 +531,7 @@ public class JobsDAOMySQL extends JobsDAO {
while (res.next()) {
tempMap.put(res.getString("player_uuid"), res.getString("username"));
}
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
}
try {
@@ -531,13 +540,7 @@ public class JobsDAOMySQL extends JobsDAO {
while (res.next()) {
tempMap.put(res.getString("player_uuid"), res.getString("username"));
}
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
}
try {
@@ -546,18 +549,14 @@ public class JobsDAOMySQL extends JobsDAO {
while (res.next()) {
tempMap.put(res.getString("player_uuid"), res.getString("username"));
}
- } finally {
- if (prest != null)
- try {
- prest.close();
- } catch (SQLException e) {
- }
+ } catch (Exception e) {
}
try {
executeSQL("CREATE TABLE `" + getPrefix()
+ "users` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `player_uuid` varchar(36) NOT NULL, `username` varchar(20));");
} catch (Exception e) {
+ e.printStackTrace();
}
try {
@@ -571,13 +570,8 @@ public class JobsDAOMySQL extends JobsDAO {
prest.executeBatch();
conn.commit();
conn.setAutoCommit(true);
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
HashMap tempPlayerMap = new HashMap();
@@ -588,13 +582,8 @@ public class JobsDAOMySQL extends JobsDAO {
while (res.next()) {
tempPlayerMap.put(res.getString("player_uuid"), new PlayerInfo(res.getString("username"), res.getInt("id")));
}
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
// Modifying jobs main table
@@ -613,14 +602,10 @@ public class JobsDAOMySQL extends JobsDAO {
prest.executeBatch();
conn.commit();
conn.setAutoCommit(true);
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
+
try {
executeSQL("ALTER TABLE `" + getPrefix() + "jobs` DROP COLUMN `player_uuid`, DROP COLUMN `username`;");
} catch (Exception e) {
@@ -641,14 +626,10 @@ public class JobsDAOMySQL extends JobsDAO {
prest.executeBatch();
conn.commit();
conn.setAutoCommit(true);
- } finally {
- if (prest != null) {
- try {
- prest.close();
- } catch (SQLException e) {
- }
- }
+ } catch (Exception e) {
+ e.printStackTrace();
}
+
try {
executeSQL("ALTER TABLE `" + getPrefix() + "archive` DROP COLUMN `player_uuid`, DROP COLUMN `username`;");
} catch (Exception e) {
@@ -669,6 +650,8 @@ public class JobsDAOMySQL extends JobsDAO {
prest.executeBatch();
conn.commit();
conn.setAutoCommit(true);
+ } catch (Exception e) {
+ e.printStackTrace();
} finally {
if (prest != null) {
try {
@@ -682,7 +665,12 @@ public class JobsDAOMySQL extends JobsDAO {
} catch (Exception e) {
}
// Create new points table
- createDefaultPointsBase();
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "points` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY, `userid` int, `totalpoints` double, `currentpoints` double);");
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
}
}
diff --git a/com/gamingmesh/jobs/dao/JobsDAOSQLite.java b/com/gamingmesh/jobs/dao/JobsDAOSQLite.java
index 9a290d3c..9f560aa2 100644
--- a/com/gamingmesh/jobs/dao/JobsDAOSQLite.java
+++ b/com/gamingmesh/jobs/dao/JobsDAOSQLite.java
@@ -25,6 +25,8 @@ import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map.Entry;
+import org.bukkit.Bukkit;
+
import com.gamingmesh.jobs.Jobs;
import com.gamingmesh.jobs.container.PlayerInfo;
import com.gamingmesh.jobs.stuff.UUIDUtil;
@@ -266,11 +268,18 @@ public class JobsDAOSQLite extends JobsDAO {
}
if (noJobsdata) {
dropDataBase("jobs");
- createDefaultJobsBase();
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "jobs` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
+ } catch (SQLException e) {
+ }
convertJobs = false;
}
if (convertJobs) {
+
+ Bukkit.getConsoleSender().sendMessage("convert jobs table from byte");
+
Jobs.getPluginLogger().info("Converting byte uuids to string. This could take a long time!!!");
try {
executeSQL("CREATE TABLE `" + getPrefix()
@@ -335,7 +344,11 @@ public class JobsDAOSQLite extends JobsDAO {
}
if (noArchivedata) {
dropDataBase("archive");
- createDefaultArchiveBase();
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "archive` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
+ } catch (SQLException e) {
+ }
convertArchive = false;
}
@@ -401,7 +414,11 @@ public class JobsDAOSQLite extends JobsDAO {
}
if (nodata) {
dropDataBase("log");
- createDefaultLogBase();
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "log` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `time` bigint, `action` varchar(20), `itemname` varchar(60), `count` int, `money` double, `exp` double);");
+ } catch (SQLException e) {
+ }
convertLog = false;
}
@@ -510,279 +527,275 @@ public class JobsDAOSQLite extends JobsDAO {
}
}
- if (rows == 0) {
- HashMap tempMap = new HashMap();
- PreparedStatement prestJobs = null;
- try {
- prestJobs = conn.prepareStatement("SELECT DISTINCT(player_uuid),username FROM " + getPrefix() + "jobs;");
- ResultSet res = prestJobs.executeQuery();
- while (res.next()) {
- tempMap.put(res.getString("player_uuid"), res.getString("username"));
- }
- } finally {
- if (prestJobs != null) {
- try {
- prestJobs.close();
- } catch (SQLException e) {
- }
- }
+ if (rows != 0)
+ return;
+
+ HashMap tempMap = new HashMap();
+ PreparedStatement prestJobs = null;
+ try {
+ prestJobs = conn.prepareStatement("SELECT * FROM " + getPrefix() + "jobs;");
+ ResultSet res = prestJobs.executeQuery();
+ while (res.next()) {
+ Bukkit.getConsoleSender().sendMessage(res.getString("player_uuid") + " -> " + res.getString("username"));
+ tempMap.put(res.getString("player_uuid"), res.getString("username"));
}
- PreparedStatement prestArchive = null;
- try {
- prestArchive = conn.prepareStatement("SELECT DISTINCT(player_uuid),username FROM " + getPrefix() + "archive;");
- ResultSet res = prestArchive.executeQuery();
- while (res.next()) {
- tempMap.put(res.getString("player_uuid"), res.getString("username"));
+ } finally {
+ if (prestJobs != null) {
+ try {
+ prestJobs.close();
+ } catch (SQLException e) {
}
- if (res != null)
- res.close();
- } finally {
- if (prestArchive != null) {
- try {
- prestArchive.close();
- } catch (SQLException e) {
- }
- }
- }
- PreparedStatement prestLog = null;
- try {
- prestLog = conn.prepareStatement("SELECT DISTINCT(player_uuid),username FROM " + getPrefix() + "log;");
- ResultSet res = prestLog.executeQuery();
- while (res.next()) {
- tempMap.put(res.getString("player_uuid"), res.getString("username"));
- }
- if (res != null)
- res.close();
- } finally {
- if (prestLog != null) {
- try {
- prestLog.close();
- } catch (SQLException e) {
- }
- }
- }
-
- try {
- executeSQL("CREATE TABLE `" + getPrefix()
- + "users` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_uuid` varchar(36) NOT NULL, `username` varchar(20));");
- } catch (Exception e) {
- }
- PreparedStatement prestUsers = null;
- try {
- prestUsers = conn.prepareStatement("INSERT INTO `" + getPrefix() + "users` (`player_uuid`, `username`) VALUES (?, ?);");
- conn.setAutoCommit(false);
- for (Entry users : tempMap.entrySet()) {
- prestUsers.setString(1, users.getKey());
- prestUsers.setString(2, users.getValue());
- prestUsers.addBatch();
- }
- prestUsers.executeBatch();
- conn.commit();
- conn.setAutoCommit(true);
- } finally {
- if (prestUsers != null) {
- try {
- prestUsers.close();
- } catch (SQLException e) {
- }
- }
- }
-
- HashMap tempPlayerMap = new HashMap();
-
- PreparedStatement prestUsers2 = null;
- try {
- prestUsers2 = conn.prepareStatement("SELECT * FROM " + getPrefix() + "users;");
- ResultSet res = prestUsers2.executeQuery();
- while (res.next()) {
- tempPlayerMap.put(res.getString("player_uuid"), new PlayerInfo(res.getString("username"), res.getInt("id")));
- }
- if (res != null)
- res.close();
- } finally {
- if (prestUsers2 != null) {
- try {
- prestUsers2.close();
- } catch (SQLException e) {
- }
- }
- }
-
- // Modifying jobs main table
- try {
- executeSQL("ALTER TABLE `" + getPrefix() + "jobs` ADD COLUMN `userid` int;");
- } catch (Exception e) {
- }
- PreparedStatement prestJobsT = null;
- try {
- prestJobsT = conn.prepareStatement("UPDATE `" + getPrefix() + "jobs` SET `userid` = ? WHERE `player_uuid` = ?;");
- conn.setAutoCommit(false);
- for (Entry users : tempPlayerMap.entrySet()) {
- prestJobsT.setInt(1, users.getValue().getID());
- prestJobsT.setString(2, users.getKey());
- prestJobsT.addBatch();
- }
- prestJobsT.executeBatch();
- conn.commit();
- conn.setAutoCommit(true);
- } finally {
- if (prestJobsT != null) {
- try {
- prestJobsT.close();
- } catch (SQLException e) {
- }
- }
- }
-
- // dropping 2 columns
- try {
- executeSQL("CREATE TABLE `" + getPrefix()
- + "jobs_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
- } catch (Exception e) {
- }
-
- PreparedStatement pst111 = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "jobs`;");
- ResultSet rs11 = pst111.executeQuery();
- PreparedStatement insert11 = null;
- while (rs11.next()) {
- String uuid = UUIDUtil.fromBytes(rs11.getBytes("player_uuid")).toString();
- if (uuid != null) {
- insert11 = conn.prepareStatement("INSERT INTO `" + getPrefix() + "jobs_temp` (`userid`, `job`, `experience`, `level`) VALUES (?, ?, ?, ?);");
- insert11.setInt(1, rs11.getInt("userid"));
- insert11.setString(2, rs11.getString("job"));
- insert11.setInt(3, rs11.getInt("experience"));
- insert11.setInt(4, rs11.getInt("level"));
- insert11.execute();
- }
- }
- rs11.close();
- if (insert11 != null)
- insert11.close();
- try {
- executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "jobs`;");
- executeSQL("ALTER TABLE `" + getPrefix() + "jobs_temp` RENAME TO `" + getPrefix() + "jobs`;");
- } catch (Exception e) {
- }
-
- // Modifying jobs archive table
- try {
- executeSQL("ALTER TABLE `" + getPrefix() + "archive` ADD COLUMN `userid` int;");
- } catch (Exception e) {
- }
- PreparedStatement prestArchiveT = null;
- try {
- prestArchiveT = conn.prepareStatement("UPDATE `" + getPrefix() + "archive` SET `userid` = ? WHERE `player_uuid` = ?;");
- conn.setAutoCommit(false);
- for (Entry users : tempPlayerMap.entrySet()) {
- prestArchiveT.setInt(1, users.getValue().getID());
- prestArchiveT.setString(2, users.getKey());
- prestArchiveT.addBatch();
- }
- prestArchiveT.executeBatch();
- conn.commit();
- conn.setAutoCommit(true);
- } finally {
- if (prestArchiveT != null) {
- try {
- prestArchiveT.close();
- } catch (SQLException e) {
- }
- }
- }
-
- // dropping 2 columns
- try {
- executeSQL("CREATE TABLE `" + getPrefix()
- + "archive_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
- } catch (Exception e) {
- }
-
- PreparedStatement pstArchive = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "archive`;");
- ResultSet rsArchive = pstArchive.executeQuery();
- PreparedStatement insertArchive = null;
- while (rsArchive.next()) {
- String uuid = UUIDUtil.fromBytes(rsArchive.getBytes("player_uuid")).toString();
- if (uuid != null) {
- insertArchive = conn.prepareStatement("INSERT INTO `" + getPrefix() + "archive_temp` (`userid`, `job`, `experience`, `level`) VALUES (?, ?, ?, ?);");
- insertArchive.setInt(1, rsArchive.getInt("userid"));
- insertArchive.setString(2, rsArchive.getString("job"));
- insertArchive.setInt(3, rsArchive.getInt("experience"));
- insertArchive.setInt(4, rsArchive.getInt("level"));
- insertArchive.execute();
- }
- }
- if (rsArchive != null)
- rsArchive.close();
- if (insertArchive != null)
- insertArchive.close();
- if (pstArchive != null)
- pstArchive.close();
- executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "archive`;");
- try {
- executeSQL("ALTER TABLE `" + getPrefix() + "archive_temp` RENAME TO `" + getPrefix() + "archive`;");
- } catch (Exception e) {
- }
- // Modifying jobs log table
- PreparedStatement prestPreLog = null;
- try {
- executeSQL("ALTER TABLE `" + getPrefix() + "log` ADD COLUMN `userid` int;");
- prestPreLog = conn.prepareStatement("UPDATE `" + getPrefix() + "log` SET `userid` = ? WHERE `player_uuid` = ?;");
- conn.setAutoCommit(false);
- for (Entry users : tempPlayerMap.entrySet()) {
- prestPreLog.setInt(1, users.getValue().getID());
- prestPreLog.setString(2, users.getKey());
- prestPreLog.addBatch();
- }
- prestPreLog.executeBatch();
- conn.commit();
- conn.setAutoCommit(true);
- } finally {
- if (prestPreLog != null) {
- try {
- prestPreLog.close();
- } catch (SQLException e) {
- }
- }
- }
-
- // dropping 2 columns
- try {
- executeSQL("CREATE TABLE `" + getPrefix()
- + "log_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `time` bigint, `action` varchar(20), `itemname` varchar(60), `count` int, `money` double, `exp` double);");
- } catch (Exception e) {
- }
-
- PreparedStatement prestLogT = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "log`;");
- ResultSet rsLog = prestLogT.executeQuery();
- PreparedStatement insertLog = null;
- while (rsLog.next()) {
- String uuid = UUIDUtil.fromBytes(rsLog.getBytes("player_uuid")).toString();
- if (uuid != null) {
- insertLog = conn.prepareStatement("INSERT INTO `" + getPrefix()
- + "log_temp` (`userid`, `time`, `action`, `itemname`, `count`, `money`, `exp`) VALUES (?, ?, ?, ?, ?, ?, ?);");
- insertLog.setInt(1, rsLog.getInt("userid"));
- insertLog.setLong(2, rsLog.getLong("time"));
- insertLog.setString(3, rsLog.getString("action"));
- insertLog.setString(4, rsLog.getString("itemname"));
- insertLog.setInt(5, rsLog.getInt("count"));
- insertLog.setDouble(6, rsLog.getDouble("money"));
- insertLog.setDouble(7, rsLog.getDouble("exp"));
- insertLog.execute();
- }
- }
- rsLog.close();
- if (insertLog != null)
- insertLog.close();
-
- try {
- executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "log`;");
- executeSQL("ALTER TABLE `" + getPrefix() + "log_temp` RENAME TO `" + getPrefix() + "log`;");
-
- // Create new points table
- createDefaultPointsBase();
- } catch (Exception e) {
}
}
+ PreparedStatement prestArchive = null;
+ try {
+ prestArchive = conn.prepareStatement("SELECT * FROM " + getPrefix() + "archive;");
+ ResultSet res = prestArchive.executeQuery();
+ while (res.next()) {
+ tempMap.put(res.getString("player_uuid"), res.getString("username"));
+ Bukkit.getConsoleSender().sendMessage(res.getString("player_uuid") + " -> " + res.getString("username"));
+ }
+ if (res != null)
+ res.close();
+ } finally {
+ if (prestArchive != null) {
+ try {
+ prestArchive.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "users` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `player_uuid` varchar(36) NOT NULL, `username` varchar(20));");
+ } catch (Exception e) {
+ }
+ PreparedStatement prestUsers = null;
+ try {
+ prestUsers = conn.prepareStatement("INSERT INTO `" + getPrefix() + "users` (`player_uuid`, `username`) VALUES (?, ?);");
+ conn.setAutoCommit(false);
+ for (Entry users : tempMap.entrySet()) {
+ Bukkit.getConsoleSender().sendMessage(users.getKey() + " -----> " + users.getValue());
+ prestUsers.setString(1, users.getKey());
+ prestUsers.setString(2, users.getValue());
+ prestUsers.addBatch();
+ }
+ prestUsers.executeBatch();
+ conn.commit();
+ conn.setAutoCommit(true);
+ } finally {
+ if (prestUsers != null) {
+ try {
+ prestUsers.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ HashMap tempPlayerMap = new HashMap();
+
+ PreparedStatement prestUsers2 = null;
+ try {
+ prestUsers2 = conn.prepareStatement("SELECT * FROM " + getPrefix() + "users;");
+ ResultSet res = prestUsers2.executeQuery();
+ while (res.next()) {
+ tempPlayerMap.put(res.getString("player_uuid"), new PlayerInfo(res.getString("username"), res.getInt("id")));
+ }
+ if (res != null)
+ res.close();
+ } finally {
+ if (prestUsers2 != null) {
+ try {
+ prestUsers2.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ // Modifying jobs main table
+ try {
+ executeSQL("ALTER TABLE `" + getPrefix() + "jobs` ADD COLUMN `userid` int;");
+ } catch (Exception e) {
+ }
+ PreparedStatement prestJobsT = null;
+ try {
+ prestJobsT = conn.prepareStatement("UPDATE `" + getPrefix() + "jobs` SET `userid` = ? WHERE `player_uuid` = ?;");
+ conn.setAutoCommit(false);
+ for (Entry users : tempPlayerMap.entrySet()) {
+ prestJobsT.setInt(1, users.getValue().getID());
+ prestJobsT.setString(2, users.getKey());
+ prestJobsT.addBatch();
+ }
+ prestJobsT.executeBatch();
+ conn.commit();
+ conn.setAutoCommit(true);
+ } catch (Exception e) {
+ } finally {
+ if (prestJobsT != null) {
+ try {
+ prestJobsT.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ // dropping 2 columns
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "jobs_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
+ } catch (Exception e) {
+ }
+
+ PreparedStatement pst111 = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "jobs`;");
+ ResultSet rs11 = pst111.executeQuery();
+ PreparedStatement insert11 = null;
+ while (rs11.next()) {
+ String uuid = UUIDUtil.fromBytes(rs11.getBytes("player_uuid")).toString();
+ if (uuid != null) {
+ insert11 = conn.prepareStatement("INSERT INTO `" + getPrefix() + "jobs_temp` (`userid`, `job`, `experience`, `level`) VALUES (?, ?, ?, ?);");
+ insert11.setInt(1, rs11.getInt("userid"));
+ insert11.setString(2, rs11.getString("job"));
+ insert11.setInt(3, rs11.getInt("experience"));
+ insert11.setInt(4, rs11.getInt("level"));
+ insert11.execute();
+ }
+ }
+ rs11.close();
+ if (insert11 != null)
+ insert11.close();
+ try {
+ executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "jobs`;");
+ executeSQL("ALTER TABLE `" + getPrefix() + "jobs_temp` RENAME TO `" + getPrefix() + "jobs`;");
+ } catch (Exception e) {
+ }
+
+ // Modifying jobs archive table
+ try {
+ executeSQL("ALTER TABLE `" + getPrefix() + "archive` ADD COLUMN `userid` int;");
+ } catch (Exception e) {
+ }
+ PreparedStatement prestArchiveT = null;
+ try {
+ prestArchiveT = conn.prepareStatement("UPDATE `" + getPrefix() + "archive` SET `userid` = ? WHERE `player_uuid` = ?;");
+ conn.setAutoCommit(false);
+ for (Entry users : tempPlayerMap.entrySet()) {
+ prestArchiveT.setInt(1, users.getValue().getID());
+ prestArchiveT.setString(2, users.getKey());
+ prestArchiveT.addBatch();
+ }
+ prestArchiveT.executeBatch();
+ conn.commit();
+ conn.setAutoCommit(true);
+ } finally {
+ if (prestArchiveT != null) {
+ try {
+ prestArchiveT.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ // dropping 2 columns
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "archive_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `job` varchar(20), `experience` int, `level` int);");
+ } catch (Exception e) {
+ }
+
+ PreparedStatement pstArchive = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "archive`;");
+ ResultSet rsArchive = pstArchive.executeQuery();
+ PreparedStatement insertArchive = null;
+ while (rsArchive.next()) {
+ String uuid = UUIDUtil.fromBytes(rsArchive.getBytes("player_uuid")).toString();
+ if (uuid != null) {
+ insertArchive = conn.prepareStatement("INSERT INTO `" + getPrefix() + "archive_temp` (`userid`, `job`, `experience`, `level`) VALUES (?, ?, ?, ?);");
+ insertArchive.setInt(1, rsArchive.getInt("userid"));
+ insertArchive.setString(2, rsArchive.getString("job"));
+ insertArchive.setInt(3, rsArchive.getInt("experience"));
+ insertArchive.setInt(4, rsArchive.getInt("level"));
+ insertArchive.execute();
+ }
+ }
+ if (rsArchive != null)
+ rsArchive.close();
+ if (insertArchive != null)
+ insertArchive.close();
+ if (pstArchive != null)
+ pstArchive.close();
+ executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "archive`;");
+ try {
+ executeSQL("ALTER TABLE `" + getPrefix() + "archive_temp` RENAME TO `" + getPrefix() + "archive`;");
+ } catch (Exception e) {
+ }
+ // Modifying jobs log table
+ PreparedStatement prestPreLog = null;
+ try {
+ executeSQL("ALTER TABLE `" + getPrefix() + "log` ADD COLUMN `userid` int;");
+ prestPreLog = conn.prepareStatement("UPDATE `" + getPrefix() + "log` SET `userid` = ? WHERE `player_uuid` = ?;");
+ conn.setAutoCommit(false);
+ for (Entry users : tempPlayerMap.entrySet()) {
+ prestPreLog.setInt(1, users.getValue().getID());
+ prestPreLog.setString(2, users.getKey());
+ prestPreLog.addBatch();
+ }
+ prestPreLog.executeBatch();
+ conn.commit();
+ conn.setAutoCommit(true);
+ } finally {
+ if (prestPreLog != null) {
+ try {
+ prestPreLog.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+ // dropping 2 columns
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "log_temp` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `time` bigint, `action` varchar(20), `itemname` varchar(60), `count` int, `money` double, `exp` double);");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ PreparedStatement prestLogT = conn.prepareStatement("SELECT * FROM `" + getPrefix() + "log`;");
+ ResultSet rsLog = prestLogT.executeQuery();
+ PreparedStatement insertLog = null;
+ while (rsLog.next()) {
+ String uuid = UUIDUtil.fromBytes(rsLog.getBytes("player_uuid")).toString();
+ if (uuid != null) {
+ insertLog = conn.prepareStatement("INSERT INTO `" + getPrefix()
+ + "log_temp` (`userid`, `time`, `action`, `itemname`, `count`, `money`, `exp`) VALUES (?, ?, ?, ?, ?, ?, ?);");
+ insertLog.setInt(1, rsLog.getInt("userid"));
+ insertLog.setLong(2, rsLog.getLong("time"));
+ insertLog.setString(3, rsLog.getString("action"));
+ insertLog.setString(4, rsLog.getString("itemname"));
+ insertLog.setInt(5, rsLog.getInt("count"));
+ insertLog.setDouble(6, rsLog.getDouble("money"));
+ insertLog.setDouble(7, rsLog.getDouble("exp"));
+ insertLog.execute();
+ }
+ }
+ rsLog.close();
+ if (insertLog != null)
+ insertLog.close();
+
+ executeSQL("DROP TABLE IF EXISTS `" + getPrefix() + "log`;");
+ try {
+ executeSQL("ALTER TABLE `" + getPrefix() + "log_temp` RENAME TO `" + getPrefix() + "log`;");
+
+ // Create new points table
+ try {
+ executeSQL("CREATE TABLE `" + getPrefix()
+ + "points` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `userid` int, `totalpoints` double, `currentpoints` double);");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
}
private boolean createDefaultExploreBase() {
diff --git a/com/gamingmesh/jobs/economy/BufferedEconomy.java b/com/gamingmesh/jobs/economy/BufferedEconomy.java
index 0a6d5c90..0f0ca9ec 100644
--- a/com/gamingmesh/jobs/economy/BufferedEconomy.java
+++ b/com/gamingmesh/jobs/economy/BufferedEconomy.java
@@ -133,10 +133,9 @@ public class BufferedEconomy {
this.ServerAccount = Bukkit.getOfflinePlayer(ServerAccountname);
if (this.ServerTaxesAccount == null)
- this.ServerTaxesAccount = Bukkit.getOfflinePlayer(ServerAccountname);
+ this.ServerTaxesAccount = Bukkit.getOfflinePlayer(ServerTaxesAccountname);
if (Jobs.getGCManager().UseTaxes && Jobs.getGCManager().TransferToServerAccount && ServerTaxesAccount != null) {
-
economy.depositPlayer(ServerTaxesAccount, TaxesAmount);
if (ServerTaxesAccount.isOnline()) {
@@ -167,7 +166,7 @@ public class BufferedEconomy {
// If event is canceled, dont do anything
if (JobsPaymentEvent.isCancelled())
continue;
-
+
double newAmount = JobsPaymentEvent.getAmount();
payment.setAmount(newAmount);
diff --git a/com/gamingmesh/jobs/listeners/JobsListener.java b/com/gamingmesh/jobs/listeners/JobsListener.java
index acc8b8e9..a59ebef8 100644
--- a/com/gamingmesh/jobs/listeners/JobsListener.java
+++ b/com/gamingmesh/jobs/listeners/JobsListener.java
@@ -19,6 +19,7 @@
package com.gamingmesh.jobs.listeners;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -293,7 +294,7 @@ public class JobsListener implements Listener {
if (!Jobs.getGCManager().SignsEnabled)
return;
-
+
Block block = event.getBlock();
if (!(block.getState() instanceof Sign))
@@ -305,7 +306,7 @@ public class JobsListener implements Listener {
if (!ChatColor.stripColor(event.getLine(0)).equalsIgnoreCase("[Jobs]"))
return;
-
+
if (!signtype.equalsIgnoreCase("toplist") && !signtype.equalsIgnoreCase("gtoplist"))
return;
@@ -543,7 +544,14 @@ public class JobsListener implements Listener {
String name = null;
List lore = new ArrayList();
- Map enchants = iih.getEnchantments();
+ Map enchants = new HashMap();
+ try {
+ enchants = iih.getEnchantments();
+ } catch (NullPointerException e) {
+ return;
+ }
+ if (enchants.isEmpty())
+ return;
if (iih.hasItemMeta()) {
ItemMeta meta = iih.getItemMeta();
diff --git a/com/gamingmesh/jobs/nmsUtil/.gitignore b/com/gamingmesh/jobs/nmsUtil/.gitignore
index 676a5daf..142152c4 100644
--- a/com/gamingmesh/jobs/nmsUtil/.gitignore
+++ b/com/gamingmesh/jobs/nmsUtil/.gitignore
@@ -1,3 +1,4 @@
/v1_8.class
/v1_7.class
/v1_9.class
+/v1_10.class
diff --git a/com/gamingmesh/jobs/nmsUtil/v1_10.java b/com/gamingmesh/jobs/nmsUtil/v1_10.java
new file mode 100644
index 00000000..6869573d
--- /dev/null
+++ b/com/gamingmesh/jobs/nmsUtil/v1_10.java
@@ -0,0 +1,74 @@
+package com.gamingmesh.jobs.nmsUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Guardian;
+import org.bukkit.entity.Horse;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.Skeleton;
+import org.bukkit.entity.Zombie;
+import org.bukkit.entity.Horse.Variant;
+import org.bukkit.entity.Skeleton.SkeletonType;
+import org.bukkit.event.block.BlockPistonRetractEvent;
+import org.bukkit.inventory.ItemStack;
+
+import com.gamingmesh.jobs.NMS;
+
+public class v1_10 implements NMS {
+ @Override
+ public List getPistonRetractBlocks(BlockPistonRetractEvent event) {
+ List blocks = new ArrayList();
+ blocks.addAll(event.getBlocks());
+ return blocks;
+ }
+
+ @Override
+ public String getRealType(Entity entity) {
+ String name = entity.getType().name();
+ switch (entity.getType()) {
+ case GUARDIAN:
+ Guardian g = (Guardian) entity;
+ if (g.isElder())
+ name = "GuardianElder";
+ break;
+ case HORSE:
+ Horse horse = (Horse) entity;
+ if (horse.getVariant() == Variant.UNDEAD_HORSE)
+ name = "HorseZombie";
+ if (horse.getVariant() == Variant.SKELETON_HORSE)
+ name = "HorseSkeleton";
+ break;
+ case SKELETON:
+ Skeleton skeleton = (Skeleton) entity;
+ if (skeleton.getSkeletonType() == SkeletonType.WITHER)
+ name = "SkeletonWither";
+ if (skeleton.getSkeletonType() == SkeletonType.STRAY)
+ name = "SkeletonStray";
+ break;
+ case ZOMBIE:
+ Zombie zombie = (Zombie) entity;
+ if (zombie.isVillager())
+ return "ZombieVillager";
+ break;
+ default:
+ break;
+ }
+ return name;
+ }
+
+ @Override
+ public ItemStack getItemInMainHand(Player player) {
+ return player.getInventory().getItemInMainHand();
+ }
+
+ @Override
+ public Block getTargetBlock(Player player, int range) {
+ return player.getTargetBlock((Set) null, range);
+ }
+
+}
diff --git a/com/gamingmesh/jobs/nmsUtil/v1_7.java b/com/gamingmesh/jobs/nmsUtil/v1_7.java
index 73a50173..5e172ef1 100644
--- a/com/gamingmesh/jobs/nmsUtil/v1_7.java
+++ b/com/gamingmesh/jobs/nmsUtil/v1_7.java
@@ -5,7 +5,12 @@ import java.util.HashSet;
import java.util.List;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
+import org.bukkit.entity.Horse;
import org.bukkit.entity.Player;
+import org.bukkit.entity.Skeleton;
+import org.bukkit.entity.Zombie;
+import org.bukkit.entity.Horse.Variant;
+import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.inventory.ItemStack;
@@ -20,8 +25,30 @@ public class v1_7 implements NMS {
}
@Override
- public boolean isElderGuardian(Entity entity) {
- return false;
+ public String getRealType(Entity entity) {
+ String name = entity.getType().name();
+ switch (entity.getType()) {
+ case HORSE:
+ Horse horse = (Horse) entity;
+ if (horse.getVariant() == Variant.UNDEAD_HORSE)
+ name = "HorseZombie";
+ if (horse.getVariant() == Variant.SKELETON_HORSE)
+ name = "HorseSkeleton";
+ break;
+ case SKELETON:
+ Skeleton skeleton = (Skeleton) entity;
+ if (skeleton.getSkeletonType() == SkeletonType.WITHER)
+ name = "SkeletonWither";
+ break;
+ case ZOMBIE:
+ Zombie zombie = (Zombie) entity;
+ if (zombie.isVillager())
+ return "ZombieVillager";
+ break;
+ default:
+ break;
+ }
+ return name;
}
@SuppressWarnings("deprecation")
diff --git a/com/gamingmesh/jobs/nmsUtil/v1_8.java b/com/gamingmesh/jobs/nmsUtil/v1_8.java
index 7265011c..bb208240 100644
--- a/com/gamingmesh/jobs/nmsUtil/v1_8.java
+++ b/com/gamingmesh/jobs/nmsUtil/v1_8.java
@@ -8,7 +8,12 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Guardian;
+import org.bukkit.entity.Horse;
import org.bukkit.entity.Player;
+import org.bukkit.entity.Skeleton;
+import org.bukkit.entity.Zombie;
+import org.bukkit.entity.Horse.Variant;
+import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.inventory.ItemStack;
@@ -23,14 +28,37 @@ public class v1_8 implements NMS {
}
@Override
- public boolean isElderGuardian(Entity entity) {
- if (entity instanceof Guardian) {
- Guardian guardian = (Guardian) entity;
- if (guardian.isElder())
- return true;
+ public String getRealType(Entity entity) {
+ String name = entity.getType().name();
+ switch (entity.getType()) {
+ case GUARDIAN:
+ Guardian g = (Guardian) entity;
+ if (g.isElder())
+ name = "GuardianElder";
+ break;
+ case HORSE:
+ Horse horse = (Horse) entity;
+ if (horse.getVariant() == Variant.UNDEAD_HORSE)
+ name = "HorseZombie";
+ if (horse.getVariant() == Variant.SKELETON_HORSE)
+ name = "HorseSkeleton";
+ break;
+ case SKELETON:
+ Skeleton skeleton = (Skeleton) entity;
+ if (skeleton.getSkeletonType() == SkeletonType.WITHER)
+ name = "SkeletonWither";
+ break;
+ case ZOMBIE:
+ Zombie zombie = (Zombie) entity;
+ if (zombie.isVillager())
+ return "ZombieVillager";
+ break;
+ default:
+ break;
}
- return false;
+ return name;
}
+
@SuppressWarnings("deprecation")
@Override
public ItemStack getItemInMainHand(Player player) {
diff --git a/com/gamingmesh/jobs/nmsUtil/v1_9.class b/com/gamingmesh/jobs/nmsUtil/v1_9.class
index 6f0baca6..fcca0d67 100644
Binary files a/com/gamingmesh/jobs/nmsUtil/v1_9.class and b/com/gamingmesh/jobs/nmsUtil/v1_9.class differ
diff --git a/com/gamingmesh/jobs/nmsUtil/v1_9.java b/com/gamingmesh/jobs/nmsUtil/v1_9.java
index e813426f..7c5518a7 100644
--- a/com/gamingmesh/jobs/nmsUtil/v1_9.java
+++ b/com/gamingmesh/jobs/nmsUtil/v1_9.java
@@ -8,7 +8,12 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Guardian;
+import org.bukkit.entity.Horse;
import org.bukkit.entity.Player;
+import org.bukkit.entity.Skeleton;
+import org.bukkit.entity.Zombie;
+import org.bukkit.entity.Horse.Variant;
+import org.bukkit.entity.Skeleton.SkeletonType;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.inventory.ItemStack;
@@ -23,13 +28,35 @@ public class v1_9 implements NMS {
}
@Override
- public boolean isElderGuardian(Entity entity) {
- if (entity instanceof Guardian) {
- Guardian guardian = (Guardian) entity;
- if (guardian.isElder())
- return true;
+ public String getRealType(Entity entity) {
+ String name = entity.getType().name();
+ switch (entity.getType()) {
+ case GUARDIAN:
+ Guardian g = (Guardian) entity;
+ if (g.isElder())
+ name = "GuardianElder";
+ break;
+ case HORSE:
+ Horse horse = (Horse) entity;
+ if (horse.getVariant() == Variant.UNDEAD_HORSE)
+ name = "HorseZombie";
+ if (horse.getVariant() == Variant.SKELETON_HORSE)
+ name = "HorseSkeleton";
+ break;
+ case SKELETON:
+ Skeleton skeleton = (Skeleton) entity;
+ if (skeleton.getSkeletonType() == SkeletonType.WITHER)
+ name = "SkeletonWither";
+ break;
+ case ZOMBIE:
+ Zombie zombie = (Zombie) entity;
+ if (zombie.isVillager())
+ return "ZombieVillager";
+ break;
+ default:
+ break;
}
- return false;
+ return name;
}
@Override
diff --git a/com/gamingmesh/jobs/stuff/ActionBar.java b/com/gamingmesh/jobs/stuff/ActionBar.java
index 7b65a7b1..6623a54d 100644
--- a/com/gamingmesh/jobs/stuff/ActionBar.java
+++ b/com/gamingmesh/jobs/stuff/ActionBar.java
@@ -36,21 +36,22 @@ public class ActionBar {
private void getInfo() {
try {
- version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
-
+ String[] v = Bukkit.getServer().getClass().getPackage().getName().split("\\.");
+ version = v[v.length - 1];
// Translating version to integer for simpler use
try {
cleanVersion = Integer.parseInt(version.replace("v", "").replace("V", "").replace("_", "").replace("r", "").replace("R", ""));
+ cleanVersion *= 10;
} catch (NumberFormatException e) {
- // Fail save if it for some reason can't translate version to integer
- if (version.contains("v1_7"))
- cleanVersion = 1700;
- if (version.contains("v1_6"))
- cleanVersion = 1600;
- if (version.contains("v1_5"))
- cleanVersion = 1500;
+ // Fail safe if it for some reason can't translate version to integer
if (version.contains("v1_4"))
cleanVersion = 1400;
+ if (version.contains("v1_5"))
+ cleanVersion = 1500;
+ if (version.contains("v1_6"))
+ cleanVersion = 1600;
+ if (version.contains("v1_7"))
+ cleanVersion = 1700;
if (version.contains("v1_8_R1"))
cleanVersion = 1810;
if (version.contains("v1_8_R2"))
@@ -61,12 +62,12 @@ public class ActionBar {
cleanVersion = 1910;
if (version.contains("v1_9_R2"))
cleanVersion = 1920;
+ if (version.contains("v1_10_R1"))
+ cleanVersion = 11010;
}
- if (cleanVersion < 100)
- cleanVersion = cleanVersion * 10;
- if (cleanVersion < 1000)
- cleanVersion = cleanVersion * 10;
+ if (cleanVersion < 1400)
+ cleanVersion *= 10;
packetType = Class.forName(getPacketPlayOutChat());
Class> typeCraftPlayer = Class.forName(getCraftPlayerClasspath());
diff --git a/com/gamingmesh/jobs/stuff/Perm.java b/com/gamingmesh/jobs/stuff/Perm.java
index 2dfc45f3..15e7596e 100644
--- a/com/gamingmesh/jobs/stuff/Perm.java
+++ b/com/gamingmesh/jobs/stuff/Perm.java
@@ -1,16 +1,11 @@
package com.gamingmesh.jobs.stuff;
-import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
public class Perm {
- public static boolean hasPermission(OfflinePlayer player, String permission) {
- Permission p = new Permission(permission, PermissionDefault.FALSE);
- return ((Player) player).hasPermission(p);
- }
public static boolean hasPermission(CommandSender player, String permission) {
if (player instanceof Player)
@@ -19,6 +14,8 @@ public class Perm {
}
public static boolean hasPermission(Player player, String permission) {
+ if (player == null)
+ return false;
Permission p = new Permission(permission, PermissionDefault.FALSE);
return player.hasPermission(p);
}
diff --git a/jobConfig.yml b/jobConfig.yml
index 5cf721fc..9e0ba3c6 100644
--- a/jobConfig.yml
+++ b/jobConfig.yml
@@ -99,17 +99,23 @@ Jobs:
# Ghast
# Giant
# Guardian
+ # GuardianElder
# Horse
+ # HorseZombie
+ # HorseSkeleton
# Iron_golem
# Magma_cube
# Mushroom_cow
# Ocelot
# Pig
# Player
+ # Polar_Bear
# Rabbit
# Sheep
# Silverfish
# Skeleton
+ # SkeletonWither
+ # SkeletonStray
# Shulker
# Slime
# Snowman
@@ -120,6 +126,8 @@ Jobs:
# Wither
# Wolf
# Zombie
+ # ZombieVillager
+ # ZombieHusk
#
#
# NOTE: mob names are case sensitive.
diff --git a/plugin.yml b/plugin.yml
index 2b7f4a77..85432adf 100644
--- a/plugin.yml
+++ b/plugin.yml
@@ -1,7 +1,7 @@
name: Jobs
description: Jobs Plugin for the BukkitAPI
main: com.gamingmesh.jobs.JobsPlugin
-version: 3.3.3
+version: 3.4.0
author: phrstbrn
depend: [Vault]
softdepend: [CoreProtect, MythicMobs, McMMO]
@@ -14,6 +14,8 @@ permissions:
description: Grants access to all Jobs commands
children:
jobs.admin: true
+ jobs.autojoin.*:
+ default: false
jobs.admin:
description: Grants permissions as an admin
default: false