Dynamic instanciating of SchematicTypes
Dieser Commit ist enthalten in:
Ursprung
364d3f8f83
Commit
5c176b0afb
@ -1,56 +1,45 @@
|
||||
package de.steamwar.sql;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import de.steamwar.core.Core;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
public class SchematicType {
|
||||
public static final SchematicType Normal = new SchematicType("", Type.NORMAL); //Has to stay publicly availible
|
||||
public static final SchematicType Normal = new SchematicType("Normal", "", Type.NORMAL, null); //Has to stay publicly availible
|
||||
|
||||
CAirShip("CAS", Type.CHECK_TYPE),
|
||||
CWarGear("CWG", Type.CHECK_TYPE),
|
||||
CWarShip("CWS", Type.CHECK_TYPE),
|
||||
CMiniWarGear("CMWG", Type.CHECK_TYPE),
|
||||
AirShip("AS", Type.FIGHT_TYPE, CAirShip),
|
||||
WarGear("WG", Type.FIGHT_TYPE, CWarGear),
|
||||
WarShip("WS", Type.FIGHT_TYPE, CWarShip),
|
||||
MiniWarGear("MWG", Type.FIGHT_TYPE, CMiniWarGear),
|
||||
|
||||
CMPPWarGear1_12("CMPPWG", Type.CHECK_TYPE),
|
||||
CSGWarShip("CSGWS", Type.CHECK_TYPE),
|
||||
CWarGear1_10("CWG1.10", Type.CHECK_TYPE),
|
||||
CWarShip1_9("CWS1.9", Type.CHECK_TYPE),
|
||||
CWarShip1_8("CWS1.8", Type.CHECK_TYPE),
|
||||
CWarGear1_7("CWG1.7", Type.CHECK_TYPE),
|
||||
WarGear1_14("WG1.14", Type.FIGHT_TYPE, null),
|
||||
MPPWarGear1_12("MPPWG", Type.FIGHT_TYPE, CMPPWarGear1_12),
|
||||
SGWarShip("SGWS", Type.FIGHT_TYPE, CSGWarShip),
|
||||
WarGear1_12("WG1.12", Type.FIGHT_TYPE, null),
|
||||
WarShip1_12("WS1.12", Type.FIGHT_TYPE, null),
|
||||
MiniWarGear1_12("MWG1.12", Type.FIGHT_TYPE, null),
|
||||
WarGear1_10("WG1.10", Type.FIGHT_TYPE, CWarGear1_10),
|
||||
WarShip1_9("WS1.9", Type.FIGHT_TYPE, CWarShip1_9),
|
||||
WarShip1_8("WS1.8", Type.FIGHT_TYPE, CWarShip1_8),
|
||||
WarGear1_7("WG1.7", Type.FIGHT_TYPE, CWarGear1_7)
|
||||
|
||||
;
|
||||
|
||||
private static Map<String, SchematicType> fromDB = new HashMap<>();
|
||||
private static final Map<String, SchematicType> fromDB;
|
||||
private static final List<SchematicType> types;
|
||||
|
||||
static{
|
||||
for(SchematicType type : values()){
|
||||
fromDB.put(type.toDB(), type);
|
||||
File file = new File(Core.getInstance().getDataFolder(), "SchematicTypes.yml");
|
||||
|
||||
if(!file.exists())
|
||||
throw new SecurityException("SchematicType-ConfigFile not found!");
|
||||
|
||||
YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
|
||||
|
||||
List<SchematicType> tmpTypes = new LinkedList<>();
|
||||
Map<String, SchematicType> tmpFromDB = new HashMap<>();
|
||||
for(String type : config.getKeys(false)){
|
||||
String checktype = config.getString("checktype");
|
||||
SchematicType current = new SchematicType(type, config.getString("kuerzel"), Type.valueOf(config.getString("type")), checktype != null ? fromDB(checktype) : null);
|
||||
tmpTypes.add(current);
|
||||
tmpFromDB.put(type, current);
|
||||
}
|
||||
|
||||
fromDB = Collections.unmodifiableMap(tmpFromDB);
|
||||
types = Collections.unmodifiableList(tmpTypes);
|
||||
}
|
||||
|
||||
private final String name;
|
||||
private final String kuerzel;
|
||||
private final Type type;
|
||||
private SchematicType checkType;
|
||||
|
||||
private SchematicType(String kuerzel, Type type){
|
||||
this(kuerzel, type, null);
|
||||
}
|
||||
|
||||
private SchematicType(String kuerzel, Type type, SchematicType checkType){
|
||||
private SchematicType(String name, String kuerzel, Type type, SchematicType checkType){
|
||||
this.name = name;
|
||||
this.kuerzel = kuerzel;
|
||||
this.type = type;
|
||||
this.checkType = checkType;
|
||||
@ -76,21 +65,25 @@ public class SchematicType {
|
||||
return type == Type.NORMAL;
|
||||
}
|
||||
|
||||
public String name(){
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getKuerzel() {
|
||||
return kuerzel;
|
||||
}
|
||||
|
||||
public String toDB(){
|
||||
return name().toLowerCase();
|
||||
return name.toLowerCase();
|
||||
}
|
||||
|
||||
public static SchematicType fromDB(String input){
|
||||
return fromDB.get(input.toLowerCase());
|
||||
}
|
||||
|
||||
//public static List<SchematicType> values(){
|
||||
//TODO
|
||||
//}
|
||||
public static List<SchematicType> values(){
|
||||
return types;
|
||||
}
|
||||
|
||||
enum Type{
|
||||
NORMAL,
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren