mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-07 16:57:42 +01:00
Add Horse API. Adds BUKKIT-4424
API has been added to interface with Horses and to modify their inventories. A new event, HorseJumpEvent, has been added to be fired whenever a horse jumps. This commit fixes BUKKIT-4393. By: h31ix <zero_gravity@outlook.com>
This commit is contained in:
parent
74dfd2ceb7
commit
33843978fc
@ -1,6 +1,256 @@
|
||||
package org.bukkit.entity;
|
||||
|
||||
import org.bukkit.inventory.HorseInventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
/**
|
||||
* Represents a Horse.
|
||||
*/
|
||||
public interface Horse extends Animals, Vehicle {}
|
||||
public interface Horse extends Animals, Vehicle, InventoryHolder, Tameable {
|
||||
|
||||
/**
|
||||
* Represents the different types of horses that may exist.
|
||||
*/
|
||||
public enum Variant {
|
||||
/**
|
||||
* A normal horse
|
||||
*/
|
||||
HORSE,
|
||||
/**
|
||||
* A donkey
|
||||
*/
|
||||
DONKEY,
|
||||
/**
|
||||
* A mule
|
||||
*/
|
||||
MULE,
|
||||
/**
|
||||
* An undead horse
|
||||
*/
|
||||
UNDEAD_HORSE,
|
||||
/**
|
||||
* A skeleton horse
|
||||
*/
|
||||
SKELETON_HORSE,
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the base color that the horse has.
|
||||
*/
|
||||
public enum Color {
|
||||
/**
|
||||
* Snow white
|
||||
*/
|
||||
WHITE,
|
||||
/**
|
||||
* Very light brown
|
||||
*/
|
||||
CREAMY,
|
||||
/**
|
||||
* Chestnut
|
||||
*/
|
||||
CHESTNUT,
|
||||
/**
|
||||
* Light brown
|
||||
*/
|
||||
BROWN,
|
||||
/**
|
||||
* Pitch black
|
||||
*/
|
||||
BLACK,
|
||||
/**
|
||||
* Gray
|
||||
*/
|
||||
GRAY,
|
||||
/**
|
||||
* Dark brown
|
||||
*/
|
||||
DARK_BROWN,
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the style, or markings, that the horse has.
|
||||
*/
|
||||
public enum Style {
|
||||
/**
|
||||
* No markings
|
||||
*/
|
||||
NONE,
|
||||
/**
|
||||
* White socks or stripes
|
||||
*/
|
||||
WHITE,
|
||||
/**
|
||||
* Milky splotches
|
||||
*/
|
||||
WHITEFIELD,
|
||||
/**
|
||||
* Round white dots
|
||||
*/
|
||||
WHITE_DOTS,
|
||||
/**
|
||||
* Small black dots
|
||||
*/
|
||||
BLACK_DOTS,
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the horse's variant.
|
||||
* <p>
|
||||
* A horse's variant defines its physical appearance and capabilities.
|
||||
* Whether a horse is a regular horse, donkey, mule, or other kind of
|
||||
* horse is determined using the variant.
|
||||
*
|
||||
* @return a {@link Variant} representing the horse's variant
|
||||
*/
|
||||
public Variant getVariant();
|
||||
|
||||
/**
|
||||
* Sets the horse's variant.
|
||||
* <p>
|
||||
* A horse's variant defines its physical appearance and capabilities.
|
||||
* Whether a horse is a regular horse, donkey, mule, or other kind of
|
||||
* horse can be set using the variant.
|
||||
* <p>
|
||||
* Setting a horse's variant does not change its attributes such as
|
||||
* its owner and its tamed status, but changing a mule or donkey
|
||||
* with a chest to another variant which does not support a chest
|
||||
* will remove the chest and its contents.
|
||||
*
|
||||
* @param variant a {@link Variant} for this horse
|
||||
*/
|
||||
public void setVariant(Variant variant);
|
||||
|
||||
/**
|
||||
* Gets the horse's color.
|
||||
* <p>
|
||||
* Colors only apply to horses, not to donkeys, mules, skeleton horses
|
||||
* or undead horses.
|
||||
*
|
||||
* @return a {@link Color} representing the horse's group
|
||||
*/
|
||||
public Color getColor();
|
||||
|
||||
/**
|
||||
* Sets the horse's color.
|
||||
* <p>
|
||||
* Attempting to set a color for any donkey, mule, skeleton horse or
|
||||
* undead horse will not result in a change.
|
||||
*
|
||||
* @param color a {@link Color} for this horse
|
||||
*/
|
||||
public void setColor(Color color);
|
||||
|
||||
/**
|
||||
* Gets the horse's style.
|
||||
* Styles determine what kind of markings or patterns a horse has.
|
||||
* <p>
|
||||
* Styles only apply to horses, not to donkeys, mules, skeleton horses
|
||||
* or undead horses.
|
||||
*
|
||||
* @return a {@link Style} representing the horse's style
|
||||
*/
|
||||
public Style getStyle();
|
||||
|
||||
/**
|
||||
* Sets the style of this horse.
|
||||
* Styles determine what kind of markings or patterns a horse has.
|
||||
* <p>
|
||||
* Attempting to set a style for any donkey, mule, skeleton horse or
|
||||
* undead horse will not result in a change.
|
||||
*
|
||||
* @param style a {@link Style} for this horse
|
||||
*/
|
||||
public void setStyle(Style style);
|
||||
|
||||
/**
|
||||
* Gets whether the horse has a chest equipped.
|
||||
*
|
||||
* @return true if the horse has chest storage
|
||||
*/
|
||||
public boolean isCarryingChest();
|
||||
|
||||
/**
|
||||
* Sets whether the horse has a chest equipped.
|
||||
* Removing a chest will also clear the chest's inventory.
|
||||
*
|
||||
* @param chest true if the horse should have a chest
|
||||
*/
|
||||
public void setCarryingChest(boolean chest);
|
||||
|
||||
/**
|
||||
* Gets the domestication level of this horse.
|
||||
* <p>
|
||||
* A higher domestication level indicates that the horse is closer to
|
||||
* becoming tame. As the domestication level gets closer to the max
|
||||
* domestication level, the chance of the horse becoming tame increases.
|
||||
*
|
||||
* @return domestication level
|
||||
*/
|
||||
public int getDomestication();
|
||||
|
||||
/**
|
||||
* Sets the domestication level of this horse.
|
||||
* <p>
|
||||
* Setting the domestication level to a high value will increase the
|
||||
* horse's chances of becoming tame.
|
||||
* <p>
|
||||
* Domestication level must be greater than zero and no greater than
|
||||
* the max domestication level of the horse, determined with
|
||||
* {@link #getMaxDomestication()}
|
||||
*
|
||||
* @param level domestication level
|
||||
*/
|
||||
public void setDomestication(int level);
|
||||
|
||||
/**
|
||||
* Gets the maximum domestication level of this horse.
|
||||
* <p>
|
||||
* The higher this level is, the longer it will likely take
|
||||
* for the horse to be tamed.
|
||||
*
|
||||
* @return the max domestication level
|
||||
*/
|
||||
public int getMaxDomestication();
|
||||
|
||||
/**
|
||||
* Sets the maximum domestication level of this horse.
|
||||
* <p>
|
||||
* Setting a higher max domestication will increase the amount of
|
||||
* domesticating (feeding, riding, etc.) necessary in order to tame it,
|
||||
* while setting a lower max value will have the opposite effect.
|
||||
* <p>
|
||||
* Maximum domestication must be greater than zero.
|
||||
*
|
||||
* @param level the max domestication level
|
||||
*/
|
||||
public void setMaxDomestication(int level);
|
||||
|
||||
/**
|
||||
* Gets the jump strength of this horse.
|
||||
* <p>
|
||||
* Jump strength defines how high the horse can jump. A higher jump strength
|
||||
* increases how high a jump will go.
|
||||
*
|
||||
* @return the horse's jump strength
|
||||
*/
|
||||
public double getJumpStrength();
|
||||
|
||||
/**
|
||||
* Sets the jump strength of this horse.
|
||||
* <p>
|
||||
* A higher jump strength increases how high a jump will go.
|
||||
* Setting a jump strength to 0 will result in no jump.
|
||||
* You cannot set a jump strength to a value below 0 or
|
||||
* above 2.
|
||||
*
|
||||
* @param strength jump strength for this horse
|
||||
*/
|
||||
public void setJumpStrength(double strength);
|
||||
|
||||
@Override
|
||||
public HorseInventory getInventory();
|
||||
}
|
||||
|
@ -0,0 +1,78 @@
|
||||
package org.bukkit.event.entity;
|
||||
|
||||
import org.bukkit.entity.Horse;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
/**
|
||||
* Called when a horse jumps.
|
||||
*/
|
||||
public class HorseJumpEvent extends EntityEvent implements Cancellable {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
private boolean cancelled;
|
||||
private float power;
|
||||
|
||||
public HorseJumpEvent(final Horse horse, final float power) {
|
||||
super(horse);
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
public void setCancelled(boolean cancel) {
|
||||
cancelled = cancel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Horse getEntity() {
|
||||
return (Horse) entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the power of the jump.
|
||||
* <p>
|
||||
* Power is a value that defines how much of the horse's jump strength
|
||||
* should be used for the jump. Power is effectively multiplied times
|
||||
* the horse's jump strength to determine how high the jump is;
|
||||
* 0 represents no jump strength while 1 represents full jump strength.
|
||||
* Setting power to a value above 1 will use additional jump strength
|
||||
* that the horse does not usually have.
|
||||
* <p>
|
||||
* Power does not affect how high the horse is capable of jumping,
|
||||
* only how much of its jumping capability will be used in this jump.
|
||||
* To set the horse's overall jump strength, see
|
||||
* {@link Horse#setJumpStrength(double)}.
|
||||
*
|
||||
* @return jump strength
|
||||
*/
|
||||
public float getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the power of the jump.
|
||||
* <p>
|
||||
* Jump power can be set to a value above 1.0 which will increase
|
||||
* the strength of this jump above the horse's actual jump strength.
|
||||
* <p>
|
||||
* Setting the jump power to 0 will result in the jump animation
|
||||
* still playing, but the horse not leaving the ground. Only
|
||||
* canceling this event will result in no jump animation at all.
|
||||
*
|
||||
* @param power power of the jump
|
||||
*/
|
||||
public void setPower(float power) {
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package org.bukkit.inventory;
|
||||
|
||||
public interface HorseInventory extends Inventory {
|
||||
|
||||
/**
|
||||
* Gets the item in the horse's saddle slot.
|
||||
*
|
||||
* @return the saddle item
|
||||
*/
|
||||
ItemStack getSaddle();
|
||||
|
||||
/**
|
||||
* Gets the item in the horse's armor slot.
|
||||
*
|
||||
* @return the armor item
|
||||
*/
|
||||
ItemStack getArmor();
|
||||
|
||||
/**
|
||||
* Sets the item in the horse's saddle slot.
|
||||
*
|
||||
* @param stack the new item
|
||||
*/
|
||||
void setSaddle(ItemStack stack);
|
||||
|
||||
/**
|
||||
* Sets the item in the horse's armor slot.
|
||||
*
|
||||
* @param stack the new item
|
||||
*/
|
||||
void setArmor(ItemStack stack);
|
||||
}
|
Loading…
Reference in New Issue
Block a user