mirror of
https://github.com/Zrips/Jobs.git
synced 2024-11-25 20:16:13 +01:00
Added new potions
- Now, if are missing max-level, vip-max-level, slots, and rejoincooldown integers, it will work without it. - Fix empty lores - Minor spell correcting in config - Fix disabling plugin when the server crash
This commit is contained in:
parent
02fb6be7fa
commit
e05a7f34af
@ -605,7 +605,7 @@ public class Jobs extends JavaPlugin {
|
||||
configManager.reload();
|
||||
usedSlots.clear();
|
||||
for (Job job : jobs) {
|
||||
usedSlots.put(job, getJobsDAO().getSlotsTaken(job));
|
||||
usedSlots.put(job, dao.getSlotsTaken(job));
|
||||
}
|
||||
pManager.reload();
|
||||
permissionHandler.registerPermissions();
|
||||
@ -840,7 +840,7 @@ public class Jobs extends JavaPlugin {
|
||||
|
||||
FurnaceBrewingHandling.load();
|
||||
|
||||
consoleMsg("&e[Jobs] Plugin has been enabled succesfully.");
|
||||
consoleMsg("&e[Jobs] Plugin has been enabled successfully.");
|
||||
lManager.reload();
|
||||
|
||||
cManager.fillCommands();
|
||||
@ -854,6 +854,10 @@ public class Jobs extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
// it will not run longer if it is a server error
|
||||
if (!isEnabled())
|
||||
return;
|
||||
|
||||
GUIManager.CloseInventories();
|
||||
shopManager.CloseInventories();
|
||||
dao.saveExplore();
|
||||
@ -862,7 +866,7 @@ public class Jobs extends JavaPlugin {
|
||||
FurnaceBrewingHandling.save();
|
||||
|
||||
shutdown();
|
||||
consoleMsg("&e[Jobs] &2Plugin has been disabled succesfully.");
|
||||
consoleMsg("&e[Jobs] &2Plugin has been disabled successfully.");
|
||||
this.setEnabled(false);
|
||||
}
|
||||
|
||||
|
@ -249,7 +249,7 @@ public class ConfigManager {
|
||||
*/
|
||||
if (material == CMIMaterial.REDSTONE_ORE && actionType == ActionType.BREAK) {
|
||||
Jobs.getPluginLogger().warning("Job " + jobName + " is using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE.");
|
||||
Jobs.getPluginLogger().warning("Automatically changing block to GLOWING_REDSTONE_ORE. Please update your configuration.");
|
||||
Jobs.getPluginLogger().warning("Automatically changing block to GLOWING_REDSTONE_ORE. Please update your configuration.");
|
||||
Jobs.getPluginLogger().warning("In vanilla minecraft, REDSTONE_ORE changes to GLOWING_REDSTONE_ORE when interacted with.");
|
||||
Jobs.getPluginLogger().warning("In the future, Jobs using REDSTONE_ORE instead of GLOWING_REDSTONE_ORE may fail to work correctly.");
|
||||
material = CMIMaterial.REDSTONE_ORE;
|
||||
@ -380,7 +380,7 @@ public class ConfigManager {
|
||||
try {
|
||||
f.createNewFile();
|
||||
} catch (IOException e) {
|
||||
Jobs.getPluginLogger().severe("Unable to create jobConfig.yml! No jobs were loaded!");
|
||||
Jobs.getPluginLogger().severe("Unable to create jobConfig.yml! No jobs were loaded!");
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
@ -425,23 +425,31 @@ public class ConfigManager {
|
||||
}
|
||||
|
||||
int maxLevel = jobSection.getInt("max-level", 0);
|
||||
if (jobSection.contains("max-level")) {
|
||||
if (maxLevel < 0)
|
||||
maxLevel = 0;
|
||||
}
|
||||
|
||||
int vipmaxLevel = jobSection.getInt("vip-max-level", 0);
|
||||
if (jobSection.contains("vip-max-level")) {
|
||||
if (vipmaxLevel < 0)
|
||||
vipmaxLevel = 0;
|
||||
}
|
||||
|
||||
Integer maxSlots = jobSection.getInt("slots", 0);
|
||||
if (jobSection.contains("slots")) {
|
||||
if (maxSlots.intValue() <= 0) {
|
||||
maxSlots = null;
|
||||
}
|
||||
}
|
||||
|
||||
Long rejoinCd = jobSection.getLong("rejoinCooldown", 0L);
|
||||
if (jobSection.contains("rejoinCooldown")) {
|
||||
if (rejoinCd < 0L) {
|
||||
rejoinCd = 0L;
|
||||
}
|
||||
rejoinCd = rejoinCd * 1000L;
|
||||
}
|
||||
|
||||
String jobShortName = jobSection.getString("shortname", null);
|
||||
if (jobShortName == null) {
|
||||
@ -610,8 +618,7 @@ public class ConfigManager {
|
||||
} else
|
||||
skullMeta.setOwner(skullOwner);
|
||||
GUIitem.setItemMeta(skullMeta);
|
||||
} else
|
||||
Jobs.getPluginLogger().warning("Job " + jobKey + " has an invalid Gui property. Please fix this if you want to use it!");
|
||||
}
|
||||
} else if (guiSection.contains("Id") && guiSection.contains("Data") && guiSection.isInt("Id") && guiSection.isInt("Data")) {
|
||||
GUIitem = CMIMaterial.get(guiSection.getInt("Id"), guiSection.getInt("Data")).newItemStack();
|
||||
if (guiSection.contains("Enchantments")) {
|
||||
@ -641,9 +648,9 @@ public class ConfigManager {
|
||||
} else
|
||||
skullMeta.setOwner(skullOwner);
|
||||
GUIitem.setItemMeta(skullMeta);
|
||||
} else
|
||||
Jobs.getPluginLogger().warning("Job " + jobKey + " has an invalid Gui property. Please fix this if you want to use it!");
|
||||
}
|
||||
}
|
||||
} else
|
||||
Jobs.getPluginLogger().warning("Job " + jobKey + " has an invalid Gui property. Please fix this if you want to use it!");
|
||||
}
|
||||
|
||||
// Permissions
|
||||
@ -741,13 +748,13 @@ public class ConfigManager {
|
||||
name = itemSection.getString("name");
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (itemSection.getStringList("lore") != null)
|
||||
if (itemSection.getStringList("lore") != null && itemSection.getStringList("lore").size() != 0)
|
||||
for (String eachLine : itemSection.getStringList("lore")) {
|
||||
lore.add(org.bukkit.ChatColor.translateAlternateColorCodes('&', eachLine));
|
||||
}
|
||||
|
||||
HashMap<Enchantment, Integer> enchants = new HashMap<>();
|
||||
if (itemSection.getStringList("enchants") != null)
|
||||
if (itemSection.getStringList("enchants") != null && itemSection.getStringList("enchants").size() != 0)
|
||||
for (String eachLine : itemSection.getStringList("enchants")) {
|
||||
|
||||
if (!eachLine.contains("="))
|
||||
@ -796,13 +803,13 @@ public class ConfigManager {
|
||||
name = itemSection.getString("name");
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
if (itemSection.getStringList("lore") != null)
|
||||
if (itemSection.getStringList("lore") != null && itemSection.getStringList("lore").size() != 0)
|
||||
for (String eachLine : itemSection.getStringList("lore")) {
|
||||
lore.add(org.bukkit.ChatColor.translateAlternateColorCodes('&', eachLine));
|
||||
}
|
||||
|
||||
HashMap<Enchantment, Integer> enchants = new HashMap<>();
|
||||
if (itemSection.getStringList("enchants") != null)
|
||||
if (itemSection.getStringList("enchants") != null && itemSection.getStringList("enchants").size() != 0)
|
||||
for (String eachLine : itemSection.getStringList("enchants")) {
|
||||
|
||||
if (!eachLine.contains("="))
|
||||
@ -877,7 +884,7 @@ public class ConfigManager {
|
||||
quests.add(quest);
|
||||
|
||||
} catch (Exception e) {
|
||||
Jobs.consoleMsg("&c[Jobs] Cant load " + one + " quest for " + jobName);
|
||||
Jobs.consoleMsg("&c[Jobs] Can't load " + one + " quest for " + jobName);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -452,7 +452,7 @@ public class GeneralConfigManager {
|
||||
|
||||
c.getW().addComment("MultiServerCompatability", "Enable if you are using one data base for multiple servers across bungee network",
|
||||
"This will force to load players data every time he is logging in to have most up to date data instead of having preloaded data",
|
||||
"This will enable automaticaly save-on-disconnect feature");
|
||||
"This will enable automatically save-on-disconnect feature");
|
||||
MultiServerCompatability = c.get("MultiServerCompatability", false);
|
||||
if (MultiServerCompatability)
|
||||
saveOnDisconnect = true;
|
||||
@ -479,7 +479,7 @@ public class GeneralConfigManager {
|
||||
"Warning!!! before enabling this feature, please make data base backup, just in case there will be some issues with data base cleaning",
|
||||
"When set to true, data base will be cleaned on each startup from user data to avoid having old player data");
|
||||
DBCleaningUsersUse = c.get("Optimizations.DBCleaning.Users.Use", false);
|
||||
c.getW().addComment("Optimizations.DBCleaning.Users.Days", "Any one who not playied for defined amount of days, will be removed from data base");
|
||||
c.getW().addComment("Optimizations.DBCleaning.Users.Days", "Any one who not played for defined amount of days, will be removed from data base");
|
||||
DBCleaningUsersDays = c.get("Optimizations.DBCleaning.Users.Days", 60);
|
||||
|
||||
c.getW().addComment("Optimizations.AutoJobJoin.Use", "Use or not auto join jobs feature",
|
||||
@ -491,8 +491,8 @@ public class GeneralConfigManager {
|
||||
"Op players are ignored");
|
||||
AutoJobJoinDelay = c.get("Optimizations.AutoJobJoin.Delay", 15);
|
||||
|
||||
c.getW().addComment("Optimizations.AllowDelevel", "When set to true players who gets negavite experience can delevel job up to level 1",
|
||||
"ATTENTION! Set it to true only if you certain that commands performed on levelup will not cause issues if player start level and delevel in a row.");
|
||||
c.getW().addComment("Optimizations.AllowDelevel", "When set to true players who gets negative experience can delevel job up to level 1",
|
||||
"ATTENTION! Set it to true only if you certain that commands performed on level up will not cause issues if player start level and delevel in a row.");
|
||||
AllowDelevel = c.get("Optimizations.AllowDelevel", false);
|
||||
|
||||
// c.getW().addComment("Optimizations.UseLocalOfflinePlayersData", "With this set to true, offline player data will be taken from local player data files",
|
||||
@ -513,10 +513,10 @@ public class GeneralConfigManager {
|
||||
"This is still in development and in feature it will expand");
|
||||
LoggingUse = c.get("Logging.Use", false);
|
||||
|
||||
c.getW().addComment("broadcast.on-skill-up.use", "Do all players get a message when somone goes up a skill level?");
|
||||
c.getW().addComment("broadcast.on-skill-up.use", "Do all players get a message when someone goes up a skill level?");
|
||||
isBroadcastingSkillups = c.get("broadcast.on-skill-up.use", false);
|
||||
|
||||
c.getW().addComment("broadcast.on-level-up.use", "Do all players get a message when somone goes up a level?");
|
||||
c.getW().addComment("broadcast.on-level-up.use", "Do all players get a message when someone goes up a level?");
|
||||
isBroadcastingLevelups = c.get("broadcast.on-level-up.use", false);
|
||||
c.getW().addComment("broadcast.on-level-up.levels", "For what levels you want to broadcast message? Keep it at 0 if you want for all of them");
|
||||
BroadcastingLevelUpLevels = c.getIntList("broadcast.on-level-up.levels", Arrays.asList(0));
|
||||
@ -543,10 +543,10 @@ public class GeneralConfigManager {
|
||||
c.getW().addComment("enable-pay-creative", "Option to allow payment to be made in creative mode");
|
||||
payInCreative = c.get("enable-pay-creative", false);
|
||||
|
||||
c.getW().addComment("enable-pay-for-exploring-when-flying", "Option to allow payment to be made for exploring when player flyies");
|
||||
c.getW().addComment("enable-pay-for-exploring-when-flying", "Option to allow payment to be made for exploring when player flies");
|
||||
payExploringWhenFlying = c.get("enable-pay-for-exploring-when-flying", false);
|
||||
|
||||
c.getW().addComment("add-xp-player", "Adds the Jobs xp recieved to the player's Minecraft XP bar");
|
||||
c.getW().addComment("add-xp-player", "Adds the Jobs xp received to the player's Minecraft XP bar");
|
||||
addXpPlayer = c.get("add-xp-player", false);
|
||||
|
||||
c.getW().addComment("modify-chat", "Modifys chat to add chat titles. If you're using a chat manager, you may add the tag {jobs} to your chat format and disable this.");
|
||||
@ -568,7 +568,7 @@ public class GeneralConfigManager {
|
||||
|
||||
c.getW().addComment("Economy.PaymentMethods",
|
||||
"By disabling one of thies, players no longer will get particular payment.",
|
||||
"Usefull for removing particular payment method without editing whole jobConfig file");
|
||||
"Useful for removing particular payment method without editing whole jobConfig file");
|
||||
PaymentMethodsMoney = c.get("Economy.PaymentMethods.Money", true);
|
||||
PaymentMethodsPoints = c.get("Economy.PaymentMethods.Points", true);
|
||||
PaymentMethodsExp = c.get("Economy.PaymentMethods.Exp", true);
|
||||
@ -597,7 +597,7 @@ public class GeneralConfigManager {
|
||||
MinimumOveralPointsLimit = c.get("Economy.MinimumOveralPoints.limit", 0.1);
|
||||
|
||||
c.getW().addComment("Economy.DynamicPayment.use", "Do you want to use dinamic payment dependent on how many players already working for jobs",
|
||||
"This can help automaticaly lift up payments for not so popular jobs and lower for most popular ones");
|
||||
"This can help automatically lift up payments for not so popular jobs and lower for most popular ones");
|
||||
useDynamicPayment = c.get("Economy.DynamicPayment.use", false);
|
||||
|
||||
String maxExpEquationInput = c.get("Economy.DynamicPayment.equation", "((totalworkers / totaljobs) - jobstotalplayers)/10.0");
|
||||
@ -616,14 +616,14 @@ public class GeneralConfigManager {
|
||||
DynamicPaymentMaxPenalty = c.get("Economy.DynamicPayment.MaxPenalty", 25.0);
|
||||
DynamicPaymentMaxBonus = c.get("Economy.DynamicPayment.MaxBonus", 100.0);
|
||||
|
||||
c.getW().addComment("Economy.UseServerAcount", "Server economy acount", "With this enabled, players will get money from defined user (server account)",
|
||||
"If this acount dont have enough money to pay for players for, player will get message");
|
||||
c.getW().addComment("Economy.UseServerAcount", "Server economy account", "With this enabled, players will get money from defined user (server account)",
|
||||
"If this account don't have enough money to pay for players for, player will get message");
|
||||
UseServerAccount = c.get("Economy.UseServerAcount", false);
|
||||
c.getW().addComment("Economy.AcountName", "Username should be with Correct capitalization");
|
||||
ServerAcountName = c.get("Economy.AcountName", "Server");
|
||||
c.getW().addComment("Economy.Taxes.use", "Do you want to use taxes feature for jobs payment");
|
||||
UseTaxes = c.get("Economy.Taxes.use", false);
|
||||
c.getW().addComment("Economy.Taxes.AccountName", "Username should be with Correct capitalization, it can be same as settup in server account before");
|
||||
c.getW().addComment("Economy.Taxes.AccountName", "Username should be with Correct capitalization, it can be same as setup in server account before");
|
||||
ServertaxesAcountName = c.get("Economy.Taxes.AccountName", "Server");
|
||||
c.getW().addComment("Economy.Taxes.Amount", "Amount in percentage");
|
||||
TaxesAmount = c.get("Economy.Taxes.Amount", 15.0);
|
||||
@ -648,7 +648,7 @@ public class GeneralConfigManager {
|
||||
list.add(CurrencyType.POINTS);
|
||||
limit.setStopWith(list);
|
||||
c.getW().addComment("Economy.Limit.Money.MoneyLimit",
|
||||
"Equation to calculate max limit. Option to use totallevel to include players total amount levels of current jobs",
|
||||
"Equation to calculate max limit. Option to use total level to include players total amount levels of current jobs",
|
||||
"You can always use simple number to set money limit",
|
||||
"Default equation is: 500+500*(totallevel/100), this will add 1% from 500 for each level player have",
|
||||
"So player with 2 jobs with level 15 and 22 will have 685 limit");
|
||||
@ -682,7 +682,7 @@ public class GeneralConfigManager {
|
||||
list.add(CurrencyType.MONEY);
|
||||
limit.setStopWith(list);
|
||||
c.getW().addComment("Economy.Limit.Point.Limit",
|
||||
"Equation to calculate max limit. Option to use totallevel to include players total amount levels of current jobs",
|
||||
"Equation to calculate max limit. Option to use total level to include players total amount levels of current jobs",
|
||||
"You can always use simple number to set limit",
|
||||
"Default equation is: 500+500*(totallevel/100), this will add 1% from 500 for each level player have",
|
||||
"So player with 2 jobs with level 15 and 22 will have 685 limit");
|
||||
@ -738,7 +738,7 @@ public class GeneralConfigManager {
|
||||
currencyLimitUse.put(CurrencyType.EXP, limit);
|
||||
|
||||
c.getW().addComment("Economy.Repair.PayForRenaming", "Do you want to give money for only renaming items in anvil",
|
||||
"Players will get full pay as they would for remairing two items when they only renaming one",
|
||||
"Players will get full pay as they would for remaining two items when they only renaming one",
|
||||
"This is not big issue, but if you want to disable it, you can");
|
||||
PayForRenaming = c.get("Economy.Repair.PayForRenaming", true);
|
||||
|
||||
@ -751,7 +751,7 @@ public class GeneralConfigManager {
|
||||
"With this false, player will get bucket of milk, but still no payment");
|
||||
CancelCowMilking = c.get("Economy.MilkingCow.CancelMilking", false);
|
||||
c.getW().addComment("Economy.MilkingCow.Timer",
|
||||
"How ofter player can milk cows in seconds. Keep in mind that by default player can milk cow indefinetly and as often as he wants",
|
||||
"How ofter player can milk cows in seconds. Keep in mind that by default player can milk cow indefinitely and as often as he wants",
|
||||
"Set to 0 if you want to disable timer");
|
||||
CowMilkingTimer = c.get("Economy.MilkingCow.Timer", 30) * 1000;
|
||||
|
||||
@ -811,13 +811,13 @@ public class GeneralConfigManager {
|
||||
c.getW().addComment("ExploitProtections.MythicMobs", "MythicMobs plugin support", "Disable if you having issues with it or using old version");
|
||||
MythicMobsEnabled = c.get("ExploitProtections.MythicMobs.enabled", true);
|
||||
|
||||
c.getW().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");
|
||||
c.getW().addComment("ExploitProtections.Spawner.PreventSlimeSplit", "Prevent slime splitting when they are from spawner",
|
||||
"Protects agains exploiting as new splited slimes is treated as naturally spawned and not from spawner");
|
||||
PreventSlimeSplit = c.get("ExploitProtections.Spawner.PreventSlimeSplit", true);
|
||||
c.getW().addComment("ExploitProtections.Spawner.PreventMagmaCubeSplit", "Prevent magmacube spliting when they are from spawner");
|
||||
c.getW().addComment("ExploitProtections.Spawner.PreventMagmaCubeSplit", "Prevent magmacube splitting when they are from spawner");
|
||||
PreventMagmaCubeSplit = c.get("ExploitProtections.Spawner.PreventMagmaCubeSplit", true);
|
||||
|
||||
c.getW().addComment("ExploitProtections.Smelt.PreventHopperFillUps", "Prevent payments when hoppers moving items into furnace", "Player will not get paid, but items will be smellted");
|
||||
c.getW().addComment("ExploitProtections.Smelt.PreventHopperFillUps", "Prevent payments when hoppers moving items into furnace", "Player will not get paid, but items will be smelted");
|
||||
PreventHopperFillUps = c.get("ExploitProtections.Smelt.PreventHopperFillUps", true);
|
||||
c.getW().addComment("ExploitProtections.Smelt.PreventMagmaCubeSplit", "Prevent payments when hoppers moving items into brewing stands",
|
||||
"Player will not get paid, but items will be brewd as they supose too");
|
||||
@ -916,7 +916,7 @@ public class GeneralConfigManager {
|
||||
c.getW().addComment("JobsGUI.ShowChatBrowse", "Do you want to show chat information when performing /jobs browse command");
|
||||
JobsGUIShowChatBrowse = c.get("JobsGUI.ShowChatBrowse", true);
|
||||
c.getW().addComment("JobsGUI.SwitcheButtons", "With true left mouse button will join job and right will show more info",
|
||||
"With false left mouse button will show more info, rigth will join job", "Dont forget to adjust locale file");
|
||||
"With false left mouse button will show more info, right will join job", "Don't forget to adjust locale file");
|
||||
JobsGUISwitcheButtons = c.get("JobsGUI.SwitcheButtons", false);
|
||||
c.getW().addComment("JobsGUI.Rows", "Defines size in rows of GUI");
|
||||
JobsGUIRows = c.get("JobsGUI.Rows", 5);
|
||||
|
@ -629,7 +629,7 @@ public class LanguageManager {
|
||||
c.get("scoreboard.gtopline", "&2Global top list");
|
||||
c.get("scoreboard.line", "&2%number%. &e%playername% (&6%level%&e)");
|
||||
|
||||
Jobs.getGCManager().keys = new ArrayList<String>(c.getC().getConfigurationSection("signs.secondline").getKeys(false));
|
||||
Jobs.getGCManager().keys = new ArrayList<>(c.getC().getConfigurationSection("signs.secondline").getKeys(false));
|
||||
|
||||
// Write back config
|
||||
try {
|
||||
|
@ -1644,6 +1644,8 @@ public class NameTranslatorManager {
|
||||
c.get("EnchantList.8.Name", "Depth Strider");
|
||||
c.get("EnchantList.9.MCName", "FROST_WALKER");
|
||||
c.get("EnchantList.9.Name", "Frost Walker");
|
||||
c.get("EnchantList.10.MCName", "CURSE_OF_BINDING");
|
||||
c.get("EnchantList.10.Name", "Curse of Binding");
|
||||
c.get("EnchantList.16.MCName", "DAMAGE_ALL");
|
||||
c.get("EnchantList.16.Name", "Sharpness");
|
||||
c.get("EnchantList.17.MCName", "DAMAGE_UNDEAD");
|
||||
@ -1656,6 +1658,8 @@ public class NameTranslatorManager {
|
||||
c.get("EnchantList.20.Name", "Fire Aspect");
|
||||
c.get("EnchantList.21.MCName", "LOOT_BONUS_MOBS");
|
||||
c.get("EnchantList.21.Name", "Looting");
|
||||
c.get("EnchantList.22.MCName", "SWEEPING_EDGE");
|
||||
c.get("EnchantList.22.Name", "Sweeping Edge");
|
||||
c.get("EnchantList.32.MCName", "DIG_SPEED");
|
||||
c.get("EnchantList.32.Name", "Efficiency");
|
||||
c.get("EnchantList.33.MCName", "SILK_TOUCH");
|
||||
@ -1676,8 +1680,18 @@ public class NameTranslatorManager {
|
||||
c.get("EnchantList.61.Name", "Luck of the Sea");
|
||||
c.get("EnchantList.62.MCName", "LURE");
|
||||
c.get("EnchantList.62.Name", "Lure");
|
||||
c.get("EnchantList.65.MCName", "LOYALTY");
|
||||
c.get("EnchantList.65.Name", "Loyalty");
|
||||
c.get("EnchantList.66.MCName", "IMPALING");
|
||||
c.get("EnchantList.66.Name", "Impaling");
|
||||
c.get("EnchantList.67.MCName", "RIPTIDE");
|
||||
c.get("EnchantList.67.Name", "Riptide");
|
||||
c.get("EnchantList.68.MCName", "CHANNELING");
|
||||
c.get("EnchantList.68.Name", "Channeling");
|
||||
c.get("EnchantList.70.MCName", "MENDING");
|
||||
c.get("EnchantList.70.Name", "Mending");
|
||||
c.get("EnchantList.71.MCName", "CURSE_OF_VANISHING");
|
||||
c.get("EnchantList.71.Name", "Curse Of Vanishing");
|
||||
|
||||
// Color list
|
||||
c.get("ColorList.0.MCName", "white");
|
||||
|
Loading…
Reference in New Issue
Block a user