mirror of
https://github.com/Zrips/Jobs.git
synced 2024-11-29 14:05:25 +01:00
Added option to turn off MythicMob support, as it will brake if you
using old version of it. Optimized Jobs long shutdown caused by Explorer feature recording to data base taking to much time. Now its more or less instantaneous. Fixed (fingers crossed) issue with limited items, now its should work properly. Changed item name in itemList.yml for flint Changed default jobConfig.yml file, now there will be job with name of exampleJob witch one will be ignored even if left in config file.Put proper Woodcutter job beneath it to serve as correct woodcutter job.
This commit is contained in:
parent
345810ef83
commit
afa7d00939
1402
ItemList.yml
1402
ItemList.yml
File diff suppressed because it is too large
Load Diff
@ -135,7 +135,7 @@ public class JobsPlugin extends JavaPlugin {
|
||||
if (McMMOlistener.CheckmcMMO())
|
||||
getServer().getPluginManager().registerEvents(new McMMOlistener(this), this);
|
||||
|
||||
if (MythicMobsListener.Check())
|
||||
if (MythicMobsListener.Check() && ConfigManager.getJobsConfiguration().MythicMobsEnabled)
|
||||
getServer().getPluginManager().registerEvents(new MythicMobsListener(this), this);
|
||||
|
||||
if (ConfigManager.getJobsConfiguration().useBlockProtection)
|
||||
|
@ -105,6 +105,11 @@ public class JobConfig {
|
||||
// jobsSection = conf.createSection("Jobs");
|
||||
//}
|
||||
for (String jobKey : jobsSection.getKeys(false)) {
|
||||
|
||||
// Ignoring example job
|
||||
if (jobKey.equalsIgnoreCase("exampleJob"))
|
||||
continue;
|
||||
|
||||
ConfigurationSection jobSection = jobsSection.getConfigurationSection(jobKey);
|
||||
String jobName = jobSection.getString("fullname");
|
||||
|
||||
|
@ -74,6 +74,7 @@ public class JobsConfiguration {
|
||||
protected int economyBatchDelay;
|
||||
protected boolean saveOnDisconnect;
|
||||
public boolean LocalOfflinePlayersData;
|
||||
public boolean MythicMobsEnabled;
|
||||
public boolean LoggingUse;
|
||||
public boolean EconomyLimitUse, EconomyExpLimitUse, PayForRenaming, PayForEachCraft, SignsEnabled,
|
||||
SignsColorizeJobName, ShowToplistInScoreboard, useGlobalTimer, useCoreProtect, BlockPlaceUse,
|
||||
@ -654,6 +655,9 @@ public class JobsConfiguration {
|
||||
writer.addComment("ExploitProtections.McMMO.superBreakerMultiplier", "Players will get part of money from braking blocks with super breaker ability enabled.",
|
||||
"0.2 means 20% of original price");
|
||||
superBreakerMultiplier = getDouble("ExploitProtections.McMMO.superBreakerMultiplier", 0.2, config, writer);
|
||||
|
||||
writer.addComment("ExploitProtections.MythicMobs", "MythicMobs plugin support","Disable if you having issues with it or using old version");
|
||||
MythicMobsEnabled = getBoolean("ExploitProtections.MythicMobs.enabled", true, config, writer);
|
||||
|
||||
writer.addComment("ExploitProtections.Spawner.PreventSlimeSplit", "Prevent slime spliting when they are from spawner",
|
||||
"Protects agains exploiting as new splited slimes is treated as naturaly spawned and not from spawner");
|
||||
|
@ -46,6 +46,7 @@ import com.gamingmesh.jobs.container.Log;
|
||||
import com.gamingmesh.jobs.container.LogAmounts;
|
||||
import com.gamingmesh.jobs.container.TopList;
|
||||
import com.gamingmesh.jobs.stuff.ChatColor;
|
||||
import com.gamingmesh.jobs.stuff.Debug;
|
||||
import com.gamingmesh.jobs.stuff.Loging;
|
||||
import com.gamingmesh.jobs.stuff.OfflinePlayerList;
|
||||
import com.gamingmesh.jobs.stuff.TimeManage;
|
||||
@ -643,7 +644,8 @@ public abstract class JobsDAO {
|
||||
if (conn == null)
|
||||
return;
|
||||
try {
|
||||
PreparedStatement prest = conn.prepareStatement("UPDATE `" + prefix + "jobs` SET `level` = ?, `experience` = ?, `username` = ? WHERE `player_uuid` = ? AND `job` = ?;");
|
||||
PreparedStatement prest = conn.prepareStatement("UPDATE `" + prefix
|
||||
+ "jobs` SET `level` = ?, `experience` = ?, `username` = ? WHERE `player_uuid` = ? AND `job` = ?;");
|
||||
for (JobProgression progression : player.getJobProgression()) {
|
||||
prest.setInt(1, progression.getLevel());
|
||||
prest.setInt(2, (int) progression.getExperience());
|
||||
@ -748,6 +750,8 @@ public abstract class JobsDAO {
|
||||
if (!Jobs.getExplore().isExploreEnabled())
|
||||
return;
|
||||
|
||||
Debug.D("Starting explorer save");
|
||||
|
||||
JobsConnection conn = getConnection();
|
||||
if (conn == null)
|
||||
return;
|
||||
@ -763,6 +767,7 @@ public abstract class JobsDAO {
|
||||
prest.close();
|
||||
|
||||
PreparedStatement prest2 = conn.prepareStatement("INSERT INTO `" + prefix + "explore` (`worldname`, `chunkX`, `chunkZ`, `playerName`) VALUES (?, ?, ?, ?);");
|
||||
conn.setAutoCommit(false);
|
||||
for (Entry<String, ExploreRegion> worlds : Jobs.getExplore().getWorlds().entrySet()) {
|
||||
for (ExploreChunk oneChunk : worlds.getValue().getChunks()) {
|
||||
for (String oneuser : oneChunk.getPlayers()) {
|
||||
@ -770,14 +775,18 @@ public abstract class JobsDAO {
|
||||
prest2.setInt(2, oneChunk.getX());
|
||||
prest2.setInt(3, oneChunk.getZ());
|
||||
prest2.setString(4, oneuser);
|
||||
prest2.execute();
|
||||
prest2.addBatch();
|
||||
}
|
||||
}
|
||||
}
|
||||
prest2.executeBatch();
|
||||
conn.commit();
|
||||
conn.setAutoCommit(true);
|
||||
prest2.close();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Debug.D("Explorer saved");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -521,33 +521,12 @@ public class JobsListener implements Listener {
|
||||
String meinOk = null;
|
||||
|
||||
mein: for (JobProgression one : prog) {
|
||||
second: for (JobLimitedItems oneItem : one.getJob().getLimitedItems()) {
|
||||
|
||||
if (oneItem.getId() != iih.getTypeId())
|
||||
for (JobLimitedItems oneItem : one.getJob().getLimitedItems()) {
|
||||
if (one.getLevel() >= oneItem.getLevel())
|
||||
continue;
|
||||
if (!isThisItem(oneItem, iih.getTypeId(), name, lore, enchants))
|
||||
continue;
|
||||
|
||||
meinOk = one.getJob().getName();
|
||||
|
||||
if (oneItem.getName() != null && name != null)
|
||||
if (!org.bukkit.ChatColor.translateAlternateColorCodes('&', oneItem.getName()).equalsIgnoreCase(name))
|
||||
continue;
|
||||
|
||||
if (one.getLevel() < oneItem.getLevel())
|
||||
continue;
|
||||
|
||||
for (Entry<Enchantment, Integer> oneE : enchants.entrySet()) {
|
||||
if (oneItem.getenchants().containsKey(oneE.getKey())) {
|
||||
if (oneItem.getenchants().get(oneE.getKey()) < oneE.getValue()) {
|
||||
continue second;
|
||||
}
|
||||
} else
|
||||
continue second;
|
||||
}
|
||||
for (String onelore : oneItem.getLore()) {
|
||||
if (!lore.contains(onelore))
|
||||
continue second;
|
||||
}
|
||||
meinOk = null;
|
||||
break mein;
|
||||
}
|
||||
}
|
||||
@ -558,6 +537,43 @@ public class JobsListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isThisItem(JobLimitedItems oneItem, int id, String name, List<String> lore, Map<Enchantment, Integer> enchants) {
|
||||
|
||||
if (oneItem.getId() != id)
|
||||
return false;
|
||||
|
||||
if (oneItem.getName() != null && name != null) {
|
||||
if (!org.bukkit.ChatColor.translateAlternateColorCodes('&', oneItem.getName()).equalsIgnoreCase(name)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (String onelore : oneItem.getLore()) {
|
||||
if (!lore.contains(onelore)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean foundEnc = false;
|
||||
for (Entry<Enchantment, Integer> oneE : enchants.entrySet()) {
|
||||
if (oneItem.getenchants().containsKey(oneE.getKey())) {
|
||||
if (oneItem.getenchants().get(oneE.getKey()) <= oneE.getValue()) {
|
||||
foundEnc = true;
|
||||
break;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundEnc)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onChunkChangeMove(PlayerMoveEvent event) {
|
||||
|
||||
|
@ -870,7 +870,7 @@ public class JobsPaymentListener implements Listener {
|
||||
if (lVictim.getKiller().hasMetadata("NPC"))
|
||||
return;
|
||||
|
||||
if (MythicMobsListener.Present) {
|
||||
if (ConfigManager.getJobsConfiguration().MythicMobsEnabled && MythicMobsListener.Present) {
|
||||
if (JobsPlugin.MMAPI.getMobAPI().isMythicMob(lVictim))
|
||||
return;
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ public class Debug {
|
||||
Player player = Bukkit.getPlayer("Zrips");
|
||||
if (player == null)
|
||||
return;
|
||||
player.sendMessage(ChatColor.DARK_GRAY + "[Debug] " + ChatColor.DARK_AQUA + ChatColor.translateAlternateColorCodes('&', message));
|
||||
player.sendMessage(ChatColor.DARK_GRAY + "[Jobs Debug] " + ChatColor.DARK_AQUA + ChatColor.translateAlternateColorCodes('&', message));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@
|
||||
# they will get 15 income and job1 will gain 10 experience and job2 will gain 5 experience.
|
||||
|
||||
Jobs:
|
||||
# must be one word
|
||||
Woodcutter:
|
||||
# must be one word. This job will be ignored as this is just example of all posible actions
|
||||
exampleJob:
|
||||
# full name of the job (displayed when browsing a job, used when joining and leaving)
|
||||
# also can be used as a prefix for the user's name if the option is enabled.
|
||||
# Shown as a prefix only when the user has 1 job.
|
||||
@ -29,13 +29,13 @@ Jobs:
|
||||
# options are: full, title, job, shortfull, shorttitle, shortjob and none
|
||||
chat-display: full
|
||||
# [OPTIONAL] - the maximum level of this class
|
||||
#max-level: 10
|
||||
max-level: 10
|
||||
# [OPTIONAL] - the maximum level of this class with specific permission
|
||||
# use jobs.[jobsname].vipmaxlevel
|
||||
#vip-max-level: 20
|
||||
vip-max-level: 20
|
||||
# [OPTIONAL] - the maximum number of users on the server that can have this job at
|
||||
# any one time (includes offline players).
|
||||
#slots: 1
|
||||
slots: 1
|
||||
# Equation used for calculating how much experience is needed to go to the next level.
|
||||
# Available parameters:
|
||||
# numjobs - the number of jobs the player has
|
||||
@ -427,6 +427,64 @@ Jobs:
|
||||
cmd-on-leave:
|
||||
- 'msg [name] You have left this awesome [jobname] job'
|
||||
- 'msg [name] See you soon!'
|
||||
# from this point you can edit jobs by your liking, rename, remove or add new ones
|
||||
Woodcutter:
|
||||
fullname: Woodcutter
|
||||
shortname: W
|
||||
description: Earns money felling and planting trees
|
||||
ChatColour: GREEN
|
||||
chat-display: full
|
||||
leveling-progression-equation: 100*((1.13+(0.01*(numjobs-1)))^(joblevel-1))
|
||||
income-progression-equation: baseincome*((1.05)^(joblevel-1))
|
||||
experience-progression-equation: baseexperience*((1.05)^(joblevel-1))
|
||||
Gui:
|
||||
Id: 17
|
||||
Data: 2
|
||||
Break:
|
||||
17-0:
|
||||
income: 2.5
|
||||
experience: 2.5
|
||||
17-1:
|
||||
income: 2.0
|
||||
experience: 2.0
|
||||
17-2:
|
||||
income: 2.5
|
||||
experience: 2.5
|
||||
17-3:
|
||||
income: 2.5
|
||||
experience: 2.5
|
||||
18-0:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
18-1:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
18-2:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
18-3:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
161-0:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
161-1:
|
||||
income: 0.5
|
||||
experience: 0.5
|
||||
162-0:
|
||||
income: 2.5
|
||||
experience: 2.5
|
||||
162-1:
|
||||
income: 2.5
|
||||
experience: 2.5
|
||||
Kill:
|
||||
Player:
|
||||
income: 7.5
|
||||
experience: 7.5
|
||||
custom-kill:
|
||||
Woodcutter:
|
||||
income: 10.0
|
||||
experience: 10.0
|
||||
Miner:
|
||||
fullname: Miner
|
||||
shortname: M
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: Jobs
|
||||
description: Jobs Plugin for the BukkitAPI
|
||||
main: com.gamingmesh.jobs.JobsPlugin
|
||||
version: 2.61.0
|
||||
version: 2.62.0
|
||||
author: phrstbrn
|
||||
softdepend: [Vault, CoreProtect, MythicMobs, McMMO]
|
||||
commands:
|
||||
|
Loading…
Reference in New Issue
Block a user