package net.glowstone.io.entity; import net.glowstone.entity.GlowAgeable; import net.glowstone.util.nbt.CompoundTag; import org.bukkit.Location; import java.lang.reflect.Constructor; class AgeableStore<T extends GlowAgeable> extends CreatureStore<T> { private final Constructor<T> constructor; public AgeableStore(Class<T> clazz, String id) { super(clazz, id); Constructor<T> ctor = null; try { ctor = clazz.getConstructor(Location.class); } catch (Exception e) { e.printStackTrace(); } this.constructor = ctor; } @Override public T createEntity(Location location, CompoundTag compound) { try { return constructor.newInstance(location); } catch (Exception e) { e.printStackTrace(); throw new UnsupportedOperationException("Not implemented yet."); } } public void load(T entity, CompoundTag compound) { super.load(entity, compound); entity.setAge(compound.getInt("Age")); if (compound.containsKey("AgeLocked")) { entity.setAgeLock(compound.getBool("AgeLocked")); } } public void save(T entity, CompoundTag tag) { super.save(entity, tag); tag.putInt("Age", entity.getAge()); tag.putBool("AgeLocked", entity.getAgeLock()); } }