diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityHorse.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityHorse.java | 1226 |
1 files changed, 0 insertions, 1226 deletions
diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java deleted file mode 100644 index d167c001..00000000 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ /dev/null @@ -1,1226 +0,0 @@ -package net.minecraft.server; - -import java.util.Iterator; -import java.util.List; - -import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; // CraftBukkit - -public class EntityHorse extends EntityAnimal implements IInventoryListener { - - private static final IEntitySelector bu = new EntitySelectorHorse(); - public static final IAttribute attributeJumpStrength = (new AttributeRanged("horse.jumpStrength", 0.7D, 0.0D, 2.0D)).a("Jump Strength").a(true); // CraftBukkit - private -> public - private static final String[] bw = new String[] { null, "textures/entity/horse/armor/horse_armor_iron.png", "textures/entity/horse/armor/horse_armor_gold.png", "textures/entity/horse/armor/horse_armor_diamond.png"}; - private static final String[] bx = new String[] { "", "meo", "goo", "dio"}; - private static final int[] by = new int[] { 0, 5, 7, 11}; - private static final String[] bz = new String[] { "textures/entity/horse/horse_white.png", "textures/entity/horse/horse_creamy.png", "textures/entity/horse/horse_chestnut.png", "textures/entity/horse/horse_brown.png", "textures/entity/horse/horse_black.png", "textures/entity/horse/horse_gray.png", "textures/entity/horse/horse_darkbrown.png"}; - private static final String[] bA = new String[] { "hwh", "hcr", "hch", "hbr", "hbl", "hgr", "hdb"}; - private static final String[] bB = new String[] { null, "textures/entity/horse/horse_markings_white.png", "textures/entity/horse/horse_markings_whitefield.png", "textures/entity/horse/horse_markings_whitedots.png", "textures/entity/horse/horse_markings_blackdots.png"}; - private static final String[] bC = new String[] { "", "wo_", "wmo", "wdo", "bdo"}; - private int bD; - private int bE; - private int bF; - public int bp; - public int bq; - protected boolean br; - public InventoryHorseChest inventoryChest; // CraftBukkit - private -> public - private boolean bH; - protected int bs; - protected float bt; - private boolean bI; - private float bJ; - private float bK; - private float bL; - private float bM; - private float bN; - private float bO; - private int bP; - private String bQ; - private String[] bR = new String[3]; - public int maxDomestication = 100; // CraftBukkit - store max domestication value - - public EntityHorse(World world) { - super(world); - this.a(1.4F, 1.6F); - this.fireProof = false; - this.setHasChest(false); - this.getNavigation().a(true); - this.goalSelector.a(0, new PathfinderGoalFloat(this)); - this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.2D)); - this.goalSelector.a(1, new PathfinderGoalTame(this, 1.2D)); - this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); - this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.0D)); - this.goalSelector.a(6, new PathfinderGoalRandomStroll(this, 0.7D)); - this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); - this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); - this.loadChest(); - } - - protected void c() { - super.c(); - this.datawatcher.a(16, Integer.valueOf(0)); - this.datawatcher.a(19, Byte.valueOf((byte) 0)); - this.datawatcher.a(20, Integer.valueOf(0)); - this.datawatcher.a(21, String.valueOf("")); - this.datawatcher.a(22, Integer.valueOf(0)); - } - - public void setType(int i) { - this.datawatcher.watch(19, Byte.valueOf((byte) i)); - this.cP(); - } - - public int getType() { - return this.datawatcher.getByte(19); - } - - public void setVariant(int i) { - this.datawatcher.watch(20, Integer.valueOf(i)); - this.cP(); - } - - public int getVariant() { - return this.datawatcher.getInt(20); - } - - public String getName() { - if (this.hasCustomName()) { - return this.getCustomName(); - } else { - int i = this.getType(); - - switch (i) { - case 0: - default: - return LocaleI18n.get("entity.horse.name"); - - case 1: - return LocaleI18n.get("entity.donkey.name"); - - case 2: - return LocaleI18n.get("entity.mule.name"); - - case 3: - return LocaleI18n.get("entity.zombiehorse.name"); - - case 4: - return LocaleI18n.get("entity.skeletonhorse.name"); - } - } - } - - private boolean x(int i) { - return (this.datawatcher.getInt(16) & i) != 0; - } - - private void b(int i, boolean flag) { - int j = this.datawatcher.getInt(16); - - if (flag) { - this.datawatcher.watch(16, Integer.valueOf(j | i)); - } else { - this.datawatcher.watch(16, Integer.valueOf(j & ~i)); - } - } - - public boolean cb() { - return !this.isBaby(); - } - - public boolean isTame() { - return this.x(2); - } - - public boolean cg() { - return this.cb(); - } - - public String getOwnerUUID() { - return this.datawatcher.getString(21); - } - - public void setOwnerUUID(String s) { - this.datawatcher.watch(21, s); - } - - public float ci() { - int i = this.getAge(); - - return i >= 0 ? 1.0F : 0.5F + (float) (-24000 - i) / -24000.0F * 0.5F; - } - - public void a(boolean flag) { - if (flag) { - this.a(this.ci()); - } else { - this.a(1.0F); - } - } - - public boolean cj() { - return this.br; - } - - public void setTame(boolean flag) { - this.b(2, flag); - } - - public void j(boolean flag) { - this.br = flag; - } - - public boolean bM() { - return !this.cE() && super.bM(); - } - - protected void o(float f) { - if (f > 6.0F && this.cm()) { - this.o(false); - } - } - - public boolean hasChest() { - return this.x(8); - } - - public int cl() { - return this.datawatcher.getInt(22); - } - - private int e(ItemStack itemstack) { - if (itemstack == null) { - return 0; - } else { - Item item = itemstack.getItem(); - - return item == Items.HORSE_ARMOR_IRON ? 1 : (item == Items.HORSE_ARMOR_GOLD ? 2 : (item == Items.HORSE_ARMOR_DIAMOND ? 3 : 0)); - } - } - - public boolean cm() { - return this.x(32); - } - - public boolean cn() { - return this.x(64); - } - - public boolean co() { - return this.x(16); - } - - public boolean cp() { - return this.bH; - } - - public void d(ItemStack itemstack) { - this.datawatcher.watch(22, Integer.valueOf(this.e(itemstack))); - this.cP(); - } - - public void k(boolean flag) { - this.b(16, flag); - } - - public void setHasChest(boolean flag) { - this.b(8, flag); - } - - public void m(boolean flag) { - this.bH = flag; - } - - public void n(boolean flag) { - this.b(4, flag); - } - - public int getTemper() { - return this.bs; - } - - public void setTemper(int i) { - this.bs = i; - } - - public int v(int i) { - int j = MathHelper.a(this.getTemper() + i, 0, this.getMaxDomestication()); - - this.setTemper(j); - return j; - } - - public boolean damageEntity(DamageSource damagesource, float f) { - Entity entity = damagesource.getEntity(); - - return this.passenger != null && this.passenger.equals(entity) ? false : super.damageEntity(damagesource, f); - } - - public int aV() { - return by[this.cl()]; - } - - public boolean S() { - return this.passenger == null; - } - - public boolean cr() { - int i = MathHelper.floor(this.locX); - int j = MathHelper.floor(this.locZ); - - this.world.getBiome(i, j); - return true; - } - - public void cs() { - if (!this.world.isStatic && this.hasChest()) { - this.a(Item.getItemOf(Blocks.CHEST), 1); - this.setHasChest(false); - } - } - - private void cL() { - this.cS(); - this.world.makeSound(this, "eating", 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); - } - - protected void b(float f) { - if (f > 1.0F) { - this.makeSound("mob.horse.land", 0.4F, 1.0F); - } - - int i = MathHelper.f(f * 0.5F - 3.0F); - - if (i > 0) { - this.damageEntity(DamageSource.FALL, (float) i); - if (this.passenger != null) { - this.passenger.damageEntity(DamageSource.FALL, (float) i); - } - - Block block = this.world.getType(MathHelper.floor(this.locX), MathHelper.floor(this.locY - 0.2D - (double) this.lastYaw), MathHelper.floor(this.locZ)); - - if (block.getMaterial() != Material.AIR) { - StepSound stepsound = block.stepSound; - - this.world.makeSound(this, stepsound.getStepSound(), stepsound.getVolume1() * 0.5F, stepsound.getVolume2() * 0.75F); - } - } - } - - private int cM() { - int i = this.getType(); - - return this.hasChest() /* && (i == 1 || i == 2) */ ? 17 : 2; // CraftBukkit - Remove type check - } - - public void loadChest() { // CraftBukkit - private -> public - InventoryHorseChest inventoryhorsechest = this.inventoryChest; - - this.inventoryChest = new InventoryHorseChest("HorseChest", this.cM(), this); // CraftBukkit - add this horse - this.inventoryChest.a(this.getName()); - if (inventoryhorsechest != null) { - inventoryhorsechest.b(this); - int i = Math.min(inventoryhorsechest.getSize(), this.inventoryChest.getSize()); - - for (int j = 0; j < i; ++j) { - ItemStack itemstack = inventoryhorsechest.getItem(j); - - if (itemstack != null) { - this.inventoryChest.setItem(j, itemstack.cloneItemStack()); - } - } - - inventoryhorsechest = null; - } - - this.inventoryChest.a(this); - this.cO(); - } - - private void cO() { - if (!this.world.isStatic) { - this.n(this.inventoryChest.getItem(0) != null); - if (this.cB()) { - this.d(this.inventoryChest.getItem(1)); - } - } - } - - public void a(InventorySubcontainer inventorysubcontainer) { - int i = this.cl(); - boolean flag = this.cu(); - - this.cO(); - if (this.ticksLived > 20) { - if (i == 0 && i != this.cl()) { - this.makeSound("mob.horse.armor", 0.5F, 1.0F); - } else if (i != this.cl()) { - this.makeSound("mob.horse.armor", 0.5F, 1.0F); - } - - if (!flag && this.cu()) { - this.makeSound("mob.horse.leather", 0.5F, 1.0F); - } - } - } - - public boolean canSpawn() { - this.cr(); - return super.canSpawn(); - } - - protected EntityHorse a(Entity entity, double d0) { - double d1 = Double.MAX_VALUE; - Entity entity1 = null; - List list = this.world.getEntities(entity, entity.boundingBox.a(d0, d0, d0), bu); - Iterator iterator = list.iterator(); - - while (iterator.hasNext()) { - Entity entity2 = (Entity) iterator.next(); - double d2 = entity2.e(entity.locX, entity.locY, entity.locZ); - - if (d2 < d1) { - entity1 = entity2; - d1 = d2; - } - } - - return (EntityHorse) entity1; - } - - public double getJumpStrength() { - return this.getAttributeInstance(attributeJumpStrength).getValue(); - } - - protected String aU() { - this.cS(); - int i = this.getType(); - - return i == 3 ? "mob.horse.zombie.death" : (i == 4 ? "mob.horse.skeleton.death" : (i != 1 && i != 2 ? "mob.horse.death" : "mob.horse.donkey.death")); - } - - protected Item getLoot() { - boolean flag = this.random.nextInt(4) == 0; - int i = this.getType(); - - return i == 4 ? Items.BONE : (i == 3 ? (flag ? Item.getById(0) : Items.ROTTEN_FLESH) : Items.LEATHER); - } - - protected String aT() { - this.cS(); - if (this.random.nextInt(3) == 0) { - this.cU(); - } - - int i = this.getType(); - - return i == 3 ? "mob.horse.zombie.hit" : (i == 4 ? "mob.horse.skeleton.hit" : (i != 1 && i != 2 ? "mob.horse.hit" : "mob.horse.donkey.hit")); - } - - public boolean cu() { - return this.x(4); - } - - protected String t() { - this.cS(); - if (this.random.nextInt(10) == 0 && !this.bh()) { - this.cU(); - } - - int i = this.getType(); - - return i == 3 ? "mob.horse.zombie.idle" : (i == 4 ? "mob.horse.skeleton.idle" : (i != 1 && i != 2 ? "mob.horse.idle" : "mob.horse.donkey.idle")); - } - - protected String cv() { - this.cS(); - this.cU(); - int i = this.getType(); - - return i != 3 && i != 4 ? (i != 1 && i != 2 ? "mob.horse.angry" : "mob.horse.donkey.angry") : null; - } - - protected void a(int i, int j, int k, Block block) { - StepSound stepsound = block.stepSound; - - if (this.world.getType(i, j + 1, k) == Blocks.SNOW) { - stepsound = Blocks.SNOW.stepSound; - } - - if (!block.getMaterial().isLiquid()) { - int l = this.getType(); - - if (this.passenger != null && l != 1 && l != 2) { - ++this.bP; - if (this.bP > 5 && this.bP % 3 == 0) { - this.makeSound("mob.horse.gallop", stepsound.getVolume1() * 0.15F, stepsound.getVolume2()); - if (l == 0 && this.random.nextInt(10) == 0) { - this.makeSound("mob.horse.breathe", stepsound.getVolume1() * 0.6F, stepsound.getVolume2()); - } - } else if (this.bP <= 5) { - this.makeSound("mob.horse.wood", stepsound.getVolume1() * 0.15F, stepsound.getVolume2()); - } - } else if (stepsound == Block.f) { - this.makeSound("mob.horse.wood", stepsound.getVolume1() * 0.15F, stepsound.getVolume2()); - } else { - this.makeSound("mob.horse.soft", stepsound.getVolume1() * 0.15F, stepsound.getVolume2()); - } - } - } - - protected void aD() { - super.aD(); - this.getAttributeMap().b(attributeJumpStrength); - this.getAttributeInstance(GenericAttributes.maxHealth).setValue(53.0D); - this.getAttributeInstance(GenericAttributes.d).setValue(0.22499999403953552D); - } - - public int bB() { - return 6; - } - - public int getMaxDomestication() { - return this.maxDomestication; // CraftBukkit - return stored max domestication instead of 100 - } - - protected float bf() { - return 0.8F; - } - - public int q() { - return 400; - } - - private void cP() { - this.bQ = null; - } - - public void g(EntityHuman entityhuman) { - if (!this.world.isStatic && (this.passenger == null || this.passenger == entityhuman) && this.isTame()) { - this.inventoryChest.a(this.getName()); - entityhuman.openHorseInventory(this, this.inventoryChest); - } - } - - public boolean a(EntityHuman entityhuman) { - ItemStack itemstack = entityhuman.inventory.getItemInHand(); - - if (itemstack != null && itemstack.getItem() == Items.MONSTER_EGG) { - return super.a(entityhuman); - } else if (!this.isTame() && this.cE()) { - return false; - } else if (this.isTame() && this.cb() && entityhuman.isSneaking()) { - this.g(entityhuman); - return true; - } else if (this.cg() && this.passenger != null) { - return super.a(entityhuman); - } else { - if (itemstack != null) { - boolean flag = false; - - if (this.cB()) { - byte b0 = -1; - - if (itemstack.getItem() == Items.HORSE_ARMOR_IRON) { - b0 = 1; - } else if (itemstack.getItem() == Items.HORSE_ARMOR_GOLD) { - b0 = 2; - } else if (itemstack.getItem() == Items.HORSE_ARMOR_DIAMOND) { - b0 = 3; - } - - if (b0 >= 0) { - if (!this.isTame()) { - this.cJ(); - return true; - } - - this.g(entityhuman); - return true; - } - } - - if (!flag && !this.cE()) { - float f = 0.0F; - short short1 = 0; - byte b1 = 0; - - if (itemstack.getItem() == Items.WHEAT) { - f = 2.0F; - short1 = 60; - b1 = 3; - } else if (itemstack.getItem() == Items.SUGAR) { - f = 1.0F; - short1 = 30; - b1 = 3; - } else if (itemstack.getItem() == Items.BREAD) { - f = 7.0F; - short1 = 180; - b1 = 3; - } else if (Block.a(itemstack.getItem()) == Blocks.HAY_BLOCK) { - f = 20.0F; - short1 = 180; - } else if (itemstack.getItem() == Items.APPLE) { - f = 3.0F; - short1 = 60; - b1 = 3; - } else if (itemstack.getItem() == Items.CARROT_GOLDEN) { - f = 4.0F; - short1 = 60; - b1 = 5; - if (this.isTame() && this.getAge() == 0) { - flag = true; - this.f(entityhuman); - } - } else if (itemstack.getItem() == Items.GOLDEN_APPLE) { - f = 10.0F; - short1 = 240; - b1 = 10; - if (this.isTame() && this.getAge() == 0) { - flag = true; - this.f(entityhuman); - } - } - - if (this.getHealth() < this.getMaxHealth() && f > 0.0F) { - this.heal(f, RegainReason.EATING); // CraftBukkit - flag = true; - } - - if (!this.cb() && short1 > 0) { - this.a(short1); - flag = true; - } - - if (b1 > 0 && (flag || !this.isTame()) && b1 < this.getMaxDomestication()) { - flag = true; - this.v(b1); - } - - if (flag) { - this.cL(); - } - } - - if (!this.isTame() && !flag) { - if (itemstack != null && itemstack.a(entityhuman, (EntityLiving) this)) { - return true; - } - - this.cJ(); - return true; - } - - if (!flag && this.cC() && !this.hasChest() && itemstack.getItem() == Item.getItemOf(Blocks.CHEST)) { - this.setHasChest(true); - this.makeSound("mob.chickenplop", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F); - flag = true; - this.loadChest(); - } - - if (!flag && this.cg() && !this.cu() && itemstack.getItem() == Items.SADDLE) { - this.g(entityhuman); - return true; - } - - if (flag) { - if (!entityhuman.abilities.canInstantlyBuild && --itemstack.count == 0) { - entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); - } - - return true; - } - } - - if (this.cg() && this.passenger == null) { - if (itemstack != null && itemstack.a(entityhuman, (EntityLiving) this)) { - return true; - } else { - this.i(entityhuman); - return true; - } - } else { - return super.a(entityhuman); - } - } - } - - private void i(EntityHuman entityhuman) { - entityhuman.yaw = this.yaw; - entityhuman.pitch = this.pitch; - this.o(false); - this.p(false); - if (!this.world.isStatic) { - entityhuman.mount(this); - } - } - - public boolean cB() { - return this.getType() == 0; - } - - public boolean cC() { - int i = this.getType(); - - return i == 2 || i == 1; - } - - protected boolean bh() { - return this.passenger != null && this.cu() ? true : this.cm() || this.cn(); - } - - public boolean cE() { - int i = this.getType(); - - return i == 3 || i == 4; - } - - public boolean cF() { - return this.cE() || this.getType() == 2; - } - - public boolean c(ItemStack itemstack) { - return false; - } - - private void cR() { - this.bp = 1; - } - - public void die(DamageSource damagesource) { - super.die(damagesource); - /* CraftBukkit start - Handle chest dropping in dropDeathLoot below - if (!this.world.isStatic) { - this.dropChest(); - } - // CraftBukkit end */ - } - - // CraftBukkit start - Add method - protected void dropDeathLoot(boolean flag, int i) { - super.dropDeathLoot(flag, i); - - // Moved from die method above - if (!this.world.isStatic) { - this.dropChest(); - } - } - // CraftBukkit end - - public void e() { - if (this.random.nextInt(200) == 0) { - this.cR(); - } - - super.e(); - if (!this.world.isStatic) { - if (this.random.nextInt(900) == 0 && this.deathTicks == 0) { - this.heal(1.0F, RegainReason.REGEN); // CraftBukkit - } - - if (!this.cm() && this.passenger == null && this.random.nextInt(300) == 0 && this.world.getType(MathHelper.floor(this.locX), MathHelper.floor(this.locY) - 1, MathHelper.floor(this.locZ)) == Blocks.GRASS) { - this.o(true); - } - - if (this.cm() && ++this.bD > 50) { - this.bD = 0; - this.o(false); - } - - if (this.co() && !this.cb() && !this.cm()) { - EntityHorse entityhorse = this.a(this, 16.0D); - - if (entityhorse != null && this.f(entityhorse) > 4.0D) { - PathEntity pathentity = this.world.findPath(this, entityhorse, 16.0F, true, false, false, true); - - this.setPathEntity(pathentity); - } - } - } - } - - public void h() { - super.h(); - if (this.world.isStatic && this.datawatcher.a()) { - this.datawatcher.e(); - this.cP(); - } - - if (this.bE > 0 && ++this.bE > 30) { - this.bE = 0; - this.b(128, false); - } - - if (!this.world.isStatic && this.bF > 0 && ++this.bF > 20) { - this.bF = 0; - this.p(false); - } - - if (this.bp > 0 && ++this.bp > 8) { - this.bp = 0; - } - - if (this.bq > 0) { - ++this.bq; - if (this.bq > 300) { - this.bq = 0; - } - } - - this.bK = this.bJ; - if (this.cm()) { - this.bJ += (1.0F - this.bJ) * 0.4F + 0.05F; - if (this.bJ > 1.0F) { - this.bJ = 1.0F; - } - } else { - this.bJ += (0.0F - this.bJ) * 0.4F - 0.05F; - if (this.bJ < 0.0F) { - this.bJ = 0.0F; - } - } - - this.bM = this.bL; - if (this.cn()) { - this.bK = this.bJ = 0.0F; - this.bL += (1.0F - this.bL) * 0.4F + 0.05F; - if (this.bL > 1.0F) { - this.bL = 1.0F; - } - } else { - this.bI = false; - this.bL += (0.8F * this.bL * this.bL * this.bL - this.bL) * 0.6F - 0.05F; - if (this.bL < 0.0F) { - this.bL = 0.0F; - } - } - - this.bO = this.bN; - if (this.x(128)) { - this.bN += (1.0F - this.bN) * 0.7F + 0.05F; - if (this.bN > 1.0F) { - this.bN = 1.0F; - } - } else { - this.bN += (0.0F - this.bN) * 0.7F - 0.05F; - if (this.bN < 0.0F) { - this.bN = 0.0F; - } - } - } - - private void cS() { - if (!this.world.isStatic) { - this.bE = 1; - this.b(128, true); - } - } - - private boolean cT() { - return this.passenger == null && this.vehicle == null && this.isTame() && this.cb() && !this.cF() && this.getHealth() >= this.getMaxHealth(); - } - - public void e(boolean flag) { - this.b(32, flag); - } - - public void o(boolean flag) { - this.e(flag); - } - - public void p(boolean flag) { - if (flag) { - this.o(false); - } - - this.b(64, flag); - } - - private void cU() { - if (!this.world.isStatic) { - this.bF = 1; - this.p(true); - } - } - - public void cJ() { - this.cU(); - String s = this.cv(); - - if (s != null) { - this.makeSound(s, this.bf(), this.bg()); - } - } - - public void dropChest() { - this.a(this, this.inventoryChest); - this.cs(); - } - - private void a(Entity entity, InventoryHorseChest inventoryhorsechest) { - if (inventoryhorsechest != null && !this.world.isStatic) { - for (int i = 0; i < inventoryhorsechest.getSize(); ++i) { - ItemStack itemstack = inventoryhorsechest.getItem(i); - - if (itemstack != null) { - this.a(itemstack, 0.0F); - } - } - } - } - - public boolean h(EntityHuman entityhuman) { - this.setOwnerUUID(entityhuman.getUniqueID().toString()); - this.setTame(true); - return true; - } - - public void e(float f, float f1) { - if (this.passenger != null && this.passenger instanceof EntityLiving && this.cu()) { - this.lastYaw = this.yaw = this.passenger.yaw; - this.pitch = this.passenger.pitch * 0.5F; - this.b(this.yaw, this.pitch); - this.aO = this.aM = this.yaw; - f = ((EntityLiving) this.passenger).bd * 0.5F; - f1 = ((EntityLiving) this.passenger).be; - if (f1 <= 0.0F) { - f1 *= 0.25F; - this.bP = 0; - } - - if (this.onGround && this.bt == 0.0F && this.cn() && !this.bI) { - f = 0.0F; - f1 = 0.0F; - } - - if (this.bt > 0.0F && !this.cj() && this.onGround) { - this.motY = this.getJumpStrength() * (double) this.bt; - if (this.hasEffect(MobEffectList.JUMP)) { - this.motY += (double) ((float) (this.getEffect(MobEffectList.JUMP).getAmplifier() + 1) * 0.1F); - } - - this.j(true); - this.al = true; - if (f1 > 0.0F) { - float f2 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F); - float f3 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F); - - this.motX += (double) (-0.4F * f2 * this.bt); - this.motZ += (double) (0.4F * f3 * this.bt); - this.makeSound("mob.horse.jump", 0.4F, 1.0F); - } - - this.bt = 0.0F; - } - - this.W = 1.0F; - this.aQ = this.bl() * 0.1F; - if (!this.world.isStatic) { - this.i((float) this.getAttributeInstance(GenericAttributes.d).getValue()); - super.e(f, f1); - } - - if (this.onGround) { - this.bt = 0.0F; - this.j(false); - } - - this.aE = this.aF; - double d0 = this.locX - this.lastX; - double d1 = this.locZ - this.lastZ; - float f4 = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F; - - if (f4 > 1.0F) { - f4 = 1.0F; - } - - this.aF += (f4 - this.aF) * 0.4F; - this.aG += this.aF; - } else { - this.W = 0.5F; - this.aQ = 0.02F; - super.e(f, f1); - } - } - - public void b(NBTTagCompound nbttagcompound) { - super.b(nbttagcompound); - nbttagcompound.setBoolean("EatingHaystack", this.cm()); - nbttagcompound.setBoolean("ChestedHorse", this.hasChest()); - nbttagcompound.setBoolean("HasReproduced", this.cp()); - nbttagcompound.setBoolean("Bred", this.co()); - nbttagcompound.setInt("Type", this.getType()); - nbttagcompound.setInt("Variant", this.getVariant()); - nbttagcompound.setInt("Temper", this.getTemper()); - nbttagcompound.setBoolean("Tame", this.isTame()); - nbttagcompound.setString("OwnerUUID", this.getOwnerUUID()); - nbttagcompound.setInt("Bukkit.MaxDomestication", this.maxDomestication); // CraftBukkit - if (this.hasChest()) { - NBTTagList nbttaglist = new NBTTagList(); - - for (int i = 2; i < this.inventoryChest.getSize(); ++i) { - ItemStack itemstack = this.inventoryChest.getItem(i); - - if (itemstack != null) { - NBTTagCompound nbttagcompound1 = new NBTTagCompound(); - - nbttagcompound1.setByte("Slot", (byte) i); - itemstack.save(nbttagcompound1); - nbttaglist.add(nbttagcompound1); - } - } - - nbttagcompound.set("Items", nbttaglist); - } - - if (this.inventoryChest.getItem(1) != null) { - nbttagcompound.set("ArmorItem", this.inventoryChest.getItem(1).save(new NBTTagCompound())); - } - - if (this.inventoryChest.getItem(0) != null) { - nbttagcompound.set("SaddleItem", this.inventoryChest.getItem(0).save(new NBTTagCompound())); - } - } - - public void a(NBTTagCompound nbttagcompound) { - super.a(nbttagcompound); - this.o(nbttagcompound.getBoolean("EatingHaystack")); - this.k(nbttagcompound.getBoolean("Bred")); - this.setHasChest(nbttagcompound.getBoolean("ChestedHorse")); - this.m(nbttagcompound.getBoolean("HasReproduced")); - this.setType(nbttagcompound.getInt("Type")); - this.setVariant(nbttagcompound.getInt("Variant")); - this.setTemper(nbttagcompound.getInt("Temper")); - this.setTame(nbttagcompound.getBoolean("Tame")); - if (nbttagcompound.hasKeyOfType("OwnerUUID", 8)) { - this.setOwnerUUID(nbttagcompound.getString("OwnerUUID")); - } - // CraftBukkit start - if (nbttagcompound.hasKey("Bukkit.MaxDomestication")) { - this.maxDomestication = nbttagcompound.getInt("Bukkit.MaxDomestication"); - } - // CraftBukkit end - AttributeInstance attributeinstance = this.getAttributeMap().a("Speed"); - - if (attributeinstance != null) { - this.getAttributeInstance(GenericAttributes.d).setValue(attributeinstance.b() * 0.25D); - } - - if (this.hasChest()) { - NBTTagList nbttaglist = nbttagcompound.getList("Items", 10); - - this.loadChest(); - - for (int i = 0; i < nbttaglist.size(); ++i) { - NBTTagCompound nbttagcompound1 = nbttaglist.get(i); - int j = nbttagcompound1.getByte("Slot") & 255; - - if (j >= 2 && j < this.inventoryChest.getSize()) { - this.inventoryChest.setItem(j, ItemStack.createStack(nbttagcompound1)); - } - } - } - - ItemStack itemstack; - - if (nbttagcompound.hasKeyOfType("ArmorItem", 10)) { - itemstack = ItemStack.createStack(nbttagcompound.getCompound("ArmorItem")); - if (itemstack != null && a(itemstack.getItem())) { - this.inventoryChest.setItem(1, itemstack); - } - } - - if (nbttagcompound.hasKeyOfType("SaddleItem", 10)) { - itemstack = ItemStack.createStack(nbttagcompound.getCompound("SaddleItem")); - if (itemstack != null && itemstack.getItem() == Items.SADDLE) { - this.inventoryChest.setItem(0, itemstack); - } - } else if (nbttagcompound.getBoolean("Saddle")) { - this.inventoryChest.setItem(0, new ItemStack(Items.SADDLE)); - } - - this.cO(); - } - - public boolean mate(EntityAnimal entityanimal) { - if (entityanimal == this) { - return false; - } else if (entityanimal.getClass() != this.getClass()) { - return false; - } else { - EntityHorse entityhorse = (EntityHorse) entityanimal; - - if (this.cT() && entityhorse.cT()) { - int i = this.getType(); - int j = entityhorse.getType(); - - return i == j || i == 0 && j == 1 || i == 1 && j == 0; - } else { - return false; - } - } - } - - public EntityAgeable createChild(EntityAgeable entityageable) { - EntityHorse entityhorse = (EntityHorse) entityageable; - EntityHorse entityhorse1 = new EntityHorse(this.world); - int i = this.getType(); - int j = entityhorse.getType(); - int k = 0; - - if (i == j) { - k = i; - } else if (i == 0 && j == 1 || i == 1 && j == 0) { - k = 2; - } - - if (k == 0) { - int l = this.random.nextInt(9); - int i1; - - if (l < 4) { - i1 = this.getVariant() & 255; - } else if (l < 8) { - i1 = entityhorse.getVariant() & 255; - } else { - i1 = this.random.nextInt(7); - } - - int j1 = this.random.nextInt(5); - - if (j1 < 2) { - i1 |= this.getVariant() & '\uff00'; - } else if (j1 < 4) { - i1 |= entityhorse.getVariant() & '\uff00'; - } else { - i1 |= this.random.nextInt(5) << 8 & '\uff00'; - } - - entityhorse1.setVariant(i1); - } - - entityhorse1.setType(k); - double d0 = this.getAttributeInstance(GenericAttributes.maxHealth).b() + entityageable.getAttributeInstance(GenericAttributes.maxHealth).b() + (double) this.cV(); - - entityhorse1.getAttributeInstance(GenericAttributes.maxHealth).setValue(d0 / 3.0D); - double d1 = this.getAttributeInstance(attributeJumpStrength).b() + entityageable.getAttributeInstance(attributeJumpStrength).b() + this.cW(); - - entityhorse1.getAttributeInstance(attributeJumpStrength).setValue(d1 / 3.0D); - double d2 = this.getAttributeInstance(GenericAttributes.d).b() + entityageable.getAttributeInstance(GenericAttributes.d).b() + this.cX(); - - entityhorse1.getAttributeInstance(GenericAttributes.d).setValue(d2 / 3.0D); - return entityhorse1; - } - - public GroupDataEntity prepare(GroupDataEntity groupdataentity) { - Object object = super.prepare(groupdataentity); - boolean flag = false; - int i = 0; - int j; - - if (object instanceof GroupDataHorse) { - j = ((GroupDataHorse) object).a; - i = ((GroupDataHorse) object).b & 255 | this.random.nextInt(5) << 8; - } else { - if (this.random.nextInt(10) == 0) { - j = 1; - } else { - int k = this.random.nextInt(7); - int l = this.random.nextInt(5); - - j = 0; - i = k | l << 8; - } - - object = new GroupDataHorse(j, i); - } - - this.setType(j); - this.setVariant(i); - if (this.random.nextInt(5) == 0) { - this.setAge(-24000); - } - - if (j != 4 && j != 3) { - this.getAttributeInstance(GenericAttributes.maxHealth).setValue((double) this.cV()); - if (j == 0) { - this.getAttributeInstance(GenericAttributes.d).setValue(this.cX()); - } else { - this.getAttributeInstance(GenericAttributes.d).setValue(0.17499999701976776D); - } - } else { - this.getAttributeInstance(GenericAttributes.maxHealth).setValue(15.0D); - this.getAttributeInstance(GenericAttributes.d).setValue(0.20000000298023224D); - } - - if (j != 2 && j != 1) { - this.getAttributeInstance(attributeJumpStrength).setValue(this.cW()); - } else { - this.getAttributeInstance(attributeJumpStrength).setValue(0.5D); - } - - this.setHealth(this.getMaxHealth()); - return (GroupDataEntity) object; - } - - protected boolean bk() { - return true; - } - - public void w(int i) { - if (this.cu()) { - // CraftBukkit start - fire HorseJumpEvent, use event power - if (i < 0) { - i = 0; - } - - float power; - if (i >= 90) { - power = 1.0F; - } else { - power = 0.4F + 0.4F * (float) i / 90.0F; - } - - org.bukkit.event.entity.HorseJumpEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callHorseJumpEvent(this, power); - if (!event.isCancelled()) { - this.bI = true; - this.cU(); - this.bt = event.getPower(); - } - // CraftBukkit end - } - } - - public void ac() { - super.ac(); - if (this.bM > 0.0F) { - float f = MathHelper.sin(this.aM * 3.1415927F / 180.0F); - float f1 = MathHelper.cos(this.aM * 3.1415927F / 180.0F); - float f2 = 0.7F * this.bM; - float f3 = 0.15F * this.bM; - - this.passenger.setPosition(this.locX + (double) (f2 * f), this.locY + this.ad() + this.passenger.ad() + (double) f3, this.locZ - (double) (f2 * f1)); - if (this.passenger instanceof EntityLiving) { - ((EntityLiving) this.passenger).aM = this.aM; - } - } - } - - private float cV() { - return 15.0F + (float) this.random.nextInt(8) + (float) this.random.nextInt(9); - } - - private double cW() { - return 0.4000000059604645D + this.random.nextDouble() * 0.2D + this.random.nextDouble() * 0.2D + this.random.nextDouble() * 0.2D; - } - - private double cX() { - return (0.44999998807907104D + this.random.nextDouble() * 0.3D + this.random.nextDouble() * 0.3D + this.random.nextDouble() * 0.3D) * 0.25D; - } - - public static boolean a(Item item) { - return item == Items.HORSE_ARMOR_IRON || item == Items.HORSE_ARMOR_GOLD || item == Items.HORSE_ARMOR_DIAMOND; - } - - public boolean h_() { - return false; - } -} |