diff --git a/com/gamingmesh/jobs/Jobs.java b/com/gamingmesh/jobs/Jobs.java index 9a72b77e..975455ed 100644 --- a/com/gamingmesh/jobs/Jobs.java +++ b/com/gamingmesh/jobs/Jobs.java @@ -32,6 +32,8 @@ import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import com.gamingmesh.jobs.Gui.GuiManager; import com.gamingmesh.jobs.Signs.SignUtil; +import com.gamingmesh.jobs.api.JobsExpGainEvent; +import com.gamingmesh.jobs.api.JobsPaymentEvent; import com.gamingmesh.jobs.commands.JobsCommands; import com.gamingmesh.jobs.config.BossBarManager; import com.gamingmesh.jobs.config.ConfigManager; @@ -451,6 +453,11 @@ public class Jobs { paymentThread.start(); Jobs.getJobsDAO().loadPlayerData(); + + // Schedule + Jobs.getScheduleManager().load(); + if (Jobs.getGCManager().useGlobalBoostScheduler) + Jobs.getScheduleManager().scheduler(); } /** @@ -703,25 +710,48 @@ public class Jobs { if (income != 0D || points != 0D) { + BoostMultiplier FinalBoost = Jobs.getPlayerManager().getFinalBonus(Bukkit.getServer().getPlayer(jPlayer.getPlayerUUID()), Jobs.getNoneJob()); + + // Calculate income + Double amount = 0D; - if (income != 0D) - amount = income + ((income * multiplier) - income) + ((income * 1.0) - income) + ((income * Jobs.getNoneJob().getMoneyBoost()) - income); - - Double pointAmount = 0D; - if (points != 0D) - pointAmount = points + ((points * multiplier) - points) + ((points * 1.0) - points) + ((points * Jobs.getNoneJob().getPointBoost()) - points); - - if (Jobs.getGCManager().useDynamicPayment) { - double moneyBonus = (income * (jobNone.getBonus() / 100)); - amount += moneyBonus; - - double pointBonus = (points * (jobNone.getBonus() / 100)); - pointAmount += pointBonus; + if (income != 0D) { + amount = income + (income * FinalBoost.getMoneyBoost() / 100); + if (Jobs.getGCManager().useMinimumOveralPayment && income > 0) { + double maxLimit = income * Jobs.getGCManager().MinimumOveralPaymentLimit; + if (amount < maxLimit) { + amount = maxLimit; + } + } } - if (!isUnderMoneyLimit(dude, amount)) - return; + // Calculate points + Double pointAmount = 0D; + if (points != 0D) { + pointAmount = points + (points * FinalBoost.getPointsBoost() / 100); + if (Jobs.getGCManager().useMinimumOveralPoints && points > 0) { + double maxLimit = points * Jobs.getGCManager().MinimumOveralPaymentLimit; + if (pointAmount < maxLimit) { + pointAmount = maxLimit; + } + } + } + + if (!isUnderMoneyLimit(dude, amount)) { + amount = 0D; + if (Jobs.getGCManager().MoneyStopPoint) + pointAmount = 0D; + } + + if (!isUnderPointLimit(dude, pointAmount)) { + pointAmount = 0D; + if (Jobs.getGCManager().PointStopMoney) + amount = 0D; + } + if (amount == 0D && pointAmount == 0D) + return; + Jobs.getEconomy().pay(jPlayer, amount, pointAmount, 0.0); if (Jobs.getGCManager().LoggingUse) @@ -771,8 +801,9 @@ public class Jobs { BoostMultiplier FinalBoost = Jobs.getPlayerManager().getFinalBonus(Bukkit.getServer().getPlayer(jPlayer.getPlayerUUID()), prog.getJob()); if (multiplier != 0.0) - FinalBoost = new BoostMultiplier(FinalBoost.getMoney() + ((multiplier * 100) - 100), FinalBoost.getPoints() + ((multiplier * 100) - 100), FinalBoost - .getExp() + ((multiplier * 100) - 100)); + FinalBoost = new BoostMultiplier(FinalBoost.getMoneyBoost() + multiplier, + FinalBoost.getPointsBoost() + multiplier, + FinalBoost.getExpBoost() + multiplier); OfflinePlayer dude = jPlayer.getPlayer(); @@ -780,7 +811,7 @@ public class Jobs { Double amount = 0D; if (income != 0D) { - amount = income + (income * FinalBoost.getMoney() / 100); + amount = income + (income * FinalBoost.getMoneyBoost() / 100); if (Jobs.getGCManager().useMinimumOveralPayment && income > 0) { double maxLimit = income * Jobs.getGCManager().MinimumOveralPaymentLimit; if (amount < maxLimit) { @@ -793,7 +824,7 @@ public class Jobs { Double pointAmount = 0D; if (points != 0D) { - pointAmount = points + (points * FinalBoost.getPoints() / 100); + pointAmount = points + (points * FinalBoost.getPointsBoost() / 100); if (Jobs.getGCManager().useMinimumOveralPoints && points > 0) { double maxLimit = points * Jobs.getGCManager().MinimumOveralPaymentLimit; if (pointAmount < maxLimit) { @@ -803,7 +834,7 @@ public class Jobs { } // Calculate exp - double expAmount = exp + (exp * FinalBoost.getExp() / 100); + double expAmount = exp + (exp * FinalBoost.getExpBoost() / 100); if (Jobs.getGCManager().useMinimumOveralPayment && exp > 0) { double maxLimit = exp * Jobs.getGCManager().MinimumOveralPaymentLimit; @@ -850,6 +881,12 @@ public class Jobs { if (Jobs.getGCManager().LoggingUse) Loging.recordToLog(jPlayer, info, amount, expAmount); + // JobsPayment event + JobsExpGainEvent JobsExpGainEvent = new JobsExpGainEvent(jPlayer.getPlayer(), expAmount); + Bukkit.getServer().getPluginManager().callEvent(JobsExpGainEvent); + // If event is canceled, don't do anything + if (JobsExpGainEvent.isCancelled()) + continue; if (prog.addExperience(expAmount)) Jobs.getPlayerManager().performLevelUp(jPlayer, prog.getJob(), oldLevel); } diff --git a/com/gamingmesh/jobs/JobsPlugin.java b/com/gamingmesh/jobs/JobsPlugin.java index d09ffbd5..c6887d3d 100644 --- a/com/gamingmesh/jobs/JobsPlugin.java +++ b/com/gamingmesh/jobs/JobsPlugin.java @@ -88,7 +88,7 @@ public class JobsPlugin extends JavaPlugin { YmlMaker jobSchedule = new YmlMaker(this, "schedule.yml"); jobSchedule.saveDefaultConfig(); - + YmlMaker jobShopItems = new YmlMaker(this, "shopItems.yml"); jobShopItems.saveDefaultConfig(); @@ -144,8 +144,6 @@ public class JobsPlugin extends JavaPlugin { // all loaded properly. - if (Jobs.getGCManager().useGlobalBoostScheduler) - Jobs.getScheduleManager().scheduler(); Jobs.getScheduleManager().DateUpdater(); String message = ChatColor.translateAlternateColorCodes('&', "&e[Jobs] Plugin has been enabled succesfully."); @@ -156,6 +154,7 @@ public class JobsPlugin extends JavaPlugin { Jobs.getJobsDAO().loadExplore(); Jobs.getCommandManager().fillCommands(); + } @Override diff --git a/com/gamingmesh/jobs/NMS.java b/com/gamingmesh/jobs/NMS.java index 8c14e73a..b1af693a 100644 --- a/com/gamingmesh/jobs/NMS.java +++ b/com/gamingmesh/jobs/NMS.java @@ -12,6 +12,8 @@ public interface NMS { public List getPistonRetractBlocks(BlockPistonRetractEvent event); public boolean isElderGuardian(Entity entity); - + public ItemStack getItemInMainHand(Player player); + + public Block getTargetBlock(Player player, int range); } diff --git a/com/gamingmesh/jobs/PlayerManager.java b/com/gamingmesh/jobs/PlayerManager.java index 0ca46523..158410fb 100644 --- a/com/gamingmesh/jobs/PlayerManager.java +++ b/com/gamingmesh/jobs/PlayerManager.java @@ -50,7 +50,6 @@ 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; public class PlayerManager { @@ -103,21 +102,15 @@ public class PlayerManager { * @param playername */ public void playerJoin(Player player) { - long time = System.nanoTime(); JobsPlayer jPlayer = players.get(player.getName().toLowerCase()); if (jPlayer == null) { jPlayer = JobsPlayer.loadFromDao(Jobs.getJobsDAO(), player); - Debug.D("1. " + (System.nanoTime() - time)); JobsPlayer.loadLogFromDao(jPlayer); - Debug.D("2. " + (System.nanoTime() - time)); players.put(player.getName().toLowerCase(), jPlayer); } jPlayer.onConnect(); - Debug.D("3. " + (System.nanoTime() - time)); jPlayer.reloadHonorific(); - Debug.D("4. " + (System.nanoTime() - time)); Jobs.getPermissionHandler().recalculatePermissions(jPlayer); - Debug.D("5. " + (System.nanoTime() - time)); return; } @@ -127,14 +120,12 @@ public class PlayerManager { */ public void playerQuit(Player player) { if (Jobs.getGCManager().saveOnDisconnect()) { - Debug.D("save on disc"); JobsPlayer jPlayer = players.remove(player.getName().toLowerCase()); if (jPlayer != null) { jPlayer.save(Jobs.getJobsDAO()); jPlayer.onDisconnect(); } } else { - Debug.D("dont save"); JobsPlayer jPlayer = players.get(player.getName().toLowerCase()); if (jPlayer != null) { jPlayer.onDisconnect(); @@ -199,7 +190,6 @@ public class PlayerManager { * @return the player job info of the player */ public JobsPlayer getJobsPlayerOffline(String playerName) { - Debug.D("Getting offline player data"); JobsPlayer jPlayer = players.get(playerName.toLowerCase()); if (jPlayer != null) return jPlayer; @@ -229,8 +219,6 @@ public class PlayerManager { jPlayer.reloadLimits(); } - Debug.D("Offline player UID " + jPlayer.getUserId()); - Jobs.getJobsDAO().loadPoints(jPlayer); JobsPlayer.loadLogFromDao(jPlayer); @@ -714,15 +702,15 @@ public class PlayerManager { BoostMultiplier itemboost = Jobs.getPlayerManager().getItemBoost(prog, iih); - data = new BoostMultiplier(data.getMoney() + itemboost.getMoney(), - data.getPoints() + itemboost.getPoints(), - data.getExp() + itemboost.getExp()); + data = new BoostMultiplier(data.getMoneyBoost() + itemboost.getMoneyBoost(), + data.getPointsBoost() + itemboost.getPointsBoost(), + data.getExpBoost() + itemboost.getExpBoost()); for (ItemStack OneArmor : player.getInventory().getArmorContents()) { BoostMultiplier armorboost = Jobs.getPlayerManager().getItemBoost(prog, OneArmor); - data = new BoostMultiplier(data.getMoney() + armorboost.getMoney(), - data.getPoints() + armorboost.getPoints(), - data.getExp() + armorboost.getExp()); + data = new BoostMultiplier(data.getMoneyBoost() + armorboost.getMoneyBoost(), + data.getPointsBoost() + armorboost.getPointsBoost(), + data.getExpBoost() + armorboost.getExpBoost()); } return data; @@ -799,11 +787,11 @@ public class PlayerManager { BoostMultiplier itemboost = Jobs.getPlayerManager().getItemBoost(player, prog); - double IMoneyBoost = itemboost.getMoney() * 100.0 - 100.0; + double IMoneyBoost = itemboost.getMoneyBoost() * 100.0 - 100.0; IMoneyBoost = (int) (IMoneyBoost * 100D) / 100D; - double IPointBoost = itemboost.getPoints() * 100.0 - 100.0; + double IPointBoost = itemboost.getPointsBoost() * 100.0 - 100.0; IPointBoost = (int) (IPointBoost * 100D) / 100D; - double IExpBoost = itemboost.getExp() * 100.0 - 100.0; + double IExpBoost = itemboost.getExpBoost() * 100.0 - 100.0; IExpBoost = (int) (IExpBoost * 100D) / 100D; double RBoost = Jobs.getRestrictedAreaManager().getRestrictedMultiplier(player) * 100.0 - 100.0; diff --git a/com/gamingmesh/jobs/api/.gitignore b/com/gamingmesh/jobs/api/.gitignore index 5ba42b3f..de95662a 100644 --- a/com/gamingmesh/jobs/api/.gitignore +++ b/com/gamingmesh/jobs/api/.gitignore @@ -7,3 +7,4 @@ /JobsLevelUpEvent.class /JobsPaymentEvent.class /JobsChunkChangeEvent.class +/JobsExpGainEvent.class diff --git a/com/gamingmesh/jobs/api/JobsExpGainEvent.java b/com/gamingmesh/jobs/api/JobsExpGainEvent.java new file mode 100644 index 00000000..39641e4d --- /dev/null +++ b/com/gamingmesh/jobs/api/JobsExpGainEvent.java @@ -0,0 +1,42 @@ +package com.gamingmesh.jobs.api; + +import org.bukkit.OfflinePlayer; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public final class JobsExpGainEvent extends Event implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + private OfflinePlayer offlinePlayer; + private double exp; + private boolean cancelled; + + public JobsExpGainEvent(OfflinePlayer offlinePlayer, double exp) { + this.offlinePlayer = offlinePlayer; + this.exp = exp; + } + + public OfflinePlayer getPlayer() { + return this.offlinePlayer; + } + + public double getExp() { + return this.exp; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean cancel) { + cancelled = cancel; + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} \ No newline at end of file diff --git a/com/gamingmesh/jobs/commands/JobsCommands.java b/com/gamingmesh/jobs/commands/JobsCommands.java index 7f23a7fe..8ee4dfa2 100644 --- a/com/gamingmesh/jobs/commands/JobsCommands.java +++ b/com/gamingmesh/jobs/commands/JobsCommands.java @@ -33,6 +33,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.Debug; public class JobsCommands implements CommandExecutor { private static final String label = "jobs"; @@ -72,8 +73,6 @@ public class JobsCommands implements CommandExecutor { sender.sendMessage(Jobs.getLanguage().getMessage("general.error.notNumber")); return true; } - if (page < 1) - page = 1; return help(sender, page); } @@ -166,11 +165,15 @@ public class JobsCommands implements CommandExecutor { if (((commands.size() * 1.0) / (amountToShow * 1.0)) - TotalPages > 0) TotalPages++; if (start >= commands.size()) { - page = TotalPages; start = page * amountToShow; end = start + amountToShow; } + if (page > TotalPages || page < 1) { + Jobs.getActionBar().send(sender, Jobs.getLanguage().getMessage("general.error.noHelpPage")); + return true; + } + sender.sendMessage(Jobs.getLanguage().getMessage("command.help.output.title")); sender.sendMessage(Jobs.getLanguage().getMessage("command.help.output.page", "[1]", page, "[2]", TotalPages)); @@ -447,18 +450,16 @@ public class JobsCommands implements CommandExecutor { // Jobs.getPlayerManager().getFinalBonus(player, prog) - income = income + (income * finalBoost.getMoney() / 100); - ChatColor incomeColor = income >= 0 ? ChatColor.GREEN : ChatColor.DARK_RED; + income = income + (income * finalBoost.getMoneyBoost() / 100); + String incomeColor = income >= 0 ? "" : ChatColor.DARK_RED.toString(); double xp = info.getExperience(level, numjobs); - xp = xp + (xp * finalBoost.getExp() / 100); - ChatColor xpColor = xp >= 0 ? ChatColor.YELLOW : ChatColor.GRAY; - String xpString = String.format("%.2f xp", xp); + xp = xp + (xp * finalBoost.getExpBoost() / 100); + String xpColor = xp >= 0 ? "" : ChatColor.GRAY.toString(); double points = info.getPoints(level, numjobs); - points = points + (points * finalBoost.getPoints() / 100); - ChatColor pointsColor = xp >= 0 ? ChatColor.GOLD : ChatColor.GRAY; - String pointsString = String.format("%.2f points ", points); + points = points + (points * finalBoost.getPointsBoost() / 100); + String pointsColor = xp >= 0 ? "" : ChatColor.RED.toString(); message.append(" "); @@ -468,20 +469,14 @@ public class JobsCommands implements CommandExecutor { else message.append(" -> "); - if (income != 0.0) { - message.append(incomeColor.toString()); - message.append(Jobs.getEconomy().format(income)); - message.append(" "); - } + if (income != 0.0) + message.append(Jobs.getLanguage().getMessage("command.info.help.money", "%money%", incomeColor + String.format("%.2f", income))); - if (points != 0.0) { - message.append(pointsColor.toString()); - message.append(pointsString); - } + if (points != 0.0) + message.append(Jobs.getLanguage().getMessage("command.info.help.points", "%points%", pointsColor + String.format("%.2f", points))); - message.append(xpColor.toString()); - message.append(xpString); - message.append(" "); + if (xp != 0.0) + message.append(Jobs.getLanguage().getMessage("command.info.help.exp", "%exp%", xpColor + String.format("%.2f", xp))); if (info.getFromLevel() > 1 && info.getUntilLevel() != -1) message.append(Jobs.getLanguage().getMessage("command.info.help.levelRange", "%levelFrom%", info.getFromLevel(), "%levelUntil%", info.getUntilLevel())); @@ -515,6 +510,8 @@ public class JobsCommands implements CommandExecutor { String message = ""; String pos = ChatColor.DARK_GREEN + "\u258F"; String pros = ChatColor.YELLOW + "\u258F"; + if (current < 0) + current = 0; int percentage = (int) ((current * 50.0) / max); for (int i = 0; i < percentage; i++) { message += pos; diff --git a/com/gamingmesh/jobs/commands/list/.gitignore b/com/gamingmesh/jobs/commands/list/.gitignore index d494fd62..afb25108 100644 --- a/com/gamingmesh/jobs/commands/list/.gitignore +++ b/com/gamingmesh/jobs/commands/list/.gitignore @@ -43,3 +43,4 @@ /shop.class /bonus.class /editpoints.class +/blockinfo.class diff --git a/com/gamingmesh/jobs/commands/list/blockinfo.java b/com/gamingmesh/jobs/commands/list/blockinfo.java new file mode 100644 index 00000000..92110460 --- /dev/null +++ b/com/gamingmesh/jobs/commands/list/blockinfo.java @@ -0,0 +1,47 @@ +package com.gamingmesh.jobs.commands.list; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import com.gamingmesh.jobs.Jobs; +import com.gamingmesh.jobs.JobsPlugin; +import com.gamingmesh.jobs.commands.Cmd; +import com.gamingmesh.jobs.commands.JobCommand; + +public class blockinfo implements Cmd { + + @SuppressWarnings("deprecation") + @JobCommand(1450) + public boolean perform(JobsPlugin plugin, final CommandSender sender, final String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage(Jobs.getLanguage().getMessage("general.error.ingame")); + return false; + } + + if (args.length != 0) { + Jobs.getCommandManager().sendUsage(sender, "blockinfo"); + return true; + } + + Player player = (Player) sender; + + Block block = Jobs.getNms().getTargetBlock(player, 15); + + if (block == null || block.getState().getType() == Material.AIR) + return true; + + String dataString = block.getData() == 0 ? "" : "-" + block.getData(); + + 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.usage", "%first%", block.getTypeId() + dataString, + "%second%", block.getType().name() + dataString)); + sender.sendMessage(Jobs.getLanguage().getMessage("general.info.separator")); + + return true; + } + +} diff --git a/com/gamingmesh/jobs/commands/list/bonus.java b/com/gamingmesh/jobs/commands/list/bonus.java index b08ae612..43f2ef40 100644 --- a/com/gamingmesh/jobs/commands/list/bonus.java +++ b/com/gamingmesh/jobs/commands/list/bonus.java @@ -52,11 +52,11 @@ public class bonus implements Cmd { BoostMultiplier itemboost = Jobs.getPlayerManager().getItemBoost(player, job); - double IMoneyBoost = itemboost.getMoney() * 100.0 - 100.0; + double IMoneyBoost = itemboost.getMoneyBoost() * 100.0 - 100.0; IMoneyBoost = (int) (IMoneyBoost * 100D) / 100D; - double IPointBoost = itemboost.getPoints() * 100.0 - 100.0; + double IPointBoost = itemboost.getPointsBoost() * 100.0 - 100.0; IPointBoost = (int) (IPointBoost * 100D) / 100D; - double IExpBoost = itemboost.getExp() * 100.0 - 100.0; + double IExpBoost = itemboost.getExpBoost() * 100.0 - 100.0; IExpBoost = (int) (IExpBoost * 100D) / 100D; double RBoost = Jobs.getRestrictedAreaManager().getRestrictedMultiplier(player) * 100.0 - 100.0; diff --git a/com/gamingmesh/jobs/commands/list/browse.java b/com/gamingmesh/jobs/commands/list/browse.java index 7f9176f4..706de354 100644 --- a/com/gamingmesh/jobs/commands/list/browse.java +++ b/com/gamingmesh/jobs/commands/list/browse.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import com.gamingmesh.jobs.Jobs; import com.gamingmesh.jobs.JobsPlugin; @@ -57,7 +58,18 @@ public class browse implements Cmd { } if (sender instanceof Player && Jobs.getGCManager().JobsGUIOpenOnBrowse) { - ((Player) sender).openInventory(Jobs.getGUIManager().CreateJobsGUI((Player) sender)); + Inventory inv = null; + try { + inv = Jobs.getGUIManager().CreateJobsGUI((Player) sender); + } catch (Exception e) { + ((Player) sender).closeInventory(); + Jobs.getGUIManager().GuiList.remove(((Player) sender).getName()); + return true; + } + if (inv == null) + return true; + + ((Player) sender).openInventory(inv); } if (Jobs.getGCManager().JobsGUIShowChatBrowse) { diff --git a/com/gamingmesh/jobs/commands/list/join.java b/com/gamingmesh/jobs/commands/list/join.java index a1d373fd..99a1deae 100644 --- a/com/gamingmesh/jobs/commands/list/join.java +++ b/com/gamingmesh/jobs/commands/list/join.java @@ -2,6 +2,7 @@ package com.gamingmesh.jobs.commands.list; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; import com.gamingmesh.jobs.Jobs; import com.gamingmesh.jobs.JobsPlugin; @@ -11,12 +12,11 @@ import com.gamingmesh.jobs.container.Job; import com.gamingmesh.jobs.container.JobsPlayer; import com.gamingmesh.jobs.stuff.ChatColor; - public class join implements Cmd { @JobCommand(100) public boolean perform(JobsPlugin plugin, final CommandSender sender, final String[] args) { - if (!(sender instanceof Player)){ + if (!(sender instanceof Player)) { sender.sendMessage(Jobs.getLanguage().getMessage("general.error.ingame")); return false; } @@ -27,9 +27,20 @@ public class join implements Cmd { } if (args.length == 0) { - if (sender instanceof Player && Jobs.getGCManager().JobsGUIOpenOnJoin) - ((Player) sender).openInventory(Jobs.getGUIManager().CreateJobsGUI((Player) sender)); - else + if (sender instanceof Player && Jobs.getGCManager().JobsGUIOpenOnJoin) { + Inventory inv = null; + try { + inv = Jobs.getGUIManager().CreateJobsGUI((Player) sender); + } catch (Exception e) { + ((Player) sender).closeInventory(); + Jobs.getGUIManager().GuiList.remove(((Player) sender).getName()); + return true; + } + if (inv == null) + return true; + + ((Player) sender).openInventory(inv); + } else return false; return true; } diff --git a/com/gamingmesh/jobs/config/BossBarManager.java b/com/gamingmesh/jobs/config/BossBarManager.java index 40758f0c..e2855f57 100644 --- a/com/gamingmesh/jobs/config/BossBarManager.java +++ b/com/gamingmesh/jobs/config/BossBarManager.java @@ -3,6 +3,8 @@ package com.gamingmesh.jobs.config; import java.text.DecimalFormat; import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -31,13 +33,18 @@ public class BossBarManager { if (player == null) return; - for (String one : player.getUpdateBossBarFor()) { + + List temp = new ArrayList(); + + temp.addAll(player.getUpdateBossBarFor()); + + for (String one : temp) { for (JobProgression oneJob : player.getJobProgression()) { if (one.equalsIgnoreCase(oneJob.getJob().getName())) ShowJobProgression(player, oneJob); } } - player.getUpdateBossBarFor().clear(); + player.clearUpdateBossBarFor(); } public synchronized void ShowJobProgression(final JobsPlayer player, final JobProgression jobProg) { diff --git a/com/gamingmesh/jobs/config/GeneralConfigManager.java b/com/gamingmesh/jobs/config/GeneralConfigManager.java index 2c7e5723..17454bcc 100644 --- a/com/gamingmesh/jobs/config/GeneralConfigManager.java +++ b/com/gamingmesh/jobs/config/GeneralConfigManager.java @@ -322,7 +322,6 @@ public class GeneralConfigManager { Jobs.getSignUtil().LoadSigns(); // Schedule Jobs.setScheduleManager(plugin); - Jobs.getScheduleManager().load(); // Shop Jobs.setShopManager(plugin); Jobs.getShopManager().load(); @@ -791,7 +790,6 @@ public class GeneralConfigManager { // writer.addComment("Gui.UseJobsBrowse", "Do you want to use jobs browse gui instead of chat text"); // UseJobsBrowse = c.get("Gui.UseJobsBrowse", true); - // Write back config try { c.getW().save(f); diff --git a/com/gamingmesh/jobs/config/LanguageManager.java b/com/gamingmesh/jobs/config/LanguageManager.java index 36d04268..03d6a152 100644 --- a/com/gamingmesh/jobs/config/LanguageManager.java +++ b/com/gamingmesh/jobs/config/LanguageManager.java @@ -35,6 +35,7 @@ public class LanguageManager { languages.add("fr"); languages.add("ru"); languages.add("cz"); + languages.add("es"); for (String lang : languages) { YmlMaker langFile = new YmlMaker((JavaPlugin) plugin, "locale" + File.separator + "messages_" + lang + ".yml"); @@ -65,6 +66,7 @@ public class LanguageManager { c.get("general.info.separator", "&7*******************************************************"); c.get("general.admin.error", "&cThere was an error in the command."); c.get("general.admin.success", "&eYour command has been performed."); + c.get("general.error.noHelpPage", "&cThere is no help page by this number!"); c.get("general.error.notNumber", "&ePlease use numbers!"); c.get("general.error.job", "&cThe job you have selected does not exist!"); c.get("general.error.permission", "&cYou do not have permission to do that!"); @@ -154,6 +156,13 @@ public class LanguageManager { c.get("command.editpoints.output.set", "&ePlayers (&6%playername%&e) points was set to &6%amount%"); c.get("command.editpoints.output.add", "&ePlayer (&6%playername%&e) got aditinal &6%amount% &epoints. Now he has &6%total%"); c.get("command.editpoints.output.take", "&ePlayer (&6%playername%&e) lost &6%amount% &epoints. Now he has &6%total%"); + + c.get("command.blockinfo.help.info", "Shows block information you looking at."); + c.get("command.blockinfo.help.args", ""); + c.get("command.blockinfo.output.name", " &eBlock name: &6%blockname%"); + c.get("command.blockinfo.output.id", " &eBlock id: &6%blockid%"); + c.get("command.blockinfo.output.data", " &eBlock data: &6%blockdata%"); + c.get("command.blockinfo.output.usage", " &eUsage: &6%first% &eor &6%second%"); c.get("command.stats.help.info", "Show the level you are in each job you are part of."); c.get("command.stats.help.args", "[playername]"); @@ -201,6 +210,10 @@ public class LanguageManager { c.get("command.info.help.levelRange", " &a(&e%levelFrom% &a- &e%levelUntil% &alevels)"); c.get("command.info.help.levelFrom", " &a(from &e%levelFrom% &alevel)"); c.get("command.info.help.levelUntil", " &a(until &e%levelUntil% &alevel)"); + + c.get("command.info.help.money", " &2%money%\u0024"); + c.get("command.info.help.points", " &6%points%points"); + c.get("command.info.help.exp", " &e%exp%xp"); c.get("command.info.gui.pickjob", "&ePick your job!"); c.get("command.info.gui.jobinfo", "&e[jobname] info!"); @@ -423,7 +436,7 @@ public class LanguageManager { c.get("scoreboard.gtopline", "&2Global top list"); c.get("scoreboard.lines", "&2%number%. &e%playername%"); -// keys = new ArrayList(c.getC().getConfigurationSection("signs.secondline").getKeys(false)); + Jobs.getGCManager().keys = new ArrayList(c.getC().getConfigurationSection("signs.secondline").getKeys(false)); // Write back config try { diff --git a/com/gamingmesh/jobs/config/NameTranslatorManager.java b/com/gamingmesh/jobs/config/NameTranslatorManager.java index 1afd7656..d2efe2be 100644 --- a/com/gamingmesh/jobs/config/NameTranslatorManager.java +++ b/com/gamingmesh/jobs/config/NameTranslatorManager.java @@ -571,10 +571,10 @@ public class NameTranslatorManager { c.get("ItemList.98:2.Name", "Cracked Stone Bricks"); c.get("ItemList.98:3.MCName", "stonebrick"); c.get("ItemList.98:3.Name", "Chiseled Stone Bricks"); - c.get("ItemList.99.MCName", "stonebrick"); - c.get("ItemList.99.Name", "Red Mushroom Cap"); - c.get("ItemList.100.MCName", "stonebrick"); - c.get("ItemList.100.Name", "Brown Mushroom Cap"); + c.get("ItemList.99.MCName", "brown_mushroom_block"); + c.get("ItemList.99.Name", "Brown Mushroom Cap"); + c.get("ItemList.100.MCName", "red_mushroom_block"); + c.get("ItemList.100.Name", "Red Mushroom Cap"); c.get("ItemList.101.MCName", "iron_bars"); c.get("ItemList.101.Name", "Iron Bars"); c.get("ItemList.102.MCName", "glass_pane"); diff --git a/com/gamingmesh/jobs/container/BoostMultiplier.java b/com/gamingmesh/jobs/container/BoostMultiplier.java index e2f5ab06..f2553b80 100644 --- a/com/gamingmesh/jobs/container/BoostMultiplier.java +++ b/com/gamingmesh/jobs/container/BoostMultiplier.java @@ -11,15 +11,15 @@ public class BoostMultiplier { this.exp = exp; } - public double getMoney() { + public double getMoneyBoost() { return this.money; } - public double getPoints() { + public double getPointsBoost() { return this.points; } - public double getExp() { + public double getExpBoost() { return this.exp; } } diff --git a/com/gamingmesh/jobs/container/JobsPlayer.java b/com/gamingmesh/jobs/container/JobsPlayer.java index c7a2230f..e4f8c71e 100644 --- a/com/gamingmesh/jobs/container/JobsPlayer.java +++ b/com/gamingmesh/jobs/container/JobsPlayer.java @@ -31,7 +31,6 @@ import com.gamingmesh.jobs.dao.JobsDAO; import com.gamingmesh.jobs.dao.JobsDAOData; import com.gamingmesh.jobs.resources.jfep.Parser; import com.gamingmesh.jobs.stuff.ChatColor; -import com.gamingmesh.jobs.stuff.Debug; import com.gamingmesh.jobs.stuff.Perm; public class JobsPlayer { @@ -104,15 +103,20 @@ public class JobsPlayer { Jobs.getJobsDAO().loadLog(jPlayer); } - public List getUpdateBossBarFor() { + public synchronized List getUpdateBossBarFor() { return this.updateBossBarFor; } - public List getBossBarInfo() { + public synchronized void clearUpdateBossBarFor() { + this.updateBossBarFor.clear(); + ; + } + + public synchronized List getBossBarInfo() { return this.barMap; } - public void hideBossBars() { + public synchronized void hideBossBars() { for (BossBarInfo one : this.barMap) { one.getBar().setVisible(false); } @@ -236,7 +240,7 @@ public class JobsPlayer { eq.setVariable("totallevel", TotalLevel); ExpLimit = (int) eq.getValue(); } - + /** * Reloads exp limit for this player. */ @@ -249,13 +253,13 @@ public class JobsPlayer { eq.setVariable("totallevel", TotalLevel); PointLimit = (int) eq.getValue(); } - + public void reloadLimits() { reloadMoney(); reloadExp(); reloadPoint(); } - + public int getMoneyLimit() { return this.MoneyLimit; } @@ -590,15 +594,11 @@ public class JobsPlayer { * @param dao */ public void save(JobsDAO dao) { - long time = System.nanoTime(); // synchronized (saveLock) { if (!isSaved()) { dao.save(this); - Debug.D("1 " + (System.nanoTime() - time)); dao.saveLog(this); - Debug.D("2 " + (System.nanoTime() - time)); dao.savePoints(this); - Debug.D("3 " + (System.nanoTime() - time)); setSaved(true); } // } diff --git a/com/gamingmesh/jobs/dao/JobsDAO.java b/com/gamingmesh/jobs/dao/JobsDAO.java index 3f91be47..c66178ca 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; @@ -633,7 +632,6 @@ public abstract class JobsDAO { } public void savePoints(JobsPlayer player) { - Debug.D("Saving points: " + player.getUserName()); JobsConnection conn = getConnection(); if (conn == null) return; diff --git a/com/gamingmesh/jobs/economy/BufferedEconomy.java b/com/gamingmesh/jobs/economy/BufferedEconomy.java index 9950ce4a..d638b038 100644 --- a/com/gamingmesh/jobs/economy/BufferedEconomy.java +++ b/com/gamingmesh/jobs/economy/BufferedEconomy.java @@ -187,13 +187,14 @@ public class BufferedEconomy { Bukkit.getScheduler().runTaskLater(plugin, new BufferedPaymentTask(this, economy, payment), i); } - - // Action bar stuff - Jobs.getActionBar().ShowActionBar(payment); - - if (payment.getOfflinePlayer().isOnline()) { - JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(payment.getOfflinePlayer().getName()); - Jobs.getBBManager().ShowJobProgression(jPlayer); + try { + // Action bar stuff + Jobs.getActionBar().ShowActionBar(payment); + if (payment.getOfflinePlayer().isOnline()) { + JobsPlayer jPlayer = Jobs.getPlayerManager().getJobsPlayer(payment.getOfflinePlayer().getName()); + Jobs.getBBManager().ShowJobProgression(jPlayer); + } + } catch (Exception e) { } } // empty payment cache diff --git a/com/gamingmesh/jobs/listeners/JobsListener.java b/com/gamingmesh/jobs/listeners/JobsListener.java index 28e155ee..acc8b8e9 100644 --- a/com/gamingmesh/jobs/listeners/JobsListener.java +++ b/com/gamingmesh/jobs/listeners/JobsListener.java @@ -293,7 +293,7 @@ public class JobsListener implements Listener { if (!Jobs.getGCManager().SignsEnabled) return; - + Block block = event.getBlock(); if (!(block.getState() instanceof Sign)) @@ -305,7 +305,7 @@ public class JobsListener implements Listener { if (!ChatColor.stripColor(event.getLine(0)).equalsIgnoreCase("[Jobs]")) return; - + if (!signtype.equalsIgnoreCase("toplist") && !signtype.equalsIgnoreCase("gtoplist")) return; diff --git a/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index c9fa69c6..a7089b2d 100644 --- a/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -82,6 +82,7 @@ import com.gamingmesh.jobs.container.ExploreRespond; import com.gamingmesh.jobs.container.JobProgression; import com.gamingmesh.jobs.container.JobsPlayer; import com.gamingmesh.jobs.stuff.ChatColor; +import com.gamingmesh.jobs.stuff.Debug; import com.gamingmesh.jobs.stuff.Perm; import com.google.common.base.Objects; @@ -304,7 +305,7 @@ public class JobsPaymentListener implements Listener { double multiplier = 0.0; if (McMMOlistener.mcMMOPresent) - multiplier = McMMOlistener.getMultiplier(player); + multiplier = McMMOlistener.getMultiplier(player) * 100 - 100; // Item in hand ItemStack item = Jobs.getNms().getItemInMainHand(player); @@ -331,11 +332,11 @@ public class JobsPaymentListener implements Listener { if (block == null) return; - + //disabling plugin in world if (!Jobs.getGCManager().canPerformActionInWorld(block.getWorld())) return; - + // make sure plugin is enabled if (!plugin.isEnabled()) return; @@ -856,9 +857,9 @@ public class JobsPaymentListener implements Listener { if (t.isTamed() && t.getOwner() instanceof Player) { pDamager = (Player) t.getOwner(); if (Perm.hasPermission(pDamager, "jobs.petpay") || Perm.hasPermission(pDamager, "jobs.vippetpay")) - PetPayMultiplier = Jobs.getGCManager().VipPetPay; + PetPayMultiplier = Jobs.getGCManager().VipPetPay * 100 - 100; else - PetPayMultiplier = Jobs.getGCManager().PetPay; + PetPayMultiplier = Jobs.getGCManager().PetPay * 100 - 100; } } } else @@ -881,10 +882,12 @@ public class JobsPaymentListener implements Listener { Double NearSpawnerMultiplier = 0.0; if (lVictim.hasMetadata(mobSpawnerMetadata)) - NearSpawnerMultiplier = jDamager.getVipSpawnerMultiplier(); + NearSpawnerMultiplier = jDamager.getVipSpawnerMultiplier() * 100 - 100; // Calulating multiplaier - double multiplier = ((NearSpawnerMultiplier * 100) - 100) + ((PetPayMultiplier * 100) - 100); + double multiplier = NearSpawnerMultiplier + PetPayMultiplier; + + Debug.D(multiplier + " " + NearSpawnerMultiplier + " " + PetPayMultiplier); if (lVictim instanceof Player && !lVictim.hasMetadata("NPC")) { Player VPlayer = (Player) lVictim; diff --git a/com/gamingmesh/jobs/listeners/PistonProtectionListener.java b/com/gamingmesh/jobs/listeners/PistonProtectionListener.java index 39402089..a58028a3 100644 --- a/com/gamingmesh/jobs/listeners/PistonProtectionListener.java +++ b/com/gamingmesh/jobs/listeners/PistonProtectionListener.java @@ -45,7 +45,12 @@ public class PistonProtectionListener implements Listener { @SuppressWarnings("deprecation") public static boolean CheckVegy(Block block) { for (String ConfigOneBlock : Jobs.getRestrictedBlockManager().restrictedBlocksTimer) { - int ConfigPlacedBlockId = Integer.valueOf(ConfigOneBlock.split("-")[0]); + int ConfigPlacedBlockId = 0; + try { + ConfigPlacedBlockId = Integer.parseInt(ConfigOneBlock.split("-")[0]); + } catch (NumberFormatException e) { + continue; + } if (block.getTypeId() == ConfigPlacedBlockId) { return true; } @@ -56,9 +61,16 @@ public class PistonProtectionListener implements Listener { @SuppressWarnings("deprecation") public static boolean checkVegybreak(Block block, Player player) { for (String ConfigOneBlock : Jobs.getRestrictedBlockManager().restrictedBlocksTimer) { - int ConfigPlacedBlockId = Integer.valueOf(ConfigOneBlock.split("-")[0]); + int ConfigPlacedBlockId = 0; + int ConfigPlacedBlockTimer = 0; + try { + ConfigPlacedBlockId = Integer.parseInt(ConfigOneBlock.split("-")[0]); + ConfigPlacedBlockTimer = Integer.parseInt(ConfigOneBlock.split("-")[1]); + } catch (NumberFormatException e) { + continue; + } if (block.getTypeId() == ConfigPlacedBlockId) { - if (CheckVegyTimer(block, Integer.valueOf(ConfigOneBlock.split("-")[1]), player)) { + if (CheckVegyTimer(block, ConfigPlacedBlockTimer, player)) { return true; } } @@ -83,7 +95,7 @@ public class PistonProtectionListener implements Listener { } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - public static void OnBlockMove(BlockPistonExtendEvent event) { + public void OnBlockMove(BlockPistonExtendEvent event) { //disabling plugin in world if (event.getBlock() != null && !Jobs.getGCManager().canPerformActionInWorld(event.getBlock().getWorld())) return; @@ -103,7 +115,7 @@ public class PistonProtectionListener implements Listener { } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public static void OnBlockRetractMove(BlockPistonRetractEvent event) { + public void OnBlockRetractMove(BlockPistonRetractEvent event) { //disabling plugin in world if (event.getBlock() != null && !Jobs.getGCManager().canPerformActionInWorld(event.getBlock().getWorld())) return; diff --git a/com/gamingmesh/jobs/nmsUtil/v1_7.java b/com/gamingmesh/jobs/nmsUtil/v1_7.java index deceac83..73a50173 100644 --- a/com/gamingmesh/jobs/nmsUtil/v1_7.java +++ b/com/gamingmesh/jobs/nmsUtil/v1_7.java @@ -1,6 +1,7 @@ package com.gamingmesh.jobs.nmsUtil; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import org.bukkit.block.Block; import org.bukkit.entity.Entity; @@ -28,4 +29,10 @@ public class v1_7 implements NMS { public ItemStack getItemInMainHand(Player player) { return player.getInventory().getItemInHand(); } + + @SuppressWarnings("deprecation") + @Override + public Block getTargetBlock(Player player, int range) { + return player.getTargetBlock((HashSet) null, range); + } } diff --git a/com/gamingmesh/jobs/nmsUtil/v1_8.java b/com/gamingmesh/jobs/nmsUtil/v1_8.java index 3d71cc4a..7265011c 100644 --- a/com/gamingmesh/jobs/nmsUtil/v1_8.java +++ b/com/gamingmesh/jobs/nmsUtil/v1_8.java @@ -2,6 +2,9 @@ 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; @@ -33,4 +36,9 @@ public class v1_8 implements NMS { public ItemStack getItemInMainHand(Player player) { return player.getInventory().getItemInHand(); } + + @Override + public Block getTargetBlock(Player player, int range) { + return player.getTargetBlock((Set) null, range); + } } diff --git a/com/gamingmesh/jobs/nmsUtil/v1_9.class b/com/gamingmesh/jobs/nmsUtil/v1_9.class index f373a3ee..6f0baca6 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 ece9a27f..e813426f 100644 --- a/com/gamingmesh/jobs/nmsUtil/v1_9.java +++ b/com/gamingmesh/jobs/nmsUtil/v1_9.java @@ -2,6 +2,9 @@ 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; @@ -28,10 +31,15 @@ public class v1_9 implements NMS { } return false; } - + @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/stuff/ActionBar.java b/com/gamingmesh/jobs/stuff/ActionBar.java index d9a38004..7b65a7b1 100644 --- a/com/gamingmesh/jobs/stuff/ActionBar.java +++ b/com/gamingmesh/jobs/stuff/ActionBar.java @@ -7,6 +7,7 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gamingmesh.jobs.Jobs; @@ -84,7 +85,6 @@ public class ActionBar { public void ShowActionBar(BufferedPayment payment) { - Debug.D("show action bar"); if (cleanVersion == -1) getInfo(); @@ -95,7 +95,6 @@ public class ActionBar { if (!Jobs.getActionbarToggleList().containsKey(playername) && Jobs.getGCManager().ActionBarsMessageByDefault) Jobs.getActionbarToggleList().put(playername, true); - if (playername == null) return; @@ -117,12 +116,12 @@ public class ActionBar { } } - public void send(Player receivingPacket, String msg) { + public void send(CommandSender receivingPacket, String msg) { try { if (msg == null || nmsChatSerializer == null) return; - if (cleanVersion < 1800) { + if (cleanVersion < 1800 || !(receivingPacket instanceof Player)) { receivingPacket.sendMessage(ChatColor.translateAlternateColorCodes('&', msg)); return; } diff --git a/jobConfig.yml b/jobConfig.yml index 8c6815be..5cf721fc 100644 --- a/jobConfig.yml +++ b/jobConfig.yml @@ -133,8 +133,10 @@ Jobs: Break: # block name/id (with optional sub-type) LOG: - # base income + # base income, can be not used if using point system income: 5.0 + # base points, can be not used if using income system + points: 5.0 # base experience experience: 5.0 # (OPTIONAL) from which level of this job player can get money for this action @@ -149,14 +151,17 @@ Jobs: TNTBreak: LOG: income: 5.0 + points: 5.0 experience: 5.0 # payment for placing a block Place: SAPLING: income: 1.0 + points: 1.0 experience: 1.0 WOOD: income: 2.0 + points: 2.0 experience: 2.0 # killing a mob Kill: @@ -455,47 +460,61 @@ Jobs: Break: 17-0: income: 2.5 + points: 2.5 experience: 2.5 17-1: income: 2.0 + points: 2.5 experience: 2.0 17-2: income: 2.5 + points: 2.5 experience: 2.5 17-3: income: 2.5 + points: 2.5 experience: 2.5 18-0: income: 0.5 + points: 0.5 experience: 0.5 18-1: income: 0.5 + points: 0.5 experience: 0.5 18-2: income: 0.5 + points: 0.5 experience: 0.5 18-3: income: 0.5 + points: 0.5 experience: 0.5 161-0: income: 0.5 + points: 0.5 experience: 0.5 161-1: income: 0.5 + points: 0.5 experience: 0.5 162-0: income: 2.5 + points: 2.5 experience: 2.5 162-1: income: 2.5 + points: 2.5 experience: 2.5 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 custom-kill: Woodcutter: income: 10.0 + points: 10.0 experience: 10.0 max-level: 200 Miner: @@ -660,232 +679,308 @@ Jobs: Place: STONE-2: income: 1.3 + points: 1.3 experience: 2 STONE-4: income: 1.3 + points: 1.3 experience: 2 STONE-6: income: 1.3 + points: 1.3 experience: 2 COBBLESTONE: income: 0.7 + points: 0.7 experience: 2 '5': income: 1.5 + points: 1.5 experience: 2 '35': income: 1.5 + points: 1.5 experience: 2 '41': income: 1.5 + points: 1.5 experience: 2 '42': income: 1.5 + points: 1.5 experience: 2 '44': income: 0.8 + points: 0.8 experience: 2 '45': income: 1.5 + points: 1.5 experience: 2 '47': income: 1.5 + points: 1.5 experience: 2 '48': income: 1.5 + points: 1.5 experience: 2 '49': income: 1.5 + points: 1.5 experience: 2 '53': income: 1.5 + points: 1.5 experience: 2 '54': income: 1.5 + points: 1.5 experience: 2 '57': income: 1.5 + points: 1.5 experience: 2 '58': income: 1.5 + points: 1.5 experience: 2 '61': income: 1.5 + points: 1.5 experience: 2 '65': income: 1.5 + points: 1.5 experience: 2 '67': income: 1.5 + points: 1.5 experience: 2 '79': income: 1.5 + points: 1.5 experience: 2 '80': income: 1.0 + points: 1.0 experience: 2 '84': income: 1.0 + points: 1.0 experience: 2 '85': income: 1.5 + points: 1.5 experience: 2 '89': income: 1.5 + points: 1.5 experience: 2 '95': income: 1.5 + points: 1.5 experience: 2 '96': income: 1.5 + points: 1.5 experience: 2 '98': income: 1.5 + points: 1.5 experience: 2 '101': income: 1.5 + points: 1.5 experience: 2 '102': income: 1.5 + points: 1.5 experience: 2 '107': income: 1.5 + points: 1.5 experience: 2 '108': income: 1.5 + points: 1.5 experience: 2 '109': income: 1.5 + points: 1.5 experience: 2 '112': income: 1.5 + points: 1.5 experience: 2 '113': income: 1.5 + points: 1.5 experience: 2 '114': income: 1.5 + points: 1.5 experience: 2 '116': income: 1.5 + points: 1.5 experience: 2 '120': income: 1.5 + points: 1.5 experience: 2 '123': income: 1.0 + points: 1.0 experience: 2 '126': income: 0.8 + points: 0.8 experience: 2 '128': income: 1.5 + points: 1.5 experience: 2 '130': income: 1.5 + points: 1.5 experience: 2 '133': income: 1.5 + points: 1.5 experience: 2 '134': income: 1.5 + points: 1.5 experience: 2 '139': income: 1.5 + points: 1.5 experience: 2 '146': income: 1.5 + points: 1.5 experience: 2 '152': income: 1.5 + points: 1.5 experience: 2 '154': income: 1.5 + points: 1.5 experience: 2 '155': income: 1.5 + points: 1.5 experience: 2 '156': income: 1.5 + points: 1.5 experience: 2 '159': income: 1.5 + points: 1.5 experience: 2 '160': income: 1.5 + points: 1.5 experience: 2 '161': income: 1.5 + points: 1.5 experience: 2 '163': income: 1.5 + points: 1.5 experience: 2 '164': income: 1.5 + points: 1.5 experience: 2 '167': income: 1.5 + points: 1.5 experience: 2 '168': income: 1.3 + points: 1.3 experience: 1.9 '169': income: 1.5 + points: 1.5 experience: 2 '170': income: 1.5 + points: 1.5 experience: 2 '172': income: 1.5 + points: 1.5 experience: 2 '173': income: 1.5 + points: 1.5 experience: 2 '174': income: 1.5 + points: 1.5 experience: 2 '179': income: 1.5 + points: 1.5 experience: 2 '180': income: 1.5 + points: 1.5 experience: 2 '182': income: 0.8 + points: 0.8 experience: 2 '183': income: 1.5 + points: 1.5 experience: 2 '184': income: 1.5 + points: 1.5 experience: 2 '185': income: 1.5 + points: 1.5 experience: 2 '186': income: 1.5 + points: 1.5 experience: 2 '187': income: 1.5 + points: 1.5 experience: 2 '188': income: 1.5 + points: 1.5 experience: 2 '189': income: 1.5 + points: 1.5 experience: 2 '190': income: 1.5 + points: 1.5 experience: 2 '191': income: 1.5 + points: 1.5 experience: 2 '192': income: 1.5 + points: 1.5 experience: 2 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 max-level: 200 Digger: @@ -906,32 +1001,41 @@ Jobs: Break: '179': income: 1 + points: 1 experience: 1 DIRT: income: 0.25 + points: 0.25 experience: 0.25 GRASS: income: 0.3 + points: 0.3 experience: 0.3 GRAVEL: income: 1 + points: 1 experience: 1.0 SAND: income: 0.4 + points: 0.4 experience: 0.5 CLAY: income: 1 + points: 1 experience: 1.0 '159': income: 1 + points: 1 experience: 1.0 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 custom-kill: Digger: income: 10.0 + points: 10.0 experience: 10.0 max-level: 200 Farmer: @@ -952,144 +1056,201 @@ Jobs: Tame: Wolf: income: 5.0 + points: 5.0 experience: 5.0 Horse: income: 5.0 + points: 5.0 experience: 5.0 Breed: Wolf: income: 4.0 + points: 4.0 experience: 5.0 Ocelot: income: 4.0 + points: 4.0 experience: 5.0 Pig: income: 4.0 + points: 4.0 experience: 5.0 Cow: income: 4.0 + points: 4.0 experience: 5.0 Horse: income: 4.0 + points: 4.0 experience: 5.0 Rabbit: income: 4.0 + points: 4.0 experience: 5.0 Sheep: income: 4.0 + points: 4.0 experience: 5.0 Chicken: income: 4.0 + points: 4.0 experience: 5.0 Shear: Red: income: 4.0 + points: 4.0 experience: 5.0 Orange: income: 4.0 + points: 4.0 experience: 5.0 Yellow: income: 4.0 + points: 4.0 experience: 5.0 Green: income: 4.0 + points: 4.0 experience: 5.0 Blue: income: 4.0 + points: 4.0 experience: 5.0 'Light Blue': income: 4.0 + points: 4.0 experience: 5.0 Magenta: income: 4.0 + points: 4.0 experience: 5.0 Pink: income: 4.0 + points: 4.0 experience: 5.0 White: income: 4.0 + points: 4.0 experience: 5.0 'Light Gray': income: 4.0 + points: 4.0 experience: 5.0 Black: income: 4.0 + points: 4.0 experience: 5.0 Brown: income: 4.0 + points: 4.0 experience: 5.0 Purple: income: 4.0 + points: 4.0 experience: 5.0 Cyan: income: 4.0 + points: 4.0 experience: 5.0 Gray: income: 4.0 + points: 4.0 experience: 5.0 'Lime Green': income: 4.0 + points: 4.0 experience: 5.0 Milk: Cow: income: 5.0 + points: 5.0 experience: 5.0 Break: + CHORUS_PLANT: + income: 1.5 + points: 1.5 + experience: 3.0 + CHORUS_FLOWER: + income: 1.5 + points: 1.5 + experience: 3.0 + BEETROOT_BLOCK-3: + income: 1.5 + points: 1.5 + experience: 3.0 CROPS-7: income: 1.5 + points: 1.5 experience: 3.0 CARROT-7: income: 1.0 + points: 1.0 experience: 1.0 POTATO-7: income: 1.0 + points: 1.0 experience: 1.0 PUMPKIN: income: 0.5 + points: 0.5 experience: 1.0 SUGAR_CANE_BLOCK: income: 0.2 + points: 0.2 experience: 0.2 COCOA-4: income: 4 + points: 4 experience: 4.0 '6': income: 2 + points: 2 experience: 2.0 '111': income: 2 + points: 2 experience: 2.0 '37': income: 2 + points: 2 experience: 2.0 '38': income: 2 + points: 2 experience: 2.0 '39': income: 1 + points: 1 experience: 1.0 '40': income: 1 + points: 1 experience: 1.0 '106': income: 1 + points: 1 experience: 1.0 '81': income: 1 + points: 1 experience: 1.0 '115': income: 1 + points: 1 experience: 1.0 Place: CROPS-0: income: 3.0 + points: 3 experience: 3.0 SUGAR_CANE_BLOCK: income: 1.0 + points: 1 experience: 1.0 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 max-level: 200 Hunter: @@ -1110,91 +1271,120 @@ Jobs: Tame: Wolf: income: 20.0 + points: 20 experience: 15.0 Ocelot: income: 20.0 + points: 20 experience: 15.0 Horse: income: 20.0 + points: 20 experience: 15.0 Kill: Chicken: income: 5.0 + points: 5 experience: 5.0 Cow: income: 6.0 + points: 5 experience: 5.0 Pig: income: 5.0 + points: 5 experience: 5.0 Sheep: income: 5.0 + points: 5 experience: 5.0 Wolf: income: 10.0 + points: 10 experience: 5.0 Creeper: income: 15.0 + points: 15 experience: 15.0 Skeleton: income: 10.0 + points: 10 experience: 15.0 Spider: income: 10.0 + points: 10 experience: 15.0 Zombie: income: 10.0 + points: 10 experience: 15.0 BLAZE: income: 20.0 + points: 20 experience: 15.0 CAVE_SPIDER: income: 20.0 + points: 20 experience: 15.0 ENDERMAN: income: 2.0 + points: 2 experience: 2.0 GHAST: income: 30.0 + points: 30 experience: 30.0 GIANT: income: 250.0 + points: 250 experience: 100.0 IRON_GOLEM: income: 30.0 + points: 30 experience: 30.0 MUSHROOM_COW: income: 5.0 + points: 5 experience: 5.0 PIG_ZOMBIE: income: 5.0 + points: 5 experience: 5.0 SILVERFISH: income: 3.0 + points: 3 experience: 5.0 SNOWMAN: income: 2.0 + points: 2 experience: 4.0 SQUID: income: 2.0 + points: 2 experience: 2.0 RABBIT: income: 2.0 + points: 2 experience: 2.0 GUARDIAN: income: 2.0 + points: 2 experience: 2.0 SHULKER: income: 5.0 + points: 5 experience: 5.0 WITHER: income: 50.0 + points: 50 experience: 120.0 ENDER_DRAGON: income: 2000.0 + points: 2000 experience: 2000.0 Player: income: 9.0 + points: 9 experience: 7.5 max-level: 200 Explorer: @@ -1215,18 +1405,23 @@ Jobs: Explore: 1: income: 5.0 + points: 5 experience: 5.0 2: income: 2.5 + points: 2.5 experience: 2.5 3: income: 1.0 + points: 1.0 experience: 1.0 4: income: 0.5 + points: 0.5 experience: 0.5 5: income: 0.1 + points: 0.1 experience: 0.1 Kill: Player: @@ -1251,176 +1446,233 @@ Jobs: Craft: '280': income: 0.1 + points: 0.1 experience: 0.1 '23': income: 4.0 + points: 4.0 experience: 4.0 '25': income: 1.5 + points: 1.5 experience: 3.0 '27': income: 5.0 + points: 5 experience: 5.0 '28': income: 5.0 + points: 4.0 experience: 5.0 '29': income: 3.0 + points: 3.0 experience: 3.0 'tnt': income: 4.0 + points: 4.0 experience: 4.0 'chest': income: 1.3 + points: 1.3 experience: 1.3 '58': income: 0.7 + points: 0.7 experience: 1.0 '61': income: 1.0 + points: 1.0 experience: 1.0 '65': income: 0.1 + points: 0.1 experience: 0.1 '66': income: 1.1 + points: 1.0 experience: 1.1 '84': income: 10.0 + points: 10.0 experience: 20.0 '95': income: 0.3 + points: 0.3 experience: 0.3 '108': income: 2.5 + points: 2.5 experience: 3.0 '109': income: 0.5 + points: 0.5 experience: 0.5 '116': income: 30.0 + points: 30.0 experience: 40.0 '138': income: 100.0 + points: 100.0 experience: 300.0 '145': income: 20.0 + points: 20.0 experience: 25.0 '146': income: 1.5 + points: 1.5 experience: 1.5 '147': income: 3.0 + points: 3.0 experience: 3.0 '148': income: 2.5 + points: 2.5 experience: 2.5 '151': income: 2.5 + points: 2.5 experience: 2.5 'hopper': income: 7.0 + points: 7.0 experience: 7.0 '157': income: 4.0 + points: 4.0 experience: 4.0 '158': income: 2.0 + points: 2.0 experience: 3.0 '159': income: 1.5 + points: 1.5 experience: 1.5 '160': income: 0.2 + points: 0.2 experience: 0.2 '165': income: 1.0 + points: 1.0 experience: 1.0 '168': income: 3.0 + points: 3.0 experience: 3.0 '169': income: 10.0 + points: 10.0 experience: 10.0 '183': income: 0.5 + points: 0.5 experience: 0.5 '184': income: 0.5 + points: 0.5 experience: 0.5 '185': income: 0.5 + points: 0.5 experience: 0.5 '186': income: 0.5 + points: 0.5 experience: 0.5 '187': income: 0.5 + points: 0.5 experience: 0.5 '188': income: 0.5 + points: 0.5 experience: 0.5 '189': income: 0.5 + points: 0.5 experience: 0.5 '190': income: 0.5 + points: 0.5 experience: 0.5 '191': income: 0.5 + points: 0.5 experience: 0.5 '192': income: 0.5 + points: 0.5 experience: 0.5 '324': income: 0.5 + points: 0.5 experience: 0.5 '330': income: 8.0 + points: 8.0 experience: 8.0 '340': income: 1.0 + points: 1.0 experience: 1.0 '345': income: 4.0 + points: 4.0 experience: 7.0 '347': income: 7.0 + points: 7.0 experience: 7.0 '354': income: 8.0 + points: 8.0 experience: 10.0 '355': income: 3.0 + points: 3.0 experience: 3.0 '379': income: 2.8 + points: 2.8 experience: 3.5 '380': income: 7.0 + points: 7.0 experience: 7.0 '427': income: 0.15 + points: 0.15 experience: 0.15 '428': income: 0.15 + points: 0.15 experience: 0.15 '429': income: 0.15 + points: 0.15 experience: 0.15 '430': income: 0.15 + points: 0.15 experience: 0.15 '431': income: 0.15 + points: 0.15 experience: 0.15 Smelt: COOKED_CHICKEN: income: 3.0 + points: 3.0 experience: 3.0 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 max-level: 200 Fisherman: @@ -1441,19 +1693,24 @@ Jobs: Fish: '349-0': income: 15.0 + points: 15.0 experience: 15.0 '349-1': income: 20.0 + points: 20.0 experience: 25.0 '349-2': income: 25.0 + points: 25.0 experience: 25.0 '349-3': income: 25.0 + points: 25.0 experience: 25.0 Kill: Player: income: 7.5 + points: 7.5 experience: 7.5 max-level: 200 Weaponsmith: @@ -1474,92 +1731,121 @@ Jobs: Craft: WOOD_SWORD: income: 1.0 + points: 1.0 experience: 2.0 LEATHER_BOOTS: income: 3.0 + points: 3.0 experience: 4.0 LEATHER_CHESTPLATE: income: 4.0 + points: 4.0 experience: 8.0 LEATHER_HELMET: income: 2.5 + points: 2.5 experience: 5.0 LEATHER_LEGGINGS: income: 3.5 + points: 3.5 experience: 7.0 IRON_SWORD: income: 4.0 + points: 4.0 experience: 8.0 IRON_BOOTS: income: 8.0 + points: 8.0 experience: 16.0 IRON_CHESTPLATE: income: 16.0 + points: 16.0 experience: 32.0 IRON_HELMET: income: 10.0 + points: 10.0 experience: 20.0 IRON_LEGGINGS: income: 14.0 + points: 14.0 experience: 28.0 GOLD_SWORD: income: 6.0 + points: 6.0 experience: 12.0 GOLD_BOOTS: income: 12.0 + points: 12.0 experience: 24.0 GOLD_CHESTPLATE: income: 24.0 + points: 24.0 experience: 48.0 GOLD_HELMET: income: 15.0 + points: 15.0 experience: 30.0 GOLD_LEGGINGS: income: 21.0 + points: 21.0 experience: 42.0 DIAMOND_SWORD: income: 8.0 + points: 8.0 experience: 16.0 DIAMOND_PICKAXE: income: 12.0 + points: 12.0 experience: 24.0 DIAMOND_AXE: income: 12.0 + points: 12.0 experience: 24.0 DIAMOND_HELMET: income: 20.0 + points: 20.0 experience: 40.0 DIAMOND_CHESTPLATE: income: 32.0 + points: 32.0 experience: 64.0 DIAMOND_LEGGINGS: income: 28.0 + points: 28.0 experience: 40.0 DIAMOND_BOOTS: income: 16.0 + points: 16.0 experience: 32.0 Repair: WOOD_SWORD: income: 1.0 + points: 1.0 experience: 1.0 IRON_SWORD: income: 2.0 + points: 2.0 experience: 2.0 GOLD_SWORD: income: 3.0 + points: 3.0 experience: 3.0 DIAMOND_SWORD: income: 4.0 + points: 4.0 experience: 4.0 Smelt: IRON_INGOT: income: 1.3 + points: 1.3 experience: 2.0 GOLD_INGOT: income: 5.0 + points: 5.0 experience: 10 DIAMOND: income: 7.0 + points: 7.0 experience: 20 max-level: 200 Brewer: @@ -1578,42 +1864,55 @@ Jobs: Brew: NETHER_STALK: income: 6.0 + points: 6.0 experience: 6.0 REDSTONE: income: 6.0 + points: 6.0 experience: 6.0 GLOWSTONE_DUST: income: 8.0 + points: 8.0 experience: 8.0 SPIDER_EYE: income: 9.0 + points: 9.0 experience: 9.0 FERMENTED_SPIDER_EYE: income: 12.0 + points: 12.0 experience: 12.0 BLAZE_POWDER: income: 12.0 + points: 12.0 experience: 12.0 SUGAR: income: 7.0 + points: 7.0 experience: 7.0 SPECKLED_MELON: income: 10.0 + points: 10.0 experience: 10.0 MAGMA_CREAM: income: 12.0 + points: 12.0 experience: 12.0 GHAST_TEAR: income: 22.0 + points: 22.0 experience: 22.0 GOLDEN_CARROT: income: 14.0 + points: 14.0 experience: 14.0 349-3: income: 14.0 + points: 14.0 experience: 14.0 RABBIT_FOOT: income: 18.0 + points: 18.0 experience: 18.0 max-level: 200 Enchanter: @@ -1634,309 +1933,411 @@ Jobs: Enchant: WOOD_SWORD: income: 1.5 + points: 1.5 experience: 3.0 LEATHER_BOOTS: income: 1.0 + points: 1.0 experience: 6.0 LEATHER_CHESTPLATE: income: 2.0 + points: 2.0 experience: 6.0 LEATHER_HELMET: income: 1.0 + points: 1.0 experience: 6.0 LEATHER_LEGGINGS: income: 2.0 + points: 2.0 experience: 6.0 IRON_SWORD: income: 3.0 + points: 3.0 experience: 6.0 IRON_BOOTS: income: 2.5 + points: 2.5 experience: 9.0 IRON_CHESTPLATE: income: 4.5 + points: 4.5 experience: 9.0 IRON_HELMET: income: 2.5 + points: 2.5 experience: 9.0 IRON_LEGGINGS: income: 4.5 + points: 4.5 experience: 9.0 GOLD_SWORD: income: 4.5 + points: 4.5 experience: 15.0 GOLD_BOOTS: income: 2.5 + points: 2.5 experience: 15.0 GOLD_CHESTPLATE: income: 5.5 + points: 5.5 experience: 15.0 GOLD_HELMET: income: 2.5 + points: 2.5 experience: 15.0 GOLD_LEGGINGS: income: 5.5 + points: 5.5 experience: 15.0 DIAMOND_SWORD: income: 9.0 + points: 9.0 experience: 30.0 DIAMOND_SPADE: income: 5.0 + points: 5.0 experience: 30.0 DIAMOND_PICKAXE: income: 10.0 + points: 10.0 experience: 30.0 DIAMOND_AXE: income: 10.0 + points: 10.0 experience: 30.0 DIAMOND_HELMET: income: 6.0 + points: 6.0 experience: 30.0 DIAMOND_CHESTPLATE: income: 12.0 + points: 12.0 experience: 50.0 DIAMOND_LEGGINGS: income: 12.0 + points: 12.0 experience: 50.0 DIAMOND_BOOTS: income: 6.0 + points: 6.0 experience: 30.0 ARROW_DAMAGE-1: income: 10.0 + points: 10.0 experience: 10.0 ARROW_DAMAGE-2: income: 20.0 + points: 20.0 experience: 20.0 ARROW_DAMAGE-3: income: 30.0 + points: 30.0 experience: 30.0 ARROW_DAMAGE-4: income: 40.0 + points: 40.0 experience: 40.0 ARROW_DAMAGE-5: income: 50.0 + points: 50.0 experience: 50.0 ARROW_FIRE: income: 10.0 + points: 10.0 experience: 30.0 ARROW_INFINITE: income: 20.0 + points: 20.0 experience: 50.0 ARROW_KNOCKBACK-1: income: 10.0 + points: 10.0 experience: 10.0 ARROW_KNOCKBACK-2: income: 20.0 + points: 20.0 experience: 20.0 DAMAGE_ALL-1: income: 10.0 + points: 10.0 experience: 10.0 DAMAGE_ALL-2: income: 20.0 + points: 20.0 experience: 20.0 DAMAGE_ALL-3: income: 30.0 + points: 30.0 experience: 30.0 DAMAGE_ALL-4: income: 40.0 + points: 40.0 experience: 40.0 DAMAGE_ALL-5: income: 50.0 + points: 50.0 experience: 50.0 DAMAGE_ARTHROPODS-1: income: 10.0 + points: 10.0 experience: 10.0 DAMAGE_ARTHROPODS-2: income: 20.0 + points: 20.0 experience: 20.0 DAMAGE_ARTHROPODS-3: income: 30.0 + points: 30.0 experience: 30.0 DAMAGE_ARTHROPODS-4: income: 40.0 + points: 40.0 experience: 40.0 DAMAGE_ARTHROPODS-5: income: 50.0 + points: 50.0 experience: 50.0 DAMAGE_UNDEAD-1: income: 10.0 + points: 10.0 experience: 10.0 DAMAGE_UNDEAD-2: income: 20.0 + points: 20.0 experience: 20.0 DAMAGE_UNDEAD-3: income: 30.0 + points: 30.0 experience: 30.0 DAMAGE_UNDEAD-4: income: 40.0 + points: 40.0 experience: 40.0 DAMAGE_UNDEAD-5: income: 50.0 + points: 50.0 experience: 50.0 DEPTH_STRIDER-1: income: 10.0 + points: 10.0 experience: 10.0 DEPTH_STRIDER-2: income: 20.0 + points: 20.0 experience: 20.0 DEPTH_STRIDER-3: income: 30.0 + points: 30.0 experience: 30.0 DIG_SPEED-1: income: 10.0 + points: 10.0 experience: 10.0 DIG_SPEED-2: income: 20.0 + points: 20.0 experience: 20.0 DIG_SPEED-3: income: 30.0 + points: 30.0 experience: 30.0 DIG_SPEED-4: income: 40.0 + points: 40.0 experience: 40.0 DIG_SPEED-5: income: 50.0 + points: 50.0 experience: 50.0 DURABILITY-1: income: 10.0 + points: 10.0 experience: 10.0 DURABILITY-2: income: 20.0 + points: 20.0 experience: 20.0 DURABILITY-3: income: 30.0 + points: 30.0 experience: 30.0 FIRE_ASPECT-1: income: 10.0 + points: 10.0 experience: 10.0 FIRE_ASPECT-2: income: 20.0 + points: 20.0 experience: 20.0 KNOCKBACK-1: income: 10.0 + points: 10.0 experience: 10.0 KNOCKBACK-2: income: 20.0 + points: 20.0 experience: 20.0 LOOT_BONUS_BLOCKS-1: income: 20.0 + points: 20.0 experience: 100.0 LOOT_BONUS_BLOCKS-2: income: 40.0 + points: 40.0 experience: 200.0 LOOT_BONUS_BLOCKS-3: income: 80.0 + points: 80.0 experience: 300.0 LOOT_BONUS_MOBS-1: income: 10.0 + points: 10.0 experience: 20.0 LOOT_BONUS_MOBS-2: income: 20.0 + points: 20.0 experience: 40.0 LOOT_BONUS_MOBS-3: income: 30.0 + points: 30.0 experience: 60.0 LUCK-1: income: 15.0 + points: 15.0 experience: 10.0 LUCK-2: income: 25.0 + points: 25.0 experience: 20.0 LUCK-3: income: 35.0 + points: 35.0 experience: 30.0 LURE-1: income: 10.0 + points: 10.0 experience: 10.0 LURE-2: income: 20.0 + points: 20.0 experience: 20.0 LURE-3: income: 30.0 + points: 30.0 experience: 30.0 OXYGEN-1: income: 10.0 + points: 10.0 experience: 10.0 OXYGEN-2: income: 20.0 + points: 20.0 experience: 20.0 OXYGEN-3: income: 30.0 + points: 30.0 experience: 30.0 PROTECTION_ENVIRONMENTAL-1: income: 10.0 + points: 10.0 experience: 10.0 PROTECTION_ENVIRONMENTAL-2: income: 20.0 + points: 20.0 experience: 20.0 PROTECTION_ENVIRONMENTAL-3: income: 30.0 + points: 30.0 experience: 30.0 PROTECTION_ENVIRONMENTAL-4: income: 40.0 + points: 40.0 experience: 40.0 PROTECTION_EXPLOSIONS-1: income: 10.0 + points: 10.0 experience: 10.0 PROTECTION_EXPLOSIONS-2: income: 20.0 + points: 20.0 experience: 20.0 PROTECTION_EXPLOSIONS-3: income: 30.0 + points: 30.0 experience: 30.0 PROTECTION_EXPLOSIONS-4: income: 40.0 + points: 40.0 experience: 40.0 PROTECTION_FALL-1: income: 10.0 + points: 10.0 experience: 10.0 PROTECTION_FALL-2: income: 20.0 + points: 20.0 experience: 20.0 PROTECTION_FALL-3: income: 30.0 + points: 30.0 experience: 30.0 PROTECTION_FALL-4: income: 40.0 + points: 40.0 experience: 40.0 PROTECTION_FIRE-1: income: 5.0 + points: 5.0 experience: 10.0 PROTECTION_FIRE-2: income: 10.0 + points: 10.0 experience: 20.0 PROTECTION_FIRE-3: income: 20.0 + points: 20.0 experience: 30.0 PROTECTION_FIRE-4: income: 30.0 + points: 30.0 experience: 40.0 PROTECTION_PROJECTILE-1: income: 10.0 + points: 10.0 experience: 10.0 PROTECTION_PROJECTILE-2: income: 20.0 + points: 20.0 experience: 20.0 PROTECTION_PROJECTILE-3: income: 30.0 + points: 30.0 experience: 30.0 PROTECTION_PROJECTILE-4: income: 40.0 + points: 40.0 experience: 40.0 SILK_TOUCH: income: 100.0 + points: 100.0 experience: 300.0 THORNS-1: income: 10.0 + points: 10.0 experience: 10.0 THORNS-2: income: 20.0 + points: 20.0 experience: 20.0 THORNS-3: income: 30.0 + points: 30.0 experience: 30.0 WATER_WORKER: income: 30.0 + points: 30.0 experience: 100.0 max-level: 200 None: diff --git a/locale/messages_cz.yml b/locale/messages_cz.yml index 23cf018a..1dac24aa 100644 --- a/locale/messages_cz.yml +++ b/locale/messages_cz.yml @@ -1,50 +1,142 @@ economy: error: nomoney: Nedostatek financi! +limitedItem: + error: + levelup: '&cMusite ziskat dalsi level v praci [jobname] pro pouziti toho predmetu!' +general: + info: + toplineseparator: '&7*********************** &6%playername% &7***********************' + separator: '&7*******************************************************' + admin: + error: '&cDoslo k chybe v prikazu.' + success: '&eVas prikaz byl proveden.' + error: + notNumber: '&ePouzijte cisla!' + job: '&cPrace, kterou jste vybrali neexistuje!' + permission: '&cNemate dostatecna opravneni, na provedeni tohoto prikazu!' + noinfo: '&cNebyly nalezeny zadne informace!' + noinfoByPlayer: '&cNabyly nalezeny zadne informace o hraci [%playername%]!' + ingame: '&cTento prikaz lze pouzivat pouze ve hre!' + fromconsole: '&cTento prikaz lze pouzivat pouze z konzole serveru!' + worldisdisabled: '&cTento prikaz nelze pouzit v tomto svete!' command: - boost: + moneyboost: help: - info: Zvysuje Exp/Vydelek pro vsechny hrace. - args: '[JmenoPrace] [Hodnota]' + info: Zvysuje zisk penez pro vsechny hrace + args: '[jobname] [rate]' output: - allreset: Vsechny exp/vydelky BOOST byly vypnuty. - jobsboostreset: BOOST pro %jobname% byl vypnut. - nothingtoreset: Neni nic, co by se dalo vypnout. - boostalladded: BOOST hodnoty %boost% byly povoleny pro vsechny prace. - boostadded: BOOST hodnoty &e%boost% &abyly povoleny pro praci &e%jobname%! - infostats: '&c-----> &aExp/Vydelky x%boost% je/jsou zapnute&c <-------' + allreset: Vsechny zvysene zisky na prace budou vypnuty + jobsboostreset: Money boost for %jobname% was turned off + nothingtoreset: Nothing to reset + boostalladded: Money boost of %boost% added for all jobs! + boostadded: Money boost of &e%boost% &aadded for &e%jobname%! + infostats: '&c-----> &aMoney rate x%boost% enabled&c <-------' + pointboost: + help: + info: Boosts points gain for all players + args: '[jobname] [rate]' + output: + allreset: Vsechny body boost vypnout + jobsboostreset: Points boost for %jobname% was turned off + nothingtoreset: Nothing to reset + boostalladded: Points boost of %boost% added for all jobs! + boostadded: Points boost of &e%boost% &aadded for &e%jobname%! + infostats: '&c-----> &aPoints rate x%boost% enabled&c <-------' + expboost: + help: + info: Boosts Exp gain for all players + args: '[jobname] [rate]' + output: + allreset: All exp boost turned off + jobsboostreset: Exp boost for %jobname% was turned off + nothingtoreset: Nothing to reset + boostalladded: Exp boost of %boost% added for all jobs! + boostadded: Exp boost of &e%boost% &aadded for &e%jobname%! + infostats: '&c-----> &aZvyseni xp x%boost% povoleno&c <-------' + bonus: + help: + info: Show job bonuses + args: '[jobname]' + output: + topline: '&7**************** &2[money] &6[points] &e[exp] &7****************' + permission: ' &ePermission bonus: %money% %points% %exp%' + item: ' &eItem bonus: %money% %points% %exp%' + global: ' &eGlobal bonus: %money% %points% %exp%' + dynamic: ' &eDynamicky platebni bonus: %money% %points% %exp%' + area: ' &eOblast bonus: %money% %points% %exp%' + final: ' &eFinalni bonus: %money% %points% %exp%' convert: help: - info: Prevede data z jednoho zpusobu databaze na jiny. Pokud práve pouzivate SQLite, bude preveden na MySQL a naopak. + info: Prevede data z jednoho zpusobu databaze na jiny. Pokud prave pouzivate SQLite, bude preveden na MySQL a naopak. args: '' limit: help: info: Vypise limit vydelku praci. args: '' output: - lefttime: '&eZbyvajici cas do resetovani limitu vydelku: &2%hour% &ehour &2%min% &emin &2%sec% - &esec' + lefttime: '&eZbyvajici cas do resetovani limitu vydelku: &2%hour% &ehodin &2%min% + &eminut &2%sec% &esekund' moneylimit: '&eLimit vydelku: &2%money%&e/&2%totalmoney%' + leftexptime: '&eZbyvajici cas do resetovani limitu xp: &2%hour% &ehodin &2%min% &eminut + &2%sec% &esekund' + explimit: '&eLimit xp: &2%exp%&e/&2%totalexp%' + leftpointtime: '&eZbyvajici cas do resetovani limitu bodu &2%hour% &ehodin &2%min% + &eminut &2%sec% &esekund' + pointlimit: '&eBodovy limit: &2%current%&e/&2%total%' reachedlimit: '&4Dosahl/a jsi limitu vydelku v danem case!' reachedlimit2: '&eLimit zjistis prikazem &2/jobs limit' + reachedExplimit: '&4Dostahli jste limitu xp v danem casu!' + reachedExplimit2: '&eMuzete zkontrolovat svuj limit pomoci prikazu &2/jobs limit' + reachedPointlimit: '&4Dostahli jste limitu exp v danem case!' + reachedPointlimit2: '&eMuzete zkontrolovat svuj limit pomoci prikazu &2/jobs limit' notenabled: '&eLimit vydelku neni zapnuty.' - admin: - error: Doslo k chybe v prikazu. - success: Prikaz byl proveden dle rozkazu. - error: - job: 'Prace, kterou sis vybral/a, neexistuje.' - permission: Nemas povoleni na tuto akci. help: output: - info: Napis /jobs [prikaz] ? pro vice informaci. + info: Napis /jobs nebo /prace [prikaz] ? pro vice informaci. usage: 'Pouziti: %usage%' + title: '&e-------&e ======= &6Prace &e======= &e-------' + page: '&e-----&e ====== Strana &6[1] &ez &6[2] &e====== &e-----' + prev: '&e--- <<<<< &6Predchozi strana &e|' + next: '&e|&6 Dalsi strana &e>>>> ---' + points: + help: + info: Shows how much points player have. + args: '[playername]' + currentpoints: ' &eAktualni vlastnite: &6%currentpoints% &ebodu' + totalpoints: ' &eCelkove mnozstvi nasbiranych bodu az doposud: &6%totalpoints%' + editpoints: + help: + info: Edit players points. + args: '[set/add/take] [playername] [amount]' + output: + set: '&eHrac(&6%playername%&e) body byly stanooveny na castku &6%amount%' + add: '&eHrac (&6%playername%&e) ziskal dodatecne &6%amount% &ebodu. Aktualne ma + &6%total%' + take: '&eHrac (&6%playername%&e) ztratil &6%amount% &ebudu. Aktualne ma &6%total%' stats: help: - info: 'Vypise level v pracech, ve kterych jsi zamestnany(a).' + info: Vypise level v pracech, ve kterych jsi zamestnany(a). args: '[JmenoHrace]' error: - nojob: 'Nejdrive se prihlas do nejake prace.' + nojob: Nejdrive se prihlas do nejake prace. output: 'lvl%joblevel% %jobname% : %jobxp%/%jobmaxxp% xp' + shop: + help: + info: Opens special jobs shop. + args: '' + info: + title: '&e------- &8Prace obchod &e-------' + currentPoints: '&eMate: &6%currentpoints%' + price: '&eCena: &6%price%' + reqJobs: '&ePozadovana prace:' + reqJobsList: ' &6%jobsname%&e: &e%level% lvl' + NoPermForItem: '&cNemate potrebna opravneni pro tuto polozku!' + NoPermToBuy: '&cNemate dostatecna opravneni ke koupi tohoto predmetu' + NoJobReqForitem: '&cNemate pozadovanoi level prace (&6%jobname%&e) pozadovano + (&6%joblevel%&e) level' + NoPoints: '&cNemate dostatecny pocet bodu' + Paid: '&eZaplatili jste &6%amount% &eza tuto polozku' archive: help: info: Vypise vsechny prace ulozene v archivu podle uzivatele. @@ -63,44 +155,83 @@ command: help: title: '&2*** &ePrace&2 ***' info: Vypise vysi vydelku prace k dane akci. + penalty: '&eTato prace ma &c[penalty]% &epenale z duvodu velkeho poctu zamestanich hracu.' + bonus: '&eTato prace ma &2[bonus]% &eprotoze neni zamestano dostatek hracu.' args: '[JmenoPrace] [akce]' actions: '&ePlatne akce jsou: &f%actions%' - max: ' - &emax level:&f ' + max: ' - &emaximalni level:&f ' material: '&7%material%' + levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &alevelu)' + levelFrom: ' &a(od &e%levelFrom% &alevelu)' + levelUntil: ' &a(az do &e%levelUntil% &alevelu)' + gui: + pickjob: '&eVyber jsi praci!' + jobinfo: '&e[jobname] info!' + actions: '&eNeplatna akce, seznam akci:' + leftClick: '&eLeve tlacitko mysi pro vice info' + rightClick: '&eKliknete pravym tlacitkem mysi spojit praci' + leftSlots: '&eLeve sloty:&f ' + working: '&2&nAktualne jsi zamestat v teto praci' + max: '&eMaximalni level:&f ' + back: '&e<<< Zpet' output: break: info: Breaknuti none: '%jobname% vydelava penize za breaknuti bloku.' + tntbreak: + info: TNTBreak + none: '%jobname% nedostava penize za niceni bloku pomoci tnt.' place: info: Polozeni none: '%jobname% vydelava penize za polozeni bloku.' kill: info: Zabijeni none: '%jobname% vydelava penize za zabijeni monster.' + mmkill: + info: MMKill + none: '%jobname% nedostane penize za zabiti mysticke prisery (pouze s pluginem MythicMobs).' fish: info: Rybareni - none: '%jobname% vydelava penize za rybarení.' + none: '%jobname% vydelava penize za rybareni.' craft: info: Craft - none: '%jobname% vydelava penize za craftení vecí.' + none: '%jobname% vydelava penize za crafteni veci.' smelt: info: Peceni - none: '%jobname% vydelava penize za pecení v peci.' + none: '%jobname% vydelava penize za peceni v peci.' brew: info: Vareni none: '%jobname% vydelava penize za vareni lektvaru.' + eat: + info: Eat + none: '%jobname% nedostava penize za jezeni.' + dye: + info: Dye + none: '%jobname% nedostava penize za umrti.' enchant: info: Ocarovani - none: '%jobname% vydelava penize za ocarovávání/enchant itemu.' + none: '%jobname% vydelava penize za ocarovavin/enchant itemu.' repair: info: Opravovani - none: '%jobname% vydelava penize za opravování predmetu.' + none: '%jobname% vydelava penize za opravovani predmetu.' breed: info: Farmareni none: '%jobname% vydelava penize za farmareni.' tame: info: Ochocovani none: '%jobname% vydelava penize za ochocovani zvirat.' + milk: + info: Milk + none: '%jobname% nedostava penize z dojeni krav.' + shear: + info: Shear + none: '%jobname% nedostava penize ze strihani ovci.' + explore: + info: Explore + none: '%jobname% nedostava penize z prozkoumovani.' + custom-kill: + info: Custom kill + none: '%jobname% nedostava penize z vlastniho zabijeni hracu.' playerinfo: help: info: Vypise vysi vydelku prace k dane akci urciteho hrace. @@ -129,10 +260,13 @@ command: help: info: Seznam dostupnych praci error: - nojobs: 'Nejsou zadne prace, ve kterych by jsi mohl/a byt zamestnan/a.' + nojobs: Nejsou zadne prace, ve kterych by jsi mohl/a byt zamestnan/a. output: header: 'Mas povoleni na zamestnani v techto pracech:' - footer: Pro více info napis /jobs info [JmenoPrace] + footer: Pro vice info napis /jobs info [JmenoPrace] + totalWorkers: ' &7Prave je zamestano: &e[amount]' + penalty: ' &4Penalty: &c[amount]%' + bonus: ' &2Bonus: &a[amount]%' fire: help: info: Vykopne hrace z dane prace. @@ -143,12 +277,12 @@ command: target: Byl/a jsi vyhozen/a z prace %jobname%. fireall: help: - info: Vykopne hrace ze vsech prací. + info: Vykopne hrace ze vsech praci. args: '[JmenoHrace]' error: nojobs: Hrac nema zadne prace, ze kterych by mohl byt vykopnut. output: - target: Byl/a jsi vykopnut/a ze vsech prací. + target: Byl/a jsi vykopnut/a ze vsech praci. employ: help: info: Zamestna hrace do prace. @@ -166,10 +300,47 @@ command: output: topline: '&aTop&e 10 &ehracu pro praci &6%jobname%' list: '&e%number%&a. &e%playername% &alvl &e%level% &as&e %exp% &aexp' + prev: '&e<<<<< Predchozi strana &2|' + next: '&2|&e Dalsi strana >>>>' + show: '&2Zobrazit z &e[from] &2az do &e[until] &2top listu' + gtop: + help: + info: Zobrazit top 15 hracu globalni urovne praci. + args: '' + error: + nojob:Nelze vyhledat zadne informace. + output: + topline: '&aTop&e 15 &ahracu globalni urovne' + list: '&e%number%&a. &e%playername% &alvl &e%level% &as&e %exp% &aexp' + prev: '&e<<<<< Predchozi strana &2|' + next: '&2|&e Dalsi strana >>>>' + show: '&2Zobrazit z &e[from] &2az do &e[until] &2globalniho top listu' + log: + help: + info: Shows statistics. + args: '[playername]' + output: + topline: '&7************************* &6%playername% &7*************************' + list: '&7* &6%number%. &3%action%: &6%item% &emnozsti: %qty% &6penez: %money% &eexpu: + %exp%' + bottomline: '&7***********************************************************' + prev: '&e<<<<< Predchozi strana &2|' + next: '&2|&e Dalsi strana >>>>' + nodata: '&cData nebyla nalezena' + glog: + help: + info: Shows global statistics. + args: '' + output: + topline: '&7*********************** &6Global statistiky &7***********************' + list: '&7* &6%number%. &3%username% &e%action%: &6%item% &mnozstvi: %qty% &6penez: + %money% &eexp: %expu%' + bottomline: '&7**************************************************************' + nodata: '&cData nebyla nalezena' transfer: help: - info: Prevede danou praci hrace ze stare práce do nove. - args: '[JmenoHrace] [StaraPrace] [NovaPrace]' + info: Prevede danou praci hrace ze stare prace do nove. + args: '[JmenoHrace] [StaraPrace] [NovaPrace]' output: target: Byl/a jsi presunut/a z prace %oldjobname% do %newjobname%. promote: @@ -196,14 +367,24 @@ command: args: '[JmenoHrace] [JmenoPrace] [xp]' output: target: Ztratil/a jsi %xplost% zkusenosti v praci %jobname%. + signupdate: + help: + info: Manualy updates sign by its name + args: '[jobname]' reload: help: info: Reloadne konfiguraci. toggle: help: info: Zapina/Vypina vypis vydelku na panelu akci. + args: '' output: - paid: '&a+ &a&l[amount]&a$' + turnedoff: '&4This feature are turned off!' + paid: + main: '&aMate:' + money: '&e[amount] penez' + exp: '&7[exp] exp' + points: '&6[points] bodu' 'on': '&aVypis: &aZAPNUTO' 'off': '&aVypis: &cVYPNUTO' message: @@ -213,18 +394,46 @@ message: levelup: broadcast: '%playername% dosahl/a levelu %joblevel% v praci %jobname%.' nobroadcast: Dosahl/a jsi levelu %joblevel% v praci %jobname%. + cowtimer: '&eMusite pockat &6%time% &esekund pro zyskani vyplaty za tuto praci.' + blocktimer: '&eBudete muset pockat: &3[time] &esekund pro ziskani vyplaty!' + placeblocktimer: '&eNemuzete pokladat bloky tak rychle pockejte &6[time] &esekund pred polozenim!' + taxes: '&3[amount] &edane pro server byly prevedeny na tento ucet' + boostStarted: '&eProcovni boost byly aktivovany!' + boostStoped: '&ePracovani boost byl deaktivovan!' crafting: fullinventory: Mas plny inventar! signs: + List: '&0[number].&8[player]&7:&4[level]' + SpecialList: + '1': + '1': '&b** &8Prvni&b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' + '2': + '1': '&b** &8Druhy &b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' + '3': + '1': '&b** &8Treti &b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' cantcreate: '&4Nemuzes vytvorit tuto cedulku!' - topline: '&e[Jobs]' + cantdestroy: '&4You can''t destroy this sign!' + topline: '&e[Prace]' secondline: - join: '&2Join' - leave: '&4Leave' - toggle: '&eToggle' + join: '&2Pripojit' + leave: '&4Odpojit' + toggle: '&eSkryt' top: '&eTop' - browse: '&eBrowse' - stats: '&eStats' + browse: '&eVyhledat' + stats: '&eStatistiky' limit: '&eLimit' info: '&eInfo' - archive: '&eArchive' \ No newline at end of file + archive: '&eArchiv' +scoreboard: + topline: '&2Top &e%jobname%' + gtopline: '&2Globalni top list' + lines: '&2%number%. &e%playername%' \ No newline at end of file diff --git a/locale/messages_es.yml b/locale/messages_es.yml new file mode 100644 index 00000000..e05bdd7d --- /dev/null +++ b/locale/messages_es.yml @@ -0,0 +1,454 @@ +economy: + error: + nomoney: No queda dinero en el banco nacional +limitedItem: + error: + levelup: '&cNecesitas subir de nivel en el trabajo [jobname] para usar esto' +general: + info: + toplineseparator: '&7*********************** &6%playername% &7***********************' + separator: '&7*******************************************************' + admin: + error: '&cHay un error en el comando.' + success: '&eEl comando ha sido ejecutado.' + error: + notNumber: '&ePor favor, usa nuemeros.' + job: '&cEl trabajo escojido no existe.' + permission: '&cNo tienes permiso para hacer eso.' + noinfo: '&cInformacion no encontrada.' + noinfoByPlayer: '&cInformacion no encontrada de [%playername%].' + ingame: '&cEste comando solo se puede ejecutar desde el juego.' + fromconsole: '&cEste comando solo se puede ejecutar desde la consola.' + worldisdisabled: '&cNo puedes usar ese comando en este mundo.' +command: + moneyboost: + help: + info: ?Aumento de dinero para todos los jugadores! + args: '[jobname] [rate]' + output: + allreset: Todos los aumentos de dinero han sido desacivados + jobsboostreset: Aumento de dinero para el trabajo %jobname% ha sido desactivado + nothingtoreset: Nada por resetear + boostalladded: '?Aumento de dinero de: %boost% a?adido para todos los trabajos!' + boostadded: ?Aumento de dinero de &e%boost% &aha sido a?adido para el trabajo &e%jobname%! + infostats: '&c-----> &aMoney rate x%boost% enabled&c <-------' + pointboost: + help: + info: Aumento de puntos para todos los jugadores + args: '[jobname] [rate]' + output: + allreset: Todos los aumentos de puntos han sido desactivados + jobsboostreset: Aumento de dinero para %jobname% ha sido desactivado + nothingtoreset: Nada por resetear + boostalladded: Aumento de puntos de %boost% ańadido para todos los trabajos! + boostadded: Aumento de puntos de &e%boost% &aańadido para el trabajo &e%jobname%! + infostats: '&c-----> &aPoints rate x%boost% enabled&c <-------' + expboost: + help: + info: ?Aumento de xp para todos los jugadores! + args: '[jobname] [rate]' + output: + allreset: Todos los aumentos de xp han sido desacivados + jobsboostreset: Aumento de xp para el trabajo %jobname% ha sido desactivado + nothingtoreset: Nada por resetear + boostalladded: '?Aumento de xp de: %boost% a?adido para todos los trabajos!' + boostadded: ?Aumento de xp de &e%boost% &aha sido a?adido para el trabajo &e%jobname%! + infostats: '&c-----> &aExp rate x%boost% enabled&c <-------' + bonus: + help: + info: Muestra bonus de trabajo + args: '[jobname]' + output: + topline: '&7**************** &2[money] &6[points] &e[exp] &7****************' + permission: ' &eBonus de permiso: %money% %points% %exp%' + item: ' &eBonus de objeto: %money% %points% %exp%' + global: ' &eBonus global: %money% %points% %exp%' + dynamic: ' &eBonus de pago dinamico: %money% %points% %exp%' + area: ' &eBonus de area: %money% %points% %exp%' + final: ' &eBonus final: %money% %points% %exp%' + convert: + help: + info: Convertido el sistema de base de datos a otro, si estabas usando SqLite este se ha convertido a MySQL y vice versa. + args: '' + limit: + help: + info: Muestra el limite de pago por cada trabajo + args: '' + output: + lefttime: '&eTiempo para reseteo de limite de dinero: &2%hour% &ehoras &2%min% &emin + &2%sec% &eseg' + moneylimit: '&eLimite de dinero: &2%money%&e/&2%totalmoney%' + leftexptime: '&eTiempo antes de resetear el limite de xp: &2%hour% &ehour &2%min% + &emin &2%sec% &esec' + explimit: '&eLimite de dinero: &2%exp%&e/&2%totalexp%' + leftpointtime: '&eTime left until Point limit resets: &2%hour% &ehour &2%min% + &emin &2%sec% &esec' + pointlimit: '&eLimite de puntos: &2%current%&e/&2%total%' + reachedlimit: '&4?Has alcanzado el maximo de dinero recibido en un tiempo!' + reachedlimit2: '&ePuedes ver el limite de dinero con &2/jobs limit' + reachedExplimit: '&4?Has alcanzado el maximo de experiencia recibido en un tiempo!' + reachedExplimit2: '&ePuedes ver el limite de xp con &2/jobs limit' + reachedPointlimit: '&4Has alcanzado el limite de puntos de objeto!' + reachedPointlimit2: '&ePuedes ver tu limite de puntos con &2/jobs limit' + notenabled: '&eLimite de dinero no activado' + help: + output: + info: Escribe /jobs [cmd] ? para mas informacion sobre el comando. + usage: 'Uso: %usage%' + title: '&e-------&e ======= &6Jobs &e======= &e-------' + page: '&e-----&e ====== Pagina &6[1] &ede &6[2] &e====== &e-----' + prev: '&e--- <<<<< &6Pagina anterior &e|' + next: '&e|&6 Suigiente pagina &e>>>> ---' + points: + help: + info: Muestra cuantos puntos tiene el jugador. + args: '[playername]' + currentpoints: ' &eCantidad de puntos actual: &6%currentpoints%' + totalpoints: ' &eTotal amount of collected points until now: &6%totalpoints%' + editpoints: + help: + info: Edita los puntos del jugador. + args: '[set/add/take] [playername] [amount]' + output: + set: '&eJugadores (&6%playername%&e) puntos marcados a &6%amount%' + add: '&eEl jugador (&6%playername%&e) ha recibido &6%amount% &epuntos adicionales. Ahora tien + &6%total%' + take: '&eEl jugador (&6%playername%&e) ha perdido &6%amount% &epuntos. Ahora tiene &6%total%' + blockinfo: + help: + info: Muestra la informacion del bloque que estas mirando. + args: '' + output: + name: ' &eNombre del bloque: &6%blockname%' + id: ' &eId del bloque: &6%blockid%' + data: ' &eData del bloque: &6%blockdata%' + usage: ' &eUso: &6%first% &eo &6%second%' + stats: + help: + info: Muestra en que nivel estas en cada trabajo. + args: '[playername]' + error: + nojob: Unete a un trabajo primero. + output: 'lvl%joblevel% %jobname% : %jobxp%/%jobmaxxp% xp' + shop: + help: + info: Abre tienda de trabajos especiales. + args: '' + info: + title: '&e------- &8Tienda de trabajos &e-------' + currentPoints: '&eTienes: &6%currentpoints%' + price: '&ePrecio: &6%price%' + reqJobs: '&eTrabajos requeridos:' + reqJobsList: ' &6%jobsname%&e: &e%level% lvl' + NoPermForItem: '&cNo tienes el permiso necesario para ese objeto!' + NoPermToBuy: '&cNo tienes permiso para comprar este objeto' + NoJobReqForitem: '&cYou don''t have required job (&6%jobname%&e) with required + (&6%joblevel%&e) level' + NoPoints: '&cNo tienes puntos suficientes' + Paid: '&eHas pagado &6%amount% &epor este objeto' + archive: + help: + info: Muestra los trabajos guardados en el archivo por el usuario. + args: '[playername]' + error: + nojob: No hay trabajos guardados. + output: lvl %joblevel% (%getbackjoblevel%) %jobname% + give: + help: + info: Gives item by jobs name and item category name. Player name is optional + args: '[playername] [jobname] [itemname]' + output: + notonline: '&4El jugador [%playername%] no esta conectado' + noitem: '&4No se han encontrado jugadores guardados con ese nombre' + info: + help: + title: '&2*** &eTrabajos&2 ***' + info: Muestra lo que se paga en cada trabajo por cada cosa. + penalty: '&eEste trabajo tiene una penalidad de &c[penalty]% &eporque hay muchos + trabajadores trabajando en el.' + bonus: '&eEste trabajo tiene un bonus de &2[bonus]% &eporque hay pocos tabajadores + trabajando en el.' + args: '[jobname] [action]' + actions: '&eAcciones validas: &f%actions%' + max: ' - &enivel maximo:&f ' + material: '&7%material%' + levelRange: ' &a(&e%levelFrom% &a- &e%levelUntil% &alevels)' + levelFrom: ' &a(from &e%levelFrom% &alevel)' + levelUntil: ' &a(until &e%levelUntil% &alevel)' + money: ' &2%money%$' + points: ' &6%points%points' + exp: ' &e%exp%xp' + gui: + pickjob: '&eEscoje tu trabajo' + jobinfo: '&e[jobname] informacion' + actions: '&eAcciones validas:' + leftClick: '&eClick izquierdo para mas informacion' + rightClick: '&eClick derecho para unirte al trabajo' + leftSlots: '&ePuestos libres:&f ' + working: '&2&nActualmente trabajando' + max: '&eNivel maximo:&f ' + back: '&e<<< Volver' + output: + break: + info: Romper + none: Con el trabajo %jobname% no consigues dinero por romper bloques. + tntbreak: + info: Explotar + none: Con el trabajo %jobname% no consigues dinero por explotar bloques con dinamita. + place: + info: Colocar + none: Con el trabajo %jobname% no consigues dinero por colocar bloques. + kill: + info: Matar + none: Con el trabajo %jobname% no consigues dinero por matar mobs. + mmkill: + info: MMKill + none: Con el trabajo %jobname% no consigues dinero por matar mobs miticos. + fish: + info: Pescar + none: Con el trabajo %jobname% no consigues dinero por pescar peces. + craft: + info: Craftear + none: Con el trabajo %jobname% no consigues dinero por craftear items. + smelt: + info: Hornear + none: Con el trabajo %jobname% no consigues dinero por hornear. + brew: + info: Destilar + none: Con el trabajo %jobname% no consigues dinero por destilar pociones. + eat: + info: Comer + none: Con el trabajo %jobname% no consigues dinero por comer. + dye: + info: Dye + none: Con el trabajo %jobname% no consigues dinero por te?ir ropa. + enchant: + info: Encantar + none: Con el trabajo %jobname% no consigues dinero por encantar herramientas. + repair: + info: Reparar + none: Con el trabajo %jobname% no consigues dinero por reparar. + breed: + info: Criar + none: Con el trabajo %jobname% no consigues dinero por criar animales. + tame: + info: Domar + none: Con el trabajo %jobname% no consigues dinero por domar animales. + milk: + info: Orde?ar + none: Con el trabajo %jobname% no consigues dinero por orde?ar vacas. + shear: + info: Esquilar + none: Con el trabajo %jobname% no consigues dinero por esquilar ovejas. + explore: + info: Explorar + none: Con el trabajo %jobname% no consigues dinero por explorar el mundo. + custom-kill: + info: Custom kill + none: '%jobname% does not get money from custom player kills.' + playerinfo: + help: + info: Muestra que le estan pagando a alguien y por que cosa. + args: '[playername] [jobname] [action]' + join: + help: + info: Unirse al trabajo. + args: '[jobname]' + error: + alreadyin: Ya estas en el trabajo %jobname%. + fullslots: No te puedes unir al trabajo %jobname%, ya que no hay puestos libres. + maxjobs: Has alcanzado el limite de trabajos. + success: Te has unido al trabajo %jobname%. + leave: + help: + info: Dejar el trabajo. + args: '[jobname]' + success: Has dejado el trabajo %jobname%. + leaveall: + help: + info: Dejar todos tus trabajos. + error: + nojobs: No tienes ningun trabajo para dejar + success: Has dejado todos tus trabajos. + browse: + help: + info: Lista de trabajos disponibles para ti. + error: + nojobs: No hay trabajos a los puedas unirte. + output: + header: 'Tienes permitido unirte a los siguientes trabajos:' + footer: Para mas informacion escribe /jobs info [JobName] + totalWorkers: ' &7Trabajadores: &e[amount]' + penalty: ' &4Penalizacion: &c[amount]%' + bonus: ' &2Bonus: &a[amount]%' + fire: + help: + info: Despide al jugador del trabajo. + args: '[playername] [jobname]' + error: + nojob: El jugador no tiene el trabajo %jobname%. + output: + target: Has sido despedido del trabajo %jobname%. + fireall: + help: + info: Despide al jugador de todos sus trabajos. + args: '[playername]' + error: + nojobs: El jugador no tiene ningun trabajo para despedirlo + output: + target: Has sido despedido de todos tus trabajos. + employ: + help: + info: Emplear a jugador a un trabajo. + args: '[playername] [jobname]' + error: + alreadyin: El jugador ya esta en el trabajo %jobname%. + output: + target: Has sido empledo a %jobname%. + top: + help: + info: Muestra el top 15 jugadores segun su trabajo. + args: '[jobname]' + error: + nojob: No se ha encontrado ningun trabajo con este nombre. + output: + topline: '&aTop&e 15 &ajugadores por el trabajo &e%jobname%' + list: '&e%number%&a. &e%playername% &alvl &e%level% &awith&e %exp% &aexp' + prev: '&e<<<<< Pagina anterior &2|' + next: '&2|&e Siguiente pagina >>>>' + show: '&2Show from &e[from] &2until &e[until] &2top list' + gtop: + help: + info: Muestra el top 15 por el nivel global de trabajos. + args: '' + error: + nojob: No se pudo encontrar ninguna informacion. + output: + topline: '&aTop&e 15 &ajugadores por el nivel global de trabajos' + list: '&e%number%&a. &e%playername% &alvl &e%level% &awith&e %exp% &aexp' + prev: '&e<<<<< Pagina anterior &2|' + next: '&2|&e Siguiente pagina >>>>' + show: '&2Muestra desde &e[from] &2hasta &e[until] &2top global' + log: + help: + info: Muestra estadisticas. + args: '[playername]' + output: + topline: '&7************************* &6%playername% &7*************************' + list: '&7* &6%number%. &3%action%: &6%item% &ecantidad: %qty% &6dinero: %money% + &eexp: %exp%' + bottomline: '&7***********************************************************' + prev: '&e<<<<< Pagina anterior &2|' + next: '&2|&e Siguiente pagina >>>>' + nodata: '&cDatos no encontrados' + glog: + help: + info: Muestra las estadisticas globales. + args: '' + output: + topline: '&7*********************** &6Estadisticas globales &7***********************' + list: '&7* &6%number%. &3%username% &e%action%: &6%item% &ecantidad: %qty% &6money: + %money% &eexp: %exp%' + bottomline: '&7**************************************************************' + nodata: '&cDatos no encontrados' + transfer: + help: + info: Transferir a un jugador de un trabajo a otro. + args: '[playername] [oldjob] [newjob]' + output: + target: Has sido cambiado de %oldjobname% a %newjobname%. + promote: + help: + info: Subir X nivel a un jugador en un trabajo. + args: '[playername] [jobname] [levels]' + output: + target: Te han subido %levelsgained% niveles en el trabajo %jobname%. + demote: + help: + info: Bajar X niveles a un jugador en un trabajo. + args: '[playername] [jobname] [levels]' + output: + target: Te han bajado %levelslost% niveles en %jobname%. + grantxp: + help: + info: Grant the player X experience in a job. + args: '[playername] [jobname] [xp]' + output: + target: You have been granted %xpgained% experience in %jobname%. + removexp: + help: + info: Eliminado X experiencia a un jugador en un trabajo. + args: '[playername] [jobname] [xp]' + output: + target: Has perdido %xplost% experiencia en %jobname%. + signupdate: + help: + info: Manualmente actualizado el cartel + args: '[jobname]' + reload: + help: + info: Recargar configuraciones. + toggle: + help: + info: Toggles payment output on action bar. + args: '' + output: + turnedoff: '&4Esta opcion esta desactivado' + paid: + main: '&aYou got:' + money: '&e[amount] money' + exp: '&7[exp] exp' + points: '&6[points] points' + 'on': '&aToggled: &aON' + 'off': '&aToggled: &4OFF' +message: + skillup: + broadcast: '%playername% ha mejorado a %titlename% %jobname%.' + nobroadcast: Enhorabuena, has mejorado a %titlename% %jobname%. + levelup: + broadcast: '%playername% es ahora nivel %joblevel% %jobname%.' + nobroadcast: Ahora eres nivel %joblevel% %jobname%. + cowtimer: '&eTienes que esperar &6%time% &esegundos para recibir dinero del trabajo.' + blocktimer: '&eYou need to wait: &3[time] &esec more to get paid for this!' + placeblocktimer: '&eNo puedes poner bloques mas rapido que &6[time] &esegundos en + el mismo lugar!' + taxes: '&3[amount] &eserver taxes where transfered to this account' + boostStarted: '&eAumentador de trabajos se ha iniciado' + boostStoped: '&eAumentador de trabajos se ha parado' + crafting: + fullinventory: Tu inventario esta lleno +signs: + List: '&0[number].&8[player]&7:&4[level]' + SpecialList: + '1': + '1': '&b** &8Primero &b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' + '2': + '1': '&b** &8Segundo &b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' + '3': + '1': '&b** &8Tercero &b**' + '2': '&9[player]' + '3': '&8[level] level' + '4': '&b************' + cantcreate: '&4No puedes crear este cartel' + cantdestroy: '&4No puedes romper este cartel' + topline: '&2[Jobs]' + secondline: + join: '&2Unirse' + leave: '&4Dejar' + toggle: '&2Toggle' + top: '&2Top' + browse: '&2Buscar' + stats: '&2Estadisticas' + limit: '&2Limite' + info: '&2Info' + archive: '&2Archivo' +scoreboard: + topline: '&2Top &e%jobname%' + gtopline: '&2Lista top global' + lines: '&2%number%. &e%playername%' \ No newline at end of file diff --git a/plugin.yml b/plugin.yml index f6849ed0..82926227 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.0.0 +version: 3.1.2 author: phrstbrn softdepend: [Vault, CoreProtect, MythicMobs, McMMO] commands: @@ -157,4 +157,10 @@ permissions: default: op jobs.command.glog: description: Grants access to the glog command - default: op \ No newline at end of file + default: op + jobs.command.bonus: + description: Grants access to the bonus command + default: true + jobs.command.points: + description: Grants access to the points command + default: true \ No newline at end of file