package org.bukkit.craftbukkit.entity; import java.util.UUID; import net.minecraft.server.EntityHorse; import net.minecraft.server.EntityHorseAbstract; import org.apache.commons.lang3.Validate; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.inventory.CraftInventory; import org.bukkit.entity.AbstractHorse; import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.Horse; import org.bukkit.inventory.Inventory; public abstract class CraftAbstractHorse extends CraftAnimals implements AbstractHorse { public CraftAbstractHorse(CraftServer server, EntityHorseAbstract entity) { super(server, entity); } @Override public EntityHorseAbstract getHandle() { return (EntityHorseAbstract) entity; } public void setVariant(Horse.Variant variant) { throw new UnsupportedOperationException("Not supported."); } public int getDomestication() { return getHandle().getTemper(); } public void setDomestication(int value) { Validate.isTrue(value >= 0, "Domestication cannot be less than zero"); Validate.isTrue(value <= getMaxDomestication(), "Domestication cannot be greater than the max domestication"); getHandle().setTemper(value); } public int getMaxDomestication() { return getHandle().getMaxDomestication(); } public void setMaxDomestication(int value) { Validate.isTrue(value > 0, "Max domestication cannot be zero or less"); getHandle().maxDomestication = value; } public double getJumpStrength() { return getHandle().getJumpStrength(); } public void setJumpStrength(double strength) { Validate.isTrue(strength >= 0, "Jump strength cannot be less than zero"); getHandle().getAttributeInstance(EntityHorse.attributeJumpStrength).setValue(strength); } @Override public boolean isTamed() { return getHandle().isTamed(); } @Override public void setTamed(boolean tamed) { getHandle().setTamed(tamed); } @Override public AnimalTamer getOwner() { if (getOwnerUUID() == null) return null; return getServer().getOfflinePlayer(getOwnerUUID()); } @Override public void setOwner(AnimalTamer owner) { if (owner != null) { setTamed(true); getHandle().setGoalTarget(null, null, false); setOwnerUUID(owner.getUniqueId()); } else { setTamed(false); setOwnerUUID(null); } } public UUID getOwnerUUID() { return getHandle().getOwnerUUID(); } public void setOwnerUUID(UUID uuid) { getHandle().setOwnerUUID(uuid); } @Override public Inventory getInventory() { return new CraftInventory(getHandle().inventoryChest); } }