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);
}
}