package net.obnoxint.mcdev.omclib; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import net.obnoxint.mcdev.feature.Feature; public final class PlayerProperties implements Serializable { private static final long serialVersionUID = -5184296242775723515L; private final Map<String, HashMap<String, String>> settings; PlayerProperties() { settings = new HashMap<>(); } public String getProperty(final Feature feature, final String id) { String r = null; if (hasProperty(feature, id)) { r = getProperties(feature).get(id); } return r; } public String getProperty(final String id) { return getProperty(null, id); } public byte getPropertyByte(final Feature feature, final String id) { return Byte.parseByte(getProperty(feature, id)); } public byte getPropertyByte(final String id) { return Byte.parseByte(getProperty(id)); } public double getPropertyDouble(final Feature feature, final String id) { return Double.parseDouble(getProperty(feature, id)); } public double getPropertyDouble(final String id) { return Double.parseDouble(getProperty(id)); } public float getPropertyFloat(final Feature feature, final String id) { return Float.parseFloat(getProperty(feature, id)); } public float getPropertyFloat(final String id) { return Float.parseFloat(getProperty(id)); } public int getPropertyInteger(final Feature feature, final String id) { return Integer.parseInt(getProperty(feature, id)); } public int getPropertyInteger(final String id) { return Integer.parseInt(getProperty(id)); } public long getPropertyLong(final Feature feature, final String id) { return Long.parseLong(getProperty(feature, id)); } public long getPropertyLong(final String id) { return Long.parseLong(getProperty(id)); } public short getPropertyShort(final Feature feature, final String id) { return Short.parseShort(getProperty(feature, id)); } public short getPropertyShort(final String id) { return Short.parseShort(getProperty(id)); } public boolean hasProperty(final Feature feature, final String id) { return getProperties(feature).containsKey(id); } public boolean hasProperty(final String id) { return hasProperty(null, id); } public void setProperty(final Feature feature, final String id, final byte value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final double value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final float value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final int value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final long value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final short value) { setProperty(feature, id, String.valueOf(value)); } public void setProperty(final Feature feature, final String id, final String value) { if (id != null) { final String key = id.trim(); if (!key.isEmpty()) { getProperties(feature).put(key, value); } } } public void setProperty(final String id, final byte value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final double value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final float value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final int value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final long value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final short value) { setProperty(id, String.valueOf(value)); } public void setProperty(final String id, final String value) { setProperty(null, id, value); } private Map<String, String> getProperties(final Feature feature) { HashMap<String, String> r; final String s = (feature == null) ? null : feature.getFeatureName(); if (settings.containsKey(s)) { r = settings.get(s); } else { r = new HashMap<>(); settings.put(s, r); } return r; } }