package net.glowstone.io.entity; import net.glowstone.entity.passive.GlowTameable; import net.glowstone.util.nbt.CompoundTag; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import java.util.UUID; public abstract class TameableStore<T extends GlowTameable> extends AgeableStore<T> { public TameableStore(Class<T> clazz, String id) { super(clazz, id); } @Override public void load(T entity, CompoundTag compound) { // TODO make this better. super.load(entity, compound); if (compound.containsKey("OwnerUUID") && !compound.getString("OwnerUUID").isEmpty()) { entity.setOwnerUUID(UUID.fromString(compound.getString("OwnerUUID"))); if (Bukkit.getPlayer(entity.getOwnerUUID()) != null) { entity.setOwner(Bukkit.getPlayer(entity.getOwnerUUID())); } } else if (compound.containsKey("Owner") && !compound.getString("Owner").isEmpty()) { String playerName = compound.getString("Owner"); OfflinePlayer player = Bukkit.getOfflinePlayer(playerName); if (player.hasPlayedBefore()) { entity.setOwnerUUID(player.getUniqueId()); if (Bukkit.getPlayer(entity.getOwnerUUID()) != null) { entity.setOwner(Bukkit.getPlayer(entity.getOwnerUUID())); } } } } @Override public void save(T entity, CompoundTag tag) { super.save(entity, tag); if (entity.getOwner() == null) { tag.putString("OwnerUUID", ""); } else { tag.putString("OwnerUUID", entity.getOwner().getUniqueId().toString()); } } }