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