diff --git a/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java b/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java index dd3211f8a..2d497fb20 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/teleport/PtpCommand.java @@ -1,7 +1,6 @@ package com.gmail.nossr50.commands.party.teleport; import com.gmail.nossr50.commands.CommandConstants; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.PartyFeature; import com.gmail.nossr50.datatypes.party.PartyTeleportRecord; @@ -53,7 +52,7 @@ public class PtpCommand implements TabExecutor { } /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(player.getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(player.getWorld().getName())) return true; if (!pluginRef.getUserManager().hasPlayerDataKey(player)) { diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java deleted file mode 100644 index 32847d303..000000000 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.gmail.nossr50.config; - -import com.gmail.nossr50.mcMMO; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; - -import java.util.ArrayList; -import java.util.List; - -@ConfigSerializable -public class AdvancedConfig extends ConfigValidated { - - public static final String SKILLS = "Skills"; - public static final String GENERAL = "General"; - public static final String ABILITY = "Ability"; - public static final String LENGTH = "Length"; - public static final String INCREASE_LEVEL = "IncreaseLevel"; - public static final String ENCHANT_BUFF = "EnchantBuff"; - public static final String ACROBATICS = "Acrobatics"; - public static final String DODGE = "Dodge"; - public static final String CHANCE = "Chance"; - public static final String CHANCE_MAX = CHANCE + "Max"; - public static final String BONUS = "Bonus"; - public static final String MAX_BONUS_LEVEL = "Max" + BONUS + "Level"; - public static final String MODIFIER = "Modifier"; - public static final String DAMAGE_MODIFIER = "Damage" + MODIFIER; - public static final String DAMAGE_THRESHOLD = "DamageThreshold"; - public static final String ALCHEMY = "Alchemy"; - public static final String CATALYSIS = "Catalysis"; - public static final String MIN_SPEED = "MinSpeed"; - public static final String MAX_SPEED = "MaxSpeed"; - public static final String ARCHERY = "Archery"; - public static final String SKILL_SHOT = "SkillShot"; - public static final String MULTIPLIER = "Multiplier"; - public static final String RANK_DAMAGE_MULTIPLIER = "RankDamage" + MULTIPLIER; - public static final String BONUS_DAMAGE = BONUS + "Damage"; - public static final String FORCE_MULTIPLIER = "Force" + MULTIPLIER; - public static final String AXES = "Axes"; - public static final String STANDARD = "Standard"; - public static final String RETRO_MODE = "RetroMode"; - public static final String CAP_LEVEL = "CapLevel"; - public static final String KNOCKBACK_MODIFIER = "Knockback" + MODIFIER; - public static final String PVP_MODIFIER = "PVP_" + MODIFIER; - public static final String PVE_MODIFIER = "PVE_" + MODIFIER; - public static final String FISHING = "Fishing"; - public static final String MASTER_ANGLER = "MasterAngler"; - public static final String BOAT_MODIFIER = "Boat" + MODIFIER; - public static final String BIOME_MODIFIER = "Biome" + MODIFIER; - public static final String XP = "XP"; - public static final String VANILLA_XPMULTIPLIER = "Vanilla" + XP + MULTIPLIER; - public static final String RANK = "Rank_"; - public static final String TAMING = "Taming"; - public static final String CALL_OF_THE_WILD = "CallOfTheWild"; - public static final String MIN_HORSE_JUMP_STRENGTH = "MinHorseJumpStrength"; - public static final String MAX_HORSE_JUMP_STRENGTH = "MaxHorseJumpStrength"; - public static final String SHOCK_PROOF = "ShockProof"; - public static final String UNARMED = "Unarmed"; - public static final String STARTING_LEVEL = "StartingLevel"; - public static final String AXE_MASTERY = "AxeMastery"; - public static final String CRITICAL_STRIKES = "CriticalStrikes"; - public static final String GREATER_IMPACT = "GreaterImpact"; - public static final String ARMOR_IMPACT = "ArmorImpact"; - public static final String SKULL_SPLITTER = "SkullSplitter"; - public static final String MAX_PERCENTAGE_DURABILITY_DAMAGE = "MaxPercentageDurabilityDamage"; - public static final String SHAKE = "Shake"; - public static final String MINING = "Mining"; - public static final String BLAST_MINING = "BlastMining"; - public static final String LEVELS = "Levels"; - public static final String BLAST_DAMAGE_DECREASE = "BlastDamageDecrease"; - public static final String ORE_BONUS = "Ore" + BONUS; - public static final String DEBRIS_REDUCTION = "DebrisReduction"; - public static final String DROP_MULTIPLIER = "Drop" + MULTIPLIER; - public static final String BLAST_RADIUS = "BlastRadius"; - public static final String REPAIR = "Repair"; - public static final String REPAIR_MASTERY = "RepairMastery"; - public static final String MAX_BONUS_PERCENTAGE = "Max" + BONUS + "Percentage"; - public static final String ARCANE_FORGING = "ArcaneForging"; - public static final String MAY_LOSE_ENCHANTS = "May_Lose_Enchants"; - public static final String KEEP_ENCHANTS = "Keep_Enchants_"; - public static final String DOWNGRADES = "Downgrades_"; - public static final String ENABLED = "Enabled"; - public static final String DOWNGRADES_ENABLED = DOWNGRADES + ENABLED; - public static final String SALVAGE = "Salvage"; - public static final String ARCANE_SALVAGE = "ArcaneSalvage"; - public static final String ENCHANT_DOWNGRADE_ENABLED = "EnchantDowngrade" + ENABLED; - public static final String ENCHANT_LOSS_ENABLED = "EnchantLoss" + ENABLED; - public static final String EXTRACT_FULL_ENCHANT = "ExtractFullEnchant"; - public static final String EXTRACT_PARTIAL_ENCHANT = "ExtractPartialEnchant"; - public static final String SMELTING = "Smelting"; - public static final String FUEL_EFFICIENCY = "FuelEfficiency"; - public static final String SWORDS = "Swords"; - public static final String RUPTURE = "Rupture"; - public static final String DAMAGE_PLAYER = "DamagePlayer"; - public static final String DAMAGE_MOBS = "DamageMobs"; - public static final String MAX_TICKS = "MaxTicks"; - public static final String BASE_TICKS = "BaseTicks"; - public static final String COUNTER_ATTACK = "CounterAttack"; - public static final String SERRATED_STRIKES = "SerratedStrikes"; - public static final String TICKS = "Ticks"; - public static final String GORE = "Gore"; - public static final String FAST_FOOD = "FastFood"; - public static final String FAST_FOOD_SERVICE = FAST_FOOD + "Service"; - public static final String PUMMEL = "Pummel"; - public static final String THICK_FUR = "ThickFur"; - public static final String SHARPENED_CLAWS = "SharpenedClaws"; - public static final String DISARM = "Disarm"; - public static final String ANTI_THEFT = "AntiTheft"; - public static final String DAZE = "Daze"; - public static final String MAX_DAMAGE = "MaxDamage"; - public static final String ROLL = "Roll"; - public static final String GRACEFUL_ROLL = "Graceful" + ROLL; - public static final String ARROW_DEFLECT = "ArrowDeflect"; - public static final String IRON_GRIP = "IronGrip"; - public static final String WOODCUTTING = "Woodcutting"; - public static final String HARVEST_LUMBER = "HarvestLumber"; - public static final String FEEDBACK = "Feedback"; - public static final String SKILL_COMMAND = "SkillCommand"; - public static final String BLANK_LINES_ABOVE_HEADER = "BlankLinesAboveHeader"; - public static final String ACTION_BAR_NOTIFICATIONS = "ActionBarNotifications"; - public static final String SEND_COPY_OF_MESSAGE_TO_CHAT = "SendCopyOfMessageToChat"; - public static final String EVENTS = "Events"; - public static final String SEND_TITLES = "SendTitles"; - //private static AdvancedConfig instance; - - public AdvancedConfig() { - //super(mcMMO.getDataFolderPath().getAbsoluteFile(), "advanced.yml", true); - super("advanced", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, true, true, true); - } - - /** - * This grabs an instance of this config class from the Config Manager - * This method is deprecated and will be removed in the future - * - * @return the instance of this config - * @see mcMMO#getConfigManager() - * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead - */ - @Deprecated - public static AdvancedConfig getInstance() { - return pluginRef.getConfigManager().getAdvancedConfig(); - } - - /** - * The version of this config - * - * @return - */ - @Override - public double getConfigVersion() { - return 1; - } - - @Override - public List validateKeys() { - // Validate all the settings! - List reason = new ArrayList<>(); - return reason; - } - - /* GENERAL */ - - /* Notification Settings */ - - /* FISHING */ - public double getShakeChance(int rank) { - return getDoubleValue(SKILLS, FISHING, SHAKE, CHANCE, RANK, String.valueOf(rank)); - } - - public double getMasterAnglerBoatModifier() { - return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BOAT_MODIFIER); - } - - public double getMasterAnglerBiomeModifier() { - return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BIOME_MODIFIER); - } - - /* TAMING */ - public double getGoreModifier() { - return getDoubleValue(SKILLS, TAMING, GORE, MODIFIER); - } - - public double getFastFoodChance() { - return getDoubleValue(SKILLS, TAMING, FAST_FOOD_SERVICE, CHANCE); - } - - public double getPummelChance() { - return getDoubleValue(SKILLS, TAMING, PUMMEL, CHANCE); - } - - public double getThickFurModifier() { - return getDoubleValue(SKILLS, TAMING, THICK_FUR, MODIFIER); - } - - public double getShockProofModifier() { - return getDoubleValue(SKILLS, TAMING, SHOCK_PROOF, MODIFIER); - } - - public double getSharpenedClawsBonus() { - return getDoubleValue(SKILLS, TAMING, SHARPENED_CLAWS, BONUS); - } - - public double getMinHorseJumpStrength() { - return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MIN_HORSE_JUMP_STRENGTH); - } - - public double getMaxHorseJumpStrength() { - return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MAX_HORSE_JUMP_STRENGTH); - } - -} diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java deleted file mode 100644 index b3d020e4f..000000000 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ /dev/null @@ -1,481 +0,0 @@ -package com.gmail.nossr50.config; - -import com.google.common.io.Files; -import com.google.common.reflect.TypeToken; -import ninja.leaping.configurate.commented.CommentedConfigurationNode; -import ninja.leaping.configurate.hocon.HoconConfigurationLoader; -import ninja.leaping.configurate.loader.ConfigurationLoader; -import ninja.leaping.configurate.objectmapping.ObjectMappingException; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; - -/** - * Handles loading and cacheing configuration settings from a configurable compatible config file - */ -public abstract class Config implements VersionedConfig { - - public static final String HOCON_FILE_EXTENSION = ".conf"; - public final File DIRECTORY_DATA_FOLDER; //Directory that the file is in - public final String FILE_RELATIVE_PATH; //Relative Path to the file - protected final String DIRECTORY_DEFAULTS = "defaults"; - /* SETTINGS */ - //private static final String FILE_EXTENSION = ".conf"; //HOCON - private boolean mergeNewKeys; //Whether or not to merge keys found in the default config - private boolean removeOldKeys; //Whether or not to remove unused keys form the config - - /* PATH VARS */ - private boolean copyDefaults; //Whether or not to copy the default config when first creating the file - private boolean generateDefaults; //Whether or not we use Configurate to generate a default file, if this is false we copy the file from the JAR - private String fileName; //The file name of the config - - /* LOADERS */ - private HoconConfigurationLoader defaultCopyLoader; - private HoconConfigurationLoader userCopyLoader; - - //private ConfigurationLoader defaultCopyLoader; - //private ConfigurationLoader userCopyLoader; - - /* CONFIG FILES */ - - private File resourceConfigCopy; //Copy of the default config from the JAR (file is copied so that admins can easily compare to defaults) - private File resourceUserCopy; //File in the /$MCMMO_ROOT/mcMMO/ directory that may contain user edited settings - - /* ROOT NODES */ - - private CommentedConfigurationNode userRootNode = null; - private CommentedConfigurationNode defaultRootNode = null; - - /* CONFIG MANAGER */ - //private ConfigurationLoader configManager; - - /*public Config(String pathToParentFolder, String relativePath, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { - //TODO: Check if this works... - this(new File(pathToParentFolder), relativePath, mergeNewKeys, copyDefaults, removeOldKeys); - System.out.println("mcMMO Debug: Don't forget to check if loading config file by string instead of File works..."); - }*/ - - public Config(String fileName, File pathToParentFolder, String relativePath, boolean generateDefaults, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { - mkdirDefaults(); // Make our default config dir - - /* - * These must be at the top - */ - this.fileName = fileName; - this.generateDefaults = generateDefaults; - this.copyDefaults = copyDefaults; - this.mergeNewKeys = mergeNewKeys; //Whether or not we add new keys when they are found - this.removeOldKeys = removeOldKeys; - - DIRECTORY_DATA_FOLDER = pathToParentFolder; //Data Folder for our plugin - FILE_RELATIVE_PATH = relativePath + fileName + HOCON_FILE_EXTENSION; //Relative path to config from a parent folder - } - - public void initFullConfig() { - //Attempt IO Operations - try { - //Makes sure we have valid Files corresponding to this config - initConfigFiles(); - - //Init MainConfig Loaders - initConfigLoaders(); - - //Load MainConfig Nodes - loadConfig(); - - //Attempt to update user file, and then load it into memory - readConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - - //Cleanup and backup registers -// registerUnload(); - registerFileBackup(); - } - -// /** -// * Registers with the config managers unloader -// * The unloader runs when the plugin gets disabled which cleans up registries to make reloading safe -// */ -// private void registerUnload() { -// mcMMO.getConfigManager().registerUnloadable(this); -// } - - /** - * Registers with the config managers file list - * Used for backing up configs with our zip library - */ - private void registerFileBackup() { - pluginRef.getConfigManager().registerUserFile(getUserConfigFile()); - } - - /** - * Initializes the default copy File and the user config File - * - * @throws IOException - */ - private void initConfigFiles() throws IOException { - //Init our config copy - resourceConfigCopy = initDefaultConfig(); - - //Init the user file - resourceUserCopy = initUserConfig(); - } - - /** - * Loads the root node for the default config File and user config File - */ - private void loadConfig() { - try { - final CommentedConfigurationNode defaultConfig = this.defaultCopyLoader.load(); - defaultRootNode = defaultConfig; - - final CommentedConfigurationNode userConfig = this.userCopyLoader.load(); - userRootNode = userConfig; - - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Initializes the Configuration Loaders for this config - */ - private void initConfigLoaders() { - this.defaultCopyLoader = HoconConfigurationLoader.builder().setPath(resourceConfigCopy.toPath()).build(); - this.userCopyLoader = HoconConfigurationLoader.builder().setPath(resourceUserCopy.toPath()).build(); - } - - /** - * Copies a new file from the JAR to the defaults directory and uses that new file to initialize our resourceConfigCopy - * - * @throws IOException - * @see Config#resourceConfigCopy - */ - private File initDefaultConfig() throws IOException { - if (generateDefaults) { - return generateDefaultFile(); - } else - return copyDefaultFromJar(getDefaultConfigCopyRelativePath(), true); - } - - /** - * Generates a default config file using the Configurate library, makes use of @Setting and @ConfigSerializable annotations in the config file - * Assigns the default root node to the newly loaded default config if successful - * - * @return the File for the newly created config - */ - private File generateDefaultFile() { - pluginRef.getLogger().info("Attempting to create a default config for " + fileName); - - //Not sure if this will work properly... - Path potentialFile = Paths.get(getDefaultConfigCopyRelativePath()); - ConfigurationLoader generation_loader - = HoconConfigurationLoader.builder().setPath(potentialFile).build(); - - try { - pluginRef.getLogger().info("Config File Full Path: " + getDefaultConfigFile().getAbsolutePath()); - //Delete any existing default config - if (getDefaultConfigFile().exists()) - getDefaultConfigFile().delete(); - - //Make new file - getDefaultConfigFile().createNewFile(); - - //Load the config - defaultRootNode = generation_loader.load(); - - //Save to a new file - generation_loader.save(defaultRootNode); - - pluginRef.getLogger().info("Generated a default file for " + fileName); - } catch (IOException e) { - pluginRef.getLogger().severe("Error when trying to generate a default configuration file for " + getDefaultConfigCopyRelativePath()); - e.printStackTrace(); - } - - //Return the default file - return getDefaultConfigFile(); - } - - /** - * Attemps to load the config file if it exists, if it doesn't it copies a new one from within the JAR - * - * @return user config File - * @throws IOException - * @see Config#resourceUserCopy - */ - private File initUserConfig() throws IOException { - File userCopy = new File(DIRECTORY_DATA_FOLDER, FILE_RELATIVE_PATH); //Load the user file; - - if (userCopy.exists()) { - // Yay - return userCopy; - } else { - //If it's gone we copy default files - //Note that we don't copy the values from the default copy put in /defaults/ that file exists only as a reference to admins and is unreliable - if (copyDefaults) - return copyDefaultFromJar(FILE_RELATIVE_PATH, false); - else { - //Make a new empty file - userCopy.createNewFile(); - return userCopy; - } - } - } - - /** - * Gets the File representation of the this users config - * - * @return the users config File - */ - public File getUserConfigFile() { - return new File(DIRECTORY_DATA_FOLDER, FILE_RELATIVE_PATH); - } - - /** - * Used to make a new config file at a specified relative output path inside the data directory by copying the matching file found in that same relative path within the JAR - * - * @param relativeOutputPath the path to the output file - * @param deleteOld whether or not to delete the existing output file on disk - * @return a copy of the default config within the JAR - * @throws IOException - */ - private File copyDefaultFromJar(String relativeOutputPath, boolean deleteOld) throws IOException { - /* - * Gen a Default config from inside the JAR - */ - pluginRef.getLogger().info("Preparing to copy internal resource file (in JAR) - " + FILE_RELATIVE_PATH); - //InputStream inputStream = McmmoCore.getResource(FILE_RELATIVE_PATH); - InputStream inputStream = pluginRef.getResource(FILE_RELATIVE_PATH); - - byte[] buffer = new byte[inputStream.available()]; - inputStream.read(buffer); - - //This is a copy of the default file, which we will overwrite every time mcMMO loads - File targetFile = new File(DIRECTORY_DATA_FOLDER, relativeOutputPath); - - //Wipe old default file on disk - if (targetFile.exists() && deleteOld) { - pluginRef.getLogger().info("Updating file " + relativeOutputPath); - targetFile.delete(); //Necessary? - } - - if (!targetFile.exists()) { - targetFile.getParentFile().mkdirs(); - targetFile.createNewFile(); //New File Boys - } - - Files.write(buffer, targetFile); - pluginRef.getLogger().info("Created config file - " + relativeOutputPath); - - inputStream.close(); //Close the input stream - - return targetFile; - } - - /** - * The path to the defaults directory - * - * @return the path to the defaults directory - */ - private String getDefaultConfigCopyRelativePath() { - return getDefaultConfigFile().getPath(); - } - - /** - * Grabs the File representation of the default config, which is stored on disk in a defaults folder - * this file will be overwritten every time mcMMO starts to keep it up to date. - * - * @return the copy of the default config file, stored in the defaults directory - */ - private File getDefaultConfigFile() { - return new File(ConfigConstants.getDefaultsFolder(), FILE_RELATIVE_PATH); - } - - /** - * Creates the defaults directory - */ - private void mkdirDefaults() { - ConfigConstants.makeAllConfigDirectories(); - } - - /** - * Configs are versioned based on when they had significant changes to keys - * - * @return current MainConfig Version String - */ - public String getVersion() { - return String.valueOf(getConfigVersion()); - } - - /** - * Attempts to read the loaded config file - * MainConfig will have any necessary updates applied - * MainConfig will be compared to the default config to see if it is missing any nodes - * MainConfig will have any missing nodes inserted with their default value - */ - public void readConfig() { - pluginRef.getLogger().info("Attempting to read " + FILE_RELATIVE_PATH + "."); - - int version = this.userRootNode.getNode("ConfigVersion").getInt(); - pluginRef.getLogger().info(FILE_RELATIVE_PATH + " version is " + version); - - //Update our config - updateConfig(); - } - - /** - * Compares the users config file to the default and adds any missing nodes and applies any necessary updates - */ - private void updateConfig() { - pluginRef.getLogger().info(defaultRootNode.getChildrenMap().size() + " items in default children map"); - pluginRef.getLogger().info(userRootNode.getChildrenMap().size() + " items in default root map"); - - // Merge Values from default - if (mergeNewKeys) - userRootNode = userRootNode.mergeValuesFrom(defaultRootNode); - - removeOldKeys(); - - // Update config version - updateConfigVersion(); - - //Attempt to save - try { - saveUserCopy(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Finds any keys in the users config that are not present in the default config and removes them - */ - //TODO: Finish this - private void removeOldKeys() { - if (!removeOldKeys) - return; - - for (CommentedConfigurationNode CommentedConfigurationNode : defaultRootNode.getChildrenList()) { - - } - } - - /** - * Saves the current state information of the config to the users copy (which they may edit) - * - * @throws IOException - */ - private void saveUserCopy() throws IOException { - pluginRef.getLogger().info("Saving new node"); - userCopyLoader.save(userRootNode); - } - - /** - * Performs any necessary operations to update this config - */ - private void updateConfigVersion() { - // Set a version for our config - this.userRootNode.getNode("ConfigVersion").setValue(getConfigVersion()); - pluginRef.getLogger().info("Updated config to [" + getConfigVersion() + "] - " + FILE_RELATIVE_PATH); - } - - /** - * Returns the root node of this config - * - * @return the root node of this config - */ - protected CommentedConfigurationNode getUserRootNode() { - return userRootNode; - } - - /** - * Gets an int from the config and casts it to short before returning - * - * @param path the path to the int - * @return the value of the int after being cast to short at the node, null references will zero initialize - */ - public short getShortValue(String... path) { - return (short) userRootNode.getNode(path).getInt(); - } - - /** - * Grabs an int from the specified node - * - * @param path - * @return the int from the node, null references will zero initialize - */ - public int getIntValue(String... path) { - return userRootNode.getNode(path).getInt(); - } - - /** - * Grabs a double from the specified node - * - * @param path - * @return the double from the node, null references will zero initialize - */ - public double getDoubleValue(String... path) { - return userRootNode.getNode(path).getDouble(); - } - - /** - * Grabs a long from the specified node - * - * @param path - * @return the long from the node, null references will zero initialize - */ - public long getLongValue(String... path) { - return userRootNode.getNode(path).getLong(); - } - - /** - * Grabs a boolean from the specified node - * - * @param path - * @return the boolean from the node, null references will zero initialize - */ - public boolean getBooleanValue(String... path) { - return userRootNode.getNode(path).getBoolean(); - } - - /** - * Grabs a string from the specified node - * - * @param path - * @return the string from the node, null references will zero initialize - */ - public String getStringValue(String... path) { - return userRootNode.getNode(path).getString(); - } - - /** - * Checks to see if a node exists in the user's config file - * - * @param path path to the node - * @return true if the node exists - */ - public boolean hasNode(String... path) { - return (userRootNode.getNode(path) != null); - } - - /** - * Returns the children of a specific node - * - * @param path the path to the parent node - * @return the list of children for the target parent node - */ - public List getChildren(String... path) { - return userRootNode.getNode(path).getChildrenList(); - } - - public List getListFromNode(String... path) throws ObjectMappingException { - return userRootNode.getNode(path).getList(TypeToken.of(String.class)); - } -} diff --git a/src/main/java/com/gmail/nossr50/config/ConfigValidated.java b/src/main/java/com/gmail/nossr50/config/ConfigValidated.java deleted file mode 100644 index 41de8af72..000000000 --- a/src/main/java/com/gmail/nossr50/config/ConfigValidated.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.gmail.nossr50.config; - - -import java.io.File; - -/** - * This class is used for config files that validate their entries - */ -public abstract class ConfigValidated extends Config implements UnsafeValueValidation { - /** - * @param pathToParentFolder File for the "parent" folder on disk - * @param relativePath Path to the config relative to the "parent" folder, this should mirror internal structure of resource files - * @param mergeNewKeys if true, the users config will add keys found in the internal file that are missing from the users file during load - * @param copyDefaults if true, the users config file when it is first made will be a copy of an internal resource file of the same name and path - */ - public ConfigValidated(String fileName, File pathToParentFolder, String relativePath, boolean generateDefaults, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { - super(fileName, pathToParentFolder, relativePath, generateDefaults, mergeNewKeys, copyDefaults, removeOldKeys); - validateEntries(); - } -} diff --git a/src/main/java/com/gmail/nossr50/config/MainConfig.java b/src/main/java/com/gmail/nossr50/config/MainConfig.java deleted file mode 100644 index c0af8622e..000000000 --- a/src/main/java/com/gmail/nossr50/config/MainConfig.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.gmail.nossr50.config; - -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.util.StringUtils; -import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; -import org.bukkit.Material; -import org.bukkit.entity.EntityType; - -import java.util.ArrayList; -import java.util.List; - -@ConfigSerializable -public class MainConfig extends ConfigValidated { - - public static final String METRICS = "Metrics"; - public static final String BSTATS = "bstats"; - public static final String GENERAL = "General"; - public static final String RETRO_MODE = "RetroMode"; - public static final String ENABLED = "Enabled"; - public static final String LOCALE = "LocaleManager"; - public static final String EN_US = "en_us"; - public static final String SHOW_PROFILE_LOADED = "Show_Profile_Loaded"; - public static final String DONATE_MESSAGE = "Donate_Message"; - public static final String MCMMO = "mcmmo"; - public static final String DATABASE_PREFIX = MCMMO + "_"; - public static final String COMMANDS = "Commands"; - public static final String SAVE_INTERVAL = "Save_Interval"; - public static final String STATS = "Stats"; - public static final String STATS_TRACKING = STATS + "_Tracking"; - public static final String UPDATE_CHECK = "Update_Check"; - public static final String PREFER_BETA = "Prefer_Beta"; - public static final String VERBOSE_LOGGING = "Verbose_Logging"; - public static final String PARTYCHAT = "partychat"; - public static final String CHAT_PREFIX_FORMAT = "Chat_Prefix_Format"; - public static final String NAME = "Name"; - public static final String GOLD_LEADER_NAME = "Gold_Leader_" + NAME; - public static final String USE_DISPLAY_NAMES = "Use_Display_" + NAME + "s"; - public static final String ALLY = "_Ally"; - public static final String ADMINCHAT = "adminchat"; - public static final String GENERIC = "Generic"; - public static final String MATCH_OFFLINE_PLAYERS = "Match_OfflinePlayers"; - public static final String DATABASE = "Database"; - public static final String COOLDOWN = "Cooldown"; - public static final String PLAYER_COOLDOWN = "Player_" + COOLDOWN; - public static final String LEVEL_UP = "LevelUp_"; - public static final String SOUND = "Sound"; - public static final String LEVEL_UP_SOUNDS = "LevelUp_Sounds"; - public static final String REFRESH_CHUNKS = "Refresh_Chunks"; - public static final String MOB_HEALTHBAR = "Mob_Healthbar"; - public static final String DISPLAY_TYPE = "Display_Type"; - public static final String HEARTS = "HEARTS"; - public static final String DISPLAY_TIME = "Display_Time"; - public static final String SCOREBOARD = "ConfigScoreboard"; - public static final String USE_SCOREBOARDS = "UseScoreboards"; - public static final String POWER = "Power_"; - public static final String POWER_LEVEL_TAGS = POWER + "Level_Tags"; - public static final String KEEP = "Keep"; - public static final String ALLOW_KEEP = "Allow_" + KEEP; - public static final String TIPS_AMOUNT = "Tips_Amount"; - public static final String SHOW_STATS_AFTER_LOGIN = "Show_" + STATS + "_After_Login"; - public static final String RAINBOWS = "Rainbows"; - public static final String ABILITY_NAMES = "Ability_" + NAME + "s"; - public static final String TYPES = "Types"; - public static final String RANK = "Rank"; - public static final String PRINT = "Print"; - public static final String BOARD = "Board"; - public static final String TOP = "Top"; - public static final String INSPECT = "Inspect"; - public static final String SKILL = "Skill"; - public static final String TIME = "Time"; - public static final String PURGING = "_Purging"; - public static final String PURGE_INTERVAL = "Purge_Interval"; - public static final String OLD_USER_CUTOFF = "Old_User_Cutoff"; - public static final String BACKUPS = "Backups"; - public static final String KEEP_LAST_24_HOURS = KEEP + ".Last_24_Hours"; - public static final String DAILY_LAST_WEEK = "Daily_Last_Week"; - public static final String WEEKLY_PAST_MONTHS = "Weekly_Past_Months"; - public static final String MY_SQL = "MySQL"; - public static final String TABLE_PREFIX = "TablePrefix"; - public static final String USER_NAME = "User_" + NAME; - public static final String SERVER = "Server"; - public static final String PORT = "Port"; - public static final String ADDRESS = "Address"; - public static final String LOCALHOST = "localhost"; - public static final String USER_PASSWORD = "User_Password"; - public static final String MAX_CONNECTIONS = "MaxConnections"; - public static final String MAX_POOL_SIZE = "MaxPoolSize"; - public static final String SSL = "SSL"; - public static final String HARDCORE = "Hardcore"; - public static final String DEATH_STAT_LOSS = "Death_Stat_Loss"; - public static final String PENALTY_PERCENTAGE = "Penalty_Percentage"; - public static final String LEVEL_THRESHOLD = "Level_Threshold"; - public static final String VAMPIRISM = "Vampirism"; - public static final String LEECH_PERCENTAGE = "Leech_Percentage"; - public static final String ITEMS = "Items"; - public static final String CHIMAERA_WING = "Chimaera_Wing"; - public static final String USE_COST = "Use_Cost"; - public static final String RECIPE_COST = "Recipe_Cost"; - public static final String ITEM = "Item_"; - public static final String FEATHER = "Feather"; - public static final String PREVENT = "Prevent_"; - public static final String PREVENT_USE_UNDERGROUND = PREVENT + "Use_Underground"; - public static final String USE_BED_SPAWN = "Use_Bed_Spawn"; - public static final String WARMUP = "Warmup"; - public static final String RECENTLY_HURT = "RecentlyHurt_"; - public static final String PARTICLES = "Particles"; - public static final String ACTIVATION = "Activation"; - public static final String ABILITY_ACTIVATION = "Ability_" + ACTIVATION; - public static final String ABILITY_DEACTIVATION = "Ability_Deactivation"; - public static final String BLEED = "Bleed"; - public static final String DODGE = "Dodge"; - public static final String FLUX = "Flux"; - public static final String GREATER_IMPACT = "Greater_Impact"; - public static final String CALL_OF_THE_WILD = "Call_of_the_Wild"; - public static final String TIER = "Tier"; - public static final String LARGE_FIREWORKS = "LargeFireworks"; - public static final String PARTY = "Party"; - public static final String FRIENDLY_FIRE = "FriendlyFire"; - public static final String MAX_SIZE = "MaxSize"; - public static final String AUTO_KICK_INTERVAL = "AutoKick_Interval"; - public static final String OLD_PARTY_MEMBER_CUTOFF = "Old_Party_Member_Cutoff"; - public static final String SHARING = "Sharing"; - public static final String SHARING_EXP_SHARE_BONUS_BASE = SHARING + "ExpShare_bonus_base"; - public static final String EXP_SHARE_BONUS_INCREASE = "ExpShare_bonus_increase"; - public static final String EXP_SHARE_BONUS_CAP = "ExpShare_bonus_cap"; - public static final String RANGE = "Range"; - public static final String LEVELING = "Leveling"; - public static final String LEVEL_CAP = "Level_Cap"; - public static final String XP_CURVE_MODIFIER = "Xp_Curve_Modifier"; - public static final String NEAR_MEMBERS_NEEDED = "Near_Members_Needed"; - public static final String INFORM_ALL_PARTY_MEMBERS_ON_LEVEL_UP = "Inform_All_Party_Members_On_LevelUp"; - public static final String UNLOCK_LEVEL = "_UnlockLevel"; - public static final String PTP = "ptp"; - public static final String ACCEPT_REQUIRED = "Accept_Required"; - public static final String REQUEST_TIMEOUT = "Request_Timeout"; - public static final String WORLD_BASED_PERMISSIONS = "World_Based_Permissions"; - public static final String INSPECT1 = "inspect"; - public static final String MAX_DISTANCE = "Max_Distance"; - public static final String SKILLS = "Skills"; - public static final String URL_LINKS = "URL_Links"; - public static final String ABILITIES = "Abilities"; - public static final String MESSAGES = "Messages"; - public static final String ONLY_ACTIVATE_WHEN_SNEAKING = "Only_Activate_When_Sneaking"; - public static final String LEVEL_GATE_ABILITIES = "Level_Gate_Abilities"; - public static final String COOLDOWNS = "Cooldowns"; - public static final String MAX_SECONDS = "Max_Seconds"; - public static final String TOOLS = "Tools"; - public static final String DURABILITY_LOSS = "Durability_Loss"; - public static final String LIMITS = "Limits"; - public static final String TREE_FELLER = "Tree_Feller_"; - public static final String TREE_FELLER_THRESHOLD = TREE_FELLER + "Threshold"; - public static final String DOUBLE_DROPS = "Double_Drops"; - public static final String AXES = "Axes"; - public static final String TRUNCATE = "Truncate"; - public static final String FOR_PVP = "_For_PVP"; - public static final String FOR_PVE = "_For_PVE"; - public static final String ACROBATICS = "Acrobatics"; - public static final String PREVENT_AFK = PREVENT + "AFK_"; - public static final String WOODCUTTING = "Woodcutting"; - public static final String SOUNDS = "Sounds"; - public static final String MAX_TRIES_AT_SAME_LOCATION = "Max_Tries_At_Same_Location"; - public static final String HERBALISM = "Herbalism"; - public static final String TAMING = "Taming"; - public static final String CALL_OF_THE_WILD1 = "Call_Of_The_Wild"; - public static final String SUMMON_AMOUNT = "Summon_Amount"; - public static final String SUMMON_LENGTH = "Summon_Length"; - public static final String SUMMON_MAX_AMOUNT = "Summon_Max_Amount"; - public static final String AMOUNT = "Amount"; - public static final String MATERIAL = "Material"; - public static final String REPAIR = "Repair"; - public static final String CONFIRM_REQUIRED = "Confirm_Required"; - public static final String ANVIL = "Anvil_"; - public static final String ANVIL_MATERIAL = ANVIL + "Material"; - public static final String IRON_BLOCK = "IRON_BLOCK"; - public static final String ANVIL_USE = ANVIL + "Use_"; - public static final String ANVIL_PLACED = ANVIL + "Placed_"; - public static final String SALVAGE = "Salvage"; - public static final String UNARMED = "Unarmed"; - public static final String BLOCK_CRACKER = "Block_Cracker"; - public static final String SMOOTH_BRICK_TO_CRACKED_BRICK = "SmoothBrick_To_CrackedBrick"; - public static final String PICKUP_DISABLED_FULL_INVENTORY = "Pickup_Disabled_Full_Inventory"; - public static final String AS = "_As_"; - public static final String MINING = "Mining"; - public static final String DETONATOR = "Detonator_"; - public static final String FLINT_AND_STEEL = "FLINT_AND_STEEL"; - public static final String FISHING = "Fishing"; - public static final String LURE_MODIFIER = "Lure_Modifier"; - public static final String EXTRA_FISH = "Extra_Fish"; - public static final String OVERRIDE_VANILLA_TREASURES = "Override_Vanilla_Treasures"; - public static final String DROPS = "Drops_"; - public static final String ALCHEMY = "Alchemy"; - public static final String PREVENT_HOPPER_TRANSFER_BOTTLES = PREVENT + "Hopper_Transfer_Bottles"; - public static final String PREVENT_HOPPER_TRANSFER_INGREDIENTS = PREVENT + "Hopper_Transfer_Ingredients"; - public static final String FOR_HOPPERS = "_for_Hoppers"; - public static final String XP_AFTER_TELEPORT = "XP_After_Teleport_"; - public static final String LIGHTNING = "_Lightning"; - public static final String GOLD_BLOCK = "GOLD_BLOCK"; - public static final String PICKAXE = "_Pickaxe"; - public static final String EXP_SHARE_BONUS_BASE = "ExpShare_bonus_base"; - - public MainConfig() { - //super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "config.yml", true); - super("main", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, true, true, true); - } - - /** - * This grabs an instance of this config class from the Config Manager - * This method is deprecated and will be removed in the future - * - * @return the instance of this config - * @see mcMMO#getConfigManager() - * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead - */ - @Deprecated - public static MainConfig getInstance() { - return pluginRef.getConfigManager().getMainConfig(); - } - - /** - * The version of this config - * - * @return - */ - @Override - public double getConfigVersion() { - return 1; - } - - @Override - public List validateKeys() { - // Validate all the settings! - List reason = new ArrayList<>(); - return reason; - } - - public boolean getPreventHopperTransferIngredients() { - return getBooleanValue(SKILLS, ALCHEMY, PREVENT_HOPPER_TRANSFER_INGREDIENTS); - } - - public boolean getPreventHopperTransferBottles() { - return getBooleanValue(SKILLS, ALCHEMY, PREVENT_HOPPER_TRANSFER_BOTTLES); - } - - /* Taming */ - public Material getTamingCOTWMaterial(EntityType type) { - return Material.matchMaterial(getStringValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), ITEM + MATERIAL)); - } - - public int getTamingCOTWCost(EntityType type) { - return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), ITEM + AMOUNT); - } - - public int getTamingCOTWAmount(EntityType type) { - return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_AMOUNT); - } - - public int getTamingCOTWLength(EntityType type) { - return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_LENGTH); - } - - public int getTamingCOTWMaxAmount(EntityType type) { - return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_MAX_AMOUNT); - } - - public double getTamingCOTWRange() { - return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD1, RANGE); - } - -} diff --git a/src/main/java/com/gmail/nossr50/config/UnsafeValueValidation.java b/src/main/java/com/gmail/nossr50/config/UnsafeValueValidation.java deleted file mode 100644 index 9a5e569b9..000000000 --- a/src/main/java/com/gmail/nossr50/config/UnsafeValueValidation.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.gmail.nossr50.config; - -import java.util.List; - -/** - * This is for config validation - */ -public interface UnsafeValueValidation { - List validateKeys(); - - /** - * Prints all errors found when validating the config - */ - default void validateEntries() { - /* - * Print Errors about Keys - */ - - List validKeyErrors = validateKeys(); // Validate Keys - - if (validKeyErrors != null && validKeyErrors.size() > 0) { - for (String error : validKeyErrors) { - pluginRef.getLogger().severe(error); - } - } - } -} diff --git a/src/main/java/com/gmail/nossr50/config/Validation.java b/src/main/java/com/gmail/nossr50/config/Validation.java deleted file mode 100644 index 33f1f8e12..000000000 --- a/src/main/java/com/gmail/nossr50/config/Validation.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.gmail.nossr50.config; - -public interface Validation { - void validate(); -} diff --git a/src/main/java/com/gmail/nossr50/config/VersionedConfig.java b/src/main/java/com/gmail/nossr50/config/VersionedConfig.java deleted file mode 100644 index a3799bea9..000000000 --- a/src/main/java/com/gmail/nossr50/config/VersionedConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.gmail.nossr50.config; - -/** - * Represents a config that is version checked - */ -public interface VersionedConfig { - /** - * The version of this config - * - * @return - */ - double getConfigVersion(); -} diff --git a/src/main/java/com/gmail/nossr50/config/WorldBlacklist.java b/src/main/java/com/gmail/nossr50/config/WorldBlacklist.java deleted file mode 100644 index 8566d3525..000000000 --- a/src/main/java/com/gmail/nossr50/config/WorldBlacklist.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gmail.nossr50.config; - - -import org.bukkit.World; - -/** - * Blacklist certain features in certain worlds - */ -public class WorldBlacklist { - - public static boolean isWorldBlacklisted(World world) { - for (String s : pluginRef.getConfigManager().getConfigWorldBlacklist().getBlackListedWorlds()) { - if (world.getName().equalsIgnoreCase(s)) - return true; - } - - return false; - } -} diff --git a/src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java b/src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java index 2dbe26418..197d11560 100644 --- a/src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java +++ b/src/main/java/com/gmail/nossr50/config/treasure/FishingTreasureConfig.java @@ -1,274 +1,274 @@ -package com.gmail.nossr50.config.treasure; - -import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.config.ConfigConstants; -import com.gmail.nossr50.config.UnsafeValueValidation; -import com.gmail.nossr50.datatypes.treasure.EnchantmentTreasure; -import com.gmail.nossr50.datatypes.treasure.FishingTreasure; -import com.gmail.nossr50.datatypes.treasure.Rarity; -import com.gmail.nossr50.datatypes.treasure.ShakeTreasure; -import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.util.EnchantmentUtils; -import com.google.common.reflect.TypeToken; -import ninja.leaping.configurate.ConfigurationNode; -import ninja.leaping.configurate.objectmapping.ObjectMappingException; -import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; -import org.bukkit.entity.EntityType; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public class FishingTreasureConfig extends Config implements UnsafeValueValidation { - public static final String PLAYER = "PLAYER"; - public static final String INVENTORY = "INVENTORY"; - public static final String WHOLE_STACKS = "Whole_Stacks"; - public static final String DROP_CHANCE = "Drop_Chance"; - public static final String DROP_LEVEL = "Drop_Level"; - public static final String TIER = "Tier_"; - public static final String ENCHANTMENTS_RARITY = "Enchantments_Rarity"; - public static final String ITEM_DROP_RATES = "Item_Drop_Rates"; - public static final String FISHING = "Fishing"; - public static final String ENCHANTMENT_DROP_RATES = "Enchantment_Drop_Rates"; - public static final String SHAKE = "Shake"; - public static final String AMOUNT = "Amount"; - public static final String XP = "XP"; - public static final String CUSTOM_NAME = "Custom_Name"; - public static final String LORE = "Lore"; - public static final String RARITY = "Rarity"; - public static final String DROPS_FROM = "Drops_From"; - - public HashMap> shakeMap = new HashMap<>(); - public HashMap> fishingRewards = new HashMap<>(); - public HashMap> fishingEnchantments = new HashMap<>(); - - public FishingTreasureConfig() { - super("fishing_drops", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, false, true, false); - } - - /** - * This grabs an instance of this config class from the Config Manager - * This method is deprecated and will be removed in the future - * - * @return the instance of this config - * @see mcMMO#getConfigManager() - * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead - */ - @Deprecated - public static FishingTreasureConfig getInstance() { - return pluginRef.getConfigManager().getFishingTreasureConfig(); - } - - private void loadShake(EntityType entityType) { - ConfigurationNode shakeTreasureNode = getUserRootNode().getNode(SHAKE, entityType.toString()); - - if (shakeTreasureNode != null) - return; - - try { - for (ConfigurationNode treasureNode : shakeTreasureNode.getChildrenList()) { - - String treasureName = treasureNode.getString(); - //Treasure Material Definition - Material treasureMaterial = Material.matchMaterial(treasureName.toUpperCase()); - - if (treasureMaterial != null) { - ConfigurationNode currentTreasure = shakeTreasureNode.getNode(treasureName); - - //TODO: Rewrite the entire treasure system because it sucks - - /* - * TREASURE PARAMETERS - */ - int amount = currentTreasure.getNode(AMOUNT).getInt(); - int xp = currentTreasure.getNode(XP).getInt(); - double dropChance = currentTreasure.getNode(DROP_CHANCE).getDouble(); - int dropLevel = currentTreasure.getNode(DROP_LEVEL).getInt(); - String customName = null; - - /* - * PARAMETER INIT - */ - - ArrayList dropsFrom = new ArrayList(currentTreasure.getNode(DROPS_FROM).getList(TypeToken.of(String.class))); - - //VALIDATE AMOUNT - if (amount <= 0) { - pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has an amount of 0 or below, is this intentional?"); - pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); - continue; - } - - //VALIDATE XP - if (xp <= 0) { - pluginRef.getLogger().info("Excavation Treasure named " + treasureName + " in the config has xp set to 0 or below, is this intentional?"); - xp = 0; - } - - //VALIDATE DROP CHANCE - if (dropChance <= 0) { - pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has a drop chance of 0 or below, is this intentional?"); - pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); - continue; - } - - //VALIDATE DROP LEVEL - if (dropLevel < 0) { - pluginRef.getLogger().info("Excavation Treasure named " + treasureName + " in the config has a drop level below 0, is this intentional?"); - dropLevel = 0; - } - - //VALIDATE DROP SOURCES - if (dropsFrom == null || dropsFrom.isEmpty()) { - pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has no drop targets, which would make it impossible to obtain, is this intentional?"); - pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); - continue; - } - - /* OPTIONAL PARAMETERS */ - - //Custom Name - - if (currentTreasure.getNode(CUSTOM_NAME) != null && !currentTreasure.getNode(CUSTOM_NAME).getString().equalsIgnoreCase("ChangeMe")) { - customName = currentTreasure.getNode(CUSTOM_NAME).getString(); - } - - /* - * REGISTER TREASURE - */ - - ShakeTreasure shakeTreasure = TreasureFactory.makeShakeTreasure(treasureMaterial, amount, xp, dropChance, dropLevel, customName, currentTreasure.getNode(LORE)); - - /* - * Add to map - */ - shakeMap.computeIfAbsent(entityType, k -> new ArrayList<>()); - - shakeMap.get(entityType).add(shakeTreasure); - - } else { - pluginRef.getLogger().severe("Excavation Treasure Config - Material named " + treasureName + " does not match any known material."); - } - } - } catch (ObjectMappingException e) { - e.printStackTrace(); - } - } - - private void loadEnchantments() { - for (Rarity rarity : Rarity.values()) { - if (rarity == Rarity.RECORD) { - continue; - } - - if (!fishingEnchantments.containsKey(rarity)) { - fishingEnchantments.put(rarity, (new ArrayList<>())); - } - - ConfigurationNode enchantmentSection = getUserRootNode().getNode(ENCHANTMENTS_RARITY, rarity.toString()); - - if (enchantmentSection == null) { - pluginRef.getLogger().info("No enchantment information for fishing treasures, is this intentional?"); - return; - } - - for (ConfigurationNode enchantmentNode : enchantmentSection.getChildrenList()) { - - String enchantmentName = enchantmentNode.getString(); - int level = getIntValue(ENCHANTMENTS_RARITY, rarity.toString(), enchantmentName); - Enchantment enchantment = EnchantmentUtils.getByName(enchantmentName); - - if (enchantment == null) { - pluginRef.getLogger().severe("Skipping invalid enchantment in treasures.yml: " + enchantmentName); - continue; - } - - fishingEnchantments.get(rarity).add(new EnchantmentTreasure(enchantment, level)); - } - - } - } - - @Override - public List validateKeys() { - // Validate all the settings! - List errorMessages = new ArrayList<>(); - try { - for (String tier : getUserRootNode().getNode(ENCHANTMENT_DROP_RATES).getList(TypeToken.of(String.class))) { - /*double totalEnchantDropRate = 0; - double totalItemDropRate = 0;*/ - - for (Rarity rarity : Rarity.values()) { - double enchantDropRate = getDoubleValue(ENCHANTMENT_DROP_RATES, tier, rarity.toString()); - double itemDropRate = getDoubleValue(ITEM_DROP_RATES, tier, rarity.toString()); - - if ((enchantDropRate < 0.0 || enchantDropRate > 100.0) && rarity != Rarity.RECORD) { - errorMessages.add("The enchant drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!"); - - //Bound Values - /*enchantDropRate = boundValues(enchantDropRate, 0.0D, 100.0D);*/ - } - - if (itemDropRate < 0.0 || itemDropRate > 100.0) { - errorMessages.add("The item drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!"); - - //Bound Values - /*itemDropRate = boundValues(itemDropRate, 0.0D, 100.0D);*/ - } - - /*totalEnchantDropRate += enchantDropRate; - totalItemDropRate += itemDropRate;*/ - } - - //TODO: Why does it matter what the total item/enchant drop rate is? - - /*if (totalEnchantDropRate < 0 || totalEnchantDropRate > 100.0) { - errorMessages.add("The total enchant drop rate for " + tier + " should be between 0.0 and 100.0!"); - } - - if (totalItemDropRate < 0 || totalItemDropRate > 100.0) { - errorMessages.add("The total item drop rate for " + tier + " should be between 0.0 and 100.0!"); - }*/ - } - } catch (ObjectMappingException e) { - e.printStackTrace(); - } - - return errorMessages; - } - - /** - * The version of this config - * - * @return - */ - @Override - public double getConfigVersion() { - return 1; - } - - public boolean getInventoryStealEnabled() { - return hasNode(SHAKE, PLAYER, INVENTORY); - } - - public boolean getInventoryStealStacks() { - return getBooleanValue(SHAKE, PLAYER, INVENTORY, WHOLE_STACKS); - } - - public double getInventoryStealDropChance() { - return getDoubleValue(SHAKE, PLAYER, INVENTORY, DROP_CHANCE); - } - - public int getInventoryStealDropLevel() { - return getIntValue(SHAKE, PLAYER, INVENTORY, DROP_LEVEL); - } - - public double getItemDropRate(int tier, Rarity rarity) { - return getDoubleValue(ITEM_DROP_RATES, TIER + tier, rarity.toString()); - } - - public double getEnchantmentDropRate(int tier, Rarity rarity) { - return getDoubleValue(ENCHANTMENT_DROP_RATES, TIER + tier, rarity.toString()); - } -} +//package com.gmail.nossr50.config.treasure; +// +//import com.gmail.nossr50.config.Config; +//import com.gmail.nossr50.config.ConfigConstants; +//import com.gmail.nossr50.config.UnsafeValueValidation; +//import com.gmail.nossr50.datatypes.treasure.EnchantmentTreasure; +//import com.gmail.nossr50.datatypes.treasure.FishingTreasure; +//import com.gmail.nossr50.datatypes.treasure.Rarity; +//import com.gmail.nossr50.datatypes.treasure.ShakeTreasure; +//import com.gmail.nossr50.mcMMO; +//import com.gmail.nossr50.util.EnchantmentUtils; +//import com.google.common.reflect.TypeToken; +//import ninja.leaping.configurate.ConfigurationNode; +//import ninja.leaping.configurate.objectmapping.ObjectMappingException; +//import org.bukkit.Material; +//import org.bukkit.enchantments.Enchantment; +//import org.bukkit.entity.EntityType; +// +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.List; +// +//public class FishingTreasureConfig extends Config implements UnsafeValueValidation { +// public static final String PLAYER = "PLAYER"; +// public static final String INVENTORY = "INVENTORY"; +// public static final String WHOLE_STACKS = "Whole_Stacks"; +// public static final String DROP_CHANCE = "Drop_Chance"; +// public static final String DROP_LEVEL = "Drop_Level"; +// public static final String TIER = "Tier_"; +// public static final String ENCHANTMENTS_RARITY = "Enchantments_Rarity"; +// public static final String ITEM_DROP_RATES = "Item_Drop_Rates"; +// public static final String FISHING = "Fishing"; +// public static final String ENCHANTMENT_DROP_RATES = "Enchantment_Drop_Rates"; +// public static final String SHAKE = "Shake"; +// public static final String AMOUNT = "Amount"; +// public static final String XP = "XP"; +// public static final String CUSTOM_NAME = "Custom_Name"; +// public static final String LORE = "Lore"; +// public static final String RARITY = "Rarity"; +// public static final String DROPS_FROM = "Drops_From"; +// +// public HashMap> shakeMap = new HashMap<>(); +// public HashMap> fishingRewards = new HashMap<>(); +// public HashMap> fishingEnchantments = new HashMap<>(); +// +// public FishingTreasureConfig() { +// super("fishing_drops", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, false, true, false); +// } +// +// /** +// * This grabs an instance of this config class from the Config Manager +// * This method is deprecated and will be removed in the future +// * +// * @return the instance of this config +// * @see mcMMO#getConfigManager() +// * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead +// */ +// @Deprecated +// public static FishingTreasureConfig getInstance() { +// return pluginRef.getConfigManager().getFishingTreasureConfig(); +// } +// +// private void loadShake(EntityType entityType) { +// ConfigurationNode shakeTreasureNode = getUserRootNode().getNode(SHAKE, entityType.toString()); +// +// if (shakeTreasureNode != null) +// return; +// +// try { +// for (ConfigurationNode treasureNode : shakeTreasureNode.getChildrenList()) { +// +// String treasureName = treasureNode.getString(); +// //Treasure Material Definition +// Material treasureMaterial = Material.matchMaterial(treasureName.toUpperCase()); +// +// if (treasureMaterial != null) { +// ConfigurationNode currentTreasure = shakeTreasureNode.getNode(treasureName); +// +// //TODO: Rewrite the entire treasure system because it sucks +// +// /* +// * TREASURE PARAMETERS +// */ +// int amount = currentTreasure.getNode(AMOUNT).getInt(); +// int xp = currentTreasure.getNode(XP).getInt(); +// double dropChance = currentTreasure.getNode(DROP_CHANCE).getDouble(); +// int dropLevel = currentTreasure.getNode(DROP_LEVEL).getInt(); +// String customName = null; +// +// /* +// * PARAMETER INIT +// */ +// +// ArrayList dropsFrom = new ArrayList(currentTreasure.getNode(DROPS_FROM).getList(TypeToken.of(String.class))); +// +// //VALIDATE AMOUNT +// if (amount <= 0) { +// pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has an amount of 0 or below, is this intentional?"); +// pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); +// continue; +// } +// +// //VALIDATE XP +// if (xp <= 0) { +// pluginRef.getLogger().info("Excavation Treasure named " + treasureName + " in the config has xp set to 0 or below, is this intentional?"); +// xp = 0; +// } +// +// //VALIDATE DROP CHANCE +// if (dropChance <= 0) { +// pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has a drop chance of 0 or below, is this intentional?"); +// pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); +// continue; +// } +// +// //VALIDATE DROP LEVEL +// if (dropLevel < 0) { +// pluginRef.getLogger().info("Excavation Treasure named " + treasureName + " in the config has a drop level below 0, is this intentional?"); +// dropLevel = 0; +// } +// +// //VALIDATE DROP SOURCES +// if (dropsFrom == null || dropsFrom.isEmpty()) { +// pluginRef.getLogger().severe("Excavation Treasure named " + treasureName + " in the config has no drop targets, which would make it impossible to obtain, is this intentional?"); +// pluginRef.getLogger().severe("Skipping " + treasureName + " for being invalid"); +// continue; +// } +// +// /* OPTIONAL PARAMETERS */ +// +// //Custom Name +// +// if (currentTreasure.getNode(CUSTOM_NAME) != null && !currentTreasure.getNode(CUSTOM_NAME).getString().equalsIgnoreCase("ChangeMe")) { +// customName = currentTreasure.getNode(CUSTOM_NAME).getString(); +// } +// +// /* +// * REGISTER TREASURE +// */ +// +// ShakeTreasure shakeTreasure = TreasureFactory.makeShakeTreasure(treasureMaterial, amount, xp, dropChance, dropLevel, customName, currentTreasure.getNode(LORE)); +// +// /* +// * Add to map +// */ +// shakeMap.computeIfAbsent(entityType, k -> new ArrayList<>()); +// +// shakeMap.get(entityType).add(shakeTreasure); +// +// } else { +// pluginRef.getLogger().severe("Excavation Treasure Config - Material named " + treasureName + " does not match any known material."); +// } +// } +// } catch (ObjectMappingException e) { +// e.printStackTrace(); +// } +// } +// +// private void loadEnchantments() { +// for (Rarity rarity : Rarity.values()) { +// if (rarity == Rarity.RECORD) { +// continue; +// } +// +// if (!fishingEnchantments.containsKey(rarity)) { +// fishingEnchantments.put(rarity, (new ArrayList<>())); +// } +// +// ConfigurationNode enchantmentSection = getUserRootNode().getNode(ENCHANTMENTS_RARITY, rarity.toString()); +// +// if (enchantmentSection == null) { +// pluginRef.getLogger().info("No enchantment information for fishing treasures, is this intentional?"); +// return; +// } +// +// for (ConfigurationNode enchantmentNode : enchantmentSection.getChildrenList()) { +// +// String enchantmentName = enchantmentNode.getString(); +// int level = getIntValue(ENCHANTMENTS_RARITY, rarity.toString(), enchantmentName); +// Enchantment enchantment = EnchantmentUtils.getByName(enchantmentName); +// +// if (enchantment == null) { +// pluginRef.getLogger().severe("Skipping invalid enchantment in treasures.yml: " + enchantmentName); +// continue; +// } +// +// fishingEnchantments.get(rarity).add(new EnchantmentTreasure(enchantment, level)); +// } +// +// } +// } +// +// @Override +// public List validateKeys() { +// // Validate all the settings! +// List errorMessages = new ArrayList<>(); +// try { +// for (String tier : getUserRootNode().getNode(ENCHANTMENT_DROP_RATES).getList(TypeToken.of(String.class))) { +// /*double totalEnchantDropRate = 0; +// double totalItemDropRate = 0;*/ +// +// for (Rarity rarity : Rarity.values()) { +// double enchantDropRate = getDoubleValue(ENCHANTMENT_DROP_RATES, tier, rarity.toString()); +// double itemDropRate = getDoubleValue(ITEM_DROP_RATES, tier, rarity.toString()); +// +// if ((enchantDropRate < 0.0 || enchantDropRate > 100.0) && rarity != Rarity.RECORD) { +// errorMessages.add("The enchant drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!"); +// +// //Bound Values +// /*enchantDropRate = boundValues(enchantDropRate, 0.0D, 100.0D);*/ +// } +// +// if (itemDropRate < 0.0 || itemDropRate > 100.0) { +// errorMessages.add("The item drop rate for " + tier + " items that are " + rarity.toString() + "should be between 0.0 and 100.0!"); +// +// //Bound Values +// /*itemDropRate = boundValues(itemDropRate, 0.0D, 100.0D);*/ +// } +// +// /*totalEnchantDropRate += enchantDropRate; +// totalItemDropRate += itemDropRate;*/ +// } +// +// //TODO: Why does it matter what the total item/enchant drop rate is? +// +// /*if (totalEnchantDropRate < 0 || totalEnchantDropRate > 100.0) { +// errorMessages.add("The total enchant drop rate for " + tier + " should be between 0.0 and 100.0!"); +// } +// +// if (totalItemDropRate < 0 || totalItemDropRate > 100.0) { +// errorMessages.add("The total item drop rate for " + tier + " should be between 0.0 and 100.0!"); +// }*/ +// } +// } catch (ObjectMappingException e) { +// e.printStackTrace(); +// } +// +// return errorMessages; +// } +// +// /** +// * The version of this config +// * +// * @return +// */ +// @Override +// public double getConfigVersion() { +// return 1; +// } +// +// public boolean getInventoryStealEnabled() { +// return hasNode(SHAKE, PLAYER, INVENTORY); +// } +// +// public boolean getInventoryStealStacks() { +// return getBooleanValue(SHAKE, PLAYER, INVENTORY, WHOLE_STACKS); +// } +// +// public double getInventoryStealDropChance() { +// return getDoubleValue(SHAKE, PLAYER, INVENTORY, DROP_CHANCE); +// } +// +// public int getInventoryStealDropLevel() { +// return getIntValue(SHAKE, PLAYER, INVENTORY, DROP_LEVEL); +// } +// +// public double getItemDropRate(int tier, Rarity rarity) { +// return getDoubleValue(ITEM_DROP_RATES, TIER + tier, rarity.toString()); +// } +// +// public double getEnchantmentDropRate(int tier, Rarity rarity) { +// return getDoubleValue(ENCHANTMENT_DROP_RATES, TIER + tier, rarity.toString()); +// } +//} diff --git a/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java b/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java index c5e4f69e2..9cc8a5687 100644 --- a/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java +++ b/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java @@ -37,6 +37,7 @@ public class DynamicSettingsManager { /* Platform Ready Managers */ private BonusDropManager bonusDropManager; private ExperienceManager experienceManager; + private WorldBlackListManager worldBlackListManager; /* Party Settings */ private HashMap partyItemWeights; @@ -79,6 +80,17 @@ public class DynamicSettingsManager { //Init Skill Behaviour Manager skillBehaviourManager = new SkillBehaviourManager(pluginRef); + initExperienceManager(); + + initWorldBlackList(); + } + + private void initWorldBlackList() { + worldBlackListManager = new WorldBlackListManager(); + worldBlackListManager.addBlackListedWorlds(pluginRef.getConfigManager().getConfigWorldBlacklist().getBlackListedWorlds()); + } + + private void initExperienceManager() { experienceManager = new ExperienceManager(pluginRef); //Set the global XP val experienceManager.setGlobalXpMult(pluginRef.getConfigManager().getConfigExperience().getGlobalXPMultiplier()); @@ -173,4 +185,12 @@ public class DynamicSettingsManager { public SkillBehaviourManager getSkillBehaviourManager() { return skillBehaviourManager; } + + public WorldBlackListManager getWorldBlackListManager() { + return worldBlackListManager; + } + + public boolean isWorldBlacklisted(String worldName) { + return getWorldBlackListManager().isWorldBlacklisted(worldName); + } } diff --git a/src/main/java/com/gmail/nossr50/core/WorldBlackListManager.java b/src/main/java/com/gmail/nossr50/core/WorldBlackListManager.java new file mode 100644 index 000000000..59a3ce921 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/core/WorldBlackListManager.java @@ -0,0 +1,66 @@ +package com.gmail.nossr50.core; + +import java.util.Collection; +import java.util.HashSet; + +/** + * Performs various duties relating to black listed worlds + * + * A world is identified solely by its name + * The blacklist is simply a hash set of world names + */ +public class WorldBlackListManager { + private HashSet blackListedWorlds; + + public WorldBlackListManager() { + this.blackListedWorlds = new HashSet<>(); + } + + /** + * Add a world to the blacklist + * @param worldName target world's name + */ + public void addBlackListedWorld(String worldName) { + blackListedWorlds.add(worldName); + } + + /** + * Add a collection of world names to the black list + * @param worldNames collection of target world names to black list + */ + public void addBlackListedWorlds(Collection worldNames) { + blackListedWorlds.addAll(worldNames); + } + + /** + * Check if a world is blacklisted + * @param worldName target world's name + * @return true if the world is blacklisted + */ + public boolean isWorldBlacklisted(String worldName) { + return blackListedWorlds.contains(worldName); + } + + /** + * Get the hash set of blacklisted worlds + * @return the blacklisted worlds + */ + public HashSet getBlackListedWorlds() { + return blackListedWorlds; + } + + /** + * Replace the hash set of blacklisted worlds + * @param blackListedWorlds replacement hashset + */ + public void setBlackListedWorlds(HashSet blackListedWorlds) { + this.blackListedWorlds = blackListedWorlds; + } + + /** + * Clear worlds from the blacklist + */ + public void clearBlackList() { + this.blackListedWorlds.clear(); + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index 91cc318f7..880080241 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.datatypes.player; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.datatypes.chat.ChatMode; import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.experience.XPGainSource; @@ -813,7 +812,7 @@ public class McMMOPlayer { public void checkGodMode() { if (godMode && !Permissions.mcgod(player) - || godMode && WorldBlacklist.isWorldBlacklisted(player.getWorld())) { + || godMode && pluginRef.getDynamicSettingsManager().isWorldBlacklisted(player.getWorld().getName())) { toggleGodMode(); player.sendMessage(pluginRef.getLocaleManager().getString("Commands.GodMode.Forbidden")); } diff --git a/src/main/java/com/gmail/nossr50/dumpster/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/dumpster/AdvancedConfig.java new file mode 100644 index 000000000..70b970955 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/dumpster/AdvancedConfig.java @@ -0,0 +1,209 @@ +//package com.gmail.nossr50.config; +// +//import com.gmail.nossr50.mcMMO; +//import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; +// +//import java.util.ArrayList; +//import java.util.List; +// +//@ConfigSerializable +//public class AdvancedConfig extends ConfigValidated { +// +// public static final String SKILLS = "Skills"; +// public static final String GENERAL = "General"; +// public static final String ABILITY = "Ability"; +// public static final String LENGTH = "Length"; +// public static final String INCREASE_LEVEL = "IncreaseLevel"; +// public static final String ENCHANT_BUFF = "EnchantBuff"; +// public static final String ACROBATICS = "Acrobatics"; +// public static final String DODGE = "Dodge"; +// public static final String CHANCE = "Chance"; +// public static final String CHANCE_MAX = CHANCE + "Max"; +// public static final String BONUS = "Bonus"; +// public static final String MAX_BONUS_LEVEL = "Max" + BONUS + "Level"; +// public static final String MODIFIER = "Modifier"; +// public static final String DAMAGE_MODIFIER = "Damage" + MODIFIER; +// public static final String DAMAGE_THRESHOLD = "DamageThreshold"; +// public static final String ALCHEMY = "Alchemy"; +// public static final String CATALYSIS = "Catalysis"; +// public static final String MIN_SPEED = "MinSpeed"; +// public static final String MAX_SPEED = "MaxSpeed"; +// public static final String ARCHERY = "Archery"; +// public static final String SKILL_SHOT = "SkillShot"; +// public static final String MULTIPLIER = "Multiplier"; +// public static final String RANK_DAMAGE_MULTIPLIER = "RankDamage" + MULTIPLIER; +// public static final String BONUS_DAMAGE = BONUS + "Damage"; +// public static final String FORCE_MULTIPLIER = "Force" + MULTIPLIER; +// public static final String AXES = "Axes"; +// public static final String STANDARD = "Standard"; +// public static final String RETRO_MODE = "RetroMode"; +// public static final String CAP_LEVEL = "CapLevel"; +// public static final String KNOCKBACK_MODIFIER = "Knockback" + MODIFIER; +// public static final String PVP_MODIFIER = "PVP_" + MODIFIER; +// public static final String PVE_MODIFIER = "PVE_" + MODIFIER; +// public static final String FISHING = "Fishing"; +// public static final String MASTER_ANGLER = "MasterAngler"; +// public static final String BOAT_MODIFIER = "Boat" + MODIFIER; +// public static final String BIOME_MODIFIER = "Biome" + MODIFIER; +// public static final String XP = "XP"; +// public static final String VANILLA_XPMULTIPLIER = "Vanilla" + XP + MULTIPLIER; +// public static final String RANK = "Rank_"; +// public static final String TAMING = "Taming"; +// public static final String CALL_OF_THE_WILD = "CallOfTheWild"; +// public static final String MIN_HORSE_JUMP_STRENGTH = "MinHorseJumpStrength"; +// public static final String MAX_HORSE_JUMP_STRENGTH = "MaxHorseJumpStrength"; +// public static final String SHOCK_PROOF = "ShockProof"; +// public static final String UNARMED = "Unarmed"; +// public static final String STARTING_LEVEL = "StartingLevel"; +// public static final String AXE_MASTERY = "AxeMastery"; +// public static final String CRITICAL_STRIKES = "CriticalStrikes"; +// public static final String GREATER_IMPACT = "GreaterImpact"; +// public static final String ARMOR_IMPACT = "ArmorImpact"; +// public static final String SKULL_SPLITTER = "SkullSplitter"; +// public static final String MAX_PERCENTAGE_DURABILITY_DAMAGE = "MaxPercentageDurabilityDamage"; +// public static final String SHAKE = "Shake"; +// public static final String MINING = "Mining"; +// public static final String BLAST_MINING = "BlastMining"; +// public static final String LEVELS = "Levels"; +// public static final String BLAST_DAMAGE_DECREASE = "BlastDamageDecrease"; +// public static final String ORE_BONUS = "Ore" + BONUS; +// public static final String DEBRIS_REDUCTION = "DebrisReduction"; +// public static final String DROP_MULTIPLIER = "Drop" + MULTIPLIER; +// public static final String BLAST_RADIUS = "BlastRadius"; +// public static final String REPAIR = "Repair"; +// public static final String REPAIR_MASTERY = "RepairMastery"; +// public static final String MAX_BONUS_PERCENTAGE = "Max" + BONUS + "Percentage"; +// public static final String ARCANE_FORGING = "ArcaneForging"; +// public static final String MAY_LOSE_ENCHANTS = "May_Lose_Enchants"; +// public static final String KEEP_ENCHANTS = "Keep_Enchants_"; +// public static final String DOWNGRADES = "Downgrades_"; +// public static final String ENABLED = "Enabled"; +// public static final String DOWNGRADES_ENABLED = DOWNGRADES + ENABLED; +// public static final String SALVAGE = "Salvage"; +// public static final String ARCANE_SALVAGE = "ArcaneSalvage"; +// public static final String ENCHANT_DOWNGRADE_ENABLED = "EnchantDowngrade" + ENABLED; +// public static final String ENCHANT_LOSS_ENABLED = "EnchantLoss" + ENABLED; +// public static final String EXTRACT_FULL_ENCHANT = "ExtractFullEnchant"; +// public static final String EXTRACT_PARTIAL_ENCHANT = "ExtractPartialEnchant"; +// public static final String SMELTING = "Smelting"; +// public static final String FUEL_EFFICIENCY = "FuelEfficiency"; +// public static final String SWORDS = "Swords"; +// public static final String RUPTURE = "Rupture"; +// public static final String DAMAGE_PLAYER = "DamagePlayer"; +// public static final String DAMAGE_MOBS = "DamageMobs"; +// public static final String MAX_TICKS = "MaxTicks"; +// public static final String BASE_TICKS = "BaseTicks"; +// public static final String COUNTER_ATTACK = "CounterAttack"; +// public static final String SERRATED_STRIKES = "SerratedStrikes"; +// public static final String TICKS = "Ticks"; +// public static final String GORE = "Gore"; +// public static final String FAST_FOOD = "FastFood"; +// public static final String FAST_FOOD_SERVICE = FAST_FOOD + "Service"; +// public static final String PUMMEL = "Pummel"; +// public static final String THICK_FUR = "ThickFur"; +// public static final String SHARPENED_CLAWS = "SharpenedClaws"; +// public static final String DISARM = "Disarm"; +// public static final String ANTI_THEFT = "AntiTheft"; +// public static final String DAZE = "Daze"; +// public static final String MAX_DAMAGE = "MaxDamage"; +// public static final String ROLL = "Roll"; +// public static final String GRACEFUL_ROLL = "Graceful" + ROLL; +// public static final String ARROW_DEFLECT = "ArrowDeflect"; +// public static final String IRON_GRIP = "IronGrip"; +// public static final String WOODCUTTING = "Woodcutting"; +// public static final String HARVEST_LUMBER = "HarvestLumber"; +// public static final String FEEDBACK = "Feedback"; +// public static final String SKILL_COMMAND = "SkillCommand"; +// public static final String BLANK_LINES_ABOVE_HEADER = "BlankLinesAboveHeader"; +// public static final String ACTION_BAR_NOTIFICATIONS = "ActionBarNotifications"; +// public static final String SEND_COPY_OF_MESSAGE_TO_CHAT = "SendCopyOfMessageToChat"; +// public static final String EVENTS = "Events"; +// public static final String SEND_TITLES = "SendTitles"; +// //private static AdvancedConfig instance; +// +// public AdvancedConfig() { +// //super(mcMMO.getDataFolderPath().getAbsoluteFile(), "advanced.yml", true); +// super("advanced", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, true, true, true); +// } +// +// /** +// * This grabs an instance of this config class from the Config Manager +// * This method is deprecated and will be removed in the future +// * +// * @return the instance of this config +// * @see mcMMO#getConfigManager() +// * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead +// */ +// @Deprecated +// public static AdvancedConfig getInstance() { +// return pluginRef.getConfigManager().getAdvancedConfig(); +// } +// +// /** +// * The version of this config +// * +// * @return +// */ +// @Override +// public double getConfigVersion() { +// return 1; +// } +// +// @Override +// public List validateKeys() { +// // Validate all the settings! +// List reason = new ArrayList<>(); +// return reason; +// } +// +// /* GENERAL */ +// +// /* Notification Settings */ +// +// /* FISHING */ +// public double getShakeChance(int rank) { +// return getDoubleValue(SKILLS, FISHING, SHAKE, CHANCE, RANK, String.valueOf(rank)); +// } +// +// public double getMasterAnglerBoatModifier() { +// return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BOAT_MODIFIER); +// } +// +// public double getMasterAnglerBiomeModifier() { +// return getDoubleValue(SKILLS, FISHING, MASTER_ANGLER, BIOME_MODIFIER); +// } +// +// /* TAMING */ +// public double getGoreModifier() { +// return getDoubleValue(SKILLS, TAMING, GORE, MODIFIER); +// } +// +// public double getFastFoodChance() { +// return getDoubleValue(SKILLS, TAMING, FAST_FOOD_SERVICE, CHANCE); +// } +// +// public double getPummelChance() { +// return getDoubleValue(SKILLS, TAMING, PUMMEL, CHANCE); +// } +// +// public double getThickFurModifier() { +// return getDoubleValue(SKILLS, TAMING, THICK_FUR, MODIFIER); +// } +// +// public double getShockProofModifier() { +// return getDoubleValue(SKILLS, TAMING, SHOCK_PROOF, MODIFIER); +// } +// +// public double getSharpenedClawsBonus() { +// return getDoubleValue(SKILLS, TAMING, SHARPENED_CLAWS, BONUS); +// } +// +// public double getMinHorseJumpStrength() { +// return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MIN_HORSE_JUMP_STRENGTH); +// } +// +// public double getMaxHorseJumpStrength() { +// return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD, MAX_HORSE_JUMP_STRENGTH); +// } +// +//} diff --git a/src/main/java/com/gmail/nossr50/dumpster/Config.java b/src/main/java/com/gmail/nossr50/dumpster/Config.java new file mode 100644 index 000000000..cd07f5196 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/dumpster/Config.java @@ -0,0 +1,481 @@ +//package com.gmail.nossr50.config; +// +//import com.google.common.io.Files; +//import com.google.common.reflect.TypeToken; +//import ninja.leaping.configurate.commented.CommentedConfigurationNode; +//import ninja.leaping.configurate.hocon.HoconConfigurationLoader; +//import ninja.leaping.configurate.loader.ConfigurationLoader; +//import ninja.leaping.configurate.objectmapping.ObjectMappingException; +// +//import java.io.File; +//import java.io.IOException; +//import java.io.InputStream; +//import java.nio.file.Path; +//import java.nio.file.Paths; +//import java.util.List; +// +///** +// * Handles loading and cacheing configuration settings from a configurable compatible config file +// */ +//public abstract class Config implements VersionedConfig { +// +// public static final String HOCON_FILE_EXTENSION = ".conf"; +// public final File DIRECTORY_DATA_FOLDER; //Directory that the file is in +// public final String FILE_RELATIVE_PATH; //Relative Path to the file +// protected final String DIRECTORY_DEFAULTS = "defaults"; +// /* SETTINGS */ +// //private static final String FILE_EXTENSION = ".conf"; //HOCON +// private boolean mergeNewKeys; //Whether or not to merge keys found in the default config +// private boolean removeOldKeys; //Whether or not to remove unused keys form the config +// +// /* PATH VARS */ +// private boolean copyDefaults; //Whether or not to copy the default config when first creating the file +// private boolean generateDefaults; //Whether or not we use Configurate to generate a default file, if this is false we copy the file from the JAR +// private String fileName; //The file name of the config +// +// /* LOADERS */ +// private HoconConfigurationLoader defaultCopyLoader; +// private HoconConfigurationLoader userCopyLoader; +// +// //private ConfigurationLoader defaultCopyLoader; +// //private ConfigurationLoader userCopyLoader; +// +// /* CONFIG FILES */ +// +// private File resourceConfigCopy; //Copy of the default config from the JAR (file is copied so that admins can easily compare to defaults) +// private File resourceUserCopy; //File in the /$MCMMO_ROOT/mcMMO/ directory that may contain user edited settings +// +// /* ROOT NODES */ +// +// private CommentedConfigurationNode userRootNode = null; +// private CommentedConfigurationNode defaultRootNode = null; +// +// /* CONFIG MANAGER */ +// //private ConfigurationLoader configManager; +// +// /*public Config(String pathToParentFolder, String relativePath, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { +// //TODO: Check if this works... +// this(new File(pathToParentFolder), relativePath, mergeNewKeys, copyDefaults, removeOldKeys); +// System.out.println("mcMMO Debug: Don't forget to check if loading config file by string instead of File works..."); +// }*/ +// +// public Config(String fileName, File pathToParentFolder, String relativePath, boolean generateDefaults, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { +// mkdirDefaults(); // Make our default config dir +// +// /* +// * These must be at the top +// */ +// this.fileName = fileName; +// this.generateDefaults = generateDefaults; +// this.copyDefaults = copyDefaults; +// this.mergeNewKeys = mergeNewKeys; //Whether or not we add new keys when they are found +// this.removeOldKeys = removeOldKeys; +// +// DIRECTORY_DATA_FOLDER = pathToParentFolder; //Data Folder for our plugin +// FILE_RELATIVE_PATH = relativePath + fileName + HOCON_FILE_EXTENSION; //Relative path to config from a parent folder +// } +// +// public void initFullConfig() { +// //Attempt IO Operations +// try { +// //Makes sure we have valid Files corresponding to this config +// initConfigFiles(); +// +// //Init MainConfig Loaders +// initConfigLoaders(); +// +// //Load MainConfig Nodes +// loadConfig(); +// +// //Attempt to update user file, and then load it into memory +// readConfig(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// +// //Cleanup and backup registers +//// registerUnload(); +// registerFileBackup(); +// } +// +//// /** +//// * Registers with the config managers unloader +//// * The unloader runs when the plugin gets disabled which cleans up registries to make reloading safe +//// */ +//// private void registerUnload() { +//// mcMMO.getConfigManager().registerUnloadable(this); +//// } +// +// /** +// * Registers with the config managers file list +// * Used for backing up configs with our zip library +// */ +// private void registerFileBackup() { +// pluginRef.getConfigManager().registerUserFile(getUserConfigFile()); +// } +// +// /** +// * Initializes the default copy File and the user config File +// * +// * @throws IOException +// */ +// private void initConfigFiles() throws IOException { +// //Init our config copy +// resourceConfigCopy = initDefaultConfig(); +// +// //Init the user file +// resourceUserCopy = initUserConfig(); +// } +// +// /** +// * Loads the root node for the default config File and user config File +// */ +// private void loadConfig() { +// try { +// final CommentedConfigurationNode defaultConfig = this.defaultCopyLoader.load(); +// defaultRootNode = defaultConfig; +// +// final CommentedConfigurationNode userConfig = this.userCopyLoader.load(); +// userRootNode = userConfig; +// +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * Initializes the Configuration Loaders for this config +// */ +// private void initConfigLoaders() { +// this.defaultCopyLoader = HoconConfigurationLoader.builder().setPath(resourceConfigCopy.toPath()).build(); +// this.userCopyLoader = HoconConfigurationLoader.builder().setPath(resourceUserCopy.toPath()).build(); +// } +// +// /** +// * Copies a new file from the JAR to the defaults directory and uses that new file to initialize our resourceConfigCopy +// * +// * @throws IOException +// * @see Config#resourceConfigCopy +// */ +// private File initDefaultConfig() throws IOException { +// if (generateDefaults) { +// return generateDefaultFile(); +// } else +// return copyDefaultFromJar(getDefaultConfigCopyRelativePath(), true); +// } +// +// /** +// * Generates a default config file using the Configurate library, makes use of @Setting and @ConfigSerializable annotations in the config file +// * Assigns the default root node to the newly loaded default config if successful +// * +// * @return the File for the newly created config +// */ +// private File generateDefaultFile() { +// pluginRef.getLogger().info("Attempting to create a default config for " + fileName); +// +// //Not sure if this will work properly... +// Path potentialFile = Paths.get(getDefaultConfigCopyRelativePath()); +// ConfigurationLoader generation_loader +// = HoconConfigurationLoader.builder().setPath(potentialFile).build(); +// +// try { +// pluginRef.getLogger().info("Config File Full Path: " + getDefaultConfigFile().getAbsolutePath()); +// //Delete any existing default config +// if (getDefaultConfigFile().exists()) +// getDefaultConfigFile().delete(); +// +// //Make new file +// getDefaultConfigFile().createNewFile(); +// +// //Load the config +// defaultRootNode = generation_loader.load(); +// +// //Save to a new file +// generation_loader.save(defaultRootNode); +// +// pluginRef.getLogger().info("Generated a default file for " + fileName); +// } catch (IOException e) { +// pluginRef.getLogger().severe("Error when trying to generate a default configuration file for " + getDefaultConfigCopyRelativePath()); +// e.printStackTrace(); +// } +// +// //Return the default file +// return getDefaultConfigFile(); +// } +// +// /** +// * Attemps to load the config file if it exists, if it doesn't it copies a new one from within the JAR +// * +// * @return user config File +// * @throws IOException +// * @see Config#resourceUserCopy +// */ +// private File initUserConfig() throws IOException { +// File userCopy = new File(DIRECTORY_DATA_FOLDER, FILE_RELATIVE_PATH); //Load the user file; +// +// if (userCopy.exists()) { +// // Yay +// return userCopy; +// } else { +// //If it's gone we copy default files +// //Note that we don't copy the values from the default copy put in /defaults/ that file exists only as a reference to admins and is unreliable +// if (copyDefaults) +// return copyDefaultFromJar(FILE_RELATIVE_PATH, false); +// else { +// //Make a new empty file +// userCopy.createNewFile(); +// return userCopy; +// } +// } +// } +// +// /** +// * Gets the File representation of the this users config +// * +// * @return the users config File +// */ +// public File getUserConfigFile() { +// return new File(DIRECTORY_DATA_FOLDER, FILE_RELATIVE_PATH); +// } +// +// /** +// * Used to make a new config file at a specified relative output path inside the data directory by copying the matching file found in that same relative path within the JAR +// * +// * @param relativeOutputPath the path to the output file +// * @param deleteOld whether or not to delete the existing output file on disk +// * @return a copy of the default config within the JAR +// * @throws IOException +// */ +// private File copyDefaultFromJar(String relativeOutputPath, boolean deleteOld) throws IOException { +// /* +// * Gen a Default config from inside the JAR +// */ +// pluginRef.getLogger().info("Preparing to copy internal resource file (in JAR) - " + FILE_RELATIVE_PATH); +// //InputStream inputStream = McmmoCore.getResource(FILE_RELATIVE_PATH); +// InputStream inputStream = pluginRef.getResource(FILE_RELATIVE_PATH); +// +// byte[] buffer = new byte[inputStream.available()]; +// inputStream.read(buffer); +// +// //This is a copy of the default file, which we will overwrite every time mcMMO loads +// File targetFile = new File(DIRECTORY_DATA_FOLDER, relativeOutputPath); +// +// //Wipe old default file on disk +// if (targetFile.exists() && deleteOld) { +// pluginRef.getLogger().info("Updating file " + relativeOutputPath); +// targetFile.delete(); //Necessary? +// } +// +// if (!targetFile.exists()) { +// targetFile.getParentFile().mkdirs(); +// targetFile.createNewFile(); //New File Boys +// } +// +// Files.write(buffer, targetFile); +// pluginRef.getLogger().info("Created config file - " + relativeOutputPath); +// +// inputStream.close(); //Close the input stream +// +// return targetFile; +// } +// +// /** +// * The path to the defaults directory +// * +// * @return the path to the defaults directory +// */ +// private String getDefaultConfigCopyRelativePath() { +// return getDefaultConfigFile().getPath(); +// } +// +// /** +// * Grabs the File representation of the default config, which is stored on disk in a defaults folder +// * this file will be overwritten every time mcMMO starts to keep it up to date. +// * +// * @return the copy of the default config file, stored in the defaults directory +// */ +// private File getDefaultConfigFile() { +// return new File(ConfigConstants.getDefaultsFolder(), FILE_RELATIVE_PATH); +// } +// +// /** +// * Creates the defaults directory +// */ +// private void mkdirDefaults() { +// ConfigConstants.makeAllConfigDirectories(); +// } +// +// /** +// * Configs are versioned based on when they had significant changes to keys +// * +// * @return current MainConfig Version String +// */ +// public String getVersion() { +// return String.valueOf(getConfigVersion()); +// } +// +// /** +// * Attempts to read the loaded config file +// * MainConfig will have any necessary updates applied +// * MainConfig will be compared to the default config to see if it is missing any nodes +// * MainConfig will have any missing nodes inserted with their default value +// */ +// public void readConfig() { +// pluginRef.getLogger().info("Attempting to read " + FILE_RELATIVE_PATH + "."); +// +// int version = this.userRootNode.getNode("ConfigVersion").getInt(); +// pluginRef.getLogger().info(FILE_RELATIVE_PATH + " version is " + version); +// +// //Update our config +// updateConfig(); +// } +// +// /** +// * Compares the users config file to the default and adds any missing nodes and applies any necessary updates +// */ +// private void updateConfig() { +// pluginRef.getLogger().info(defaultRootNode.getChildrenMap().size() + " items in default children map"); +// pluginRef.getLogger().info(userRootNode.getChildrenMap().size() + " items in default root map"); +// +// // Merge Values from default +// if (mergeNewKeys) +// userRootNode = userRootNode.mergeValuesFrom(defaultRootNode); +// +// removeOldKeys(); +// +// // Update config version +// updateConfigVersion(); +// +// //Attempt to save +// try { +// saveUserCopy(); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * Finds any keys in the users config that are not present in the default config and removes them +// */ +// //TODO: Finish this +// private void removeOldKeys() { +// if (!removeOldKeys) +// return; +// +// for (CommentedConfigurationNode CommentedConfigurationNode : defaultRootNode.getChildrenList()) { +// +// } +// } +// +// /** +// * Saves the current state information of the config to the users copy (which they may edit) +// * +// * @throws IOException +// */ +// private void saveUserCopy() throws IOException { +// pluginRef.getLogger().info("Saving new node"); +// userCopyLoader.save(userRootNode); +// } +// +// /** +// * Performs any necessary operations to update this config +// */ +// private void updateConfigVersion() { +// // Set a version for our config +// this.userRootNode.getNode("ConfigVersion").setValue(getConfigVersion()); +// pluginRef.getLogger().info("Updated config to [" + getConfigVersion() + "] - " + FILE_RELATIVE_PATH); +// } +// +// /** +// * Returns the root node of this config +// * +// * @return the root node of this config +// */ +// protected CommentedConfigurationNode getUserRootNode() { +// return userRootNode; +// } +// +// /** +// * Gets an int from the config and casts it to short before returning +// * +// * @param path the path to the int +// * @return the value of the int after being cast to short at the node, null references will zero initialize +// */ +// public short getShortValue(String... path) { +// return (short) userRootNode.getNode(path).getInt(); +// } +// +// /** +// * Grabs an int from the specified node +// * +// * @param path +// * @return the int from the node, null references will zero initialize +// */ +// public int getIntValue(String... path) { +// return userRootNode.getNode(path).getInt(); +// } +// +// /** +// * Grabs a double from the specified node +// * +// * @param path +// * @return the double from the node, null references will zero initialize +// */ +// public double getDoubleValue(String... path) { +// return userRootNode.getNode(path).getDouble(); +// } +// +// /** +// * Grabs a long from the specified node +// * +// * @param path +// * @return the long from the node, null references will zero initialize +// */ +// public long getLongValue(String... path) { +// return userRootNode.getNode(path).getLong(); +// } +// +// /** +// * Grabs a boolean from the specified node +// * +// * @param path +// * @return the boolean from the node, null references will zero initialize +// */ +// public boolean getBooleanValue(String... path) { +// return userRootNode.getNode(path).getBoolean(); +// } +// +// /** +// * Grabs a string from the specified node +// * +// * @param path +// * @return the string from the node, null references will zero initialize +// */ +// public String getStringValue(String... path) { +// return userRootNode.getNode(path).getString(); +// } +// +// /** +// * Checks to see if a node exists in the user's config file +// * +// * @param path path to the node +// * @return true if the node exists +// */ +// public boolean hasNode(String... path) { +// return (userRootNode.getNode(path) != null); +// } +// +// /** +// * Returns the children of a specific node +// * +// * @param path the path to the parent node +// * @return the list of children for the target parent node +// */ +// public List getChildren(String... path) { +// return userRootNode.getNode(path).getChildrenList(); +// } +// +// public List getListFromNode(String... path) throws ObjectMappingException { +// return userRootNode.getNode(path).getList(TypeToken.of(String.class)); +// } +//} diff --git a/src/main/java/com/gmail/nossr50/dumpster/ConfigValidated.java b/src/main/java/com/gmail/nossr50/dumpster/ConfigValidated.java new file mode 100644 index 000000000..6b07fd7e8 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/dumpster/ConfigValidated.java @@ -0,0 +1,20 @@ +//package com.gmail.nossr50.config; +// +// +//import java.io.File; +// +///** +// * This class is used for config files that validate their entries +// */ +//public abstract class ConfigValidated extends Config implements UnsafeValueValidation { +// /** +// * @param pathToParentFolder File for the "parent" folder on disk +// * @param relativePath Path to the config relative to the "parent" folder, this should mirror internal structure of resource files +// * @param mergeNewKeys if true, the users config will add keys found in the internal file that are missing from the users file during load +// * @param copyDefaults if true, the users config file when it is first made will be a copy of an internal resource file of the same name and path +// */ +// public ConfigValidated(String fileName, File pathToParentFolder, String relativePath, boolean generateDefaults, boolean mergeNewKeys, boolean copyDefaults, boolean removeOldKeys) { +// super(fileName, pathToParentFolder, relativePath, generateDefaults, mergeNewKeys, copyDefaults, removeOldKeys); +// validateEntries(); +// } +//} diff --git a/src/main/java/com/gmail/nossr50/dumpster/MainConfig.java b/src/main/java/com/gmail/nossr50/dumpster/MainConfig.java new file mode 100644 index 000000000..602de1ac8 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/dumpster/MainConfig.java @@ -0,0 +1,269 @@ +//package com.gmail.nossr50.config; +// +//import com.gmail.nossr50.mcMMO; +//import com.gmail.nossr50.util.StringUtils; +//import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; +//import org.bukkit.Material; +//import org.bukkit.entity.EntityType; +// +//import java.util.ArrayList; +//import java.util.List; +// +//@ConfigSerializable +//public class MainConfig extends ConfigValidated { +// +// public static final String METRICS = "Metrics"; +// public static final String BSTATS = "bstats"; +// public static final String GENERAL = "General"; +// public static final String RETRO_MODE = "RetroMode"; +// public static final String ENABLED = "Enabled"; +// public static final String LOCALE = "LocaleManager"; +// public static final String EN_US = "en_us"; +// public static final String SHOW_PROFILE_LOADED = "Show_Profile_Loaded"; +// public static final String DONATE_MESSAGE = "Donate_Message"; +// public static final String MCMMO = "mcmmo"; +// public static final String DATABASE_PREFIX = MCMMO + "_"; +// public static final String COMMANDS = "Commands"; +// public static final String SAVE_INTERVAL = "Save_Interval"; +// public static final String STATS = "Stats"; +// public static final String STATS_TRACKING = STATS + "_Tracking"; +// public static final String UPDATE_CHECK = "Update_Check"; +// public static final String PREFER_BETA = "Prefer_Beta"; +// public static final String VERBOSE_LOGGING = "Verbose_Logging"; +// public static final String PARTYCHAT = "partychat"; +// public static final String CHAT_PREFIX_FORMAT = "Chat_Prefix_Format"; +// public static final String NAME = "Name"; +// public static final String GOLD_LEADER_NAME = "Gold_Leader_" + NAME; +// public static final String USE_DISPLAY_NAMES = "Use_Display_" + NAME + "s"; +// public static final String ALLY = "_Ally"; +// public static final String ADMINCHAT = "adminchat"; +// public static final String GENERIC = "Generic"; +// public static final String MATCH_OFFLINE_PLAYERS = "Match_OfflinePlayers"; +// public static final String DATABASE = "Database"; +// public static final String COOLDOWN = "Cooldown"; +// public static final String PLAYER_COOLDOWN = "Player_" + COOLDOWN; +// public static final String LEVEL_UP = "LevelUp_"; +// public static final String SOUND = "Sound"; +// public static final String LEVEL_UP_SOUNDS = "LevelUp_Sounds"; +// public static final String REFRESH_CHUNKS = "Refresh_Chunks"; +// public static final String MOB_HEALTHBAR = "Mob_Healthbar"; +// public static final String DISPLAY_TYPE = "Display_Type"; +// public static final String HEARTS = "HEARTS"; +// public static final String DISPLAY_TIME = "Display_Time"; +// public static final String SCOREBOARD = "ConfigScoreboard"; +// public static final String USE_SCOREBOARDS = "UseScoreboards"; +// public static final String POWER = "Power_"; +// public static final String POWER_LEVEL_TAGS = POWER + "Level_Tags"; +// public static final String KEEP = "Keep"; +// public static final String ALLOW_KEEP = "Allow_" + KEEP; +// public static final String TIPS_AMOUNT = "Tips_Amount"; +// public static final String SHOW_STATS_AFTER_LOGIN = "Show_" + STATS + "_After_Login"; +// public static final String RAINBOWS = "Rainbows"; +// public static final String ABILITY_NAMES = "Ability_" + NAME + "s"; +// public static final String TYPES = "Types"; +// public static final String RANK = "Rank"; +// public static final String PRINT = "Print"; +// public static final String BOARD = "Board"; +// public static final String TOP = "Top"; +// public static final String INSPECT = "Inspect"; +// public static final String SKILL = "Skill"; +// public static final String TIME = "Time"; +// public static final String PURGING = "_Purging"; +// public static final String PURGE_INTERVAL = "Purge_Interval"; +// public static final String OLD_USER_CUTOFF = "Old_User_Cutoff"; +// public static final String BACKUPS = "Backups"; +// public static final String KEEP_LAST_24_HOURS = KEEP + ".Last_24_Hours"; +// public static final String DAILY_LAST_WEEK = "Daily_Last_Week"; +// public static final String WEEKLY_PAST_MONTHS = "Weekly_Past_Months"; +// public static final String MY_SQL = "MySQL"; +// public static final String TABLE_PREFIX = "TablePrefix"; +// public static final String USER_NAME = "User_" + NAME; +// public static final String SERVER = "Server"; +// public static final String PORT = "Port"; +// public static final String ADDRESS = "Address"; +// public static final String LOCALHOST = "localhost"; +// public static final String USER_PASSWORD = "User_Password"; +// public static final String MAX_CONNECTIONS = "MaxConnections"; +// public static final String MAX_POOL_SIZE = "MaxPoolSize"; +// public static final String SSL = "SSL"; +// public static final String HARDCORE = "Hardcore"; +// public static final String DEATH_STAT_LOSS = "Death_Stat_Loss"; +// public static final String PENALTY_PERCENTAGE = "Penalty_Percentage"; +// public static final String LEVEL_THRESHOLD = "Level_Threshold"; +// public static final String VAMPIRISM = "Vampirism"; +// public static final String LEECH_PERCENTAGE = "Leech_Percentage"; +// public static final String ITEMS = "Items"; +// public static final String CHIMAERA_WING = "Chimaera_Wing"; +// public static final String USE_COST = "Use_Cost"; +// public static final String RECIPE_COST = "Recipe_Cost"; +// public static final String ITEM = "Item_"; +// public static final String FEATHER = "Feather"; +// public static final String PREVENT = "Prevent_"; +// public static final String PREVENT_USE_UNDERGROUND = PREVENT + "Use_Underground"; +// public static final String USE_BED_SPAWN = "Use_Bed_Spawn"; +// public static final String WARMUP = "Warmup"; +// public static final String RECENTLY_HURT = "RecentlyHurt_"; +// public static final String PARTICLES = "Particles"; +// public static final String ACTIVATION = "Activation"; +// public static final String ABILITY_ACTIVATION = "Ability_" + ACTIVATION; +// public static final String ABILITY_DEACTIVATION = "Ability_Deactivation"; +// public static final String BLEED = "Bleed"; +// public static final String DODGE = "Dodge"; +// public static final String FLUX = "Flux"; +// public static final String GREATER_IMPACT = "Greater_Impact"; +// public static final String CALL_OF_THE_WILD = "Call_of_the_Wild"; +// public static final String TIER = "Tier"; +// public static final String LARGE_FIREWORKS = "LargeFireworks"; +// public static final String PARTY = "Party"; +// public static final String FRIENDLY_FIRE = "FriendlyFire"; +// public static final String MAX_SIZE = "MaxSize"; +// public static final String AUTO_KICK_INTERVAL = "AutoKick_Interval"; +// public static final String OLD_PARTY_MEMBER_CUTOFF = "Old_Party_Member_Cutoff"; +// public static final String SHARING = "Sharing"; +// public static final String SHARING_EXP_SHARE_BONUS_BASE = SHARING + "ExpShare_bonus_base"; +// public static final String EXP_SHARE_BONUS_INCREASE = "ExpShare_bonus_increase"; +// public static final String EXP_SHARE_BONUS_CAP = "ExpShare_bonus_cap"; +// public static final String RANGE = "Range"; +// public static final String LEVELING = "Leveling"; +// public static final String LEVEL_CAP = "Level_Cap"; +// public static final String XP_CURVE_MODIFIER = "Xp_Curve_Modifier"; +// public static final String NEAR_MEMBERS_NEEDED = "Near_Members_Needed"; +// public static final String INFORM_ALL_PARTY_MEMBERS_ON_LEVEL_UP = "Inform_All_Party_Members_On_LevelUp"; +// public static final String UNLOCK_LEVEL = "_UnlockLevel"; +// public static final String PTP = "ptp"; +// public static final String ACCEPT_REQUIRED = "Accept_Required"; +// public static final String REQUEST_TIMEOUT = "Request_Timeout"; +// public static final String WORLD_BASED_PERMISSIONS = "World_Based_Permissions"; +// public static final String INSPECT1 = "inspect"; +// public static final String MAX_DISTANCE = "Max_Distance"; +// public static final String SKILLS = "Skills"; +// public static final String URL_LINKS = "URL_Links"; +// public static final String ABILITIES = "Abilities"; +// public static final String MESSAGES = "Messages"; +// public static final String ONLY_ACTIVATE_WHEN_SNEAKING = "Only_Activate_When_Sneaking"; +// public static final String LEVEL_GATE_ABILITIES = "Level_Gate_Abilities"; +// public static final String COOLDOWNS = "Cooldowns"; +// public static final String MAX_SECONDS = "Max_Seconds"; +// public static final String TOOLS = "Tools"; +// public static final String DURABILITY_LOSS = "Durability_Loss"; +// public static final String LIMITS = "Limits"; +// public static final String TREE_FELLER = "Tree_Feller_"; +// public static final String TREE_FELLER_THRESHOLD = TREE_FELLER + "Threshold"; +// public static final String DOUBLE_DROPS = "Double_Drops"; +// public static final String AXES = "Axes"; +// public static final String TRUNCATE = "Truncate"; +// public static final String FOR_PVP = "_For_PVP"; +// public static final String FOR_PVE = "_For_PVE"; +// public static final String ACROBATICS = "Acrobatics"; +// public static final String PREVENT_AFK = PREVENT + "AFK_"; +// public static final String WOODCUTTING = "Woodcutting"; +// public static final String SOUNDS = "Sounds"; +// public static final String MAX_TRIES_AT_SAME_LOCATION = "Max_Tries_At_Same_Location"; +// public static final String HERBALISM = "Herbalism"; +// public static final String TAMING = "Taming"; +// public static final String CALL_OF_THE_WILD1 = "Call_Of_The_Wild"; +// public static final String SUMMON_AMOUNT = "Summon_Amount"; +// public static final String SUMMON_LENGTH = "Summon_Length"; +// public static final String SUMMON_MAX_AMOUNT = "Summon_Max_Amount"; +// public static final String AMOUNT = "Amount"; +// public static final String MATERIAL = "Material"; +// public static final String REPAIR = "Repair"; +// public static final String CONFIRM_REQUIRED = "Confirm_Required"; +// public static final String ANVIL = "Anvil_"; +// public static final String ANVIL_MATERIAL = ANVIL + "Material"; +// public static final String IRON_BLOCK = "IRON_BLOCK"; +// public static final String ANVIL_USE = ANVIL + "Use_"; +// public static final String ANVIL_PLACED = ANVIL + "Placed_"; +// public static final String SALVAGE = "Salvage"; +// public static final String UNARMED = "Unarmed"; +// public static final String BLOCK_CRACKER = "Block_Cracker"; +// public static final String SMOOTH_BRICK_TO_CRACKED_BRICK = "SmoothBrick_To_CrackedBrick"; +// public static final String PICKUP_DISABLED_FULL_INVENTORY = "Pickup_Disabled_Full_Inventory"; +// public static final String AS = "_As_"; +// public static final String MINING = "Mining"; +// public static final String DETONATOR = "Detonator_"; +// public static final String FLINT_AND_STEEL = "FLINT_AND_STEEL"; +// public static final String FISHING = "Fishing"; +// public static final String LURE_MODIFIER = "Lure_Modifier"; +// public static final String EXTRA_FISH = "Extra_Fish"; +// public static final String OVERRIDE_VANILLA_TREASURES = "Override_Vanilla_Treasures"; +// public static final String DROPS = "Drops_"; +// public static final String ALCHEMY = "Alchemy"; +// public static final String PREVENT_HOPPER_TRANSFER_BOTTLES = PREVENT + "Hopper_Transfer_Bottles"; +// public static final String PREVENT_HOPPER_TRANSFER_INGREDIENTS = PREVENT + "Hopper_Transfer_Ingredients"; +// public static final String FOR_HOPPERS = "_for_Hoppers"; +// public static final String XP_AFTER_TELEPORT = "XP_After_Teleport_"; +// public static final String LIGHTNING = "_Lightning"; +// public static final String GOLD_BLOCK = "GOLD_BLOCK"; +// public static final String PICKAXE = "_Pickaxe"; +// public static final String EXP_SHARE_BONUS_BASE = "ExpShare_bonus_base"; +// +// public MainConfig() { +// //super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "config.yml", true); +// super("main", pluginRef.getDataFolder().getAbsoluteFile(), ConfigConstants.RELATIVE_PATH_CONFIG_DIR, true, true, true, true); +// } +// +// /** +// * This grabs an instance of this config class from the Config Manager +// * This method is deprecated and will be removed in the future +// * +// * @return the instance of this config +// * @see mcMMO#getConfigManager() +// * @deprecated Please use mcMMO.getConfigManager() to grab a specific config instead +// */ +// @Deprecated +// public static MainConfig getInstance() { +// return pluginRef.getConfigManager().getMainConfig(); +// } +// +// /** +// * The version of this config +// * +// * @return +// */ +// @Override +// public double getConfigVersion() { +// return 1; +// } +// +// @Override +// public List validateKeys() { +// // Validate all the settings! +// List reason = new ArrayList<>(); +// return reason; +// } +// +// public boolean getPreventHopperTransferIngredients() { +// return getBooleanValue(SKILLS, ALCHEMY, PREVENT_HOPPER_TRANSFER_INGREDIENTS); +// } +// +// public boolean getPreventHopperTransferBottles() { +// return getBooleanValue(SKILLS, ALCHEMY, PREVENT_HOPPER_TRANSFER_BOTTLES); +// } +// +// /* Taming */ +// public Material getTamingCOTWMaterial(EntityType type) { +// return Material.matchMaterial(getStringValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), ITEM + MATERIAL)); +// } +// +// public int getTamingCOTWCost(EntityType type) { +// return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), ITEM + AMOUNT); +// } +// +// public int getTamingCOTWAmount(EntityType type) { +// return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_AMOUNT); +// } +// +// public int getTamingCOTWLength(EntityType type) { +// return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_LENGTH); +// } +// +// public int getTamingCOTWMaxAmount(EntityType type) { +// return getIntValue(SKILLS, TAMING, CALL_OF_THE_WILD1, StringUtils.getPrettyEntityTypeString(type), SUMMON_MAX_AMOUNT); +// } +// +// public double getTamingCOTWRange() { +// return getDoubleValue(SKILLS, TAMING, CALL_OF_THE_WILD1, RANGE); +// } +// +//} diff --git a/src/main/java/com/gmail/nossr50/dumpster/UnsafeValueValidation.java b/src/main/java/com/gmail/nossr50/dumpster/UnsafeValueValidation.java new file mode 100644 index 000000000..e7f284aab --- /dev/null +++ b/src/main/java/com/gmail/nossr50/dumpster/UnsafeValueValidation.java @@ -0,0 +1,27 @@ +//package com.gmail.nossr50.config; +// +//import java.util.List; +// +///** +// * This is for config validation +// */ +//public interface UnsafeValueValidation { +// List validateKeys(); +// +// /** +// * Prints all errors found when validating the config +// */ +// default void validateEntries() { +// /* +// * Print Errors about Keys +// */ +// +// List validKeyErrors = validateKeys(); // Validate Keys +// +// if (validKeyErrors != null && validKeyErrors.size() > 0) { +// for (String error : validKeyErrors) { +// pluginRef.getLogger().severe(error); +// } +// } +// } +//} diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index e0ab29bf4..11c7ddf10 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.listeners; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.datatypes.meta.BonusDropMeta; import com.gmail.nossr50.datatypes.player.McMMOPlayer; @@ -81,7 +80,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPistonExtend(BlockPistonExtendEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; BlockFace direction = event.getDirection(); @@ -106,7 +105,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockPistonRetract(BlockPistonRetractEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; // Get opposite direction so we get correct block @@ -128,7 +127,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityBlockFormEvent(EntityBlockFormEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; if (BlockUtils.shouldBeWatched(event.getBlock().getState())) { @@ -139,7 +138,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockFormEvent(BlockFormEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; Block newBlock = event.getNewState().getBlock(); @@ -162,7 +161,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onBlockPlace(BlockPlaceEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; Player player = event.getPlayer(); @@ -205,7 +204,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockMultiPlace(BlockMultiPlaceEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; Player player = event.getPlayer(); @@ -227,7 +226,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockGrow(BlockGrowEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; BlockState blockState = event.getBlock().getState(); @@ -247,7 +246,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; /* WORLD GUARD MAIN FLAG CHECK */ @@ -341,7 +340,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockBreakHigher(BlockBreakEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; /* WORLD GUARD MAIN FLAG CHECK */ @@ -410,7 +409,7 @@ public class BlockListener implements Listener { BlockState blockState = event.getBlock().getState(); /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; /* WORLD GUARD MAIN FLAG CHECK */ @@ -480,7 +479,7 @@ public class BlockListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockDamageHigher(BlockDamageEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; /* WORLD GUARD MAIN FLAG CHECK */ diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 8cbf2bad3..f6370e73e 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.listeners; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.SubSkillType; @@ -79,7 +78,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityShootBow(EntityShootBowEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event.getEntity() instanceof Player) { @@ -115,7 +114,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onProjectileLaunch(ProjectileLaunchEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if(event.getEntity().getShooter() instanceof Player) @@ -155,7 +154,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityChangeBlock(EntityChangeBlockEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Block block = event.getBlock(); @@ -305,7 +304,7 @@ public class EntityListener implements Listener { } /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event instanceof FakeEntityDamageByEntityEvent) { @@ -454,7 +453,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityDamage(EntityDamageEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event.getEntity() instanceof Player) { @@ -621,7 +620,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.LOWEST) public void onEntityDeathLowest(EntityDeathEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; LivingEntity entity = event.getEntity(); @@ -653,7 +652,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onEntityDeath(EntityDeathEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; LivingEntity entity = event.getEntity(); @@ -673,7 +672,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onCreatureSpawn(CreatureSpawnEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; LivingEntity entity = event.getEntity(); @@ -709,7 +708,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onExplosionPrime(ExplosionPrimeEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Entity entity = event.getEntity(); @@ -752,7 +751,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEnitityExplode(EntityExplodeEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Entity entity = event.getEntity(); @@ -796,7 +795,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onEntityExplodeMonitor(EntityExplodeEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Entity entity = event.getEntity(); @@ -816,7 +815,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onFoodLevelChange(FoodLevelChangeEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Entity entity = event.getEntity(); @@ -924,7 +923,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityTame(EntityTameEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event instanceof FakeEntityTameEvent) { @@ -967,7 +966,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityTarget(EntityTargetEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; Entity entity = event.getEntity(); @@ -1008,7 +1007,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPotionSplash(PotionSplashEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; for (PotionEffect effect : ((PotionMeta) event.getPotion().getItem().getItemMeta()).getCustomEffects()) { @@ -1026,7 +1025,7 @@ public class EntityListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPigZapEvent(PigZapEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event.getEntity().hasMetadata(MetadataConstants.UNNATURAL_MOB_METAKEY)) { diff --git a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java index a7d8151b0..4cda1c8c5 100644 --- a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java @@ -1,7 +1,6 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.MainConfig; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; @@ -37,7 +36,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onInventoryOpen(InventoryOpenEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory()); @@ -64,7 +63,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onInventoryClose(InventoryCloseEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Block furnaceBlock = processInventoryOpenOrCloseEvent(event.getInventory()); @@ -85,7 +84,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onFurnaceBurnEvent(FurnaceBurnEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; Block furnaceBlock = event.getBlock(); @@ -119,7 +118,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onFurnaceSmeltEvent(FurnaceSmeltEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) return; Block furnaceBlock = event.getBlock(); @@ -152,7 +151,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onFurnaceExtractEvent(FurnaceExtractEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Block furnaceBlock = event.getBlock(); @@ -186,7 +185,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onInventoryClickEventNormal(InventoryClickEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWhoClicked().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWhoClicked().getWorld().getName())) return; Inventory inventory = event.getInventory(); @@ -313,7 +312,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onInventoryDragEvent(InventoryDragEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWhoClicked().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWhoClicked().getWorld().getName())) return; Inventory inventory = event.getInventory(); @@ -369,7 +368,7 @@ public class InventoryListener implements Listener { // @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) // public void onBrew(BrewEvent event) { // /* WORLD BLACKLIST CHECK */ -// if (WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) +// if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getBlock().getWorld().getName())) // return; // // if (event instanceof FakeBrewEvent) @@ -387,7 +386,7 @@ public class InventoryListener implements Listener { //Location can be null here if (event.getSource().getLocation() != null) - if (WorldBlacklist.isWorldBlacklisted(event.getSource().getLocation().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getSource().getLocation().getWorld().getName())) return; Inventory inventory = event.getDestination(); @@ -435,7 +434,7 @@ public class InventoryListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onCraftItem(CraftItemEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWhoClicked().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWhoClicked().getWorld().getName())) return; final HumanEntity whoClicked = event.getWhoClicked(); diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index fe8493e90..71fabf8e7 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -2,7 +2,6 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.chat.ChatManager; import com.gmail.nossr50.config.MainConfig; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.core.MetadataConstants; import com.gmail.nossr50.datatypes.chat.ChatMode; import com.gmail.nossr50.datatypes.party.Party; @@ -63,7 +62,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerTeleport(PlayerTeleportEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Player player = event.getPlayer(); @@ -102,7 +101,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerDeathLowest(PlayerDeathEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; String deathMessage = event.getDeathMessage(); @@ -134,7 +133,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerDeathMonitor(PlayerDeathEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; boolean statLossEnabled = HardcoreManager.isStatLossEnabled(); @@ -213,7 +212,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerDropItem(PlayerDropItemEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; /* WORLD GUARD MAIN FLAG CHECK */ @@ -243,7 +242,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerFishHighest(PlayerFishEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Player player = event.getPlayer(); @@ -318,7 +317,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerFishMonitor(PlayerFishEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Player player = event.getPlayer(); @@ -410,7 +409,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPlayerPickupItem(EntityPickupItemEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getEntity().getWorld().getName())) return; if (event.getEntity() instanceof Player) { @@ -510,7 +509,7 @@ public class PlayerListener implements Listener { Player player = event.getPlayer(); //Delay loading for 3 seconds in case the player has a save task running, its hacky but it should do the trick - new PlayerProfileLoadingTask(player).runTaskLaterAsynchronously(pluginRef, 60); + new PlayerProfileLoadingTask(pluginRef, player).runTaskLaterAsynchronously(pluginRef, 60); if (pluginRef.getConfigManager().getConfigMOTD().isEnableMOTD()) { Motd.displayAll(player); @@ -563,7 +562,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onPlayerInteractLowest(PlayerInteractEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Player player = event.getPlayer(); @@ -676,7 +675,7 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onPlayerInteractMonitor(PlayerInteractEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; Player player = event.getPlayer(); @@ -736,7 +735,9 @@ public class PlayerListener implements Listener { mcMMOPlayer.processAbilityActivation(PrimarySkillType.WOODCUTTING); } - ChimaeraWing.activationCheck(player); + //TODO: Something needs to be done about this + ChimaeraWing chimaeraWing = new ChimaeraWing(pluginRef, mcMMOPlayer); + chimaeraWing.activationCheck(); } /* GREEN THUMB CHECK */ @@ -789,7 +790,9 @@ public class PlayerListener implements Listener { } /* ITEM CHECKS */ - ChimaeraWing.activationCheck(player); + //TODO: Something needs to be done about this + ChimaeraWing chimaeraWing = new ChimaeraWing(pluginRef, mcMMOPlayer); + chimaeraWing.activationCheck(); /* BLAST MINING CHECK */ MiningManager miningManager = mcMMOPlayer.getMiningManager(); @@ -897,7 +900,7 @@ public class PlayerListener implements Listener { /*@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerStatisticIncrementEvent(PlayerStatisticIncrementEvent event) { *//* WORLD BLACKLIST CHECK *//* - if(WorldBlacklist.isWorldBlacklisted(event.getPlayer().getWorld())) + if(pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getPlayer().getWorld().getName())) return; if (!mcMMO.getHolidayManager().isAprilFirst()) { diff --git a/src/main/java/com/gmail/nossr50/listeners/WorldListener.java b/src/main/java/com/gmail/nossr50/listeners/WorldListener.java index 525b5d4d6..91da26a73 100644 --- a/src/main/java/com/gmail/nossr50/listeners/WorldListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/WorldListener.java @@ -1,6 +1,5 @@ package com.gmail.nossr50.listeners; -import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.mcMMO; import org.bukkit.Chunk; import org.bukkit.World; @@ -30,7 +29,7 @@ public class WorldListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onStructureGrow(StructureGrowEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWorld().getName())) return; if (!pluginRef.getPlaceStore().isTrue(event.getLocation().getBlock())) { @@ -50,7 +49,7 @@ public class WorldListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onWorldInit(WorldInitEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWorld().getName())) return; World world = event.getWorld(); @@ -72,7 +71,7 @@ public class WorldListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onWorldUnload(WorldUnloadEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWorld().getName())) return; pluginRef.getPlaceStore().unloadWorld(event.getWorld()); @@ -86,7 +85,7 @@ public class WorldListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onChunkUnload(ChunkUnloadEvent event) { /* WORLD BLACKLIST CHECK */ - if (WorldBlacklist.isWorldBlacklisted(event.getWorld())) + if (pluginRef.getDynamicSettingsManager().isWorldBlacklisted(event.getWorld().getName())) return; Chunk chunk = event.getChunk();