diff --git a/src/main/java/com/gamingmesh/jobs/commands/list/join.java b/src/main/java/com/gamingmesh/jobs/commands/list/join.java index 6954228e..612492c7 100644 --- a/src/main/java/com/gamingmesh/jobs/commands/list/join.java +++ b/src/main/java/com/gamingmesh/jobs/commands/list/join.java @@ -65,7 +65,7 @@ public class join implements Cmd { return true; } - if (!Jobs.getPlayerManager().getJobsLimit(jPlayer, (short) jPlayer.progression.size())) { + if (!job.isIgnoreMaxJobs() && !Jobs.getPlayerManager().getJobsLimit(jPlayer, (short) jPlayer.progression.size())) { pSender.sendMessage(Jobs.getLanguage().getMessage("command.join.error.maxjobs")); return true; } diff --git a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java index c812c21d..0b5e3b59 100644 --- a/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java +++ b/src/main/java/com/gamingmesh/jobs/config/ConfigManager.java @@ -1148,6 +1148,7 @@ public class ConfigManager { job.setBossbar(bossbar); job.setRejoinCd(rejoinCd); job.setMaxLevelCommands(jobSection.getStringList("commands-on-max-level")); + job.setIgnoreMaxJobs(jobSection.getBoolean("ignore-jobs-max")); if (jobSection.isConfigurationSection("Quests")) { List quests = new ArrayList<>(); diff --git a/src/main/java/com/gamingmesh/jobs/container/Job.java b/src/main/java/com/gamingmesh/jobs/container/Job.java index 736139cb..4d7e36f8 100644 --- a/src/main/java/com/gamingmesh/jobs/container/Job.java +++ b/src/main/java/com/gamingmesh/jobs/container/Job.java @@ -90,6 +90,7 @@ public class Job { private final List quests = new ArrayList<>(); private int maxDailyQuests = 1; private int id = 0; + private boolean ignoreMaxJobs = false; @Deprecated public Job(String jobName, String fullName, String jobShortName, String description, CMIChatColor jobColour, Parser maxExpEquation, DisplayMethod displayMethod, int maxLevel, @@ -652,6 +653,14 @@ public class Job { return ent != null && worldBlacklist.contains(ent.getWorld().getName()); } + public boolean isIgnoreMaxJobs() { + return ignoreMaxJobs; + } + + public void setIgnoreMaxJobs(boolean ignoreMaxJobs) { + this.ignoreMaxJobs = ignoreMaxJobs; + } + @Override public boolean equals(Object obj) { return obj instanceof Job ? isSame((Job) obj) : false; diff --git a/src/main/resources/jobs/_EXAMPLE.yml b/src/main/resources/jobs/_EXAMPLE.yml index 92253bc0..fb729b0f 100644 --- a/src/main/resources/jobs/_EXAMPLE.yml +++ b/src/main/resources/jobs/_EXAMPLE.yml @@ -581,6 +581,9 @@ exampleJob: - plotworld - teamworld + # Allow a player to "/jobs join" this job even if they have the max jobs permission reached. + ignore-jobs-max: false + # Limit item use to jobs level limitedItems: # Just name, don't have any impact