package net.glowstone.entity.passive; import net.glowstone.entity.GlowAnimal; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.OfflinePlayer; import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.entity.Tameable; import java.util.UUID; public abstract class GlowTameable extends GlowAnimal implements Tameable { private AnimalTamer owner; private UUID ownerUUId; private boolean tamed; public GlowTameable(Location location, EntityType type) { super(location, type); setSize(0.3F, 0.7F); } protected GlowTameable(Location location, EntityType type, AnimalTamer owner) { super(location, type); this.owner = owner; } @Override public boolean isTamed() { return tamed; } @Override public void setTamed(boolean isTamed) { this.tamed = isTamed; } @Override public AnimalTamer getOwner() { return owner instanceof Player ? owner : Bukkit.getPlayer(this.ownerUUId); } @Override public void setOwner(AnimalTamer animalTamer) { this.owner = animalTamer; this.ownerUUId = animalTamer.getUniqueId(); } public UUID getOwnerUUID() { return this.ownerUUId; } /** * Added needed method for Storage to convert from UUID to owners. * The UUID's are validated through offline player checking. If a player * with the specified UUID has not played on the server before, the * owner is not set. * * @param ownerUUID */ public void setOwnerUUID(UUID ownerUUID) { OfflinePlayer player = Bukkit.getOfflinePlayer(ownerUUId); if (player.hasPlayedBefore()) { this.ownerUUId = ownerUUID; } } }