1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-21 12:15:50 +00:00
Slimefun4/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java

140 lines
2.7 KiB
Java
Raw Normal View History

2018-06-15 23:12:09 +00:00
package me.mrCookieSlime.Slimefun.api;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.configuration.file.FileConfiguration;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
public class BlockInfoConfig extends Config {
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
private Map<String, String> data;
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
public BlockInfoConfig() {
this(new HashMap<>());
}
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
public BlockInfoConfig(Map<String, String> data) {
super(null, null);
this.data = data;
2018-06-15 23:12:09 +00:00
}
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
public Map<String, String> getMap(){
return data;
}
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
@Override
protected void store(String path, Object value) {
if (value != null && !(value instanceof String)) {
2019-06-20 08:12:34 +00:00
throw new UnsupportedOperationException("Can't set \"" + path + "\" to \"" + value + "\" (type: " + value.getClass().getSimpleName() + ") because BlockInfoConfig only supports Strings");
2018-06-15 23:12:09 +00:00
}
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
checkPath(path);
2019-06-20 08:12:34 +00:00
2018-06-15 23:12:09 +00:00
if (value == null) {
data.remove(path);
2019-06-20 08:12:34 +00:00
}
else {
2018-06-15 23:12:09 +00:00
data.put(path, (String) value);
}
}
private void checkPath(String path) {
if (path.contains(".")) {
2019-06-20 08:12:34 +00:00
throw new UnsupportedOperationException("BlockInfoConfig only supports Map<String,String> (path: " + path + ")");
2018-06-15 23:12:09 +00:00
}
}
@Override
public boolean contains(String path) {
checkPath(path);
return data.containsKey(path);
}
@Override
public Object getValue(String path) {
2019-09-21 14:21:10 +00:00
return getString(path);
2018-06-15 23:12:09 +00:00
}
@Override
public String getString(String path) {
checkPath(path);
return data.get(path);
}
@Override
public Set<String> getKeys() {
return data.keySet();
}
private UnsupportedOperationException invalidType(String path) {
2019-06-20 08:12:34 +00:00
return new UnsupportedOperationException("Can't get \"" + path + "\" because BlockInfoConfig only supports String values");
2018-06-15 23:12:09 +00:00
}
@Override
public int getInt(String path) {
throw invalidType(path);
}
@Override
public boolean getBoolean(String path) {
throw invalidType(path);
}
@Override
public List<String> getStringList(String path) {
throw invalidType(path);
}
@Override
public List<Integer> getIntList(String path) {
throw invalidType(path);
}
@Override
public Double getDouble(String path) {
throw invalidType(path);
}
@Override
public Set<String> getKeys(String path) {
throw invalidType(path);
}
@Override
public File getFile() {
throw new UnsupportedOperationException();
}
@Override
public FileConfiguration getConfiguration() {
throw new UnsupportedOperationException();
}
@Override
public void save() {
throw new UnsupportedOperationException();
}
@Override
public void save(File file) {
throw new UnsupportedOperationException();
}
@Override
public void createFile() {
throw new UnsupportedOperationException();
}
@Override
public void reload() {
throw new UnsupportedOperationException();
}
}