mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 14:46:46 +01:00
RepairConfig loader
and small fix for RepairConfigManager
This commit is contained in:
parent
586a2a065e
commit
c2d2359a8c
@ -2,9 +2,16 @@ package com.gmail.nossr50.config;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.skills.repair.RepairItemType;
|
||||||
|
import com.gmail.nossr50.skills.repair.RepairMaterialType;
|
||||||
import com.gmail.nossr50.skills.repair.Repairable;
|
import com.gmail.nossr50.skills.repair.Repairable;
|
||||||
|
import com.gmail.nossr50.skills.repair.RepairableFactory;
|
||||||
|
|
||||||
public class RepairConfig extends ConfigLoader {
|
public class RepairConfig extends ConfigLoader {
|
||||||
private final String fileName;
|
private final String fileName;
|
||||||
@ -13,21 +20,92 @@ public class RepairConfig extends ConfigLoader {
|
|||||||
public RepairConfig(mcMMO plugin, String fileName) {
|
public RepairConfig(mcMMO plugin, String fileName) {
|
||||||
super(plugin, fileName);
|
super(plugin, fileName);
|
||||||
this.fileName = fileName;
|
this.fileName = fileName;
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(this.configFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void load() {
|
protected void load() {
|
||||||
if(plugin.isInJar(fileName)) addDefaults();
|
|
||||||
loadKeys();
|
loadKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void loadKeys() {
|
protected void loadKeys() {
|
||||||
// TODO Auto-generated method stub
|
repairables = new ArrayList<Repairable>();
|
||||||
|
|
||||||
|
ConfigurationSection section = config.getConfigurationSection("Repairables");
|
||||||
|
Set<String> keys = section.getKeys(false);
|
||||||
|
for(String key : keys) {
|
||||||
|
// Validate all the things!
|
||||||
|
List<String> reason = new ArrayList<String>();
|
||||||
|
|
||||||
|
if(!config.contains("Repairables." + key + ".ItemId")) {
|
||||||
|
reason.add(key + " is missing ItemId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!config.contains("Repairables." + key + ".RepairMaterialId")) {
|
||||||
|
reason.add(key + " is missing RepairMaterialId");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!config.contains("Repairables." + key + ".MaximumDurability")) {
|
||||||
|
reason.add(key + " is missing MaximumDurability");
|
||||||
|
}
|
||||||
|
|
||||||
|
int itemId = config.getInt("Repairables." + key + ".ItemId", 0);
|
||||||
|
int repairMaterialId = config.getInt("Repairables." + key + ".RepairMaterialId", 0);
|
||||||
|
int maximumDurability = config.getInt("Repairables." + key + ".MaximumDurability", 0);
|
||||||
|
|
||||||
|
int repairMetadata = config.getInt("Repairables." + key + ".RepairMaterialMetadata", -1);
|
||||||
|
int minimumLevel = config.getInt("Repairables." + key + ".MinimumLevel", 0);
|
||||||
|
int minimumQuantity = config.getInt("Repairables." + key + ".MinimumQuantity", 0);
|
||||||
|
double xpMultiplier = config.getDouble("Repairables." + key + ".XpMultiplier", 1);
|
||||||
|
|
||||||
|
RepairItemType repairItemType = RepairItemType.OTHER;
|
||||||
|
RepairMaterialType repairMaterialType = RepairMaterialType.OTHER;
|
||||||
|
|
||||||
|
String repairItemTypeString = config.getString("Repairables." + key + ".ItemType", "OTHER");
|
||||||
|
String repairMaterialTypeString = config.getString("Repairables." + key + ".MaterialType", "OTHER");
|
||||||
|
|
||||||
|
if(minimumLevel < 0) {
|
||||||
|
reason.add(key + " has an invalid MinimumLevel of " + minimumLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(minimumQuantity < 0) {
|
||||||
|
reason.add(key + " has an invalid MinimumQuantity of " + minimumQuantity);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
repairItemType = RepairItemType.valueOf(repairItemTypeString);
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
reason.add(key + " has an invalid ItemType of " + repairItemTypeString);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
repairMaterialType = RepairMaterialType.valueOf(repairMaterialTypeString);
|
||||||
|
} catch (IllegalArgumentException ex) {
|
||||||
|
reason.add(key + " has an invalid MaterialType of " + repairMaterialTypeString);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(noErrorsInRepairable(reason)) {
|
||||||
|
Repairable repairable = RepairableFactory.getRepairable(itemId, repairMaterialId, (byte) repairMetadata, minimumLevel, minimumQuantity, (short) maximumDurability, repairItemType, repairMaterialType, xpMultiplier);
|
||||||
|
repairables.add(repairable);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<Repairable> getLoadedRepairables() {
|
protected List<Repairable> getLoadedRepairables() {
|
||||||
if(repairables == null) return new ArrayList<Repairable>();
|
if(repairables == null) return new ArrayList<Repairable>();
|
||||||
return repairables;
|
return repairables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean noErrorsInRepairable(List<String> issues) {
|
||||||
|
if (issues.isEmpty()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (String issue : issues) {
|
||||||
|
plugin.getLogger().warning(issue);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@ public class RepairConfigManager {
|
|||||||
private List<Repairable> repairables;
|
private List<Repairable> repairables;
|
||||||
|
|
||||||
public RepairConfigManager(mcMMO plugin) {
|
public RepairConfigManager(mcMMO plugin) {
|
||||||
|
repairables = new ArrayList<Repairable>();
|
||||||
|
|
||||||
Pattern pattern = Pattern.compile("repair\\.(?:.+)\\.yml");
|
Pattern pattern = Pattern.compile("repair\\.(?:.+)\\.yml");
|
||||||
File dataFolder = plugin.getDataFolder();
|
File dataFolder = plugin.getDataFolder();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user