mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 06:36:45 +01:00
new config pt 10 - All configs are now managed by ConfigManager (WIP)
This commit is contained in:
parent
acf2bf362f
commit
f4ba472403
4
pom.xml
4
pom.xml
@ -125,10 +125,10 @@
|
||||
<pattern>com.flowpowered</pattern>
|
||||
<shadedPattern>com.gmail.nossr50.flow</shadedPattern>
|
||||
</relocation>-->
|
||||
<relocation>
|
||||
<!--<relocation>
|
||||
<pattern>ninja.leaping</pattern>
|
||||
<shadedPattern>com.gmail.nossr50.configurable</shadedPattern>
|
||||
</relocation>
|
||||
</relocation>-->
|
||||
</relocations>
|
||||
</configuration>
|
||||
<executions>
|
||||
|
@ -122,20 +122,22 @@ public class AdvancedConfig extends ConfigValidated {
|
||||
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;
|
||||
//private static AdvancedConfig instance;
|
||||
|
||||
private AdvancedConfig() {
|
||||
public AdvancedConfig() {
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "advanced.yml", true);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), "advanced.yml", true);
|
||||
}
|
||||
|
||||
public static AdvancedConfig getInstance() {
|
||||
|
||||
|
||||
/*public static AdvancedConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new AdvancedConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* The version of this config
|
||||
|
@ -7,13 +7,13 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
public class ChildConfig extends ConfigCollections {
|
||||
public class ChildConfig extends ConfigCollection {
|
||||
public ChildConfig() {
|
||||
super("child.yml");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
protected void register() {
|
||||
config.setDefaults(YamlConfiguration.loadConfiguration(plugin.getResourceAsReader("child.yml")));
|
||||
|
||||
FamilyTree.clearRegistrations(); // when reloading, need to clear statics
|
||||
|
@ -1,7 +1,49 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public interface ConfigCollection<T> {
|
||||
Collection<T> getLoadedCollection();
|
||||
/**
|
||||
* Represents a config file that registers keys after its initialized
|
||||
*/
|
||||
public abstract class ConfigCollection<T> extends Config implements Registers, GenericCollectionContainer {
|
||||
|
||||
//The collection held by this class
|
||||
protected Collection<T> genericCollection;
|
||||
|
||||
public ConfigCollection(String pathToParentFolder, String relativePath, boolean mergeNewKeys) {
|
||||
super(pathToParentFolder, relativePath, mergeNewKeys);
|
||||
|
||||
//init
|
||||
initCollection();
|
||||
|
||||
//load
|
||||
register();
|
||||
}
|
||||
|
||||
private void initCollection() {
|
||||
if (genericCollection == null)
|
||||
genericCollection = new ArrayList<>();
|
||||
}
|
||||
|
||||
public ConfigCollection(File pathToParentFolder, String relativePath, boolean mergeNewKeys) {
|
||||
super(pathToParentFolder, relativePath, mergeNewKeys);
|
||||
|
||||
//init
|
||||
initCollection();
|
||||
|
||||
//load
|
||||
register();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<T> getLoadedCollection() {
|
||||
return this.genericCollection;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
genericCollection.clear();
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Represents a config file that registers keys after its initialized
|
||||
*/
|
||||
public abstract class ConfigCollections extends Config implements RegistersKeys, ConfigCollection {
|
||||
|
||||
public ConfigCollections(String pathToParentFolder, String relativePath, boolean mergeNewKeys) {
|
||||
super(pathToParentFolder, relativePath, mergeNewKeys);
|
||||
loadKeys();
|
||||
}
|
||||
|
||||
public ConfigCollections(File pathToParentFolder, String relativePath, boolean mergeNewKeys) {
|
||||
super(pathToParentFolder, relativePath, mergeNewKeys);
|
||||
loadKeys();
|
||||
}
|
||||
}
|
@ -6,19 +6,19 @@ import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
|
||||
public class CoreSkillsConfig extends Config {
|
||||
private static CoreSkillsConfig instance;
|
||||
//private static CoreSkillsConfig instance;
|
||||
|
||||
public CoreSkillsConfig() {
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"coreskills.yml", true);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(),"coreskills.yml", true);
|
||||
}
|
||||
|
||||
public static CoreSkillsConfig getInstance() {
|
||||
/*public static CoreSkillsConfig getInstance() {
|
||||
if (instance == null)
|
||||
return new CoreSkillsConfig();
|
||||
|
||||
return instance;
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* The version of this config
|
||||
|
@ -0,0 +1,15 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Represents a class that contains a generic collection
|
||||
* @param <T>
|
||||
*/
|
||||
public interface GenericCollectionContainer<T> {
|
||||
/**
|
||||
* Grab the collection held by this class
|
||||
* @return the collection held by this class
|
||||
*/
|
||||
Collection<T> getLoadedCollection();
|
||||
}
|
@ -8,20 +8,20 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class RankConfig extends ConfigValidated {
|
||||
private static RankConfig instance;
|
||||
//private static RankConfig instance;
|
||||
|
||||
public RankConfig() {
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"skillranks.yml", true);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(),"skillranks.yml", true);
|
||||
this.instance = this;
|
||||
//this.instance = this;
|
||||
}
|
||||
|
||||
public static RankConfig getInstance() {
|
||||
/*public static RankConfig getInstance() {
|
||||
if (instance == null)
|
||||
return new RankConfig();
|
||||
|
||||
return instance;
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
|
11
src/main/java/com/gmail/nossr50/config/Registers.java
Normal file
11
src/main/java/com/gmail/nossr50/config/Registers.java
Normal file
@ -0,0 +1,11 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
/**
|
||||
* A class that is expected to register one thing into another thing
|
||||
*/
|
||||
public interface Registers {
|
||||
/**
|
||||
* Register stuff
|
||||
*/
|
||||
void register();
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
package com.gmail.nossr50.config;
|
||||
|
||||
/**
|
||||
* A class that registers keys
|
||||
*/
|
||||
public interface RegistersKeys {
|
||||
/**
|
||||
* Loads up keys
|
||||
*/
|
||||
void loadKeys();
|
||||
}
|
@ -7,7 +7,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class SoundConfig extends ConfigValidated {
|
||||
private static SoundConfig instance;
|
||||
//private static SoundConfig instance;
|
||||
|
||||
public SoundConfig() {
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "sounds.yml", true);
|
||||
@ -15,12 +15,12 @@ public class SoundConfig extends ConfigValidated {
|
||||
this.instance = this;
|
||||
}
|
||||
|
||||
public static SoundConfig getInstance() {
|
||||
/*public static SoundConfig getInstance() {
|
||||
if (instance == null)
|
||||
return new SoundConfig();
|
||||
|
||||
return instance;
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
|
@ -0,0 +1,166 @@
|
||||
package com.gmail.nossr50.config.collectionconfigs;
|
||||
|
||||
import com.gmail.nossr50.config.*;
|
||||
import com.gmail.nossr50.config.mods.ArmorConfigManager;
|
||||
import com.gmail.nossr50.config.mods.BlockConfigManager;
|
||||
import com.gmail.nossr50.config.mods.EntityConfigManager;
|
||||
import com.gmail.nossr50.config.mods.ToolConfigManager;
|
||||
import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
|
||||
import com.gmail.nossr50.config.treasure.TreasureConfig;
|
||||
import com.gmail.nossr50.skills.child.ChildConfig;
|
||||
import com.gmail.nossr50.skills.repair.repairables.Repairable;
|
||||
import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
*
|
||||
* The Config Manager handles initializing, loading, and unloading registers for all configs that mcMMO uses
|
||||
* This makes sure that mcMMO properly loads and unloads its values on reload
|
||||
*
|
||||
* Config Manager also holds all of our MultiConfigContainers
|
||||
*
|
||||
* MultiConfigContainers
|
||||
* Represents a collection of config files that serve a similar purpose
|
||||
* As an example, with Repair you can have an unlimited number of files named repair.*.yml and each one will be treated the same and have its collections registered
|
||||
* The master file is always named x.vanilla.yml, for example "repair.vanilla.yml"
|
||||
* To be honest I'm not sure how many people make use of this system, but I'm keeping it since its been in mcMMO for like 6+ years
|
||||
*/
|
||||
public final class ConfigManager {
|
||||
|
||||
/* UNLOAD REGISTER */
|
||||
|
||||
private ArrayList<Unload> unloadables;
|
||||
|
||||
/* MULTI CONFIG INSTANCES */
|
||||
|
||||
private MultiConfigContainer<Repairable> repairableMultiConfigContainer;
|
||||
private MultiConfigContainer<Salvageable> salvageableMultiConfigContainer;
|
||||
|
||||
/* COLLECTION MANAGERS */
|
||||
|
||||
private SimpleRepairableManager simpleRepairableManager;
|
||||
private SimpleSalvageableManager simpleSalvageableManager;
|
||||
|
||||
/* CONFIG INSTANCES */
|
||||
|
||||
private TreasureConfig treasureConfig;
|
||||
private AdvancedConfig advancedConfig;
|
||||
private PotionConfig potionConfig;
|
||||
private CoreSkillsConfig coreSkillsConfig;
|
||||
private SoundConfig soundConfig;
|
||||
private RankConfig rankConfig;
|
||||
|
||||
public ConfigManager()
|
||||
{
|
||||
unloadables = new ArrayList<>();
|
||||
|
||||
// Load Config Files
|
||||
// I'm pretty these are supposed to be done in a specific order, so don't rearrange them willy nilly
|
||||
treasureConfig = new TreasureConfig();
|
||||
unloadables.add(treasureConfig);
|
||||
|
||||
advancedConfig = new AdvancedConfig();
|
||||
unloadables.add(advancedConfig);
|
||||
|
||||
potionConfig = new PotionConfig();
|
||||
unloadables.add(potionConfig);
|
||||
|
||||
coreSkillsConfig = new CoreSkillsConfig();
|
||||
unloadables.add(coreSkillsConfig);
|
||||
|
||||
soundConfig = new SoundConfig();
|
||||
unloadables.add(soundConfig);
|
||||
|
||||
rankConfig = new RankConfig();
|
||||
unloadables.add(rankConfig);
|
||||
|
||||
//TODO: This config serves no purpose so its getting removed
|
||||
new ChildConfig();
|
||||
|
||||
if (MainConfig.getInstance().getToolModsEnabled()) {
|
||||
new ToolConfigManager();
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getArmorModsEnabled()) {
|
||||
new ArmorConfigManager();
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getBlockModsEnabled()) {
|
||||
new BlockConfigManager();
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getEntityModsEnabled()) {
|
||||
new EntityConfigManager();
|
||||
}
|
||||
|
||||
// Multi Config Containers
|
||||
initMultiConfigContainers();
|
||||
|
||||
// Register Managers
|
||||
initCollectionManagers();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes all of our Multi Config Containers
|
||||
*/
|
||||
private void initMultiConfigContainers()
|
||||
{
|
||||
//Repair
|
||||
repairableMultiConfigContainer = new MultiConfigContainer<>("repair", CollectionClassType.REPAIR);
|
||||
unloadables.add(repairableMultiConfigContainer);
|
||||
|
||||
//Salvage
|
||||
salvageableMultiConfigContainer = new MultiConfigContainer<>("salvage", CollectionClassType.SALVAGE);
|
||||
unloadables.add(salvageableMultiConfigContainer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes any managers related to config collections
|
||||
*/
|
||||
private void initCollectionManagers()
|
||||
{
|
||||
// Handles registration of repairables
|
||||
simpleRepairableManager = new SimpleRepairableManager(getRepairables());
|
||||
unloadables.add(simpleRepairableManager);
|
||||
|
||||
// Handles registration of salvageables
|
||||
simpleSalvageableManager = new SimpleSalvageableManager(getSalvageables());
|
||||
unloadables.add(simpleSalvageableManager);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all loaded repairables (loaded from all repairable configs)
|
||||
* @return the currently loaded repairables
|
||||
*/
|
||||
public ArrayList<Repairable> getRepairables()
|
||||
{
|
||||
return (ArrayList<Repairable>) repairableMultiConfigContainer.getCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all loaded salvageables (loaded from all salvageable configs)
|
||||
* @return the currently loaded salvageables
|
||||
*/
|
||||
public ArrayList<Salvageable> getSalvageables()
|
||||
{
|
||||
return (ArrayList<Salvageable>) salvageableMultiConfigContainer.getCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
* Unloads all config options (prepares for reload)
|
||||
*/
|
||||
public void unloadAllConfigsAndRegisters()
|
||||
{
|
||||
//Unload
|
||||
for(Unload unloadable : unloadables)
|
||||
{
|
||||
unloadable.unload();
|
||||
}
|
||||
|
||||
//Clear
|
||||
unloadables.clear();
|
||||
}
|
||||
}
|
@ -0,0 +1,155 @@
|
||||
package com.gmail.nossr50.config.collectionconfigs;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.config.Unload;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Represents a type of config collection, these config collections are spread across multiple config files potentially
|
||||
* @param <T>
|
||||
*/
|
||||
public class MultiConfigContainer<T> implements Unload {
|
||||
|
||||
/* CONSTANTS */
|
||||
public static final String DEFAULT_MULTICONFIG_FILENAME_SUFFIX = ".vanilla.yml";
|
||||
|
||||
/* VARS */
|
||||
private final String configPrefix;
|
||||
private Collection<T> collection;
|
||||
public final CollectionClassType collectionClassType;
|
||||
private ConfigCollection vanillaConfig;
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
collection.clear();
|
||||
vanillaConfig.unload();
|
||||
}
|
||||
|
||||
public MultiConfigContainer(String configPrefix, CollectionClassType collectionClassType)
|
||||
{
|
||||
//Define Config Class
|
||||
this.collectionClassType = collectionClassType;
|
||||
|
||||
//Define Config Filename Prefix
|
||||
this.configPrefix = configPrefix;
|
||||
|
||||
//Init Collection
|
||||
collection = new ArrayList<T>();
|
||||
|
||||
//Load Configs
|
||||
|
||||
//Vanilla Config
|
||||
initConfigAndAddCollection(getVanillaConfigName(configPrefix));
|
||||
|
||||
//Custom Configs
|
||||
loadCustomCollections(configPrefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add another collection to this collection
|
||||
* @param otherCollection
|
||||
*/
|
||||
private void addCollection(Collection<T> otherCollection)
|
||||
{
|
||||
collection.addAll(otherCollection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Grabs the Class to instance for this config collection
|
||||
* @param collectionClassType the type of class
|
||||
* @return the class to instance for this config collection
|
||||
*/
|
||||
private Class getConfigClass(CollectionClassType collectionClassType)
|
||||
{
|
||||
switch(collectionClassType) {
|
||||
case REPAIR:
|
||||
return RepairConfig.class;
|
||||
case SALVAGE:
|
||||
return SalvageConfig.class;
|
||||
default:
|
||||
mcMMO.p.getLogger().severe("[DEBUG] Config Class type is undefined!");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the vanilla config which is always present
|
||||
* @param configPrefix the prefix to the filename, for example "repair" or "salvage"
|
||||
* @return the name of the vanilla config file for this collection
|
||||
*/
|
||||
private String getVanillaConfigName(String configPrefix)
|
||||
{
|
||||
return configPrefix+DEFAULT_MULTICONFIG_FILENAME_SUFFIX;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a config and attempts to load add its collection
|
||||
* @param configFileName the filename of the config to load
|
||||
*/
|
||||
private void initConfigAndAddCollection(String configFileName)
|
||||
{
|
||||
mcMMO.p.getLogger().info("Reading from collection config - "+configFileName);
|
||||
ConfigCollection configCollection = null;
|
||||
|
||||
try {
|
||||
configCollection = (ConfigCollection) getConfigClass(collectionClassType).getConstructor(String.class).newInstance(configFileName);
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//Add the collection loaded from this config
|
||||
addCollection(configCollection.getLoadedCollection());
|
||||
}
|
||||
|
||||
/**
|
||||
* mcMMO allows collection config files to be named things like repair.whatevernameyouwanthere.yml and so on,
|
||||
* these files are treated in the same way as the vanilla file. They serve the purpose of organization
|
||||
* @param configPrefix the prefix of the file name, for example "repair", "salvage", etc
|
||||
*/
|
||||
public void loadCustomCollections(String configPrefix)
|
||||
{
|
||||
String vanillaConfigFileName = getVanillaConfigName(configPrefix);
|
||||
|
||||
//Find other files
|
||||
Pattern pattern = Pattern.compile(configPrefix+"\\.(?:.+)\\.yml");
|
||||
//File dataFolder = McmmoCore.getDataFolderPath();
|
||||
File dataFolder = mcMMO.p.getDataFolder();
|
||||
|
||||
for (String fileName : dataFolder.list()) {
|
||||
//Vanilla Config is already loaded
|
||||
if(fileName.equalsIgnoreCase(vanillaConfigFileName))
|
||||
continue;
|
||||
|
||||
//Find files that match the pattern
|
||||
if (!pattern.matcher(fileName).matches()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//Init file
|
||||
File currentFile = new File(dataFolder, fileName);
|
||||
|
||||
//Make sure its not a directory (needed?)
|
||||
if(currentFile.isDirectory())
|
||||
continue;
|
||||
|
||||
//Load and add the collections
|
||||
initConfigAndAddCollection(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<T> getCollection() {
|
||||
return collection;
|
||||
}
|
||||
}
|
@ -1,119 +0,0 @@
|
||||
package com.gmail.nossr50.config.collectionconfigs;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.skills.repair.repairables.Repairable;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Represents a collection of config files that serve a similar purpose
|
||||
* For example, files named repair.*.yml are all loaded into memory, this lets admins keep their config files clean
|
||||
*
|
||||
* To be honest I'm not sure how many people make use of this system, but I'm keeping it since its been in mcMMO for like 6+ years
|
||||
*/
|
||||
public final class MultiConfigManager {
|
||||
|
||||
public static final String DEFAULT_MULTICONFIG_FILENAME_SUFFIX = ".vanilla.yml";
|
||||
|
||||
//Configs
|
||||
public com.gmail.nossr50.config.collectionconfigs.RepairConfig vanillaRepairConfig; //This is the main config file that mcMMO will copy out
|
||||
public com.gmail.nossr50.config.collectionconfigs.SalvageConfig vanillaSalvageConfig;
|
||||
|
||||
private static List<Repairable> repairables;
|
||||
private static List<Salvageable> salvageables;
|
||||
|
||||
public MultiConfigManager(String fileNamePrefix)
|
||||
{
|
||||
//init Collections
|
||||
repairables = new ArrayList<>();
|
||||
salvageables = new ArrayList<>();
|
||||
|
||||
//init vanilla configs
|
||||
vanillaRepairConfig = new com.gmail.nossr50.config.collectionconfigs.RepairConfig(getVanillaConfigName("repair"));
|
||||
vanillaSalvageConfig = new com.gmail.nossr50.config.collectionconfigs.SalvageConfig(getVanillaConfigName("salvage"));
|
||||
|
||||
//add valid vanilla collections to main collection
|
||||
repairables.addAll(vanillaRepairConfig.getLoadedCollection());
|
||||
salvageables.addAll(vanillaSalvageConfig.getLoadedCollection());
|
||||
|
||||
//add valid custom collections to main collection
|
||||
loadCustomCollections("repair", repairables, com.gmail.nossr50.config.collectionconfigs.RepairConfig.class);
|
||||
loadCustomCollections("salvage", salvageables, com.gmail.nossr50.config.collectionconfigs.SalvageConfig.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* mcMMO allows collection config files to be named things like repair.whatevernameyouwanthere.yml and so on,
|
||||
* these files are treated in the same way as the vanilla file. They serve the purpose of organization
|
||||
* @param configPrefix the prefix of the file name, for example "repair", "salvage", etc
|
||||
* @param collection the collection that will be added to
|
||||
*/
|
||||
public void loadCustomCollections(String configPrefix, Collection<?> collection, Class<? extends ConfigCollection> configClass)
|
||||
{
|
||||
String vanillaConfigFileName = getVanillaConfigName(configPrefix);
|
||||
|
||||
//Find other files
|
||||
Pattern pattern = Pattern.compile(configPrefix+"\\.(?:.+)\\.yml");
|
||||
//File dataFolder = McmmoCore.getDataFolderPath();
|
||||
File dataFolder = mcMMO.p.getDataFolder();
|
||||
|
||||
for (String fileName : dataFolder.list()) {
|
||||
//Vanilla Config is already loaded
|
||||
if(fileName.equalsIgnoreCase(vanillaConfigFileName))
|
||||
continue;
|
||||
|
||||
//Find files that match the pattern
|
||||
if (!pattern.matcher(fileName).matches()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//Init file
|
||||
File currentFile = new File(dataFolder, fileName);
|
||||
|
||||
//Make sure its not a directory (needed?)
|
||||
if(currentFile.isDirectory())
|
||||
continue;
|
||||
|
||||
try {
|
||||
//TODO: Valid?
|
||||
ConfigCollections customConfig = (ConfigCollections) getConfigClass(configPrefix).getConstructor(String.class).newInstance(configPrefix);
|
||||
collection.addAll(customConfig.getLoadedCollection());
|
||||
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String getVanillaConfigName(String configPrefix)
|
||||
{
|
||||
return configPrefix+DEFAULT_MULTICONFIG_FILENAME_SUFFIX;
|
||||
}
|
||||
|
||||
private Class getConfigClass(String configPrefix)
|
||||
{
|
||||
switch(configPrefix) {
|
||||
case "repair":
|
||||
return RepairConfig.class;
|
||||
case "salvage":
|
||||
return SalvageConfig.class;
|
||||
default:
|
||||
mcMMO.p.getLogger().severe("[DEBUG] Config Class is null!");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
package com.gmail.nossr50.config.collectionconfigs;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.skills.MaterialType;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.skills.repair.repairables.Repairable;
|
||||
import com.gmail.nossr50.skills.repair.repairables.RepairableFactory;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
@ -12,28 +13,16 @@ import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This config
|
||||
*/
|
||||
public class RepairConfig extends ConfigCollections {
|
||||
private List<Repairable> repairables;
|
||||
|
||||
public class RepairConfig extends ConfigCollection {
|
||||
public RepairConfig(String fileName) {
|
||||
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
repairables = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection getLoadedCollection() {
|
||||
return repairables == null ? new ArrayList<Repairable>() : repairables;
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), fileName, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -47,9 +36,7 @@ public class RepairConfig extends ConfigCollections {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadKeys() {
|
||||
repairables = new ArrayList<Repairable>();
|
||||
|
||||
public void register() {
|
||||
ConfigurationNode repairablesNode = getUserRootNode().getNode("Repairables");
|
||||
List<? extends ConfigurationNode> repairablesNodeChildrenList = repairablesNode.getChildrenList();
|
||||
Iterator<? extends ConfigurationNode> configIter = repairablesNodeChildrenList.iterator();
|
||||
@ -164,7 +151,7 @@ public class RepairConfig extends ConfigCollections {
|
||||
|
||||
if (noErrorsInRepairable(reason)) {
|
||||
Repairable repairable = RepairableFactory.getRepairable(itemType, repairMaterial, repairMetadata, minimumLevel, minimumQuantity, maximumDurability, repairConfigItemCategory, repairMaterialType, xpMultiplier);
|
||||
repairables.add(repairable);
|
||||
genericCollection.add(repairable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
package com.gmail.nossr50.config.collectionconfigs;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.skills.ItemType;
|
||||
import com.gmail.nossr50.datatypes.skills.MaterialType;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.SalvageableFactory;
|
||||
import com.gmail.nossr50.util.ItemUtils;
|
||||
@ -12,25 +13,14 @@ import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class SalvageConfig extends ConfigCollections {
|
||||
private List<Salvageable> salvageables;
|
||||
public class SalvageConfig extends ConfigCollection {
|
||||
|
||||
public SalvageConfig(String fileName) {
|
||||
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection getLoadedCollection() {
|
||||
return salvageables == null ? new ArrayList<Salvageable>() : salvageables;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
salvageables = null;
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(), fileName, false);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), fileName, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,9 +34,7 @@ public class SalvageConfig extends ConfigCollections {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
salvageables = new ArrayList<Salvageable>();
|
||||
|
||||
public void register() {
|
||||
ConfigurationSection section = config.getConfigurationSection("Salvageables");
|
||||
Set<String> keys = section.getKeys(false);
|
||||
|
||||
@ -149,7 +137,7 @@ public class SalvageConfig extends ConfigCollections {
|
||||
|
||||
if (noErrorsInSalvageable(reason)) {
|
||||
Salvageable salvageable = SalvageableFactory.getSalvageable(itemMaterial, salvageMaterial, salvageMetadata, minimumLevel, maximumQuantity, maximumDurability, salvageItemType, salvageMaterialType, xpMultiplier);
|
||||
salvageables.add(salvageable);
|
||||
genericCollection.add(salvageable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,9 @@ import com.gmail.nossr50.datatypes.experience.FormulaType;
|
||||
import com.gmail.nossr50.datatypes.skills.MaterialType;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import com.sk89q.worldedit.world.block.BlockType;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.boss.BarColor;
|
||||
import org.bukkit.boss.BarStyle;
|
||||
import org.bukkit.entity.EntityType;
|
||||
@ -77,7 +78,8 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
|
||||
//TODO: Should merge be false? Seems okay to leave it as true..
|
||||
private ExperienceConfig() {
|
||||
super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "experience.yml", true);
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(), "experience.yml", true);
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), "experience.yml", true);
|
||||
}
|
||||
|
||||
public static ExperienceConfig getInstance() {
|
||||
@ -305,11 +307,11 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
|
||||
/* Combat XP Multipliers */
|
||||
public double getCombatXP(EntityType entity) {
|
||||
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
|
||||
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, StringUtils.getEntityConfigName(entity));
|
||||
}
|
||||
|
||||
public double getAnimalsXP(EntityType entity) {
|
||||
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
|
||||
return getDoubleValue(EXPERIENCE, COMBAT, MULTIPLIER1, StringUtils.getEntityConfigName(entity));
|
||||
}
|
||||
|
||||
public double getAnimalsXP() {
|
||||
@ -317,7 +319,7 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
}
|
||||
|
||||
public boolean hasCombatXP(EntityType entity) {
|
||||
return hasNode(EXPERIENCE, COMBAT, MULTIPLIER1, entity.getConfigName());
|
||||
return hasNode(EXPERIENCE, COMBAT, MULTIPLIER1, StringUtils.getEntityConfigName(entity));
|
||||
}
|
||||
|
||||
/* Materials */
|
||||
@ -328,9 +330,10 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
* @param blockType the type of block
|
||||
* @return the raw amount of XP for this block before modifiers
|
||||
*/
|
||||
public int getXp(PrimarySkillType skill, BlockType blockType) {
|
||||
//public int getXp(PrimarySkillType skill, BlockType blockType) {
|
||||
public int getXp(PrimarySkillType skill, Material blockType) {
|
||||
//TODO: This is going to need to be changed, this code here is only placeholder
|
||||
String[] path = new String[]{ EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName() };
|
||||
String[] path = new String[]{ EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.toString()};
|
||||
return getIntValue(path);
|
||||
}
|
||||
|
||||
@ -342,10 +345,10 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
* @param blockType the type of block
|
||||
* @return true if the block does give XP
|
||||
*/
|
||||
public boolean doesBlockGiveSkillXP(PrimarySkillType skill, BlockType blockType) {
|
||||
public boolean doesBlockGiveSkillXP(PrimarySkillType skill, Material blockType) {
|
||||
//TODO: This used to support wildcard characters, seems a bit unnecessary to do so.
|
||||
//TODO: This is going to need to be changed, this code here is only placeholder
|
||||
String[] path = new String[] {EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.getConfigName()};
|
||||
String[] path = new String[] {EXPERIENCE, StringUtils.getCapitalized(skill.toString()), blockType.toString()};
|
||||
return hasNode(path);
|
||||
}
|
||||
|
||||
@ -443,6 +446,6 @@ public class ExperienceConfig extends ConfigValidated {
|
||||
|
||||
/* Taming */
|
||||
public int getTamingXP(EntityType type) {
|
||||
return getIntValue(EXPERIENCE, TAMING, ANIMAL_TAMING, type.getConfigName());
|
||||
return getIntValue(EXPERIENCE, TAMING, ANIMAL_TAMING, StringUtils.getEntityConfigName(type));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.gmail.nossr50.config.mods;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.skills.MaterialType;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.skills.repair.repairables.Repairable;
|
||||
@ -14,7 +14,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CustomArmorConfig extends ConfigCollections {
|
||||
public class CustomArmorConfig extends ConfigCollection {
|
||||
public List<Material> customBoots = new ArrayList<Material>();
|
||||
public List<Material> customChestplates = new ArrayList<Material>();
|
||||
public List<Material> customHelmets = new ArrayList<Material>();
|
||||
@ -24,7 +24,7 @@ public class CustomArmorConfig extends ConfigCollections {
|
||||
|
||||
protected CustomArmorConfig(String fileName) {
|
||||
//super(McmmoCore.getDataFolderPath().getPath() + "mods", fileName, false);
|
||||
super(mcMMO.p.getDataFolder().getPath() + "mods", fileName, false); loadKeys();
|
||||
super(mcMMO.p.getDataFolder().getPath() + "mods", fileName, false); register();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,7 +38,7 @@ public class CustomArmorConfig extends ConfigCollections {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadKeys() {
|
||||
public void register() {
|
||||
loadArmor("Boots", customBoots);
|
||||
loadArmor("Chestplates", customChestplates);
|
||||
loadArmor("Helmets", customHelmets);
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.gmail.nossr50.config.mods;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.mods.CustomBlock;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import org.bukkit.Material;
|
||||
@ -11,7 +11,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CustomBlockConfig extends ConfigCollections {
|
||||
public class CustomBlockConfig extends ConfigCollection {
|
||||
public List<Material> customExcavationBlocks = new ArrayList<>();
|
||||
public List<Material> customHerbalismBlocks = new ArrayList<>();
|
||||
public List<Material> customMiningBlocks = new ArrayList<>();
|
||||
@ -25,11 +25,11 @@ public class CustomBlockConfig extends ConfigCollections {
|
||||
protected CustomBlockConfig(String fileName) {
|
||||
//super(McmmoCore.getDataFolderPath().getPath() + "mods", fileName, false);
|
||||
super(mcMMO.p.getDataFolder().getPath() + "mods", fileName, false);
|
||||
loadKeys();
|
||||
register();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
protected void register() {
|
||||
loadBlocks("Excavation", customExcavationBlocks);
|
||||
loadBlocks("Herbalism", customHerbalismBlocks);
|
||||
loadBlocks("Mining", customMiningBlocks);
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.gmail.nossr50.config.skills.alchemy;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.skills.alchemy.AlchemyPotion;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import org.bukkit.Color;
|
||||
@ -14,8 +14,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PotionConfig extends ConfigCollections {
|
||||
private static PotionConfig instance;
|
||||
public class PotionConfig extends ConfigCollection {
|
||||
|
||||
private List<ItemStack> concoctionsIngredientsTierOne = new ArrayList<ItemStack>();
|
||||
private List<ItemStack> concoctionsIngredientsTierTwo = new ArrayList<ItemStack>();
|
||||
@ -28,21 +27,23 @@ public class PotionConfig extends ConfigCollections {
|
||||
|
||||
private Map<String, AlchemyPotion> potionMap = new HashMap<String, AlchemyPotion>();
|
||||
|
||||
private PotionConfig() {
|
||||
super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"potions.yml");
|
||||
loadKeys();
|
||||
public PotionConfig() {
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), "potions.yml", true);
|
||||
register();
|
||||
}
|
||||
|
||||
public static PotionConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new PotionConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
/**
|
||||
* The version of this config
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public double getConfigVersion() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
public void register() {
|
||||
loadConcoctions();
|
||||
loadPotionMap();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.gmail.nossr50.config.treasure;
|
||||
|
||||
import com.gmail.nossr50.config.ConfigCollections;
|
||||
import com.gmail.nossr50.config.ConfigCollection;
|
||||
import com.gmail.nossr50.datatypes.treasure.*;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.EnchantmentUtils;
|
||||
@ -20,9 +20,9 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class TreasureConfig extends ConfigCollections {
|
||||
public class TreasureConfig extends ConfigCollection {
|
||||
|
||||
private static TreasureConfig instance;
|
||||
//private static TreasureConfig instance;
|
||||
|
||||
public HashMap<String, List<ExcavationTreasure>> excavationMap = new HashMap<String, List<ExcavationTreasure>>();
|
||||
|
||||
@ -32,18 +32,18 @@ public class TreasureConfig extends ConfigCollections {
|
||||
public HashMap<Rarity, List<FishingTreasure>> fishingRewards = new HashMap<Rarity, List<FishingTreasure>>();
|
||||
public HashMap<Rarity, List<EnchantmentTreasure>> fishingEnchantments = new HashMap<Rarity, List<EnchantmentTreasure>>();
|
||||
|
||||
private TreasureConfig() {
|
||||
public TreasureConfig() {
|
||||
//super(McmmoCore.getDataFolderPath().getAbsoluteFile(),"treasures.yml");
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), "treasures.yml");
|
||||
super(mcMMO.p.getDataFolder().getAbsoluteFile(), "treasures.yml", true);
|
||||
}
|
||||
|
||||
public static TreasureConfig getInstance() {
|
||||
/*public static TreasureConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new TreasureConfig();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
protected boolean validateKeys() {
|
||||
@ -82,7 +82,7 @@ public class TreasureConfig extends ConfigCollections {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadKeys() {
|
||||
protected void register() {
|
||||
if (config.getConfigurationSection("Treasures") != null) {
|
||||
backup();
|
||||
return;
|
||||
|
@ -41,7 +41,7 @@ public abstract class AbstractSubSkill implements SubSkill, Interaction, Rank, S
|
||||
@Override @Deprecated
|
||||
public boolean isEnabled() {
|
||||
//TODO: This might be troublesome...
|
||||
return CoreSkillsMainConfig.getInstance().isSkillEnabled(this);
|
||||
return CoreSkillConfig.getInstance().isSkillEnabled(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,13 +1,8 @@
|
||||
package com.gmail.nossr50;
|
||||
|
||||
import com.gmail.nossr50.config.MainConfig;
|
||||
import com.gmail.nossr50.config.WorldBlacklist;
|
||||
import com.gmail.nossr50.config.mods.ArmorConfigManager;
|
||||
import com.gmail.nossr50.config.mods.BlockConfigManager;
|
||||
import com.gmail.nossr50.config.mods.EntityConfigManager;
|
||||
import com.gmail.nossr50.config.mods.ToolConfigManager;
|
||||
import com.gmail.nossr50.config.skills.repair.RepairConfigManager;
|
||||
import com.gmail.nossr50.config.skills.salvage.SalvageConfigManager;
|
||||
import com.gmail.nossr50.config.*;
|
||||
import com.gmail.nossr50.config.collectionconfigs.ConfigManager;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.database.DatabaseManager;
|
||||
import com.gmail.nossr50.database.DatabaseManagerFactory;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
@ -24,13 +19,8 @@ import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask;
|
||||
import com.gmail.nossr50.runnables.player.PowerLevelUpdatingTask;
|
||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
|
||||
import com.gmail.nossr50.skills.alchemy.Alchemy;
|
||||
import com.gmail.nossr50.skills.child.ChildConfig;
|
||||
import com.gmail.nossr50.skills.repair.repairables.Repairable;
|
||||
import com.gmail.nossr50.skills.repair.repairables.RepairableManager;
|
||||
import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.SalvageableManager;
|
||||
import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
|
||||
import com.gmail.nossr50.util.*;
|
||||
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager;
|
||||
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory;
|
||||
@ -54,14 +44,11 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class mcMMO extends JavaPlugin {
|
||||
/* Managers */
|
||||
private static ChunkManager placeStore;
|
||||
private static RepairableManager repairableManager;
|
||||
private static SalvageableManager salvageableManager;
|
||||
private static ConfigManager configManager;
|
||||
private static ModManager modManager;
|
||||
private static DatabaseManager databaseManager;
|
||||
private static FormulaManager formulaManager;
|
||||
@ -217,7 +204,7 @@ public class mcMMO extends JavaPlugin {
|
||||
}
|
||||
|
||||
//Init the blacklist
|
||||
worldBlacklist = new WorldBlacklist(this);
|
||||
worldBlacklist = new WorldBlacklist();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -274,6 +261,11 @@ public class mcMMO extends JavaPlugin {
|
||||
}
|
||||
|
||||
databaseManager.onDisable();
|
||||
|
||||
//Unload configs last
|
||||
configManager.unloadAllConfigsAndRegisters();
|
||||
|
||||
|
||||
debug("Was disabled."); // How informative!
|
||||
}
|
||||
|
||||
@ -412,54 +404,9 @@ public class mcMMO extends JavaPlugin {
|
||||
}
|
||||
|
||||
private void loadConfigFiles() {
|
||||
// New Config System
|
||||
|
||||
ConfigurableTest.getInstance(); //Init
|
||||
|
||||
// End New Config System
|
||||
configManager = new ConfigManager();
|
||||
|
||||
|
||||
// Force the loading of config files
|
||||
TreasureConfig.getInstance();
|
||||
HiddenConfig.getInstance();
|
||||
AdvancedConfig.getInstance();
|
||||
PotionConfig.getInstance();
|
||||
CoreSkillsMainConfig.getInstance();
|
||||
SoundConfig.getInstance();
|
||||
RankConfig.getInstance();
|
||||
|
||||
new ChildConfig();
|
||||
|
||||
List<Repairable> repairables = new ArrayList<Repairable>();
|
||||
List<Salvageable> salvageables = new ArrayList<Salvageable>();
|
||||
|
||||
if (MainConfig.getInstance().getToolModsEnabled()) {
|
||||
new ToolConfigManager(this);
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getArmorModsEnabled()) {
|
||||
new ArmorConfigManager(this);
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getBlockModsEnabled()) {
|
||||
new BlockConfigManager(this);
|
||||
}
|
||||
|
||||
if (MainConfig.getInstance().getEntityModsEnabled()) {
|
||||
new EntityConfigManager(this);
|
||||
}
|
||||
|
||||
// Load repair configs, make manager, and register them at this time
|
||||
repairables.addAll(new RepairConfigManager(this).getLoadedRepairables());
|
||||
repairables.addAll(modManager.getLoadedRepairables());
|
||||
repairableManager = new SimpleRepairableManager(repairables.size());
|
||||
repairableManager.registerRepairables(repairables);
|
||||
|
||||
// Load salvage configs, make manager and register them at this time
|
||||
SalvageConfigManager sManager = new SalvageConfigManager(this);
|
||||
salvageables.addAll(sManager.getLoadedSalvageables());
|
||||
salvageableManager = new SimpleSalvageableManager(salvageables.size());
|
||||
salvageableManager.registerSalvageables(salvageables);
|
||||
}
|
||||
|
||||
private void registerEvents() {
|
||||
@ -483,13 +430,13 @@ public class mcMMO extends JavaPlugin {
|
||||
* Acrobatics skills
|
||||
*/
|
||||
|
||||
if(CoreSkillsMainConfig.getInstance().isPrimarySkillEnabled(PrimarySkillType.ACROBATICS))
|
||||
if(CoreSkillsConfig.getInstance().isPrimarySkillEnabled(PrimarySkillType.ACROBATICS))
|
||||
{
|
||||
System.out.println("[mcMMO]" + " enabling Acrobatics Skills");
|
||||
|
||||
//TODO: Should do this differently
|
||||
Roll roll = new Roll();
|
||||
CoreSkillsMainConfig.getInstance().isSkillEnabled(roll);
|
||||
CoreSkillsConfig.getInstance().isSkillEnabled(roll);
|
||||
InteractionManager.registerSubSkill(new Roll());
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.gmail.nossr50.skills.child;
|
||||
|
||||
import com.gmail.nossr50.config.AutoUpdateConfigLoader;
|
||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||
import com.gmail.nossr50.util.StringUtils;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.gmail.nossr50.skills.repair;
|
||||
|
||||
import com.gmail.nossr50.config.AdvancedConfig;
|
||||
import com.gmail.nossr50.config.MainConfig;
|
||||
import com.gmail.nossr50.config.experience.ExperienceConfig;
|
||||
import com.gmail.nossr50.datatypes.experience.XPGainReason;
|
||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||
|
@ -1,11 +1,12 @@
|
||||
package com.gmail.nossr50.skills.repair.repairables;
|
||||
|
||||
import com.gmail.nossr50.config.Unload;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface RepairableManager {
|
||||
public interface RepairableManager extends Unload {
|
||||
/**
|
||||
* Register a repairable with the RepairManager
|
||||
*
|
||||
|
@ -1,20 +1,24 @@
|
||||
package com.gmail.nossr50.skills.repair.repairables;
|
||||
|
||||
import com.gmail.nossr50.config.Unload;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class SimpleRepairableManager implements RepairableManager {
|
||||
private HashMap<Material, Repairable> repairables;
|
||||
|
||||
public SimpleRepairableManager() {
|
||||
this(55);
|
||||
@Override
|
||||
public void unload() {
|
||||
repairables.clear();
|
||||
}
|
||||
|
||||
public SimpleRepairableManager(int repairablesSize) {
|
||||
this.repairables = new HashMap<Material, Repairable>(repairablesSize);
|
||||
public SimpleRepairableManager(List<Repairable> repairablesCollection) {
|
||||
this.repairables = new HashMap<Material, Repairable>(repairablesCollection.size());
|
||||
registerRepairables(repairablesCollection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,11 +1,12 @@
|
||||
package com.gmail.nossr50.skills.salvage.salvageables;
|
||||
|
||||
import com.gmail.nossr50.config.Unload;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SalvageableManager {
|
||||
public interface SalvageableManager extends Unload {
|
||||
/**
|
||||
* Register a salvageable with the SalvageManager
|
||||
*
|
||||
|
@ -10,12 +10,18 @@ import java.util.List;
|
||||
public class SimpleSalvageableManager implements SalvageableManager {
|
||||
private HashMap<Material, Salvageable> salvageables;
|
||||
|
||||
public SimpleSalvageableManager() {
|
||||
/*public SimpleSalvageableManager() {
|
||||
this(55);
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
salvageables.clear();
|
||||
}
|
||||
|
||||
public SimpleSalvageableManager(int salvageablesSize) {
|
||||
this.salvageables = new HashMap<Material, Salvageable>(salvageablesSize);
|
||||
public SimpleSalvageableManager(List<Salvageable> salvageablesCollection) {
|
||||
this.salvageables = new HashMap<Material, Salvageable>(salvageablesCollection.size());
|
||||
registerSalvageables(salvageablesCollection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -20,6 +20,16 @@ public class StringUtils {
|
||||
return target.substring(0, 1).toUpperCase() + target.substring(1).toLowerCase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the entity that the config file is expecting
|
||||
* @param entityType target entity type
|
||||
* @return the config friendly entity type string
|
||||
*/
|
||||
public static String getEntityConfigName(EntityType entityType)
|
||||
{
|
||||
return entityType.toString();
|
||||
}
|
||||
|
||||
public static String getPrettyItemString(Material material) {
|
||||
return createPrettyString(material.toString());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user