Dynamic instanciating of SchematicTypes
Dieser Commit ist enthalten in:
Ursprung
364d3f8f83
Commit
5c176b0afb
@ -1,56 +1,45 @@
|
|||||||
package de.steamwar.sql;
|
package de.steamwar.sql;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import de.steamwar.core.Core;
|
||||||
import java.util.Map;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class SchematicType {
|
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),
|
private static final Map<String, SchematicType> fromDB;
|
||||||
CWarGear("CWG", Type.CHECK_TYPE),
|
private static final List<SchematicType> types;
|
||||||
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<>();
|
|
||||||
|
|
||||||
static{
|
static{
|
||||||
for(SchematicType type : values()){
|
File file = new File(Core.getInstance().getDataFolder(), "SchematicTypes.yml");
|
||||||
fromDB.put(type.toDB(), type);
|
|
||||||
}
|
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 String kuerzel;
|
||||||
private final Type type;
|
private final Type type;
|
||||||
private SchematicType checkType;
|
private SchematicType checkType;
|
||||||
|
|
||||||
private SchematicType(String kuerzel, Type type){
|
private SchematicType(String name, String kuerzel, Type type, SchematicType checkType){
|
||||||
this(kuerzel, type, null);
|
this.name = name;
|
||||||
}
|
|
||||||
|
|
||||||
private SchematicType(String kuerzel, Type type, SchematicType checkType){
|
|
||||||
this.kuerzel = kuerzel;
|
this.kuerzel = kuerzel;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.checkType = checkType;
|
this.checkType = checkType;
|
||||||
@ -76,21 +65,25 @@ public class SchematicType {
|
|||||||
return type == Type.NORMAL;
|
return type == Type.NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String name(){
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public String getKuerzel() {
|
public String getKuerzel() {
|
||||||
return kuerzel;
|
return kuerzel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toDB(){
|
public String toDB(){
|
||||||
return name().toLowerCase();
|
return name.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SchematicType fromDB(String input){
|
public static SchematicType fromDB(String input){
|
||||||
return fromDB.get(input.toLowerCase());
|
return fromDB.get(input.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
//public static List<SchematicType> values(){
|
public static List<SchematicType> values(){
|
||||||
//TODO
|
return types;
|
||||||
//}
|
}
|
||||||
|
|
||||||
enum Type{
|
enum Type{
|
||||||
NORMAL,
|
NORMAL,
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren