001 package org.bukkit.entity; 002 003 import org.bukkit.inventory.HorseInventory; 004 import org.bukkit.inventory.InventoryHolder; 005 006 /** 007 * Represents a Horse. 008 */ 009 public interface Horse extends Animals, Vehicle, InventoryHolder, Tameable { 010 011 /** 012 * Represents the different types of horses that may exist. 013 */ 014 public enum Variant { 015 /** 016 * A normal horse 017 */ 018 HORSE, 019 /** 020 * A donkey 021 */ 022 DONKEY, 023 /** 024 * A mule 025 */ 026 MULE, 027 /** 028 * An undead horse 029 */ 030 UNDEAD_HORSE, 031 /** 032 * A skeleton horse 033 */ 034 SKELETON_HORSE, 035 ; 036 } 037 038 /** 039 * Represents the base color that the horse has. 040 */ 041 public enum Color { 042 /** 043 * Snow white 044 */ 045 WHITE, 046 /** 047 * Very light brown 048 */ 049 CREAMY, 050 /** 051 * Chestnut 052 */ 053 CHESTNUT, 054 /** 055 * Light brown 056 */ 057 BROWN, 058 /** 059 * Pitch black 060 */ 061 BLACK, 062 /** 063 * Gray 064 */ 065 GRAY, 066 /** 067 * Dark brown 068 */ 069 DARK_BROWN, 070 ; 071 } 072 073 /** 074 * Represents the style, or markings, that the horse has. 075 */ 076 public enum Style { 077 /** 078 * No markings 079 */ 080 NONE, 081 /** 082 * White socks or stripes 083 */ 084 WHITE, 085 /** 086 * Milky splotches 087 */ 088 WHITEFIELD, 089 /** 090 * Round white dots 091 */ 092 WHITE_DOTS, 093 /** 094 * Small black dots 095 */ 096 BLACK_DOTS, 097 ; 098 } 099 100 /** 101 * Gets the horse's variant. 102 * <p> 103 * A horse's variant defines its physical appearance and capabilities. 104 * Whether a horse is a regular horse, donkey, mule, or other kind of 105 * horse is determined using the variant. 106 * 107 * @return a {@link Variant} representing the horse's variant 108 */ 109 public Variant getVariant(); 110 111 /** 112 * Sets the horse's variant. 113 * <p> 114 * A horse's variant defines its physical appearance and capabilities. 115 * Whether a horse is a regular horse, donkey, mule, or other kind of 116 * horse can be set using the variant. 117 * <p> 118 * Setting a horse's variant does not change its attributes such as 119 * its owner and its tamed status, but changing a mule or donkey 120 * with a chest to another variant which does not support a chest 121 * will remove the chest and its contents. 122 * 123 * @param variant a {@link Variant} for this horse 124 */ 125 public void setVariant(Variant variant); 126 127 /** 128 * Gets the horse's color. 129 * <p> 130 * Colors only apply to horses, not to donkeys, mules, skeleton horses 131 * or undead horses. 132 * 133 * @return a {@link Color} representing the horse's group 134 */ 135 public Color getColor(); 136 137 /** 138 * Sets the horse's color. 139 * <p> 140 * Attempting to set a color for any donkey, mule, skeleton horse or 141 * undead horse will not result in a change. 142 * 143 * @param color a {@link Color} for this horse 144 */ 145 public void setColor(Color color); 146 147 /** 148 * Gets the horse's style. 149 * Styles determine what kind of markings or patterns a horse has. 150 * <p> 151 * Styles only apply to horses, not to donkeys, mules, skeleton horses 152 * or undead horses. 153 * 154 * @return a {@link Style} representing the horse's style 155 */ 156 public Style getStyle(); 157 158 /** 159 * Sets the style of this horse. 160 * Styles determine what kind of markings or patterns a horse has. 161 * <p> 162 * Attempting to set a style for any donkey, mule, skeleton horse or 163 * undead horse will not result in a change. 164 * 165 * @param style a {@link Style} for this horse 166 */ 167 public void setStyle(Style style); 168 169 /** 170 * Gets whether the horse has a chest equipped. 171 * 172 * @return true if the horse has chest storage 173 */ 174 public boolean isCarryingChest(); 175 176 /** 177 * Sets whether the horse has a chest equipped. 178 * Removing a chest will also clear the chest's inventory. 179 * 180 * @param chest true if the horse should have a chest 181 */ 182 public void setCarryingChest(boolean chest); 183 184 /** 185 * Gets the domestication level of this horse. 186 * <p> 187 * A higher domestication level indicates that the horse is closer to 188 * becoming tame. As the domestication level gets closer to the max 189 * domestication level, the chance of the horse becoming tame increases. 190 * 191 * @return domestication level 192 */ 193 public int getDomestication(); 194 195 /** 196 * Sets the domestication level of this horse. 197 * <p> 198 * Setting the domestication level to a high value will increase the 199 * horse's chances of becoming tame. 200 * <p> 201 * Domestication level must be greater than zero and no greater than 202 * the max domestication level of the horse, determined with 203 * {@link #getMaxDomestication()} 204 * 205 * @param level domestication level 206 */ 207 public void setDomestication(int level); 208 209 /** 210 * Gets the maximum domestication level of this horse. 211 * <p> 212 * The higher this level is, the longer it will likely take 213 * for the horse to be tamed. 214 * 215 * @return the max domestication level 216 */ 217 public int getMaxDomestication(); 218 219 /** 220 * Sets the maximum domestication level of this horse. 221 * <p> 222 * Setting a higher max domestication will increase the amount of 223 * domesticating (feeding, riding, etc.) necessary in order to tame it, 224 * while setting a lower max value will have the opposite effect. 225 * <p> 226 * Maximum domestication must be greater than zero. 227 * 228 * @param level the max domestication level 229 */ 230 public void setMaxDomestication(int level); 231 232 /** 233 * Gets the jump strength of this horse. 234 * <p> 235 * Jump strength defines how high the horse can jump. A higher jump strength 236 * increases how high a jump will go. 237 * 238 * @return the horse's jump strength 239 */ 240 public double getJumpStrength(); 241 242 /** 243 * Sets the jump strength of this horse. 244 * <p> 245 * A higher jump strength increases how high a jump will go. 246 * Setting a jump strength to 0 will result in no jump. 247 * You cannot set a jump strength to a value below 0 or 248 * above 2. 249 * 250 * @param strength jump strength for this horse 251 */ 252 public void setJumpStrength(double strength); 253 254 @Override 255 public HorseInventory getInventory(); 256 }