diff --git a/Changelog.txt b/Changelog.txt index 68baad04a..2aa6b9438 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,4 +1,5 @@ Version 2.2.000 + Removed the mcimport command as its useless (was for mod configs) mcMMO-API is now the library used for mcMMO API Parts of the API have been migrated to mcMMO-API (API) mcMMO makes use of jmal (Java Minecraft Abstraction Library) for some abstraction now diff --git a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java b/src/main/java/com/gmail/nossr50/commands/McImportCommand.java deleted file mode 100644 index 16447933e..000000000 --- a/src/main/java/com/gmail/nossr50/commands/McImportCommand.java +++ /dev/null @@ -1,336 +0,0 @@ -package com.gmail.nossr50.commands; - -import com.gmail.nossr50.datatypes.skills.ModConfigType; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.util.Misc; -import org.bukkit.Material; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Locale; - -public class McImportCommand implements CommandExecutor { - int fileAmount; - - @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { - if (args.length == 0) { - importModConfig(); - return true; - } - return false; - } - - public boolean importModConfig() { - String importFilePath = mcMMO.getModDirectory() + File.separator + "import"; - File importFile = new File(importFilePath, "import.log"); - mcMMO.p.getLogger().info("Starting import of mod materials..."); - fileAmount = 0; - - HashMap> materialNames = new HashMap<>(); - - BufferedReader in = null; - - try { - // Open the file - in = new BufferedReader(new FileReader(importFile)); - - String line; - String materialName; - String modName; - - // While not at the end of the file - while ((line = in.readLine()) != null) { - String[] split1 = line.split("material "); - - if (split1.length != 2) { - continue; - } - - String[] split2 = split1[1].split(" with"); - - if (split2.length != 2) { - continue; - } - - materialName = split2[0]; - - // Categorise each material under a mod config type - ModConfigType type = ModConfigType.getModConfigType(materialName); - - if (!materialNames.containsKey(type)) { - materialNames.put(type, new ArrayList<>()); - } - - materialNames.get(type).add(materialName); - } - } - catch (FileNotFoundException e) { - mcMMO.p.getLogger().warning("Could not find " + importFile.getAbsolutePath() + " ! (No such file or directory)"); - mcMMO.p.getLogger().warning("Copy and paste latest.log to " + importFile.getParentFile().getAbsolutePath() + " and rename it to import.log"); - return false; - } - catch (Exception e) { - e.printStackTrace(); - return false; - } - finally { - tryClose(in); - } - - createOutput(materialNames); - - mcMMO.p.getLogger().info("Import finished! Created " + fileAmount + " files!"); - return true; - } - - private void createOutput(HashMap> materialNames) { - for (ModConfigType modConfigType : materialNames.keySet()) { - HashMap> materialNamesType = new HashMap<>(); - - for (String materialName : materialNames.get(modConfigType)) { - String modName = Misc.getModName(materialName); - - if (!materialNamesType.containsKey(modName)) { - materialNamesType.put(modName, new ArrayList<>()); - } - - materialNamesType.get(modName).add(materialName); - } - - createOutput(modConfigType, materialNamesType); - } - - } - - private void tryClose(Closeable c) { - if (c == null) { - return; - } - try { - c.close(); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - private void createOutput(ModConfigType modConfigType, HashMap> materialNames) { - File outputFilePath = new File(mcMMO.getModDirectory() + File.separator + "output"); - if (!outputFilePath.exists() && !outputFilePath.mkdirs()) { - mcMMO.p.getLogger().severe("Could not create output directory! " + outputFilePath.getAbsolutePath()); - } - - FileWriter out = null; - String type = modConfigType.name().toLowerCase(Locale.ENGLISH); - - for (String modName : materialNames.keySet()) { - File outputFile = new File(outputFilePath, modName + "." + type + ".yml"); - mcMMO.p.getLogger().info("Creating " + outputFile.getName()); - try { - if (outputFile.exists() && !outputFile.delete()) { - mcMMO.p.getLogger().severe("Not able to delete old output file! " + outputFile.getAbsolutePath()); - } - - if (!outputFile.createNewFile()) { - mcMMO.p.getLogger().severe("Could not create output file! " + outputFile.getAbsolutePath()); - continue; - } - - StringBuilder writer = new StringBuilder(); - HashMap> configSections = getConfigSections(modConfigType, modName, materialNames); - - if (configSections == null) { - mcMMO.p.getLogger().severe("Something went wrong!! type is " + type); - return; - } - - // Write the file, go through each rootSkilland write all the materials - for (String configSection : configSections.keySet()) { - if (configSection.equals("UNIDENTIFIED")) { - writer.append("# This isn't a valid config section and all materials in this category need to be").append("\r\n"); - writer.append("# copy and pasted to a valid section of this config file.").append("\r\n"); - } - writer.append(configSection).append(":").append("\r\n"); - - for (String line : configSections.get(configSection)) { - writer.append(line).append("\r\n"); - } - - writer.append("\r\n"); - } - - out = new FileWriter(outputFile); - out.write(writer.toString()); - } catch (Exception e) { - e.printStackTrace(); - return; - } finally { - tryClose(out); - fileAmount++; - } - } - } - - private HashMap> getConfigSections(ModConfigType type, String modName, HashMap> materialNames) { - switch (type) { - case BLOCKS: - return getConfigSectionsBlocks(modName, materialNames); - case TOOLS: - return getConfigSectionsTools(modName, materialNames); - case ARMOR: - return getConfigSectionsArmor(modName, materialNames); - case UNKNOWN: - return getConfigSectionsUnknown(modName, materialNames); - } - - return null; - } - - private HashMap> getConfigSectionsBlocks(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under a skill - for (String materialName : materialNames.get(modName)) { - String skillName = "UNIDENTIFIED"; - if (materialName.contains("ORE")) { - skillName = "Mining"; - } - else if (materialName.contains("LOG") || materialName.contains("LEAVES")) { - skillName = "Woodcutting"; - } - else if (materialName.contains("GRASS") || materialName.contains("FLOWER") || materialName.contains("CROP")) { - skillName = "Herbalism"; - } - else if (materialName.contains("DIRT") || materialName.contains("SAND")) { - skillName = "Excavation"; - } - - if (!configSections.containsKey(rootSkillName)) { - configSections.put(rootSkillName, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(rootSkillName); - skillContents.add(" " + materialName + "|0:"); - skillContents.add(" " + " " + "XP_Gain: 99"); - skillContents.add(" " + " " + "Double_Drops_Enabled: true"); - - if (rootSkillName.equals("Mining")) { - skillContents.add(" " + " " + "Smelting_XP_Gain: 9"); - } - else if (rootSkillName.equals("Woodcutting")) { - skillContents.add(" " + " " + "Is_Log: " + materialName.contains("LOG")); - } - } - - return configSections; - } - - private HashMap> getConfigSectionsTools(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under a tool type - for (String materialName : materialNames.get(modName)) { - String toolType = "UNIDENTIFIED"; - if (materialName.contains("PICKAXE")) { - toolType = "Pickaxes"; - } - else if (materialName.contains("AXE")) { - toolType = "Axes"; - } - else if (materialName.contains("BOW")) { - toolType = "Bows"; - } - else if (materialName.contains("HOE")) { - toolType = "Hoes"; - } - else if (materialName.contains("SHOVEL") || materialName.contains("SPADE")) { - toolType = "Shovels"; - } - else if (materialName.contains("SWORD")) { - toolType = "Swords"; - } - - if (!configSections.containsKey(toolType)) { - configSections.put(toolType, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(toolType); - skillContents.add(" " + materialName + ":"); - skillContents.add(" " + " " + "XP_Modifier: 1.0"); - skillContents.add(" " + " " + "Tier: 1"); - skillContents.add(" " + " " + "Ability_Enabled: true"); - addRepairableLines(materialName, skillContents); - } - - return configSections; - } - - private HashMap> getConfigSectionsArmor(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and categorise them under an armor type - for (String materialName : materialNames.get(modName)) { - String toolType = "UNIDENTIFIED"; - if (materialName.contains("BOOT") || materialName.contains("SHOE")) { - toolType = "Boots"; - } - else if (materialName.contains("CHESTPLATE") || materialName.contains("CHEST")) { - toolType = "Chestplates"; - } - else if (materialName.contains("HELM") || materialName.contains("HAT")) { - toolType = "Helmets"; - } - else if (materialName.contains("LEGGINGS") || materialName.contains("LEGS") || materialName.contains("PANTS")) { - toolType = "Leggings"; - } - - if (!configSections.containsKey(toolType)) { - configSections.put(toolType, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(toolType); - skillContents.add(" " + materialName + ":"); - addRepairableLines(materialName, skillContents); - } - - return configSections; - } - - private void addRepairableLines(String materialName, ArrayList skillContents) { - skillContents.add(" " + " " + "Repairable: true"); - skillContents.add(" " + " " + "Repair_Material: REPAIR_MATERIAL_NAME"); - skillContents.add(" " + " " + "Repair_Material_Data_Value: 0"); - skillContents.add(" " + " " + "Repair_Material_Quantity: 9"); - skillContents.add(" " + " " + "Repair_Material_Pretty_Name: Repair Item Name"); - skillContents.add(" " + " " + "Repair_MinimumLevel: 0"); - skillContents.add(" " + " " + "Repair_XpMultiplier: 1.0"); - - Material material = Material.matchMaterial(materialName); - short durability = (material == null) ? (short) 9999 : material.getMaxDurability(); - skillContents.add(" " + " " + "Durability: " + ((durability > 0) ? durability : (short) 9999)); - } - - private HashMap> getConfigSectionsUnknown(String modName, HashMap> materialNames) { - HashMap> configSections = new HashMap<>(); - - // Go through all the materials and print them - for (String materialName : materialNames.get(modName)) { - String configKey = "UNIDENTIFIED"; - - if (!configSections.containsKey(configKey)) { - configSections.put(configKey, new ArrayList<>()); - } - - ArrayList skillContents = configSections.get(configKey); - skillContents.add(" " + materialName); - } - - return configSections; - } -} diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index c8c7cdb14..0999a07a2 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -355,16 +355,24 @@ public class Config extends AutoUpdateConfigLoader { } /* Hardcore Mode */ + @Deprecated public boolean getHardcoreStatLossEnabled(PrimarySkillType primarySkillType) { return config.getBoolean("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(primarySkillType.toString()), false); } + public boolean getHardcoreStatLossEnabled(@NotNull RootSkill rootSkill) { return config.getBoolean("Hardcore.Death_Stat_Loss.Enabled." + rootSkill.getRawSkillName(), false); } + @Deprecated public void setHardcoreStatLossEnabled(PrimarySkillType primarySkillType, boolean enabled) { config.set("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(primarySkillType.toString()), enabled); } + public void setHardcoreStatLossEnabled(@NotNull RootSkill rootSkill, boolean enabled) { config.set("Hardcore.Death_Stat_Loss.Enabled." + rootSkill.getRawSkillName(), enabled); } public double getHardcoreDeathStatPenaltyPercentage() { return config.getDouble("Hardcore.Death_Stat_Loss.Penalty_Percentage", 75.0D); } public void setHardcoreDeathStatPenaltyPercentage(double value) { config.set("Hardcore.Death_Stat_Loss.Penalty_Percentage", value); } public int getHardcoreDeathStatPenaltyLevelThreshold() { return config.getInt("Hardcore.Death_Stat_Loss.Level_Threshold", 0); } + @Deprecated public boolean getHardcoreVampirismEnabled(PrimarySkillType primarySkillType) { return config.getBoolean("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(primarySkillType.toString()), false); } + public boolean getHardcoreVampirismEnabled(@NotNull RootSkill rootSkill) { return config.getBoolean("Hardcore.Vampirism.Enabled." + rootSkill.getRawSkillName(), false); } + @Deprecated public void setHardcoreVampirismEnabled(PrimarySkillType primarySkillType, boolean enabled) { config.set("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(primarySkillType.toString()), enabled); } + public void setHardcoreVampirismEnabled(@NotNull RootSkill rootSkill, boolean enabled) { config.set("Hardcore.Vampirism.Enabled." + rootSkill.getRawSkillName(), enabled); } public double getHardcoreVampirismStatLeechPercentage() { return config.getDouble("Hardcore.Vampirism.Leech_Percentage", 5.0D); } public void setHardcoreVampirismStatLeechPercentage(double value) { config.set("Hardcore.Vampirism.Leech_Percentage", value); } @@ -576,9 +584,13 @@ public class Config extends AutoUpdateConfigLoader { public boolean getTruncateSkills() { return config.getBoolean("General.TruncateSkills", false); } /* PVP & PVE Settings */ + @Deprecated public boolean getPVPEnabled(PrimarySkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVP", true); } + public boolean getPVPEnabled(RootSkill skill) { return config.getBoolean("Skills." + skill.getRawSkillName() + ".Enabled_For_PVP", true); } + @Deprecated public boolean getPVEEnabled(PrimarySkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVE", true); } - + public boolean getPVEEnabled(RootSkill skill) { return config.getBoolean("Skills." + skill.getRawSkillName() + ".Enabled_For_PVE", true); } + //public float getMasterVolume() { return (float) config.getDouble("Sounds.MasterVolume", 1.0); } public boolean broadcastEventMessages() { return config.getBoolean("General.EventBroadcasts", true);} diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/CoreRootSkill.java b/src/main/java/com/gmail/nossr50/datatypes/skills/CoreRootSkill.java index fca9d360c..546fd7505 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/CoreRootSkill.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/CoreRootSkill.java @@ -6,6 +6,7 @@ import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.text.StringUtils; import com.neetgames.mcmmo.player.MMOPlayer; +import com.neetgames.mcmmo.player.OnlineMMOPlayer; import com.neetgames.mcmmo.skill.AbstractRootSkill; import org.bukkit.entity.Player; import org.bukkit.entity.Tameable; @@ -47,8 +48,8 @@ public class CoreRootSkill extends AbstractRootSkill { } @Override - public boolean isRootSkillPermitted(@NotNull MMOPlayer mmoPlayer) { - return Permissions.skillEnabled(mmoPlayer, this); + public boolean isRootSkillPermitted(@NotNull OnlineMMOPlayer mmoPlayer) { + return Permissions.skillEnabled((Player) mmoPlayer.getServerAPIPlayerImpl(), this); } @Override diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java b/src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java index 783b90f3f..20091b44c 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/CoreSkills.java @@ -22,6 +22,7 @@ import com.neetgames.mcmmo.skill.RootSkill; import com.neetgames.mcmmo.skill.SkillIdentity; import com.neetgames.mcmmo.skill.SuperSkill; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.HashSet; @@ -31,8 +32,9 @@ import java.util.stream.Collectors; public class CoreSkills { + //TODO: Should these be immutable? private static final @NotNull ImmutableSet CORE_ROOT_SKILLS; - private static final @NotNull ImmutableSet CORE_CHILD_SKILLS; //Could make this a marker interface + private static final @NotNull ImmutableSet CORE_CHILD_SKILLS; private static final @NotNull ImmutableSet CORE_NON_CHILD_SKILLS; private static final @NotNull ImmutableSet CORE_SUB_SKILLS; private static final @NotNull ImmutableSet CORE_SUPER_SKILLS; @@ -47,10 +49,60 @@ public class CoreSkills { FISHING_ID, HERBALISM_ID, MINING_ID, REPAIR_ID, SALVAGE_ID, SMELTING_ID, SWORDS_ID, TAMING_ID, UNARMED_ID, WOODCUTTING_ID, TRIDENTS_ID, CROSSBOWS_ID; - public static final @NotNull SuperSkill SKULL_SPLITTER, GIGA_DRILL_BREAKER, GREEN_TERRA, SUPER_BREAKER, - BLAST_MINING, SERRATED_STRIKES, CALL_OF_THE_WILD, BERSERK, TREE_FELLER, TRIDENTS_SUPER, SUPER_SHOT_GUN; +// public static final @NotNull SuperSkill SKULL_SPLITTER, GIGA_DRILL_BREAKER, GREEN_TERRA, SUPER_BREAKER, +// BLAST_MINING, SERRATED_STRIKES, CALL_OF_THE_WILD, BERSERK, TREE_FELLER, TRIDENTS_SUPER, SUPER_SHOT_GUN; - public static final @NotNull CoreSkill ROLL; +// public static @NotNull CoreSkill +// /* Acrobatics */ +// DODGE, ROLL, +// +// /* Alchemy */ +// CATALYSIS, CONCOCTIONS, +// +// /* Archery */ +// ARROW_RETRIEVAL, DAZE, SKILLSHOT, LIMIT_BREAK_ARCHERY, +// +// /* Axes */ +// ARMOR_IMPACT, AXE_MASTERY, LIMIT_BREAK_AXES, CRITICAL_STRIKES, GREATER_IMPACT, SKULL_SPLITTER, +// +// /* Excavation */ +// ARCHAEOLOGY, GIGA_DRILL_BREAKER, +// +// /* Fishing */ +// FISHERMANS_DIET, ICE_FISHING, MAGIC_HUNTER, MASTER_ANGLER, TREASURE_HUNTER, SHAKE, +// +// /* Herbalism */ +// DOUBLE_DROPS_HERBALISM, FARMERS_DIET, GREEN_TERRA, GREEN_THUMB, HYLIAN_LUCK, SHROOM_THUMB, +// +// /* Mining */ +// BIGGER_BOMBS, BLAST_MINING, DEMOLITIONS_EXPERTISE, DOUBLE_DROPS, SUPER_BREAKER, +// +// /* Repair */ +// ARCANE_FORGING, REPAIR_MASTERY, SUPER_REPAIR, +// +// /* Salvage */ +// SCRAP_COLLECTOR, ARCANE_SALVAGE, +// +// /* Smelting */ +// FUEL_EFFICIENCY, SECOND_SMELT, UNDERSTANDING_THE_ART, +// +// /* Swords */ +// COUNTER_ATTACK, RUPTURE, SERRATED_STRIKES, STAB, LIMIT_BREAK_SWORDS, +// +// /* Taming */ +// BEAST_LORE, CALL_OF_THE_WILD, ENVIRONMENTALLY_AWARE, FAST_FOOD_SERVICE, GORE, HOLY_HOUND, PUMMEL, SHARPENED_CLAWS, SHOCK_PROOF, THICK_FUR, +// +// /* Archery */ +// ARROW_DEFLECT, BERSERK, BLOCK_CRACKER, DISARM, STEEL_ARM_STYLE, IRON_GRIP, LIMIT_BREAK_UNARMED, +// +// /* Woodcutting */ +// KNOCK_ON_WOOD, HARVEST_LUMBER, LEAF_BLOWER, TREE_FELLER, +// +// /* Tridents */ +// MULTI_TASKING, LIMIT_BREAK_TRIDENTS, +// +// /* Crossbows */ +// SUPER_SHOTGUN, LIMIT_BREAK_CROSSBOWS; private static final @NotNull HackySkillMappings hackySkillMappings = new HackySkillMappings(); @@ -138,35 +190,41 @@ public class CoreSkills { CORE_NON_CHILD_SKILLS = ImmutableSet.copyOf(generateNonChildSkillSet()); CORE_SUB_SKILLS = ImmutableSet.copyOf(subSkillSet); CORE_SUPER_SKILLS = ImmutableSet.copyOf(superSkillSet); + + /* + * Init core skills + */ + + } /** * Returns a set of built in {@link RootSkill}s for mcMMO * No guarantees for whether or not the skills are registered or active or inactive * - * @return a set of all root skills built into mcMMO + * @return a set of all {@link RootSkill} built into mcMMO */ public static @NotNull Set getCoreRootSkills() { return CORE_ROOT_SKILLS; } /** - * Returns a set of built in skills for mcMMO + * Returns a set of built in {@link CoreSkill}s for mcMMO * No guarantees for whether or not the skills are registered or active or inactive * - * @return a set of all root skills built into mcMMO + * @return a set of all {@link CoreSkill} built into mcMMO */ public static @NotNull Set getCoreSkills() { return CORE_SUB_SKILLS; } /** - * Returns a set of built in skills for mcMMO + * Returns a set of built in {@link SuperSkill}s for mcMMO * No guarantees for whether or not the skills are registered or active or inactive * - * @return a set of all root skills built into mcMMO + * @return a set of all {@link SuperSkill} built into mcMMO */ - public static @NotNull Set getCoreSkills() { + public static @NotNull Set getCoreSuperSkills() { return CORE_SUPER_SKILLS; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SuperCoreSkill.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SuperCoreSkill.java new file mode 100644 index 000000000..82e39d5a7 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SuperCoreSkill.java @@ -0,0 +1,27 @@ +package com.gmail.nossr50.datatypes.skills; + +import com.neetgames.mcmmo.player.OnlineMMOPlayer; +import com.neetgames.mcmmo.skill.RootSkill; +import com.neetgames.mcmmo.skill.SuperSkill; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class SuperCoreSkill extends CoreSkill implements SuperSkill { + + private final int defaultCooldown; + + public SuperCoreSkill(@NotNull String pluginName, @NotNull String skillName, @Nullable String permission, @NotNull RootSkill parentSkill, int defaultCooldown) { + super(pluginName, skillName, permission, parentSkill); + this.defaultCooldown = defaultCooldown; + } + + @Override + public int getDefaultCooldown() { + return defaultCooldown; + } + + @Override + public int getCooldown(@NotNull OnlineMMOPlayer onlineMMOPlayer) { + //TODO: Move implementation + } +} diff --git a/src/main/java/com/gmail/nossr50/util/Permissions.java b/src/main/java/com/gmail/nossr50/util/Permissions.java index dd2dc19e4..76fced58f 100644 --- a/src/main/java/com/gmail/nossr50/util/Permissions.java +++ b/src/main/java/com/gmail/nossr50/util/Permissions.java @@ -16,6 +16,7 @@ import org.bukkit.permissions.Permissible; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.PluginManager; +import org.jetbrains.annotations.NotNull; import java.util.Locale; @@ -141,7 +142,9 @@ public final class Permissions { * SKILLS */ + @Deprecated public static boolean skillEnabled(Permissible permissible, PrimarySkillType skill) {return permissible.hasPermission("mcmmo.skills." + skill.toString().toLowerCase(Locale.ENGLISH)); } + public static boolean skillEnabled(@NotNull Permissible permissible, @NotNull RootSkill rootSkill) {return permissible.hasPermission("mcmmo.skills." + rootSkill.getRawSkillName().toLowerCase(Locale.ENGLISH)); } public static boolean vanillaXpBoost(Permissible permissible, PrimarySkillType skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase(Locale.ENGLISH) + ".vanillaxpboost"); } public static boolean isSubSkillEnabled(Permissible permissible, SubSkillType subSkillType) { return permissible.hasPermission(subSkillType.getPermissionNodeAddress()); } public static boolean isSubSkillEnabled(Permissible permissible, AbstractSubSkill abstractSubSkill) { return permissible.hasPermission(abstractSubSkill.getPermissionNode()); } diff --git a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java index 4ea396995..e049c7198 100644 --- a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java +++ b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java @@ -418,15 +418,6 @@ public final class CommandRegistrationManager { command.setExecutor(new McscoreboardCommand()); } - private static void registerMcImportCommand() { - PluginCommand command = mcMMO.p.getCommand("mcimport"); - command.setDescription("Import mod config files"); //TODO: Localize - command.setPermission("mcmmo.commands.mcimport"); - command.setPermissionMessage(permissionsMessage); - command.setUsage(LocaleLoader.getString("Commands.Usage.0", "mcimport")); - command.setExecutor(new McImportCommand()); - } - private static void registerReloadLocaleCommand() { PluginCommand command = mcMMO.p.getCommand("mcmmoreloadlocale"); command.setDescription("Reloads locale"); // TODO: Localize @@ -456,7 +447,6 @@ public final class CommandRegistrationManager { registerXPBarCommand(); registerMmoInfoCommand(); registerMmoDebugCommand(); - registerMcImportCommand(); registerMcabilityCommand(); registerMcgodCommand(); registerMcChatSpyCommand(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 2d0cddc72..12ffbe166 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -69,9 +69,6 @@ commands: mcgod: description: Toggle mcMMO god-mode on/off permission: mcmmo.commands.mcgod - mcimport: - description: Import mod config files - permission: mcmmo.commands.mcimport mcstats: aliases: [stats] description: Shows your mcMMO stats and xp @@ -859,7 +856,6 @@ permissions: mcmmo.commands.mcchatspy.others: true mcmmo.commands.mcgod: true mcmmo.commands.mcgod.others: true - mcmmo.commands.mcimport: true mcmmo.commands.mcpurge: true mcmmo.commands.mcrank.others.all: true mcmmo.commands.mcrefresh: true @@ -976,8 +972,6 @@ permissions: description: Allows access to the mcnotify command mcmmo.commands.mcpurge: description: Allows access to the mcpurge command - mcmmo.commands.mcimport: - description: Allows access to the mcimport command mcmmo.commands.mcrank: description: Allows access to the mcrank command mcmmo.commands.mcrank.others.*: