2019-09-07 11:42:33 +02:00
|
|
|
package fr.themode.minestom.data;
|
|
|
|
|
2020-04-22 16:48:55 +02:00
|
|
|
import fr.themode.minestom.data.type.CharacterData;
|
|
|
|
import fr.themode.minestom.data.type.*;
|
2019-09-07 11:42:33 +02:00
|
|
|
import fr.themode.minestom.utils.PrimitiveConversion;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
public class DataManager {
|
|
|
|
|
|
|
|
private Map<Class, DataType> dataTypeMap = new HashMap<>();
|
|
|
|
|
|
|
|
{
|
2020-04-22 16:48:55 +02:00
|
|
|
registerType(Byte.class, new ByteData());
|
|
|
|
registerType(Boolean.class, new BooleanData());
|
|
|
|
registerType(Character.class, new CharacterData());
|
|
|
|
registerType(Short.class, new ShortData());
|
2019-09-07 11:42:33 +02:00
|
|
|
registerType(Integer.class, new IntegerData());
|
2020-04-22 16:48:55 +02:00
|
|
|
registerType(Long.class, new LongData());
|
|
|
|
registerType(Float.class, new FloatData());
|
|
|
|
registerType(Double.class, new DoubleData());
|
|
|
|
|
|
|
|
registerType(String.class, new StringData());
|
2020-04-23 23:46:36 +02:00
|
|
|
|
|
|
|
registerType(Data.class, new DataData());
|
2019-09-07 11:42:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public <T> void registerType(Class<T> clazz, DataType<T> dataType) {
|
|
|
|
clazz = PrimitiveConversion.getObjectClass(clazz);
|
|
|
|
if (dataTypeMap.containsKey(clazz))
|
|
|
|
throw new UnsupportedOperationException("Type " + clazz.getName() + " has already been registed");
|
|
|
|
|
|
|
|
this.dataTypeMap.put(clazz, dataType);
|
|
|
|
}
|
|
|
|
|
|
|
|
public <T> DataType<T> getDataType(Class<T> clazz) {
|
|
|
|
return dataTypeMap.get(PrimitiveConversion.getObjectClass(clazz));
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|