diff --git a/pom.xml b/pom.xml index 197fd47ba9..5d932fe507 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ org.bukkit minecraft-server - 1.0.1_01 + 1.1 jar compile diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java index d89b150080..7987b6e2f0 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -284,10 +284,10 @@ public class Block { } public boolean a(int i, boolean flag) { - return this.v_(); + return this.x_(); } - public boolean v_() { + public boolean x_() { return true; } @@ -571,6 +571,8 @@ public class Block { return this.material.getPushReaction(); } + public void a(World world, int i, int j, int k, Entity entity, float f) {} + static { Item.byId[WOOL.id] = (new ItemCloth(WOOL.id - 256)).a("cloth"); Item.byId[LOG.id] = (new ItemWithAuxData(LOG.id - 256, LOG)).a("log"); diff --git a/src/main/java/net/minecraft/server/BlockFire.java b/src/main/java/net/minecraft/server/BlockFire.java index 7fefe7eb5a..cd28dae417 100644 --- a/src/main/java/net/minecraft/server/BlockFire.java +++ b/src/main/java/net/minecraft/server/BlockFire.java @@ -214,7 +214,7 @@ public class BlockFire extends Block { } } - public boolean v_() { + public boolean x_() { return false; } diff --git a/src/main/java/net/minecraft/server/BlockFlowing.java b/src/main/java/net/minecraft/server/BlockFlowing.java index 64a12a419a..090f47f34c 100644 --- a/src/main/java/net/minecraft/server/BlockFlowing.java +++ b/src/main/java/net/minecraft/server/BlockFlowing.java @@ -35,7 +35,7 @@ public class BlockFlowing extends BlockFluids { int l = this.g(world, i, j, k); byte b0 = 1; - if (this.material == Material.LAVA && !world.worldProvider.d) { + if (this.material == Material.LAVA && !world.worldProvider.e) { b0 = 2; } diff --git a/src/main/java/net/minecraft/server/BlockLeaves.java b/src/main/java/net/minecraft/server/BlockLeaves.java index b0e21b3e12..1538397ae4 100644 --- a/src/main/java/net/minecraft/server/BlockLeaves.java +++ b/src/main/java/net/minecraft/server/BlockLeaves.java @@ -138,8 +138,15 @@ public class BlockLeaves extends BlockTransparant { return Block.SAPLING.id; } + public void dropNaturally(World world, int i, int j, int k, int l, float f, int i1) { + super.dropNaturally(world, i, j, k, l, f, i1); + if (!world.isStatic && (l & 3) == 0 && world.random.nextInt(200) == 0) { + this.a(world, i, j, k, new ItemStack(Item.APPLE, 1, 0)); + } + } + public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) { - if (!world.isStatic && entityhuman.P() != null && entityhuman.P().id == Item.SHEARS.id) { + if (!world.isStatic && entityhuman.Q() != null && entityhuman.Q().id == Item.SHEARS.id) { entityhuman.a(StatisticList.C[this.id], 1); this.a(world, i, j, k, new ItemStack(Block.LEAVES.id, 1, l & 3)); } else { diff --git a/src/main/java/net/minecraft/server/BlockMinecartDetector.java b/src/main/java/net/minecraft/server/BlockMinecartDetector.java index 12969fd02a..5f4bb85d7b 100644 --- a/src/main/java/net/minecraft/server/BlockMinecartDetector.java +++ b/src/main/java/net/minecraft/server/BlockMinecartDetector.java @@ -52,7 +52,7 @@ public class BlockMinecartDetector extends BlockMinecartTrack { boolean flag = (l & 8) != 0; boolean flag1 = false; float f = 0.125F; - List list = world.a(EntityMinecart.class, AxisAlignedBB.b((double) ((float) i + f), (double) j, (double) ((float) k + f), (double) ((float) (i + 1) - f), (double) j + 0.25D, (double) ((float) (k + 1) - f))); + List list = world.a(EntityMinecart.class, AxisAlignedBB.b((double) ((float) i + f), (double) j, (double) ((float) k + f), (double) ((float) (i + 1) - f), (double) ((float) (j + 1) - f), (double) ((float) (k + 1) - f))); if (list.size() > 0) { flag1 = true; diff --git a/src/main/java/net/minecraft/server/BlockRedstoneWire.java b/src/main/java/net/minecraft/server/BlockRedstoneWire.java index f1d7f2f2f3..07226d181b 100644 --- a/src/main/java/net/minecraft/server/BlockRedstoneWire.java +++ b/src/main/java/net/minecraft/server/BlockRedstoneWire.java @@ -171,7 +171,7 @@ public class BlockRedstoneWire extends Block { } } - if (k1 == 0 || l1 == 0) { + if (k1 < l1 || l1 == 0) { this.b.add(new ChunkPosition(i, j, k)); this.b.add(new ChunkPosition(i - 1, j, k)); this.b.add(new ChunkPosition(i + 1, j, k)); @@ -236,6 +236,10 @@ public class BlockRedstoneWire extends Block { if (!world.isStatic) { world.applyPhysics(i, j + 1, k, this.id); world.applyPhysics(i, j - 1, k, this.id); + world.applyPhysics(i + 1, j, k, this.id); + world.applyPhysics(i - 1, j, k, this.id); + world.applyPhysics(i, j, k + 1, this.id); + world.applyPhysics(i, j, k - 1, this.id); this.g(world, i, j, k); this.h(world, i - 1, j, k); this.h(world, i + 1, j, k); @@ -348,10 +352,8 @@ public class BlockRedstoneWire extends Block { return true; } else if (i1 == 0) { return false; - } else if (Block.byId[i1].isPowerSource() && l != -1) { - return true; } else if (i1 != Block.DIODE_OFF.id && i1 != Block.DIODE_ON.id) { - return false; + return Block.byId[i1].isPowerSource() && l != -1; } else { int j1 = iblockaccess.getData(i, j, k); diff --git a/src/main/java/net/minecraft/server/BlockSnow.java b/src/main/java/net/minecraft/server/BlockSnow.java index bb7734c4d7..60925c6d00 100644 --- a/src/main/java/net/minecraft/server/BlockSnow.java +++ b/src/main/java/net/minecraft/server/BlockSnow.java @@ -35,7 +35,7 @@ public class BlockSnow extends Block { public boolean canPlace(World world, int i, int j, int k) { int l = world.getTypeId(i, j - 1, k); - return l != 0 && Block.byId[l].a() ? world.getMaterial(i, j - 1, k).isSolid() : false; + return l != 0 && (l == Block.LEAVES.id || Block.byId[l].a()) ? world.getMaterial(i, j - 1, k).isSolid() : false; } public void doPhysics(World world, int i, int j, int k, int l) { diff --git a/src/main/java/net/minecraft/server/BlockSoil.java b/src/main/java/net/minecraft/server/BlockSoil.java index f2283a768e..dc38e1af59 100644 --- a/src/main/java/net/minecraft/server/BlockSoil.java +++ b/src/main/java/net/minecraft/server/BlockSoil.java @@ -47,8 +47,8 @@ public class BlockSoil extends Block { } } - public void b(World world, int i, int j, int k, Entity entity) { - if (world.random.nextInt(4) == 0) { + public void a(World world, int i, int j, int k, Entity entity, float f) { + if (world.random.nextFloat() < f - 0.5F) { // CraftBukkit start - Interact Soil org.bukkit.event.Cancellable cancellable; if (entity instanceof EntityHuman) { diff --git a/src/main/java/net/minecraft/server/BlockStairs.java b/src/main/java/net/minecraft/server/BlockStairs.java deleted file mode 100644 index a7d7beceee..0000000000 --- a/src/main/java/net/minecraft/server/BlockStairs.java +++ /dev/null @@ -1,151 +0,0 @@ -package net.minecraft.server; - -import java.util.ArrayList; -import java.util.Random; - -public class BlockStairs extends Block { - - private Block a; - - protected BlockStairs(int i, Block block) { - super(i, block.textureId, block.material); - this.a = block; - this.c(block.strength); - this.b(block.durability / 3.0F); - this.a(block.stepSound); - this.g(255); - } - - public void updateShape(IBlockAccess iblockaccess, int i, int j, int k) { - this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - public AxisAlignedBB e(World world, int i, int j, int k) { - return super.e(world, i, j, k); - } - - public boolean a() { - return false; - } - - public boolean b() { - return false; - } - - public int c() { - return 10; - } - - public void a(World world, int i, int j, int k, AxisAlignedBB axisalignedbb, ArrayList arraylist) { - int l = world.getData(i, j, k); - - if (l == 0) { - this.a(0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - this.a(0.5F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - } else if (l == 1) { - this.a(0.0F, 0.0F, 0.0F, 0.5F, 1.0F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - this.a(0.5F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - } else if (l == 2) { - this.a(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 0.5F); - super.a(world, i, j, k, axisalignedbb, arraylist); - this.a(0.0F, 0.0F, 0.5F, 1.0F, 1.0F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - } else if (l == 3) { - this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.5F); - super.a(world, i, j, k, axisalignedbb, arraylist); - this.a(0.0F, 0.0F, 0.5F, 1.0F, 0.5F, 1.0F); - super.a(world, i, j, k, axisalignedbb, arraylist); - } - - this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - public void b(World world, int i, int j, int k, EntityHuman entityhuman) { - this.a.b(world, i, j, k, entityhuman); - } - - public void postBreak(World world, int i, int j, int k, int l) { - this.a.postBreak(world, i, j, k, l); - } - - public float a(Entity entity) { - return this.a.a(entity); - } - - public int a(int i, int j) { - return this.a.a(i, 0); - } - - public int a(int i) { - return this.a.a(i, 0); - } - - public int d() { - return this.a.d(); - } - - public void a(World world, int i, int j, int k, Entity entity, Vec3D vec3d) { - this.a.a(world, i, j, k, entity, vec3d); - } - - public boolean v_() { - return this.a.v_(); - } - - public boolean a(int i, boolean flag) { - return this.a.a(i, flag); - } - - public boolean canPlace(World world, int i, int j, int k) { - return this.a.canPlace(world, i, j, k); - } - - public void onPlace(World world, int i, int j, int k) { - this.doPhysics(world, i, j, k, 0); - this.a.onPlace(world, i, j, k); - } - - public void remove(World world, int i, int j, int k) { - this.a.remove(world, i, j, k); - } - - public void b(World world, int i, int j, int k, Entity entity) { - this.a.b(world, i, j, k, entity); - } - - public void a(World world, int i, int j, int k, Random random) { - this.a.a(world, i, j, k, random); - } - - public boolean interact(World world, int i, int j, int k, EntityHuman entityhuman) { - return this.a.interact(world, i, j, k, entityhuman); - } - - public void wasExploded(World world, int i, int j, int k) { - this.a.wasExploded(world, i, j, k); - } - - public void postPlace(World world, int i, int j, int k, EntityLiving entityliving) { - int l = MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3; - - if (l == 0) { - world.setData(i, j, k, 2); - } - - if (l == 1) { - world.setData(i, j, k, 1); - } - - if (l == 2) { - world.setData(i, j, k, 3); - } - - if (l == 3) { - world.setData(i, j, k, 0); - } - } -} diff --git a/src/main/java/net/minecraft/server/BlockTrapdoor.java b/src/main/java/net/minecraft/server/BlockTrapdoor.java index 515aaa7c80..57cc4d1b57 100644 --- a/src/main/java/net/minecraft/server/BlockTrapdoor.java +++ b/src/main/java/net/minecraft/server/BlockTrapdoor.java @@ -121,7 +121,7 @@ public class BlockTrapdoor extends Block { } // CraftBukkit start - if (l > 0 && Block.byId[l] != null && Block.byId[l].isPowerSource()) { + if (l == 0 || l > 0 && Block.byId[l] != null && Block.byId[l].isPowerSource()) { org.bukkit.World bworld = world.getWorld(); org.bukkit.block.Block block = bworld.getBlockAt(i, j, k); diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java index 7c0fde22e3..ebccdf9899 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -108,7 +108,7 @@ public class Chunk { i = l; } - if (!this.world.worldProvider.e) { + if (!this.world.worldProvider.f) { int j1 = 15; int k1 = this.world.height - 1; @@ -239,7 +239,7 @@ public class Chunk { l1 = this.z * 16 + k; int j2; - if (!this.world.worldProvider.e) { + if (!this.world.worldProvider.f) { if (i1 < l) { for (i2 = i1; i2 < l; ++i2) { this.h.a(i, i2, k, 15); @@ -274,7 +274,7 @@ public class Chunk { k2 = l; } - if (!this.world.worldProvider.e) { + if (!this.world.worldProvider.f) { this.d(k1 - 1, l1, j2, k2); this.d(k1 + 1, l1, j2, k2); this.d(k1, l1 - 1, j2, k2); @@ -311,13 +311,13 @@ public class Chunk { if (l1 != 0) { if (!this.world.isStatic) { Block.byId[l1].remove(this.world, i2, j, j2); - } else if (Block.byId[l1] instanceof BlockContainer) { + } else if (Block.byId[l1] instanceof BlockContainer && l1 != l) { this.world.n(i2, j, j2); } } this.g.a(i, j, k, i1); - if (!this.world.worldProvider.e) { + if (!this.world.worldProvider.f) { if (Block.q[b0 & 255] != 0) { if (j >= k1) { this.g(i, j + 1, k); @@ -343,7 +343,7 @@ public class Chunk { tileentity = this.d(i, j, k); if (tileentity == null) { tileentity = ((BlockContainer) Block.byId[l]).a_(); - this.world.setTileEntity(i2, j, j2, tileentity); // CraftBukkit - Use world rather than in-chunk coords + this.world.setTileEntity(i2, j, j2, tileentity); } if (tileentity != null) { @@ -407,7 +407,7 @@ public class Chunk { tileentity = this.d(i, j, k); if (tileentity == null) { tileentity = ((BlockContainer) Block.byId[l]).a_(); - this.world.setTileEntity(l1, j, i2, tileentity); // CraftBukkit - Use world rather than in-chunk coords + this.world.setTileEntity(l1, j, i2, tileentity); } if (tileentity != null) { @@ -460,7 +460,7 @@ public class Chunk { public void a(EnumSkyBlock enumskyblock, int i, int j, int k, int l) { this.q = true; if (enumskyblock == EnumSkyBlock.SKY) { - if (!this.world.worldProvider.e) { + if (!this.world.worldProvider.f) { this.h.a(i, j, k, l); } } else { @@ -473,7 +473,7 @@ public class Chunk { } public int c(int i, int j, int k, int l) { - int i1 = this.world.worldProvider.e ? 0 : this.h.a(i, j, k); + int i1 = this.world.worldProvider.f ? 0 : this.h.a(i, j, k); if (i1 > 0) { a = true; @@ -512,15 +512,15 @@ public class Chunk { k = this.entitySlices.length - 1; } - entity.bW = true; - entity.bX = this.x; - entity.bY = k; - entity.bZ = this.z; + entity.bZ = true; + entity.ca = this.x; + entity.cb = k; + entity.cc = this.z; this.entitySlices[k].add(entity); } public void b(Entity entity) { - this.a(entity, entity.bY); + this.a(entity, entity.cb); } public void a(Entity entity, int i) { @@ -670,7 +670,7 @@ public class Chunk { if (entity1 != entity && entity1.boundingBox.a(axisalignedbb)) { list.add(entity1); - Entity[] aentity = entity1.aG(); + Entity[] aentity = entity1.aR(); if (aentity != null) { for (int i1 = 0; i1 < aentity.length; ++i1) { @@ -848,7 +848,7 @@ public class Chunk { } public void i() { - if (this.v && !this.world.worldProvider.e) { + if (this.v && !this.world.worldProvider.f) { this.k(); } } diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java index e96bb30e1e..b345f5dbb4 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -3,6 +3,7 @@ package net.minecraft.server; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; @@ -56,6 +57,16 @@ public class ChunkProviderServer implements IChunkProvider { } } + public void c() { + Iterator iterator = this.chunkList.iterator(); + + while (iterator.hasNext()) { + Chunk chunk = (Chunk) iterator.next(); + + this.queueUnload(chunk.x, chunk.z); + } + } + public Chunk getChunkAt(int i, int j) { // CraftBukkit start this.unloadQueue.remove(i, j); @@ -254,6 +265,10 @@ public class ChunkProviderServer implements IChunkProvider { return !this.world.savingDisabled; } + public String d() { + return "ServerChunkCache: " + this.chunks.values().size() + " Drop: " + this.unloadQueue.size(); + } + public List getMobsFor(EnumCreatureType enumcreaturetype, int i, int j, int k) { return this.chunkProvider.getMobsFor(enumcreaturetype, i, j, k); } diff --git a/src/main/java/net/minecraft/server/Container.java b/src/main/java/net/minecraft/server/Container.java deleted file mode 100644 index 48ae158d75..0000000000 --- a/src/main/java/net/minecraft/server/Container.java +++ /dev/null @@ -1,310 +0,0 @@ -package net.minecraft.server; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -public abstract class Container { - - public List d = new ArrayList(); - public List e = new ArrayList(); - public int windowId = 0; - private short a = 0; - protected List listeners = new ArrayList(); - private Set b = new HashSet(); - - public Container() {} - - protected void a(Slot slot) { - slot.c = this.e.size(); - this.e.add(slot); - this.d.add(null); - } - - public void a(ICrafting icrafting) { - if (this.listeners.contains(icrafting)) { - throw new IllegalArgumentException("Listener already listening"); - } else { - this.listeners.add(icrafting); - icrafting.a(this, this.b()); - this.a(); - } - } - - public List b() { - ArrayList arraylist = new ArrayList(); - - for (int i = 0; i < this.e.size(); ++i) { - arraylist.add(((Slot) this.e.get(i)).getItem()); - } - - return arraylist; - } - - public void a() { - for (int i = 0; i < this.e.size(); ++i) { - ItemStack itemstack = ((Slot) this.e.get(i)).getItem(); - ItemStack itemstack1 = (ItemStack) this.d.get(i); - - if (!ItemStack.equals(itemstack1, itemstack)) { - itemstack1 = itemstack == null ? null : itemstack.cloneItemStack(); - this.d.set(i, itemstack1); - - for (int j = 0; j < this.listeners.size(); ++j) { - ((ICrafting) this.listeners.get(j)).a(this, i, itemstack1); - } - } - } - } - - public boolean a(EntityHuman entityhuman, int i) { - return false; - } - - public Slot a(IInventory iinventory, int i) { - for (int j = 0; j < this.e.size(); ++j) { - Slot slot = (Slot) this.e.get(j); - - if (slot.a(iinventory, i)) { - return slot; - } - } - - return null; - } - - public Slot b(int i) { - return (Slot) this.e.get(i); - } - - public ItemStack a(int i) { - Slot slot = (Slot) this.e.get(i); - - return slot != null ? slot.getItem() : null; - } - - public ItemStack a(int i, int j, boolean flag, EntityHuman entityhuman) { - ItemStack itemstack = null; - - if (j > 1) { - return null; - } else { - if (j == 0 || j == 1) { - PlayerInventory playerinventory = entityhuman.inventory; - - if (i == -999) { - if (playerinventory.l() != null && i == -999) { - if (j == 0) { - entityhuman.b(playerinventory.l()); - playerinventory.b((ItemStack) null); - } - - if (j == 1) { - entityhuman.b(playerinventory.l().a(1)); - if (playerinventory.l().count == 0) { - playerinventory.b((ItemStack) null); - } - } - } - } else if (flag) { - ItemStack itemstack1 = this.a(i); - - if (itemstack1 != null) { - int k = itemstack1.id; - - itemstack = itemstack1.cloneItemStack(); - Slot slot = (Slot) this.e.get(i); - - if (slot != null && slot.getItem() != null && slot.getItem().id == k) { - this.b(i, j, flag, entityhuman); - } - } - } else { - if (i < 0) { - return null; - } - - Slot slot1 = (Slot) this.e.get(i); - - if (slot1 != null) { - slot1.d(); - ItemStack itemstack2 = slot1.getItem(); - ItemStack itemstack3 = playerinventory.l(); - - if (itemstack2 != null) { - itemstack = itemstack2.cloneItemStack(); - } - - int l; - - if (itemstack2 == null) { - if (itemstack3 != null && slot1.isAllowed(itemstack3)) { - l = j == 0 ? itemstack3.count : 1; - if (l > slot1.a()) { - l = slot1.a(); - } - - slot1.c(itemstack3.a(l)); - if (itemstack3.count == 0) { - playerinventory.b((ItemStack) null); - } - } - } else if (itemstack3 == null) { - l = j == 0 ? itemstack2.count : (itemstack2.count + 1) / 2; - ItemStack itemstack4 = slot1.a(l); - - playerinventory.b(itemstack4); - if (itemstack2.count == 0) { - slot1.c((ItemStack) null); - } - - slot1.b(playerinventory.l()); - } else if (slot1.isAllowed(itemstack3)) { - // CraftBukkit - if (itemstack2.id == itemstack3.id && (!itemstack2.usesData() || itemstack2.getData() == itemstack3.getData()) && - ((itemstack2.tag == null && itemstack3.tag == null) || (itemstack2.tag != null && itemstack2.tag.equals(itemstack3.tag)))) { - l = j == 0 ? itemstack3.count : 1; - if (l > slot1.a() - itemstack2.count) { - l = slot1.a() - itemstack2.count; - } - - if (l > itemstack3.getMaxStackSize() - itemstack2.count) { - l = itemstack3.getMaxStackSize() - itemstack2.count; - } - - itemstack3.a(l); - if (itemstack3.count == 0) { - playerinventory.b((ItemStack) null); - } - - itemstack2.count += l; - } else if (itemstack3.count <= slot1.a()) { - slot1.c(itemstack3); - playerinventory.b(itemstack2); - } - // CraftBukkit - } else if (itemstack2.id == itemstack3.id && (!itemstack2.usesData() || itemstack2.getData() == itemstack3.getData()) && - ((itemstack2.tag == null && itemstack3.tag == null) || (itemstack2 != null && itemstack2.tag.equals(itemstack3.tag)))) { - l = itemstack2.count; - if (l > 0 && l + itemstack3.count <= itemstack3.getMaxStackSize()) { - itemstack3.count += l; - itemstack2.a(l); - if (itemstack2.count == 0) { - slot1.c((ItemStack) null); - } - - slot1.b(playerinventory.l()); - } - } - } - } - } - - return itemstack; - } - } - - protected void b(int i, int j, boolean flag, EntityHuman entityhuman) { - this.a(i, j, flag, entityhuman); - } - - public void a(EntityHuman entityhuman) { - PlayerInventory playerinventory = entityhuman.inventory; - - if (playerinventory.l() != null) { - entityhuman.b(playerinventory.l()); - playerinventory.b((ItemStack) null); - } - } - - public void a(IInventory iinventory) { - this.a(); - } - - public void a(int i, ItemStack itemstack) { - this.b(i).c(itemstack); - } - - public boolean c(EntityHuman entityhuman) { - return !this.b.contains(entityhuman); - } - - public void a(EntityHuman entityhuman, boolean flag) { - if (flag) { - this.b.remove(entityhuman); - } else { - this.b.add(entityhuman); - } - } - - public abstract boolean b(EntityHuman entityhuman); - - protected boolean a(ItemStack itemstack, int i, int j, boolean flag) { - boolean flag1 = false; - int k = i; - - if (flag) { - k = j - 1; - } - - Slot slot; - ItemStack itemstack1; - - if (itemstack.isStackable()) { - while (itemstack.count > 0 && (!flag && k < j || flag && k >= i)) { - slot = (Slot) this.e.get(k); - itemstack1 = slot.getItem(); - if (itemstack1 != null && itemstack1.id == itemstack.id && (!itemstack.usesData() || itemstack.getData() == itemstack1.getData())) { - int l = itemstack1.count + itemstack.count; - - if (l <= itemstack.getMaxStackSize()) { - itemstack.count = 0; - itemstack1.count = l; - slot.d(); - flag1 = true; - } else if (itemstack1.count < itemstack.getMaxStackSize()) { - itemstack.count -= itemstack.getMaxStackSize() - itemstack1.count; - itemstack1.count = itemstack.getMaxStackSize(); - slot.d(); - flag1 = true; - } - } - - if (flag) { - --k; - } else { - ++k; - } - } - } - - if (itemstack.count > 0) { - if (flag) { - k = j - 1; - } else { - k = i; - } - - while (!flag && k < j || flag && k >= i) { - slot = (Slot) this.e.get(k); - itemstack1 = slot.getItem(); - if (itemstack1 == null) { - slot.c(itemstack.cloneItemStack()); - slot.d(); - itemstack.count = 0; - flag1 = true; - break; - } - - if (flag) { - --k; - } else { - ++k; - } - } - } - - return flag1; - } -} diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java index c306818bd3..45923c1313 100644 --- a/src/main/java/net/minecraft/server/CraftingManager.java +++ b/src/main/java/net/minecraft/server/CraftingManager.java @@ -75,7 +75,7 @@ public class CraftingManager { this.registerShapedRecipe(new ItemStack(Block.STONE_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), Block.SMOOTH_BRICK}); this.registerShapedRecipe(new ItemStack(Block.NETHER_BRICK_STAIRS, 4), new Object[] { "# ", "## ", "###", Character.valueOf('#'), Block.NETHER_BRICK}); this.registerShapedRecipe(new ItemStack(Item.PAINTING, 1), new Object[] { "###", "#X#", "###", Character.valueOf('#'), Item.STICK, Character.valueOf('X'), Block.WOOL}); - this.registerShapedRecipe(new ItemStack(Item.GOLDEN_APPLE, 1), new Object[] { "###", "#X#", "###", Character.valueOf('#'), Block.GOLD_BLOCK, Character.valueOf('X'), Item.APPLE}); + this.registerShapedRecipe(new ItemStack(Item.GOLDEN_APPLE, 1), new Object[] { "###", "#X#", "###", Character.valueOf('#'), Item.GOLD_NUGGET, Character.valueOf('X'), Item.APPLE}); this.registerShapedRecipe(new ItemStack(Block.LEVER, 1), new Object[] { "X", "#", Character.valueOf('#'), Block.COBBLESTONE, Character.valueOf('X'), Item.STICK}); this.registerShapedRecipe(new ItemStack(Block.REDSTONE_TORCH_ON, 1), new Object[] { "X", "#", Character.valueOf('#'), Item.STICK, Character.valueOf('X'), Item.REDSTONE}); this.registerShapedRecipe(new ItemStack(Item.DIODE, 1), new Object[] { "#X#", "III", Character.valueOf('#'), Block.REDSTONE_TORCH_ON, Character.valueOf('X'), Item.REDSTONE, Character.valueOf('I'), Block.STONE}); diff --git a/src/main/java/net/minecraft/server/Enchantment.java b/src/main/java/net/minecraft/server/Enchantment.java index 5975439fa4..90efb7ae4d 100644 --- a/src/main/java/net/minecraft/server/Enchantment.java +++ b/src/main/java/net/minecraft/server/Enchantment.java @@ -22,6 +22,10 @@ public abstract class Enchantment { public static final Enchantment SILK_TOUCH = new EnchantmentSilkTouch(33, 1); public static final Enchantment DURABILITY = new EnchantmentDurability(34, 5); public static final Enchantment LOOT_BONUS_BLOCKS = new EnchantmentLootBonus(35, 2, EnchantmentSlotType.DIGGER); + public static final Enchantment ARROW_DAMAGE = new EnchantmentArrowDamage(48, 10); + public static final Enchantment ARROW_KNOCKBACK = new EnchantmentArrowKnockback(49, 2); + public static final Enchantment ARROW_FIRE = new EnchantmentFlameArrows(50, 2); + public static final Enchantment ARROW_INFINITE = new EnchantmentInfiniteArrows(51, 1); public final int id; private final int weight; public EnchantmentSlotType slot; diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java deleted file mode 100644 index 123a5d638e..0000000000 --- a/src/main/java/net/minecraft/server/EnchantmentManager.java +++ /dev/null @@ -1,242 +0,0 @@ -package net.minecraft.server; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; - -public class EnchantmentManager { - - private static final Random random = new Random(); - private static final EnchantmentModifierProtection b = new EnchantmentModifierProtection((EmptyClass3) null); - private static final EnchantmentModifierDamage c = new EnchantmentModifierDamage((EmptyClass3) null); - - public EnchantmentManager() {} - - public static int getEnchantmentLevel(int i, ItemStack itemstack) { // CraftBukkit - priv to pub - if (itemstack == null) { - return 0; - } else { - NBTTagList nbttaglist = itemstack.getEnchantments(); - - if (nbttaglist == null) { - return 0; - } else { - for (int j = 0; j < nbttaglist.size(); ++j) { - short short1 = ((NBTTagCompound) nbttaglist.get(j)).getShort("id"); - short short2 = ((NBTTagCompound) nbttaglist.get(j)).getShort("lvl"); - - if (short1 == i) { - return short2; - } - } - - return 0; - } - } - } - - private static int getEnchantmentLevel(int i, ItemStack[] aitemstack) { - int j = 0; - ItemStack[] aitemstack1 = aitemstack; - int k = aitemstack.length; - - for (int l = 0; l < k; ++l) { - ItemStack itemstack = aitemstack1[l]; - int i1 = getEnchantmentLevel(i, itemstack); - - if (i1 > j) { - j = i1; - } - } - - return j; - } - - private static void a(EnchantmentModifier enchantmentmodifier, ItemStack itemstack) { - if (itemstack != null) { - NBTTagList nbttaglist = itemstack.getEnchantments(); - - if (nbttaglist != null) { - for (int i = 0; i < nbttaglist.size(); ++i) { - short short1 = ((NBTTagCompound) nbttaglist.get(i)).getShort("id"); - short short2 = ((NBTTagCompound) nbttaglist.get(i)).getShort("lvl"); - - if (Enchantment.byId[short1] != null) { - enchantmentmodifier.a(Enchantment.byId[short1], short2); - } - } - } - } - } - - private static void a(EnchantmentModifier enchantmentmodifier, ItemStack[] aitemstack) { - ItemStack[] aitemstack1 = aitemstack; - int i = aitemstack.length; - - for (int j = 0; j < i; ++j) { - ItemStack itemstack = aitemstack1[j]; - - a(enchantmentmodifier, itemstack); - } - } - - public static int a(PlayerInventory playerinventory, DamageSource damagesource) { - b.a = 0; - b.b = damagesource; - a((EnchantmentModifier) b, playerinventory.armor); - if (b.a > 25) { - b.a = 25; - } - - return (b.a + 1 >> 1) + random.nextInt((b.a >> 1) + 1); - } - - public static int a(PlayerInventory playerinventory, EntityLiving entityliving) { - c.a = 0; - c.b = entityliving; - a((EnchantmentModifier) c, playerinventory.getItemInHand()); - return c.a > 0 ? 1 + random.nextInt(c.a) : 0; - } - - public static int getKnockbackEnchantmentLevel(PlayerInventory playerinventory, EntityLiving entityliving) { - return getEnchantmentLevel(Enchantment.KNOCKBACK.id, playerinventory.getItemInHand()); - } - - public static int getFireAspectEnchantmentLevel(PlayerInventory playerinventory, EntityLiving entityliving) { - return getEnchantmentLevel(Enchantment.FIRE_ASPECT.id, playerinventory.getItemInHand()); - } - - public static int getOxygenEnchantmentLevel(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.OXYGEN.id, playerinventory.armor); - } - - public static int getDigSpeedEnchantmentLevel(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.DIG_SPEED.id, playerinventory.getItemInHand()); - } - - public static int getDurabilityEnchantmentLevel(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.DURABILITY.id, playerinventory.getItemInHand()); - } - - public static boolean hasSilkTouchEnchantment(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.SILK_TOUCH.id, playerinventory.getItemInHand()) > 0; - } - - public static int getBonusBlockLootEnchantmentLevel(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS.id, playerinventory.getItemInHand()); - } - - public static int getBonusMonsterLootEnchantmentLevel(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS.id, playerinventory.getItemInHand()); - } - - public static boolean hasWaterWorkerEnchantment(PlayerInventory playerinventory) { - return getEnchantmentLevel(Enchantment.WATER_WORKER.id, playerinventory.armor) > 0; - } - - public static int a(Random random, int i, int j, ItemStack itemstack) { - Item item = itemstack.getItem(); - int k = item.c(); - - if (k <= 0) { - return 0; - } else { - if (j > 30) { - j = 30; - } - - j = 1 + random.nextInt((j >> 1) + 1) + random.nextInt(j + 1); - int l = random.nextInt(5) + j; - - return i == 0 ? (l >> 1) + 1 : (i == 1 ? l * 2 / 3 + 1 : l); - } - } - - public static List a(Random random, ItemStack itemstack, int i) { - Item item = itemstack.getItem(); - int j = item.c(); - - if (j <= 0) { - return null; - } else { - j = 1 + random.nextInt((j >> 1) + 1) + random.nextInt((j >> 1) + 1); - int k = j + i; - float f = (random.nextFloat() + random.nextFloat() - 1.0F) * 0.25F; - int l = (int) ((float) k * (1.0F + f) + 0.5F); - ArrayList arraylist = null; - Map map = a(l, itemstack); - - if (map != null && !map.isEmpty()) { - EnchantmentInstance enchantmentinstance = (EnchantmentInstance) WeightedRandom.a(random, map.values()); - - if (enchantmentinstance != null) { - arraylist = new ArrayList(); - arraylist.add(enchantmentinstance); - - for (int i1 = l >> 1; random.nextInt(50) <= i1; i1 >>= 1) { - Iterator iterator = map.keySet().iterator(); - - while (iterator.hasNext()) { - Integer integer = (Integer) iterator.next(); - boolean flag = true; - Iterator iterator1 = arraylist.iterator(); - - while (true) { - if (iterator1.hasNext()) { - EnchantmentInstance enchantmentinstance1 = (EnchantmentInstance) iterator1.next(); - - if (enchantmentinstance1.a.a(Enchantment.byId[integer.intValue()])) { - continue; - } - - flag = false; - } - - if (!flag) { - iterator.remove(); - } - break; - } - } - - if (!map.isEmpty()) { - EnchantmentInstance enchantmentinstance2 = (EnchantmentInstance) WeightedRandom.a(random, map.values()); - - arraylist.add(enchantmentinstance2); - } - } - } - } - - return arraylist; - } - } - - public static Map a(int i, ItemStack itemstack) { - Item item = itemstack.getItem(); - HashMap hashmap = null; - Enchantment[] aenchantment = Enchantment.byId; - int j = aenchantment.length; - - for (int k = 0; k < j; ++k) { - Enchantment enchantment = aenchantment[k]; - - if (enchantment != null && enchantment.slot.canEnchant(item)) { - for (int l = enchantment.getStartLevel(); l <= enchantment.getMaxLevel(); ++l) { - if (i >= enchantment.a(l) && i <= enchantment.b(l)) { - if (hashmap == null) { - hashmap = new HashMap(); - } - - hashmap.put(Integer.valueOf(enchantment.id), new EnchantmentInstance(enchantment, l)); - } - } - } - } - - return hashmap; - } -} diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index 2d04e111ed..4f32d11749 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -28,8 +28,8 @@ public abstract class Entity { private static int entityCount = 0; public int id; - public double bb; - public boolean bc; + public double be; + public boolean bf; public Entity passenger; public Entity vehicle; public World world; @@ -49,76 +49,76 @@ public abstract class Entity { public final AxisAlignedBB boundingBox; public boolean onGround; public boolean positionChanged; - public boolean bw; - public boolean bx; - public boolean velocityChanged; - protected boolean bz; + public boolean bz; public boolean bA; + public boolean velocityChanged; + protected boolean bC; + public boolean bD; public boolean dead; public float height; public float width; public float length; - public float bF; - public float bG; + public float bI; + public float bJ; public float fallDistance; // CraftBukkit - private -> public private int b; - public double bI; - public double bJ; - public double bK; - public float bL; - public float bM; - public boolean bN; + public double bL; + public double bM; + public double bN; public float bO; + public float bP; + public boolean bQ; + public float bR; protected Random random; public int ticksLived; public int maxFireTicks; public int fireTicks; // CraftBukkit - private -> public - protected boolean bS; + protected boolean bV; public int noDamageTicks; private boolean justCreated; protected boolean fireProof; protected DataWatcher datawatcher; private double e; private double f; - public boolean bW; - public int bX; - public int bY; - public int bZ; - public boolean ca; - public boolean cb; + public boolean bZ; + public int ca; + public int cb; + public int cc; + public boolean cd; + public boolean ce; public UUID uniqueId = UUID.randomUUID(); // CraftBukkit public Entity(World world) { this.id = entityCount++; - this.bb = 1.0D; - this.bc = false; + this.be = 1.0D; + this.bf = false; this.boundingBox = AxisAlignedBB.a(0.0D, 0.0D, 0.0D, 0.0D, 0.0D, 0.0D); this.onGround = false; - this.bx = false; + this.bA = false; this.velocityChanged = false; - this.bA = true; + this.bD = true; this.dead = false; this.height = 0.0F; this.width = 0.6F; this.length = 1.8F; - this.bF = 0.0F; - this.bG = 0.0F; + this.bI = 0.0F; + this.bJ = 0.0F; this.fallDistance = 0.0F; this.b = 1; - this.bL = 0.0F; - this.bM = 0.0F; - this.bN = false; this.bO = 0.0F; + this.bP = 0.0F; + this.bQ = false; + this.bR = 0.0F; this.random = new Random(); this.ticksLived = 0; this.maxFireTicks = 1; this.fireTicks = 0; - this.bS = false; + this.bV = false; this.noDamageTicks = 0; this.justCreated = true; this.fireProof = false; this.datawatcher = new DataWatcher(); - this.bW = false; + this.bZ = false; this.world = world; this.setPosition(0.0D, 0.0D, 0.0D); this.datawatcher.a(0, Byte.valueOf((byte) 0)); @@ -188,21 +188,21 @@ public abstract class Entity { float f = this.width / 2.0F; float f1 = this.length; - this.boundingBox.c(d0 - (double) f, d1 - (double) this.height + (double) this.bL, d2 - (double) f, d0 + (double) f, d1 - (double) this.height + (double) this.bL + (double) f1, d2 + (double) f); + this.boundingBox.c(d0 - (double) f, d1 - (double) this.height + (double) this.bO, d2 - (double) f, d0 + (double) f, d1 - (double) this.height + (double) this.bO + (double) f1, d2 + (double) f); } - public void w_() { - this.af(); + public void y_() { + this.am(); } - public void af() { + public void am() { // MethodProfiler.a("entityBaseTick"); // CraftBukkit - not in production code if (this.vehicle != null && this.vehicle.dead) { this.vehicle = null; } ++this.ticksLived; - this.bF = this.bG; + this.bI = this.bJ; this.lastX = this.locX; this.lastY = this.locY; this.lastZ = this.locZ; @@ -223,7 +223,7 @@ public abstract class Entity { } if (this.i_()) { - if (!this.bS && !this.justCreated) { + if (!this.bV && !this.justCreated) { float f = MathHelper.a(this.motX * this.motX * 0.20000000298023224D + this.motY * this.motY + this.motZ * this.motZ * 0.20000000298023224D) * 0.2F; if (f > 1.0F) { @@ -250,10 +250,10 @@ public abstract class Entity { } this.fallDistance = 0.0F; - this.bS = true; + this.bV = true; this.fireTicks = 0; } else { - this.bS = false; + this.bV = false; } if (this.world.isStatic) { @@ -284,13 +284,13 @@ public abstract class Entity { } } - if (this.aA()) { - this.av(); + if (this.aL()) { + this.aG(); this.fallDistance *= 0.5F; } if (this.locY < -64.0D) { - this.ao(); + this.az(); } if (!this.world.isStatic) { @@ -302,7 +302,7 @@ public abstract class Entity { // MethodProfiler.a(); // CraftBukkit - not in production code } - protected void av() { + protected void aG() { if (!this.fireProof) { // CraftBukkit start - fallen in lava TODO: this event spams! if (this instanceof EntityLiving) { @@ -352,7 +352,7 @@ public abstract class Entity { this.fireTicks = 0; } - protected void ao() { + protected void az() { this.die(); } @@ -364,19 +364,19 @@ public abstract class Entity { } public void move(double d0, double d1, double d2) { - if (this.bN) { + if (this.bQ) { this.boundingBox.d(d0, d1, d2); this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D; - this.locY = this.boundingBox.b + (double) this.height - (double) this.bL; + this.locY = this.boundingBox.b + (double) this.height - (double) this.bO; this.locZ = (this.boundingBox.c + this.boundingBox.f) / 2.0D; } else { // MethodProfiler.a("move"); // CraftBukkit - not in production code - this.bL *= 0.4F; + this.bO *= 0.4F; double d3 = this.locX; double d4 = this.locZ; - if (this.bz) { - this.bz = false; + if (this.bC) { + this.bC = false; d0 *= 0.25D; d1 *= 0.05000000074505806D; d2 *= 0.25D; @@ -422,7 +422,7 @@ public abstract class Entity { } this.boundingBox.d(0.0D, d1, 0.0D); - if (!this.bA && d6 != d1) { + if (!this.bD && d6 != d1) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; @@ -437,7 +437,7 @@ public abstract class Entity { } this.boundingBox.d(d0, 0.0D, 0.0D); - if (!this.bA && d5 != d0) { + if (!this.bD && d5 != d0) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; @@ -448,7 +448,7 @@ public abstract class Entity { } this.boundingBox.d(0.0D, 0.0D, d2); - if (!this.bA && d7 != d2) { + if (!this.bD && d7 != d2) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; @@ -458,13 +458,13 @@ public abstract class Entity { double d10; int k; - if (this.bM > 0.0F && flag1 && (flag || this.bL < 0.05F) && (d5 != d0 || d7 != d2)) { + if (this.bP > 0.0F && flag1 && (flag || this.bO < 0.05F) && (d5 != d0 || d7 != d2)) { d9 = d0; d10 = d1; double d11 = d2; d0 = d5; - d1 = (double) this.bM; + d1 = (double) this.bP; d2 = d7; AxisAlignedBB axisalignedbb1 = this.boundingBox.clone(); @@ -476,7 +476,7 @@ public abstract class Entity { } this.boundingBox.d(0.0D, d1, 0.0D); - if (!this.bA && d6 != d1) { + if (!this.bD && d6 != d1) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; @@ -487,7 +487,7 @@ public abstract class Entity { } this.boundingBox.d(d0, 0.0D, 0.0D); - if (!this.bA && d5 != d0) { + if (!this.bD && d5 != d0) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; @@ -498,18 +498,18 @@ public abstract class Entity { } this.boundingBox.d(0.0D, 0.0D, d2); - if (!this.bA && d7 != d2) { + if (!this.bD && d7 != d2) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; } - if (!this.bA && d6 != d1) { + if (!this.bD && d6 != d1) { d2 = 0.0D; d1 = 0.0D; d0 = 0.0D; } else { - d1 = (double) (-this.bM); + d1 = (double) (-this.bP); for (k = 0; k < list.size(); ++k) { d1 = ((AxisAlignedBB) list.get(k)).b(this.boundingBox, d1); @@ -527,7 +527,7 @@ public abstract class Entity { double d12 = this.boundingBox.b - (double) ((int) this.boundingBox.b); if (d12 > 0.0D) { - this.bL = (float) ((double) this.bL + d12 + 0.01D); + this.bO = (float) ((double) this.bO + d12 + 0.01D); } } } @@ -535,12 +535,12 @@ public abstract class Entity { // MethodProfiler.a(); // CraftBukkit - not in production code // MethodProfiler.a("rest"); // CraftBukkit - not in production code this.locX = (this.boundingBox.a + this.boundingBox.d) / 2.0D; - this.locY = this.boundingBox.b + (double) this.height - (double) this.bL; + this.locY = this.boundingBox.b + (double) this.height - (double) this.bO; this.locZ = (this.boundingBox.c + this.boundingBox.f) / 2.0D; this.positionChanged = d5 != d0 || d7 != d2; - this.bw = d6 != d1; + this.bz = d6 != d1; this.onGround = d6 != d1 && d6 < 0.0D; - this.bx = this.positionChanged || this.bw; + this.bA = this.positionChanged || this.bz; this.a(d1, this.onGround); if (d5 != d0) { this.motX = 0.0D; @@ -581,7 +581,7 @@ public abstract class Entity { // CraftBukkit end if (this.g_() && !flag && this.vehicle == null) { - this.bG = (float) ((double) this.bG + (double) MathHelper.a(d9 * d9 + d10 * d10) * 0.6D); + this.bJ = (float) ((double) this.bJ + (double) MathHelper.a(d9 * d9 + d10 * d10) * 0.6D); l = MathHelper.floor(this.locX); i1 = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height); j1 = MathHelper.floor(this.locZ); @@ -590,8 +590,8 @@ public abstract class Entity { k = this.world.getTypeId(l, i1 - 1, j1); } - if (this.bG > (float) this.b && k > 0) { - this.b = (int) this.bG + 1; + if (this.bJ > (float) this.b && k > 0) { + this.b = (int) this.bJ + 1; this.a(l, i1, j1, k); Block.byId[k].b(this.world, l, i1, j1, this); } @@ -618,7 +618,7 @@ public abstract class Entity { } } - boolean flag2 = this.ay(); + boolean flag2 = this.aJ(); if (this.world.d(this.boundingBox.shrink(0.0010D, 0.0010D, 0.0010D))) { this.burn(1); @@ -668,6 +668,21 @@ public abstract class Entity { protected void a(double d0, boolean flag) { if (flag) { if (this.fallDistance > 0.0F) { + if (this instanceof EntityLiving) { + int i = MathHelper.floor(this.locX); + int j = MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height); + int k = MathHelper.floor(this.locZ); + int l = this.world.getTypeId(i, j, k); + + if (l == 0 && this.world.getTypeId(i, j - 1, k) == Block.FENCE.id) { + l = this.world.getTypeId(i, j - 1, k); + } + + if (l > 0) { + Block.byId[l].a(this.world, i, j, k, this, this.fallDistance); + } + } + this.b(this.fallDistance); this.fallDistance = 0.0F; } @@ -708,12 +723,12 @@ public abstract class Entity { } } - public boolean ay() { - return this.bS || this.world.v(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)); + public boolean aJ() { + return this.bV || this.world.v(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)); } - public boolean az() { - return this.bS; + public boolean aK() { + return this.bV; } public boolean i_() { @@ -721,7 +736,7 @@ public abstract class Entity { } public boolean a(Material material) { - double d0 = this.locY + (double) this.x(); + double d0 = this.locY + (double) this.y(); int i = MathHelper.floor(this.locX); int j = MathHelper.d((float) MathHelper.floor(d0)); int k = MathHelper.floor(this.locZ); @@ -737,11 +752,11 @@ public abstract class Entity { } } - public float x() { + public float y() { return 0.0F; } - public boolean aA() { + public boolean aL() { return this.world.a(this.boundingBox.grow(-0.10000000149011612D, -0.4000000059604645D, -0.10000000149011612D), Material.LAVA); } @@ -795,7 +810,7 @@ public abstract class Entity { this.lastZ = this.locZ = d2; this.lastYaw = this.yaw = f; this.lastPitch = this.pitch = f1; - this.bL = 0.0F; + this.bO = 0.0F; double d3 = (double) (this.lastYaw - f); if (d3 < -180.0D) { @@ -811,9 +826,9 @@ public abstract class Entity { } public void setPositionRotation(double d0, double d1, double d2, float f, float f1) { - this.bI = this.lastX = this.locX = d0; - this.bJ = this.lastY = this.locY = d1 + (double) this.height; - this.bK = this.lastZ = this.locZ = d2; + this.bL = this.lastX = this.locX = d0; + this.bM = this.lastY = this.locY = d1 + (double) this.height; + this.bN = this.lastZ = this.locZ = d2; this.yaw = f; this.pitch = f1; this.setPosition(this.locX, this.locY, this.locZ); @@ -873,8 +888,8 @@ public abstract class Entity { d1 *= d3; d0 *= 0.05000000074505806D; d1 *= 0.05000000074505806D; - d0 *= (double) (1.0F - this.bO); - d1 *= (double) (1.0F - this.bO); + d0 *= (double) (1.0F - this.bR); + d1 *= (double) (1.0F - this.bR); this.b_(-d0, 0.0D, -d1); entity.b_(d0, 0.0D, d1); } @@ -885,15 +900,15 @@ public abstract class Entity { this.motX += d0; this.motY += d1; this.motZ += d2; - this.cb = true; + this.ce = true; } - protected void aB() { + protected void aM() { this.velocityChanged = true; } public boolean damageEntity(DamageSource damagesource, int i) { - this.aB(); + this.aM(); return false; } @@ -908,7 +923,7 @@ public abstract class Entity { public void b(Entity entity, int i) {} public boolean c(NBTTagCompound nbttagcompound) { - String s = this.aC(); + String s = this.aN(); if (!this.dead && s != null) { nbttagcompound.setString("id", s); @@ -920,7 +935,7 @@ public abstract class Entity { } public void d(NBTTagCompound nbttagcompound) { - nbttagcompound.set("Pos", this.a(new double[] { this.locX, this.locY + (double) this.bL, this.locZ})); + nbttagcompound.set("Pos", this.a(new double[] { this.locX, this.locY + (double) this.bO, this.locZ})); nbttagcompound.set("Motion", this.a(new double[] { this.motX, this.motY, this.motZ})); // CraftBukkit start - checking for NaN pitch/yaw and resetting to zero @@ -970,9 +985,9 @@ public abstract class Entity { } // CraftBukkit end */ - this.lastX = this.bI = this.locX = ((NBTTagDouble) nbttaglist.get(0)).data; - this.lastY = this.bJ = this.locY = ((NBTTagDouble) nbttaglist.get(1)).data; - this.lastZ = this.bK = this.locZ = ((NBTTagDouble) nbttaglist.get(2)).data; + this.lastX = this.bL = this.locX = ((NBTTagDouble) nbttaglist.get(0)).data; + this.lastY = this.bM = this.locY = ((NBTTagDouble) nbttaglist.get(1)).data; + this.lastZ = this.bN = this.locZ = ((NBTTagDouble) nbttaglist.get(2)).data; this.lastYaw = this.yaw = ((NBTTagFloat) nbttaglist2.get(0)).data; this.lastPitch = this.pitch = ((NBTTagFloat) nbttaglist2.get(1)).data; this.fallDistance = nbttagcompound.getFloat("FallDistance"); @@ -1033,7 +1048,7 @@ public abstract class Entity { // CraftBukkit end } - protected final String aC() { + protected final String aN() { return EntityTypes.b(this); } @@ -1089,13 +1104,13 @@ public abstract class Entity { return !this.dead; } - public boolean T() { + public boolean U() { for (int i = 0; i < 8; ++i) { float f = ((float) ((i >> 0) % 2) - 0.5F) * this.width * 0.8F; float f1 = ((float) ((i >> 1) % 2) - 0.5F) * 0.1F; float f2 = ((float) ((i >> 2) % 2) - 0.5F) * this.width * 0.8F; int j = MathHelper.floor(this.locX + (double) f); - int k = MathHelper.floor(this.locY + (double) this.x() + (double) f1); + int k = MathHelper.floor(this.locY + (double) this.y() + (double) f1); int l = MathHelper.floor(this.locZ + (double) f2); if (this.world.e(j, k, l)) { @@ -1114,14 +1129,14 @@ public abstract class Entity { return null; } - public void M() { + public void N() { if (this.vehicle.dead) { this.vehicle = null; } else { this.motX = 0.0D; this.motY = 0.0D; this.motZ = 0.0D; - this.w_(); + this.y_(); if (this.vehicle != null) { this.vehicle.i(); this.f += (double) (this.vehicle.yaw - this.vehicle.lastYaw); @@ -1171,10 +1186,10 @@ public abstract class Entity { } public void i() { - this.passenger.setPosition(this.locX, this.locY + this.q() + this.passenger.R(), this.locZ); + this.passenger.setPosition(this.locX, this.locY + this.q() + this.passenger.S(), this.locZ); } - public double R() { + public double S() { return (double) this.height; } @@ -1259,7 +1274,7 @@ public abstract class Entity { return 0.1F; } - public Vec3D ap() { + public Vec3D aA() { return null; } @@ -1269,7 +1284,7 @@ public abstract class Entity { return null; } - public boolean z() { + public boolean A() { return this.fireTicks > 0 || this.k(0); } @@ -1289,7 +1304,7 @@ public abstract class Entity { this.a(3, flag); } - public void g(boolean flag) { + public void h(boolean flag) { this.a(4, flag); } @@ -1435,7 +1450,8 @@ public abstract class Entity { } public void s() { - this.bz = true; + this.bC = true; + this.fallDistance = 0.0F; } public String ad() { @@ -1448,7 +1464,7 @@ public abstract class Entity { return LocaleI18n.a("entity." + s + ".name"); } - public Entity[] aG() { + public Entity[] aR() { return null; } diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java index 42fc7508c1..8e93b2b13f 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -24,6 +24,8 @@ public class EntityArrow extends Entity { public Entity shooter; private int k; private int l = 0; + private double damage = 2.0D; + private int n; public boolean d = false; public EntityArrow(World world) { @@ -43,7 +45,7 @@ public class EntityArrow extends Entity { this.shooter = entityliving; this.fromPlayer = entityliving instanceof EntityHuman; this.b(0.5F, 0.5F); - this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.x(), entityliving.locZ, entityliving.yaw, entityliving.pitch); + this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.y(), entityliving.locZ, entityliving.yaw, entityliving.pitch); this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locY -= 0.10000000149011612D; this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F); @@ -79,8 +81,8 @@ public class EntityArrow extends Entity { this.k = 0; } - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (this.lastPitch == 0.0F && this.lastYaw == 0.0F) { float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ); @@ -171,7 +173,7 @@ public class EntityArrow extends Entity { // CraftBukkit end if (movingobjectposition.entity != null) { f2 = MathHelper.a(this.motX * this.motX + this.motY * this.motY + this.motZ * this.motZ); - int l = (int) Math.ceil((double) f2 * 2.0D); + int l = (int) Math.ceil((double) f2 * this.damage); if (this.d) { l += this.random.nextInt(l / 2 + 2); @@ -185,6 +187,10 @@ public class EntityArrow extends Entity { damagesource = DamageSource.arrow(this, this.shooter); } + if (this.A()) { + movingobjectposition.entity.setOnFire(5); + } + // CraftBukkit start boolean stick; if (entity instanceof EntityLiving) { @@ -207,7 +213,14 @@ public class EntityArrow extends Entity { if (stick) { // CraftBukkit end if (movingobjectposition.entity instanceof EntityLiving) { - ++((EntityLiving) movingobjectposition.entity).aH; + ++((EntityLiving) movingobjectposition.entity).aJ; + if (this.n > 0) { + float f3 = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ); + + if (f3 > 0.0F) { + movingobjectposition.entity.b_(this.motX * (double) this.n * 0.6000000238418579D / (double) f3, 0.1D, this.motZ * (double) this.n * 0.6000000238418579D / (double) f3); + } + } } this.world.makeSound(this, "random.bowhit", 1.0F, 1.2F / (this.random.nextFloat() * 0.2F + 0.9F)); @@ -270,22 +283,22 @@ public class EntityArrow extends Entity { this.pitch = this.lastPitch + (this.pitch - this.lastPitch) * 0.2F; this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F; - float f3 = 0.99F; + float f4 = 0.99F; f1 = 0.05F; - if (this.az()) { + if (this.aK()) { for (int i1 = 0; i1 < 4; ++i1) { - float f4 = 0.25F; + float f5 = 0.25F; - this.world.a("bubble", this.locX - this.motX * (double) f4, this.locY - this.motY * (double) f4, this.locZ - this.motZ * (double) f4, this.motX, this.motY, this.motZ); + this.world.a("bubble", this.locX - this.motX * (double) f5, this.locY - this.motY * (double) f5, this.locZ - this.motZ * (double) f5, this.motX, this.motY, this.motZ); } - f3 = 0.8F; + f4 = 0.8F; } - this.motX *= (double) f3; - this.motY *= (double) f3; - this.motZ *= (double) f3; + this.motX *= (double) f4; + this.motY *= (double) f4; + this.motZ *= (double) f4; this.motY -= (double) f1; this.setPosition(this.locX, this.locY, this.locZ); } @@ -300,6 +313,7 @@ public class EntityArrow extends Entity { nbttagcompound.setByte("shake", (byte) this.shake); nbttagcompound.setByte("inGround", (byte) (this.inGround ? 1 : 0)); nbttagcompound.setBoolean("player", this.fromPlayer); + nbttagcompound.setDouble("damage", this.damage); } public void a(NBTTagCompound nbttagcompound) { @@ -311,6 +325,9 @@ public class EntityArrow extends Entity { this.shake = nbttagcompound.getByte("shake") & 255; this.inGround = nbttagcompound.getByte("inGround") == 1; this.fromPlayer = nbttagcompound.getBoolean("player"); + if (nbttagcompound.hasKey("damage")) { + this.damage = nbttagcompound.getDouble("damage"); + } } public void a_(EntityHuman entityhuman) { @@ -336,4 +353,16 @@ public class EntityArrow extends Entity { } } } + + public void a(double d0) { + this.damage = d0; + } + + public double j() { + return this.damage; + } + + public void b(int i) { + this.n = i; + } } diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java index 5ea66151c5..44cd3b29fe 100644 --- a/src/main/java/net/minecraft/server/EntityBlaze.java +++ b/src/main/java/net/minecraft/server/EntityBlaze.java @@ -14,7 +14,7 @@ public class EntityBlaze extends EntityMonster { this.texture = "/mob/fire.png"; this.fireProof = true; this.damage = 6; - this.az = 10; + this.aA = 10; } public int getMaxHealth() { @@ -52,7 +52,7 @@ public class EntityBlaze extends EntityMonster { public void d() { if (!this.world.isStatic) { - if (this.ay()) { + if (this.aJ()) { this.damageEntity(DamageSource.DROWN, 1); } @@ -62,7 +62,7 @@ public class EntityBlaze extends EntityMonster { this.a = 0.5F + (float) this.random.nextGaussian() * 3.0F; } - if (this.E() != null && this.E().locY + (double) this.E().x() > this.locY + (double) this.x() + (double) this.a) { + if (this.F() != null && this.F().locY + (double) this.F().y() > this.locY + (double) this.y() + (double) this.a) { this.motY += (0.30000001192092896D - this.motY) * 0.30000001192092896D; } } @@ -137,8 +137,8 @@ public class EntityBlaze extends EntityMonster { return Item.BLAZE_ROD.id; } - public boolean z() { - return this.A(); + public boolean A() { + return this.B(); } protected void dropDeathLoot(boolean flag, int i) { @@ -156,7 +156,7 @@ public class EntityBlaze extends EntityMonster { } } - public boolean A() { + public boolean B() { return (this.datawatcher.getByte(16) & 1) != 0; } @@ -172,7 +172,7 @@ public class EntityBlaze extends EntityMonster { this.datawatcher.watch(16, Byte.valueOf(b0)); } - protected boolean y() { + protected boolean z() { return true; } } diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java index 347b0f3f6c..f88870b7b5 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -46,7 +46,7 @@ public class EntityBoat extends Entity { public EntityBoat(World world) { super(world); - this.bc = true; + this.bf = true; this.b(1.5F, 0.6F); this.height = this.length / 2.0F; } @@ -108,7 +108,7 @@ public class EntityBoat extends Entity { this.d(-this.l()); this.c(10); this.setDamage(this.getDamage() + i * 10); - this.aB(); + this.aM(); if (this.getDamage() > 40) { // CraftBukkit start VehicleDestroyEvent destroyEvent = new VehicleDestroyEvent(vehicle, attacker); @@ -147,7 +147,7 @@ public class EntityBoat extends Entity { return !this.dead; } - public void w_() { + public void y_() { // CraftBukkit start double prevX = this.locX; double prevY = this.locY; @@ -156,7 +156,7 @@ public class EntityBoat extends Entity { float prevPitch = this.pitch; // CraftBukkit end - super.w_(); + super.y_(); if (this.k() > 0) { this.c(this.k() - 1); } @@ -407,7 +407,7 @@ public class EntityBoat extends Entity { double d0 = Math.cos((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D; double d1 = Math.sin((double) this.yaw * 3.141592653589793D / 180.0D) * 0.4D; - this.passenger.setPosition(this.locX + d0, this.locY + this.q() + this.passenger.R(), this.locZ + d1); + this.passenger.setPosition(this.locX + d0, this.locY + this.q() + this.passenger.S(), this.locZ + d1); } } diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java index 9b67a5cffb..0f0cb69ae2 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -91,7 +91,7 @@ public class EntityChicken extends EntityAnimal { loot.add(new org.bukkit.inventory.ItemStack(Item.FEATHER.id, j)); } - if (this.z()) { + if (this.A()) { loot.add(new org.bukkit.inventory.ItemStack(Item.COOKED_CHICKEN.id, 1)); } else { loot.add(new org.bukkit.inventory.ItemStack(Item.RAW_CHICKEN.id, 1)); diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java index 9700fe863d..3626f2e389 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -61,7 +61,7 @@ public class EntityCow extends EntityAnimal { j = this.random.nextInt(3) + 1 + this.random.nextInt(1 + i); if (j > 0) { - loot.add(new org.bukkit.inventory.ItemStack(this.z() ? Item.COOKED_BEEF.id : Item.RAW_BEEF.id, j)); + loot.add(new org.bukkit.inventory.ItemStack(this.A() ? Item.COOKED_BEEF.id : Item.RAW_BEEF.id, j)); } CraftEventFactory.callEntityDeathEvent(this, loot); diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java index a974890de1..62b0aa3c2a 100644 --- a/src/main/java/net/minecraft/server/EntityCreature.java +++ b/src/main/java/net/minecraft/server/EntityCreature.java @@ -17,7 +17,7 @@ public abstract class EntityCreature extends EntityLiving { super(world); } - protected boolean w() { + protected boolean v() { return false; } @@ -27,7 +27,7 @@ public abstract class EntityCreature extends EntityLiving { --this.f; } - this.e = this.w(); + this.e = this.v(); float f = 16.0F; if (this.target == null) { @@ -76,13 +76,13 @@ public abstract class EntityCreature extends EntityLiving { // MethodProfiler.a(); // CraftBukkit - not in production code if (!this.e && this.target != null && (this.pathEntity == null || this.random.nextInt(20) == 0)) { this.pathEntity = this.world.findPath(this, this.target, f); - } else if (!this.e && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.f > 0) && this.aS < 100) { - this.C(); + } else if (!this.e && (this.pathEntity == null && this.random.nextInt(180) == 0 || this.random.nextInt(120) == 0 || this.f > 0) && this.aV < 100) { + this.D(); } int i = MathHelper.floor(this.boundingBox.b + 0.5D); - boolean flag = this.az(); - boolean flag1 = this.aA(); + boolean flag = this.aK(); + boolean flag1 = this.aL(); this.pitch = 0.0F; if (this.pathEntity != null && this.random.nextInt(100) != 0) { @@ -100,7 +100,7 @@ public abstract class EntityCreature extends EntityLiving { } } - this.aW = false; + this.aZ = false; if (vec3d != null) { double d1 = vec3d.a - this.locX; double d2 = vec3d.c - this.locZ; @@ -109,7 +109,7 @@ public abstract class EntityCreature extends EntityLiving { float f2 = (float) (TrigMath.atan2(d2, d1) * 180.0D / 3.1415927410125732D) - 90.0F; float f3 = f2 - this.yaw; - for (this.aU = this.aY; f3 < -180.0F; f3 += 360.0F) { + for (this.aX = this.bb; f3 < -180.0F; f3 += 360.0F) { ; } @@ -133,12 +133,12 @@ public abstract class EntityCreature extends EntityLiving { this.yaw = (float) (Math.atan2(d5, d4) * 180.0D / 3.1415927410125732D) - 90.0F; f3 = (f4 - this.yaw + 90.0F) * 3.1415927F / 180.0F; - this.aT = -MathHelper.sin(f3) * this.aU * 1.0F; - this.aU = MathHelper.cos(f3) * this.aU * 1.0F; + this.aW = -MathHelper.sin(f3) * this.aX * 1.0F; + this.aX = MathHelper.cos(f3) * this.aX * 1.0F; } if (d3 > 0.0D) { - this.aW = true; + this.aZ = true; } } @@ -146,12 +146,12 @@ public abstract class EntityCreature extends EntityLiving { this.a(this.target, 30.0F, 30.0F); } - if (this.positionChanged && !this.D()) { - this.aW = true; + if (this.positionChanged && !this.E()) { + this.aZ = true; } if (this.random.nextFloat() < 0.8F && (flag || flag1)) { - this.aW = true; + this.aZ = true; } // MethodProfiler.a(); // CraftBukkit - not in production code @@ -161,7 +161,7 @@ public abstract class EntityCreature extends EntityLiving { } } - protected void C() { + protected void D() { // MethodProfiler.a("stroll"); // CraftBukkit - not in production code boolean flag = false; int i = -1; @@ -195,7 +195,7 @@ public abstract class EntityCreature extends EntityLiving { protected void b(Entity entity, float f) {} - protected float a(int i, int j, int k) { + public float a(int i, int j, int k) { return 0.0F; } @@ -211,7 +211,7 @@ public abstract class EntityCreature extends EntityLiving { return super.g() && this.a(i, j, k) >= 0.0F; } - public boolean D() { + public boolean E() { return this.pathEntity != null; } @@ -219,7 +219,7 @@ public abstract class EntityCreature extends EntityLiving { this.pathEntity = pathentity; } - public Entity E() { + public Entity F() { return this.target; } @@ -227,8 +227,8 @@ public abstract class EntityCreature extends EntityLiving { this.target = entity; } - protected float F() { - float f = super.F(); + protected float G() { + float f = super.G(); if (this.f > 0) { f *= 2.0F; diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java index 454c905318..a72ce02dab 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java @@ -50,10 +50,10 @@ public class EntityCreeper extends EntityMonster { } } - public void w_() { + public void y_() { this.b = this.fuseTicks; if (this.world.isStatic) { - int i = this.A(); + int i = this.B(); if (i > 0 && this.fuseTicks == 0) { this.world.makeSound(this, "random.fuse", 1.0F, 0.5F); @@ -69,7 +69,7 @@ public class EntityCreeper extends EntityMonster { } } - super.w_(); + super.y_(); if (this.target == null && this.fuseTicks > 0) { this.b(-1); --this.fuseTicks; @@ -90,13 +90,13 @@ public class EntityCreeper extends EntityMonster { public void die(DamageSource damagesource) { super.die(damagesource); if (damagesource.getEntity() instanceof EntitySkeleton) { - this.b(Item.RECORD_1.id + this.random.nextInt(2), 1); + this.b(Item.RECORD_1.id + this.random.nextInt(10), 1); } } protected void a(Entity entity, float f) { if (!this.world.isStatic) { - int i = this.A(); + int i = this.B(); if ((i > 0 || f >= 3.0F) && (i <= 0 || f >= 7.0F)) { this.b(-1); @@ -140,7 +140,7 @@ public class EntityCreeper extends EntityMonster { return Item.SULPHUR.id; } - private int A() { + private int B() { return this.datawatcher.getByte(16); } diff --git a/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java b/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java index 9d5496c162..410d266089 100644 --- a/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java +++ b/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java @@ -2,21 +2,25 @@ package net.minecraft.server; public class EntityDamageSourceIndirect extends EntityDamageSource { - private Entity n; + private Entity o; public EntityDamageSourceIndirect(String s, Entity entity, Entity entity1) { super(s, entity); - this.n = entity1; + this.o = entity1; + } + + public Entity b() { + return this.a; } public Entity getEntity() { - return this.n; + return this.o; } public String a(EntityHuman entityhuman) { // CraftBukkit start - String source = (this.n == null) ? "Herobrine" : this.n.ad(); - return LocaleI18n.a("death." + this.m, new Object[] { entityhuman.name, source}); + String source = (this.o == null) ? "Herobrine" : this.o.ad(); + return LocaleI18n.a("death." + this.n, new Object[] { entityhuman.name, source}); } public Entity getProximateDamageSource() { diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java index c956dda130..0af4d3bdda 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -43,10 +43,10 @@ public class EntityEnderDragon extends EntityComplex { this.setHealth(this.t); this.texture = "/mob/enderdragon/ender.png"; this.b(16.0F, 8.0F); - this.bN = true; + this.bQ = true; this.fireProof = true; this.b = 100.0D; - this.ca = true; + this.cd = true; } protected void b() { @@ -99,7 +99,7 @@ public class EntityEnderDragon extends EntityComplex { f1 = (this.random.nextFloat() - 0.5F) * 8.0F; this.world.a("largeexplode", this.locX + (double) f, this.locY + 2.0D + (double) d05, this.locZ + (double) f1, 0.0D, 0.0D, 0.0D); } else { - this.w(); + this.v(); f = 0.2F / (MathHelper.a(this.motX * this.motX + this.motZ * this.motZ) * 10.0F + 1.0F); f *= (float) Math.pow(2.0D, this.motY); if (this.q) { @@ -136,12 +136,12 @@ public class EntityEnderDragon extends EntityComplex { float f3; if (this.world.isStatic) { - if (this.aK > 0) { - d0 = this.locX + (this.aL - this.locX) / (double) this.aK; - d1 = this.locY + (this.aM - this.locY) / (double) this.aK; - d2 = this.locZ + (this.aN - this.locZ) / (double) this.aK; + if (this.aN > 0) { + d0 = this.locX + (this.aO - this.locX) / (double) this.aN; + d1 = this.locY + (this.aP - this.locY) / (double) this.aN; + d2 = this.locZ + (this.aQ - this.locZ) / (double) this.aN; - for (d3 = this.aO - (double) this.yaw; d3 < -180.0D; d3 += 360.0D) { + for (d3 = this.aR - (double) this.yaw; d3 < -180.0D; d3 += 360.0D) { ; } @@ -149,9 +149,9 @@ public class EntityEnderDragon extends EntityComplex { d3 -= 360.0D; } - this.yaw = (float) ((double) this.yaw + d3 / (double) this.aK); - this.pitch = (float) ((double) this.pitch + (this.aP - (double) this.pitch) / (double) this.aK); - --this.aK; + this.yaw = (float) ((double) this.yaw + d3 / (double) this.aN); + this.pitch = (float) ((double) this.pitch + (this.aS - (double) this.pitch) / (double) this.aN); + --this.aN; this.setPosition(d0, d1, d2); this.c(this.yaw, this.pitch); } @@ -178,8 +178,8 @@ public class EntityEnderDragon extends EntityComplex { this.c += this.random.nextGaussian() * 2.0D; } - if (this.p || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.bw) { - this.A(); + if (this.p || d3 < 100.0D || d3 > 22500.0D || this.positionChanged || this.bz) { + this.B(); } d1 /= (double) MathHelper.a(d0 * d0 + d2 * d2); @@ -228,7 +228,7 @@ public class EntityEnderDragon extends EntityComplex { f4 = 0.0F; } - this.aV *= 0.8F; + this.aY *= 0.8F; float f5 = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ) * 1.0F + 1.0F; double d10 = Math.sqrt(this.motX * this.motX + this.motZ * this.motZ) * 1.0D + 1.0D; @@ -236,8 +236,8 @@ public class EntityEnderDragon extends EntityComplex { d10 = 40.0D; } - this.aV = (float) ((double) this.aV + d9 * (0.699999988079071D / d10 / (double) f5)); - this.yaw += this.aV * 0.1F; + this.aY = (float) ((double) this.aY + d9 * (0.699999988079071D / d10 / (double) f5)); + this.yaw += this.aY * 0.1F; float f6 = (float) (2.0D / (d10 + 1.0D)); float f7 = 0.06F; @@ -275,17 +275,17 @@ public class EntityEnderDragon extends EntityComplex { float f11 = MathHelper.sin(f10); float f12 = MathHelper.cos(f10); - this.h.w_(); + this.h.y_(); this.h.setPositionRotation(this.locX + (double) (f11 * 0.5F), this.locY, this.locZ - (double) (f12 * 0.5F), 0.0F, 0.0F); - this.l.w_(); + this.l.y_(); this.l.setPositionRotation(this.locX + (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ + (double) (f11 * 4.5F), 0.0F, 0.0F); - this.m.w_(); + this.m.y_(); this.m.setPositionRotation(this.locX - (double) (f12 * 4.5F), this.locY + 2.0D, this.locZ - (double) (f11 * 4.5F), 0.0F, 0.0F); if (!this.world.isStatic) { - this.y(); + this.z(); } - if (!this.world.isStatic && this.as == 0) { + if (!this.world.isStatic && this.at == 0) { this.a(this.world.getEntities(this, this.l.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D))); this.a(this.world.getEntities(this, this.m.boundingBox.grow(4.0D, 2.0D, 4.0D).d(0.0D, -2.0D, 0.0D))); this.b(this.world.getEntities(this, this.g.boundingBox.grow(1.0D, 1.0D, 1.0D))); @@ -294,10 +294,10 @@ public class EntityEnderDragon extends EntityComplex { double[] adouble = this.a(5, 1.0F); double[] adouble1 = this.a(0, 1.0F); - f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.aV * 0.01F); - float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.aV * 0.01F); + f3 = MathHelper.sin(this.yaw * 3.1415927F / 180.0F - this.aY * 0.01F); + float f13 = MathHelper.cos(this.yaw * 3.1415927F / 180.0F - this.aY * 0.01F); - this.g.w_(); + this.g.y_(); this.g.setPositionRotation(this.locX + (double) (f3 * 5.5F * f1), this.locY + (adouble1[1] - adouble[1]) * 1.0D + (double) (f9 * 5.5F), this.locZ - (double) (f13 * 5.5F * f1), 0.0F, 0.0F); for (int j = 0; j < 3; ++j) { @@ -322,7 +322,7 @@ public class EntityEnderDragon extends EntityComplex { float f17 = 1.5F; float f18 = (float) (j + 1) * 2.0F; - entitycomplexpart.w_(); + entitycomplexpart.y_(); entitycomplexpart.setPositionRotation(this.locX - (double) ((f11 * f17 + f15 * f18) * f1), this.locY + (adouble2[1] - adouble[1]) * 1.0D - (double) ((f18 + f17) * f9) + 1.5D, this.locZ + (double) ((f12 * f17 + f16 * f18) * f1), 0.0F, 0.0F); } @@ -332,7 +332,7 @@ public class EntityEnderDragon extends EntityComplex { } } - private void w() { + private void v() { if (this.s != null) { if (this.s.dead) { if (!this.world.isStatic) { @@ -366,9 +366,9 @@ public class EntityEnderDragon extends EntityComplex { } } - private void y() { + private void z() { if (this.ticksLived % 20 == 0) { - Vec3D vec3d = this.d(1.0F); + Vec3D vec3d = this.e(1.0F); double d0 = 0.0D; double d1 = -1.0D; double d2 = 0.0D; @@ -415,7 +415,7 @@ public class EntityEnderDragon extends EntityComplex { } } - private void A() { + private void B() { this.p = false; if (this.random.nextInt(2) == 0 && this.world.players.size() > 0) { this.u = (Entity) this.world.players.get(this.random.nextInt(this.world.players.size())); @@ -523,14 +523,14 @@ public class EntityEnderDragon extends EntityComplex { this.b = this.locY + (double) (this.random.nextFloat() * 3.0F) + 1.0D; this.c = this.locZ - (double) (f2 * 5.0F) + (double) ((this.random.nextFloat() - 0.5F) * 2.0F); this.u = null; - if (damagesource.g() instanceof EntityHuman || damagesource == DamageSource.EXPLOSION) { + if (damagesource.getEntity() instanceof EntityHuman || damagesource == DamageSource.EXPLOSION) { this.e(damagesource, i); } return true; } - protected void ag() { + protected void an() { ++this.r; if (this.r >= 180 && this.r <= 200) { float f = (this.random.nextFloat() - 0.5F) * 8.0F; @@ -574,7 +574,7 @@ public class EntityEnderDragon extends EntityComplex { } this.a(MathHelper.floor(this.locX), MathHelper.floor(this.locZ)); - this.an(); + this.ay(); this.die(); } } @@ -621,9 +621,9 @@ public class EntityEnderDragon extends EntityComplex { BlockEnderPortal.a = false; } - protected void ak() {} + protected void au() {} - public Entity[] aG() { + public Entity[] aR() { return this.children; } diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java index 21d1772408..8cd483d1c0 100644 --- a/src/main/java/net/minecraft/server/EntityEnderPearl.java +++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java @@ -6,6 +6,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.player.PlayerTeleportEvent; public class EntityEnderPearl extends EntityProjectile { + public EntityEnderPearl(World world) { super(world); } @@ -59,7 +60,7 @@ public class EntityEnderPearl extends EntityProjectile { if (!damageEvent.isCancelled()) { org.bukkit.entity.Player bPlayer = Bukkit.getPlayerExact(((EntityPlayer) this.shooter).name); - ((CraftPlayer) bPlayer).getHandle().cg = -1; // Remove spawning invulnerability. + ((CraftPlayer) bPlayer).getHandle().cj = -1; // Remove spawning invulnerability. ((CraftPlayer) bPlayer).getHandle().damageEntity(DamageSource.FALL, 5); // Damage the new player instead of the old } } diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java index 67f68936f7..863fb067fd 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -19,10 +19,10 @@ public class EntityEnderman extends EntityMonster { public EntityEnderman(World world) { super(world); this.texture = "/mob/enderman.png"; - this.aY = 0.2F; + this.bb = 0.2F; this.damage = 7; this.b(0.6F, 2.9F); - this.bM = 1.0F; + this.bP = 1.0F; } public int getMaxHealth() { @@ -74,8 +74,8 @@ public class EntityEnderman extends EntityMonster { if (itemstack != null && itemstack.id == Block.PUMPKIN.id) { return false; } else { - Vec3D vec3d = entityhuman.d(1.0F).b(); - Vec3D vec3d1 = Vec3D.create(this.locX - entityhuman.locX, this.boundingBox.b + (double) (this.length / 2.0F) - (entityhuman.locY + (double) entityhuman.x()), this.locZ - entityhuman.locZ); + Vec3D vec3d = entityhuman.e(1.0F).b(); + Vec3D vec3d1 = Vec3D.create(this.locX - entityhuman.locX, this.boundingBox.b + (double) (this.length / 2.0F) - (entityhuman.locY + (double) entityhuman.y()), this.locZ - entityhuman.locZ); double d0 = vec3d1.c(); vec3d1 = vec3d1.b(); @@ -86,12 +86,12 @@ public class EntityEnderman extends EntityMonster { } public void d() { - if (this.ay()) { + if (this.aJ()) { this.damageEntity(DamageSource.DROWN, 1); } this.a = this.target != null; - this.aY = this.target != null ? 6.5F : 0.3F; + this.bb = this.target != null ? 6.5F : 0.3F; int i; if (!this.world.isStatic) { @@ -146,16 +146,16 @@ public class EntityEnderman extends EntityMonster { if (f > 0.5F && this.world.isChunkLoaded(MathHelper.floor(this.locX), MathHelper.floor(this.locY), MathHelper.floor(this.locZ)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F) { this.target = null; - this.u_(); + this.w_(); } } - if (this.ay()) { + if (this.aJ()) { this.target = null; - this.u_(); + this.w_(); } - this.aW = false; + this.aZ = false; if (this.target != null) { this.a(this.target, 100.0F, 100.0F); } @@ -163,10 +163,10 @@ public class EntityEnderman extends EntityMonster { if (!this.world.isStatic && this.isAlive()) { if (this.target != null) { if (this.target instanceof EntityHuman && this.c((EntityHuman) this.target)) { - this.aT = this.aU = 0.0F; - this.aY = 0.0F; + this.aW = this.aX = 0.0F; + this.bb = 0.0F; if (this.target.i(this) < 16.0D) { - this.u_(); + this.w_(); } this.g = 0; @@ -181,7 +181,7 @@ public class EntityEnderman extends EntityMonster { super.d(); } - protected boolean u_() { + protected boolean w_() { double d0 = this.locX + (this.random.nextDouble() - 0.5D) * 64.0D; double d1 = this.locY + (double) (this.random.nextInt(64) - 32); double d2 = this.locZ + (this.random.nextDouble() - 0.5D) * 64.0D; @@ -190,7 +190,7 @@ public class EntityEnderman extends EntityMonster { } protected boolean f(Entity entity) { - Vec3D vec3d = Vec3D.create(this.locX - entity.locX, this.boundingBox.b + (double) (this.length / 2.0F) - entity.locY + (double) entity.x(), this.locZ - entity.locZ); + Vec3D vec3d = Vec3D.create(this.locX - entity.locX, this.boundingBox.b + (double) (this.length / 2.0F) - entity.locY + (double) entity.y(), this.locZ - entity.locZ); vec3d = vec3d.b(); double d0 = 16.0D; @@ -230,7 +230,7 @@ public class EntityEnderman extends EntityMonster { if (flag1) { this.setPosition(this.locX, this.locY, this.locZ); - if (this.world.a(this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox)) { + if (this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox)) { flag = true; } } @@ -312,7 +312,7 @@ public class EntityEnderman extends EntityMonster { public boolean damageEntity(DamageSource damagesource, int i) { if (damagesource instanceof EntityDamageSourceIndirect) { for (int j = 0; j < 64; ++j) { - if (this.u_()) { + if (this.w_()) { return true; } } diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java index c0bb764d6c..31b263e5e6 100644 --- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java +++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java @@ -32,8 +32,8 @@ public class EntityExperienceOrb extends Entity { protected void b() {} - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (this.c > 0) { --this.c; } @@ -55,7 +55,7 @@ public class EntityExperienceOrb extends Entity { if (entityhuman != null) { double d1 = (entityhuman.locX - this.locX) / d0; - double d2 = (entityhuman.locY + (double) entityhuman.x() - this.locY) / d0; + double d2 = (entityhuman.locY + (double) entityhuman.y() - this.locY) / d0; double d3 = (entityhuman.locZ - this.locZ) / d0; double d4 = Math.sqrt(d1 * d1 + d2 * d2 + d3 * d3); double d5 = 1.0D - d4; @@ -103,7 +103,7 @@ public class EntityExperienceOrb extends Entity { } public boolean damageEntity(DamageSource damagesource, int i) { - this.aB(); + this.aM(); this.d -= i; if (this.d <= 0) { this.die(); diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java index 2ffe49ef00..8e2d3f8e35 100644 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -14,7 +14,7 @@ public class EntityFallingBlock extends Entity { public EntityFallingBlock(World world, double d0, double d1, double d2, int i, int data) { super(world); this.a = i; - this.bc = true; + this.bf = true; this.data = data; // CraftBukkit this.b(0.98F, 0.98F); this.height = this.length / 2.0F; @@ -37,7 +37,7 @@ public class EntityFallingBlock extends Entity { return !this.dead; } - public void w_() { + public void y_() { if (this.a == 0) { this.die(); } else { diff --git a/src/main/java/net/minecraft/server/EntityFireball.java b/src/main/java/net/minecraft/server/EntityFireball.java index 3e44ace490..3650e8179e 100644 --- a/src/main/java/net/minecraft/server/EntityFireball.java +++ b/src/main/java/net/minecraft/server/EntityFireball.java @@ -62,8 +62,8 @@ public class EntityFireball extends Entity { } // CraftBukkit end - public void w_() { - super.w_(); + public void y_() { + super.y_(); this.setOnFire(1); if (!this.world.isStatic && (this.shooter == null || this.shooter.dead)) { this.die(); @@ -159,7 +159,7 @@ public class EntityFireball extends Entity { this.yaw = this.lastYaw + (this.yaw - this.lastYaw) * 0.2F; float f2 = 0.95F; - if (this.az()) { + if (this.aK()) { for (int k = 0; k < 4; ++k) { float f3 = 0.25F; @@ -250,9 +250,9 @@ public class EntityFireball extends Entity { } public boolean damageEntity(DamageSource damagesource, int i) { - this.aB(); + this.aM(); if (damagesource.getEntity() != null) { - Vec3D vec3d = damagesource.getEntity().ap(); + Vec3D vec3d = damagesource.getEntity().aA(); if (vec3d != null) { this.motX = vec3d.a; diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java index f3c544e7e4..c9afe08b13 100644 --- a/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java @@ -33,12 +33,12 @@ public class EntityFishingHook extends Entity { public EntityFishingHook(World world) { super(world); this.b(0.25F, 0.25F); - this.ca = true; + this.cd = true; } public EntityFishingHook(World world, EntityHuman entityhuman) { super(world); - this.ca = true; + this.cd = true; this.owner = entityhuman; this.owner.hookedFish = this; this.b(0.25F, 0.25F); @@ -80,8 +80,8 @@ public class EntityFishingHook extends Entity { this.i = 0; } - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (this.l > 0) { double d0 = this.locX + (this.m - this.locX) / (double) this.l; double d1 = this.locY + (this.n - this.locY) / (double) this.l; @@ -104,7 +104,7 @@ public class EntityFishingHook extends Entity { this.c(this.yaw, this.pitch); } else { if (!this.world.isStatic) { - ItemStack itemstack = this.owner.P(); + ItemStack itemstack = this.owner.Q(); if (this.owner.dead || !this.owner.isAlive() || itemstack == null || itemstack.getItem() != Item.FISHING_ROD || this.i(this.owner) > 1024.0D) { this.die(); diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java index 3e22dc9699..b6c585c33d 100644 --- a/src/main/java/net/minecraft/server/EntityGhast.java +++ b/src/main/java/net/minecraft/server/EntityGhast.java @@ -24,7 +24,7 @@ public class EntityGhast extends EntityFlying implements IMonster { this.texture = "/mob/ghast.png"; this.b(4.0F, 4.0F); this.fireProof = true; - this.az = 5; + this.aA = 5; } public boolean damageEntity(DamageSource damagesource, int i) { @@ -46,8 +46,8 @@ public class EntityGhast extends EntityFlying implements IMonster { return 10; } - public void w_() { - super.w_(); + public void y_() { + super.y_(); byte b0 = this.datawatcher.getByte(16); this.texture = b0 == 1 ? "/mob/ghast_fire.png" : "/mob/ghast.png"; @@ -58,7 +58,7 @@ public class EntityGhast extends EntityFlying implements IMonster { this.die(); } - this.ak(); + this.au(); this.e = this.f; double d0 = this.b - this.locX; double d1 = this.c - this.locY; @@ -138,7 +138,7 @@ public class EntityGhast extends EntityFlying implements IMonster { this.world.a((EntityHuman) null, 1008, (int) this.locX, (int) this.locY, (int) this.locZ, 0); EntityFireball entityfireball = new EntityFireball(this.world, this, d5, d6, d7); double d8 = 4.0D; - Vec3D vec3d = this.d(1.0F); + Vec3D vec3d = this.e(1.0F); entityfireball.locX = this.locX + vec3d.a * d8; entityfireball.locY = this.locY + (double) (this.length / 2.0F) + 0.5D; @@ -174,7 +174,7 @@ public class EntityGhast extends EntityFlying implements IMonster { for (int i = 1; (double) i < d3; ++i) { axisalignedbb.d(d4, d5, d6); - if (this.world.a(this, axisalignedbb).size() > 0) { + if (this.world.a((Entity) this, axisalignedbb).size() > 0) { return false; } } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java index b5fd582158..3160d7f53f 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -74,8 +74,8 @@ public abstract class EntityHuman extends EntityLiving { ChunkCoordinates chunkcoordinates = world.getSpawn(); this.setPositionRotation((double) chunkcoordinates.x + 0.5D, (double) (chunkcoordinates.y + 1), (double) chunkcoordinates.z + 0.5D, 0.0F, 0.0F); - this.af = "humanoid"; - this.ae = 180.0F; + this.ah = "humanoid"; + this.ag = 180.0F; this.maxFireTicks = 20; this.texture = "/mob/char.png"; } @@ -90,43 +90,43 @@ public abstract class EntityHuman extends EntityLiving { this.datawatcher.a(17, Byte.valueOf((byte) 0)); } - public boolean H() { + public boolean I() { return this.d != null; } - public void I() { + public void J() { if (this.d != null) { this.d.a(this.world, this, this.e); } - this.J(); + this.K(); } - public void J() { + public void K() { this.d = null; this.e = 0; if (!this.world.isStatic) { - this.g(false); + this.h(false); } } - public boolean K() { - return this.H() && Item.byId[this.d.id].d(this.d) == EnumAnimation.d; + public boolean L() { + return this.I() && Item.byId[this.d.id].d(this.d) == EnumAnimation.d; } - public void w_() { + public void y_() { if (this.d != null) { ItemStack itemstack = this.inventory.getItemInHand(); if (itemstack != this.d) { - this.J(); + this.K(); } else { if (this.e <= 25 && this.e % 4 == 0) { this.b(itemstack, 5); } if (--this.e == 0 && !this.world.isStatic) { - this.G(); + this.H(); } } } @@ -142,7 +142,7 @@ public abstract class EntityHuman extends EntityLiving { } if (!this.world.isStatic) { - if (!this.C()) { + if (!this.B()) { this.a(true, true, false); } else if (this.world.e()) { this.a(false, true, true); @@ -155,7 +155,7 @@ public abstract class EntityHuman extends EntityLiving { } } - super.w_(); + super.y_(); if (!this.world.isStatic && this.activeContainer != null && !this.activeContainer.b(this)) { this.closeInventory(); this.activeContainer = this.defaultContainer; @@ -167,7 +167,7 @@ public abstract class EntityHuman extends EntityLiving { } } - if (this.z() && this.abilities.isInvulnerable) { + if (this.A() && this.abilities.isInvulnerable) { this.extinguish(); } @@ -231,7 +231,7 @@ public abstract class EntityHuman extends EntityLiving { vec3d1.a(-this.pitch * 3.1415927F / 180.0F); vec3d1.b(-this.yaw * 3.1415927F / 180.0F); - vec3d1 = vec3d1.add(this.locX, this.locY + (double) this.x(), this.locZ); + vec3d1 = vec3d1.add(this.locX, this.locY + (double) this.y(), this.locZ); this.world.a("iconcrack_" + itemstack.getItem().id, vec3d1.a, vec3d1.b, vec3d1.c, vec3d.a, vec3d.b + 0.05D, vec3d.c); } @@ -239,7 +239,7 @@ public abstract class EntityHuman extends EntityLiving { } } - protected void G() { + protected void H() { if (this.d != null) { this.b(this.d, 16); int i = this.d.count; @@ -252,11 +252,11 @@ public abstract class EntityHuman extends EntityLiving { } } - this.J(); + this.K(); } } - protected boolean L() { + protected boolean M() { return this.getHealth() <= 0 || this.isSleeping(); } @@ -264,23 +264,23 @@ public abstract class EntityHuman extends EntityLiving { this.activeContainer = this.defaultContainer; } - public void M() { + public void N() { double d0 = this.locX; double d1 = this.locY; double d2 = this.locZ; - super.M(); + super.N(); this.r = this.s; this.s = 0.0F; this.h(this.locX - d0, this.locY - d1, this.locZ - d2); } - private int A() { + private int v() { return this.hasEffect(MobEffectList.FASTER_DIG) ? 6 - (1 + this.getEffect(MobEffectList.FASTER_DIG).getAmplifier()) * 1 : (this.hasEffect(MobEffectList.SLOWER_DIG) ? 6 + (1 + this.getEffect(MobEffectList.SLOWER_DIG).getAmplifier()) * 2 : 6); } protected void m_() { - int i = this.A(); + int i = this.v(); if (this.t) { ++this.u; @@ -292,7 +292,7 @@ public abstract class EntityHuman extends EntityLiving { this.u = 0; } - this.an = (float) this.u / (float) i; + this.ao = (float) this.u / (float) i; } public void d() { @@ -308,11 +308,11 @@ public abstract class EntityHuman extends EntityLiving { this.inventory.i(); this.r = this.s; super.d(); - this.ak = this.P; - this.al = this.Q; + this.al = this.P; + this.am = this.Q; if (this.isSprinting()) { - this.ak = (float) ((double) this.ak + (double) this.P * 0.3D); - this.al = (float) ((double) this.al + (double) this.Q * 0.3D); + this.al = (float) ((double) this.al + (double) this.P * 0.3D); + this.am = (float) ((double) this.am + (double) this.Q * 0.3D); } float f = MathHelper.a(this.motX * this.motX + this.motZ * this.motZ); @@ -332,7 +332,7 @@ public abstract class EntityHuman extends EntityLiving { } this.s += (f - this.s) * 0.4F; - this.ax += (f1 - this.ax) * 0.8F; + this.ay += (f1 - this.ay) * 0.8F; if (this.getHealth() > 0) { List list = this.world.getEntities(this, this.boundingBox.grow(1.0D, 0.0D, 1.0D)); @@ -363,8 +363,8 @@ public abstract class EntityHuman extends EntityLiving { this.inventory.k(); if (damagesource != null) { - this.motX = (double) (-MathHelper.cos((this.at + this.yaw) * 3.1415927F / 180.0F) * 0.1F); - this.motZ = (double) (-MathHelper.sin((this.at + this.yaw) * 3.1415927F / 180.0F) * 0.1F); + this.motX = (double) (-MathHelper.cos((this.au + this.yaw) * 3.1415927F / 180.0F) * 0.1F); + this.motZ = (double) (-MathHelper.sin((this.au + this.yaw) * 3.1415927F / 180.0F) * 0.1F); } else { this.motX = this.motZ = 0.0D; } @@ -388,7 +388,7 @@ public abstract class EntityHuman extends EntityLiving { return j > 0 && this.random.nextInt(j + 1) > 0 ? i : super.f(i); } - public void N() { + public void O() { this.a(this.inventory.splitStack(this.inventory.itemInHandIndex, 1), false); } @@ -398,7 +398,7 @@ public abstract class EntityHuman extends EntityLiving { public void a(ItemStack itemstack, boolean flag) { if (itemstack != null) { - EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY - 0.30000001192092896D + (double) this.x(), this.locZ, itemstack); + EntityItem entityitem = new EntityItem(this.world, this.locX, this.locY - 0.30000001192092896D + (double) this.y(), this.locZ, itemstack); entityitem.pickupDelay = 40; float f = 0.1F; @@ -537,11 +537,11 @@ public abstract class EntityHuman extends EntityLiving { public void receive(Entity entity, int i) {} - public float x() { + public float y() { return 0.12F; } - protected void w() { + protected void r_() { this.height = 1.62F; } @@ -549,7 +549,7 @@ public abstract class EntityHuman extends EntityLiving { if (this.abilities.isInvulnerable && !damagesource.ignoresInvulnerability()) { return false; } else { - this.aS = 0; + this.aV = 0; if (this.getHealth() <= 0) { return false; } else { @@ -628,17 +628,17 @@ public abstract class EntityHuman extends EntityLiving { if (k > 0 && k <= 20) { int l = 25 - k; - int i1 = j * l + this.aq; + int i1 = j * l + this.ar; j = i1 / 25; - this.aq = i1 % 25; + this.ar = i1 % 25; } return j; } } - protected boolean y() { + protected boolean z() { return false; } @@ -652,7 +652,7 @@ public abstract class EntityHuman extends EntityLiving { } } - if (!(entityliving instanceof EntityHuman) || this.y()) { + if (!(entityliving instanceof EntityHuman) || this.z()) { List list = this.world.a(EntityWolf.class, AxisAlignedBB.b(this.locX, this.locY, this.locZ, this.locX + 1.0D, this.locY + 1.0D, this.locZ + 1.0D).grow(16.0D, 4.0D, 16.0D)); Iterator iterator = list.iterator(); @@ -660,7 +660,7 @@ public abstract class EntityHuman extends EntityLiving { Entity entity = (Entity) iterator.next(); EntityWolf entitywolf1 = (EntityWolf) entity; - if (entitywolf1.isTamed() && entitywolf1.E() == null && this.name.equals(entitywolf1.getOwnerName()) && (!flag || !entitywolf1.isSitting())) { + if (entitywolf1.isTamed() && entitywolf1.F() == null && this.name.equals(entitywolf1.getOwnerName()) && (!flag || !entitywolf1.isSitting())) { // CraftBukkit start org.bukkit.entity.Entity bukkitTarget = entity == null ? null : entityliving.getBukkitEntity(); @@ -689,19 +689,19 @@ public abstract class EntityHuman extends EntityLiving { this.inventory.d(i); } - protected int O() { + public int P() { return this.inventory.j(); } protected void c(DamageSource damagesource, int i) { - if (!damagesource.ignoresArmor() && this.K()) { + if (!damagesource.ignoresArmor() && this.L()) { i = 1 + i >> 1; } i = this.d(damagesource, i); i = this.b(damagesource, i); - this.c(damagesource.e()); - super.c(damagesource, i); + this.c(damagesource.f()); + this.health -= i; } public void a(TileEntityFurnace tileentityfurnace) {} @@ -714,33 +714,33 @@ public abstract class EntityHuman extends EntityLiving { public void e(Entity entity) { if (!entity.b(this)) { - ItemStack itemstack = this.P(); + ItemStack itemstack = this.Q(); if (itemstack != null && entity instanceof EntityLiving) { itemstack.a((EntityLiving) entity); // CraftBukkit - bypass infinite items; <= 0 -> == 0 if (itemstack.count == 0) { itemstack.a(this); - this.Q(); + this.R(); } } } } - public ItemStack P() { + public ItemStack Q() { return this.inventory.getItemInHand(); } - public void Q() { + public void R() { this.inventory.setItem(this.inventory.itemInHandIndex, (ItemStack) null); } - public double R() { + public double S() { return (double) (this.height - 0.5F); } - public void r_() { - if (!this.t || this.u >= this.A() / 2 || this.u < 0) { + public void s_() { + if (!this.t || this.u >= this.v() / 2 || this.u < 0) { this.u = -1; this.t = true; } @@ -770,7 +770,7 @@ public abstract class EntityHuman extends EntityLiving { } if (i > 0 || k > 0) { - boolean flag = this.fallDistance > 0.0F && !this.onGround && !this.r() && !this.az() && !this.hasEffect(MobEffectList.BLINDNESS) && this.vehicle == null && entity instanceof EntityLiving; + boolean flag = this.fallDistance > 0.0F && !this.onGround && !this.r() && !this.aK() && !this.hasEffect(MobEffectList.BLINDNESS) && this.vehicle == null && entity instanceof EntityLiving; if (flag) { i += this.random.nextInt(i / 2 + 2); @@ -822,14 +822,14 @@ public abstract class EntityHuman extends EntityLiving { } } - ItemStack itemstack = this.P(); + ItemStack itemstack = this.Q(); if (itemstack != null && entity instanceof EntityLiving) { itemstack.a((EntityLiving) entity, this); // CraftBukkit - bypass infinite items; <= 0 -> == 0 if (itemstack.count == 0) { itemstack.a(this); - this.Q(); + this.R(); } } @@ -871,8 +871,8 @@ public abstract class EntityHuman extends EntityLiving { } } - public boolean T() { - return !this.sleeping && super.T(); + public boolean U() { + return !this.sleeping && super.U(); } public EnumBedResult a(int i, int j, int k) { @@ -881,7 +881,7 @@ public abstract class EntityHuman extends EntityLiving { return EnumBedResult.OTHER_PROBLEM; } - if (this.world.worldProvider.c) { + if (this.world.worldProvider.d) { return EnumBedResult.NOT_POSSIBLE_HERE; } @@ -983,7 +983,7 @@ public abstract class EntityHuman extends EntityLiving { if (this.fauxSleeping && !this.sleeping) return; // CraftBukkit - Can't leave bed if not in one! this.b(0.6F, 1.8F); - this.w(); + this.r_(); ChunkCoordinates chunkcoordinates = this.F; ChunkCoordinates chunkcoordinates1 = this.F; @@ -1029,7 +1029,7 @@ public abstract class EntityHuman extends EntityLiving { } } - private boolean C() { + private boolean B() { return this.world.getTypeId(this.F.x, this.F.y, this.F.z) == Block.BED.id; } @@ -1078,8 +1078,8 @@ public abstract class EntityHuman extends EntityLiving { public void a(Statistic statistic, int i) {} - protected void X() { - super.X(); + protected void o_() { + super.o_(); this.a(StatisticList.u, 1); if (this.isSprinting()) { this.c(0.8F); @@ -1095,12 +1095,12 @@ public abstract class EntityHuman extends EntityLiving { if (this.abilities.isFlying) { double d3 = this.motY; - float f2 = this.al; + float f2 = this.am; - this.al = 0.05F; + this.am = 0.05F; super.a(f, f1); this.motY = d3 * 0.6D; - this.al = f2; + this.am = f2; } else { super.a(f, f1); } @@ -1118,7 +1118,7 @@ public abstract class EntityHuman extends EntityLiving { this.a(StatisticList.q, i); this.c(0.015F * (float) i * 0.01F); } - } else if (this.az()) { + } else if (this.aK()) { i = Math.round(MathHelper.a(d0 * d0 + d2 * d2) * 100.0F); if (i > 0) { this.a(StatisticList.m, i); @@ -1194,11 +1194,16 @@ public abstract class EntityHuman extends EntityLiving { public void giveExp(int i) { this.q += i; - this.exp += (float) i / (float) this.getExpTolevel(); - this.expTotal += i; + int j = Integer.MAX_VALUE - this.expTotal; - while (this.exp >= 1.0F) { - --this.exp; + if (i > j) { + i = j; + } + + this.exp += (float) i / (float) this.getExpToLevel(); + + for (this.expTotal += i; this.exp >= 1.0F; this.exp /= (float) this.getExpToLevel()) { + this.exp = (this.exp - 1.0F) * (float) this.getExpToLevel(); this.levelUp(); } } @@ -1210,7 +1215,7 @@ public abstract class EntityHuman extends EntityLiving { } } - public int getExpTolevel() { + public int getExpToLevel() { return 7 + (this.expLevel * 7 >> 1); } @@ -1243,7 +1248,7 @@ public abstract class EntityHuman extends EntityLiving { this.d = itemstack; this.e = i; if (!this.world.isStatic) { - this.g(true); + this.h(true); } } } diff --git a/src/main/java/net/minecraft/server/EntityItem.java b/src/main/java/net/minecraft/server/EntityItem.java index 5dd87b07ae..d314cef97e 100644 --- a/src/main/java/net/minecraft/server/EntityItem.java +++ b/src/main/java/net/minecraft/server/EntityItem.java @@ -41,8 +41,8 @@ public class EntityItem extends Entity { protected void b() {} - public void w_() { - super.w_(); + public void y_() { + super.y_(); // CraftBukkit start int currentTick = (int) (System.currentTimeMillis() / 50); this.pickupDelay -= (currentTick - this.lastTick); @@ -96,7 +96,7 @@ public class EntityItem extends Entity { } public boolean damageEntity(DamageSource damagesource, int i) { - this.aB(); + this.aM(); this.f -= i; if (this.f <= 0) { this.die(); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index 9682b8a225..0a14a66f47 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Random; // CraftBukkit start import org.bukkit.craftbukkit.TrigMath; @@ -21,77 +22,117 @@ public abstract class EntityLiving extends Entity { public float U; public float V = 0.0F; public float W = 0.0F; - protected float X; - protected float Y; + public float X = 0.0F; + public float Y = 0.0F; protected float Z; protected float aa; - protected boolean ab = true; - protected String texture = "/mob/char.png"; + protected float ab; + protected float ac; protected boolean ad = true; - protected float ae = 0.0F; - protected String af = null; - protected float ag = 1.0F; - protected int ah = 0; - protected float ai = 0.0F; - public boolean aj = false; - public float ak = 0.1F; - public float al = 0.02F; - public float am; + protected String texture = "/mob/char.png"; + protected boolean af = true; + protected float ag = 0.0F; + protected String ah = null; + protected float ai = 1.0F; + protected int aj = 0; + protected float ak = 0.0F; + public float al = 0.1F; + public float am = 0.02F; public float an; + public float ao; protected int health = this.getMaxHealth(); - public int ap; - protected int aq; + public int aq; + protected int ar; private int a; public int hurtTicks; - public int as; - public float at = 0.0F; + public int at; + public float au = 0.0F; public int deathTicks = 0; public int attackTicks = 0; - public float aw; public float ax; - protected boolean ay = false; - protected int az; - public int aA = -1; - public float aB = (float) (Math.random() * 0.8999999761581421D + 0.10000000149011612D); - public float aC; + public float ay; + protected boolean az = false; + protected int aA; + public int aB = -1; + public float aC = (float) (Math.random() * 0.8999999761581421D + 0.10000000149011612D); public float aD; public float aE; + public float aF; public EntityHuman killer = null; // CraftBukkit - prot to pub - protected int aG = 0; - public int aH = 0; - public int aI = 0; + protected int aH = 0; + protected EntityLiving aI = null; + public int aJ = 0; + public int aK = 0; protected HashMap effects = new HashMap(); private boolean b = true; private int c; - protected int aK; - protected double aL; - protected double aM; - protected double aN; + private ControllerLook lookController; + private ControllerMove moveController; + private ControllerJump jumpController; + private Navigation navigation; + protected PathfinderGoalSelector goalSelector = new PathfinderGoalSelector(); + protected int aN; protected double aO; protected double aP; - float aQ = 0.0F; + protected double aQ; + protected double aR; + protected double aS; + float aT = 0.0F; public int lastDamage = 0; // CraftBukkit - protected -> public - protected int aS = 0; - protected float aT; - protected float aU; - protected float aV; - protected boolean aW = false; - protected float aX = 0.0F; - protected float aY = 0.7F; - private int d = 0; - private Entity e; - protected int aZ = 0; + protected int aV = 0; + protected float aW; + protected float aX; + protected float aY; + protected boolean aZ = false; + protected float ba = 0.0F; + protected float bb = 0.7F; + private int h = 0; + private Entity i; + protected int bc = 0; public int expToDrop = 0; // CraftBukkit public int maxAirTicks = 300; // CraftBukkit public EntityLiving(World world) { super(world); - this.bc = true; + this.bf = true; + this.lookController = new ControllerLook(this); + this.moveController = new ControllerMove(this, this.bb); + this.jumpController = new ControllerJump(this); + this.navigation = new PathfinderNavigation(this, world); this.U = (float) (Math.random() + 1.0D) * 0.01F; this.setPosition(this.locX, this.locY, this.locZ); this.T = (float) Math.random() * 12398.0F; this.yaw = (float) (Math.random() * 3.1415927410125732D * 2.0D); - this.bM = 0.5F; + this.X = this.yaw; + this.bP = 0.5F; + } + + public ControllerLook getControllerLook() { + return this.lookController; + } + + public ControllerMove getControllerMove() { + return this.moveController; + } + + public ControllerJump getControllerJump() { + return this.jumpController; + } + + public Navigation ah() { + return this.navigation; + } + + public Random ai() { + return this.random; + } + + public EntityLiving aj() { + return this.aI; + } + + public int ak() { + return this.aV; } protected void b() { @@ -99,7 +140,7 @@ public abstract class EntityLiving extends Entity { } public boolean g(Entity entity) { - return this.world.a(Vec3D.create(this.locX, this.locY + (double) this.x(), this.locZ), Vec3D.create(entity.locX, entity.locY + (double) entity.x(), entity.locZ)) == null; + return this.world.a(Vec3D.create(this.locX, this.locY + (double) this.y(), this.locZ), Vec3D.create(entity.locX, entity.locY + (double) entity.y(), entity.locZ)) == null; } public boolean e_() { @@ -110,7 +151,7 @@ public abstract class EntityLiving extends Entity { return !this.dead; } - public float x() { + public float y() { return this.length * 0.85F; } @@ -118,25 +159,25 @@ public abstract class EntityLiving extends Entity { return 80; } - public void ae() { + public void al() { String s = this.c_(); if (s != null) { - this.world.makeSound(this, s, this.o(), this.w()); + this.world.makeSound(this, s, this.o(), this.v()); } } - public void af() { - this.am = this.an; - super.af(); + public void am() { + this.an = this.ao; + super.am(); // MethodProfiler.a("mobBaseTick"); // CraftBukkit - not in production code if (this.random.nextInt(1000) < this.a++) { this.a = -this.h(); - this.ae(); + this.al(); } // CraftBukkit start - don't inline the damage, perform it with an event - if (this.isAlive() && this.T()) { + if (this.isAlive() && this.U()) { EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.SUFFOCATION, 1); this.world.getServer().getPluginManager().callEvent(event); @@ -180,7 +221,7 @@ public abstract class EntityLiving extends Entity { } } - this.aw = this.ax; + this.ax = this.ay; if (this.attackTicks > 0) { --this.attackTicks; } @@ -194,18 +235,19 @@ public abstract class EntityLiving extends Entity { } if (this.health <= 0) { - this.ag(); + this.an(); } - if (this.aG > 0) { - --this.aG; + if (this.aH > 0) { + --this.aH; } else { this.killer = null; } - this.aq(); - this.aa = this.Z; + this.aB(); + this.ac = this.ab; this.W = this.V; + this.Y = this.X; this.lastYaw = this.yaw; this.lastPitch = this.pitch; // MethodProfiler.a(); // CraftBukkit - not in production code @@ -213,9 +255,9 @@ public abstract class EntityLiving extends Entity { // CraftBukkit start public int getExpReward() { - int exp = a(this.killer); + int exp = this.a(this.killer); - if (!this.world.isStatic && (this.aG > 0 || this.ac()) && !this.l()) { + if (!this.world.isStatic && (this.aH > 0 || this.ac()) && !this.l()) { return exp; } else { return 0; @@ -223,7 +265,7 @@ public abstract class EntityLiving extends Entity { } // CraftBukkit end - protected void ag() { + protected void an() { ++this.deathTicks; if (this.deathTicks >= 20 && !this.dead) { // CraftBukkit - (this.deathTicks == 20) -> (this.deathTicks >= 20 && !this.dead). int i; @@ -238,7 +280,7 @@ public abstract class EntityLiving extends Entity { } // CraftBukkit end - this.an(); + this.ay(); this.die(); for (i = 0; i < 20; ++i) { @@ -256,14 +298,14 @@ public abstract class EntityLiving extends Entity { } protected int a(EntityHuman entityhuman) { - return this.az; + return this.aA; } protected boolean ac() { return false; } - public void ah() { + public void ao() { for (int i = 0; i < 20; ++i) { double d0 = this.random.nextGaussian() * 0.02D; double d1 = this.random.nextGaussian() * 0.02D; @@ -274,23 +316,23 @@ public abstract class EntityLiving extends Entity { } } - public void M() { - super.M(); - this.X = this.Y; - this.Y = 0.0F; + public void N() { + super.N(); + this.Z = this.aa; + this.aa = 0.0F; this.fallDistance = 0.0F; } - public void w_() { - super.w_(); - if (this.aH > 0) { - if (this.aI <= 0) { - this.aI = 60; + public void y_() { + super.y_(); + if (this.aJ > 0) { + if (this.aK <= 0) { + this.aK = 60; } - --this.aI; - if (this.aI <= 0) { - --this.aH; + --this.aK; + if (this.aK <= 0) { + --this.aJ; } } @@ -301,7 +343,7 @@ public abstract class EntityLiving extends Entity { float f1 = this.V; float f2 = 0.0F; - this.X = this.Y; + this.Z = this.aa; float f3 = 0.0F; if (f > 0.05F) { @@ -311,7 +353,7 @@ public abstract class EntityLiving extends Entity { f1 = (float) TrigMath.atan2(d1, d0) * 180.0F / 3.1415927F - 90.0F; } - if (this.an > 0.0F) { + if (this.ao > 0.0F) { f1 = this.yaw; } @@ -319,7 +361,7 @@ public abstract class EntityLiving extends Entity { f3 = 0.0F; } - this.Y += (f3 - this.Y) * 0.3F; + this.aa += (f3 - this.aa) * 0.3F; float f4; @@ -386,7 +428,7 @@ public abstract class EntityLiving extends Entity { this.lastPitch += 360.0F; } - this.Z += f2; + this.ab += f2; } protected void b(float f, float f1) { @@ -433,13 +475,13 @@ public abstract class EntityLiving extends Entity { if (this.world.isStatic) { return false; } else { - this.aS = 0; + this.aV = 0; if (this.health <= 0) { return false; } else if (damagesource.k() && this.hasEffect(MobEffectList.FIRE_RESISTANCE)) { return false; } else { - this.aD = 1.5F; + this.aE = 1.5F; boolean flag = true; if ((float) this.noDamageTicks > (float) this.maxNoDamageTicks / 2.0F) { @@ -452,24 +494,24 @@ public abstract class EntityLiving extends Entity { flag = false; } else { this.lastDamage = i; - this.ap = this.health; + this.aq = this.health; this.noDamageTicks = this.maxNoDamageTicks; this.c(damagesource, i); - this.hurtTicks = this.as = 10; + this.hurtTicks = this.at = 10; } - this.at = 0.0F; + this.au = 0.0F; Entity entity = damagesource.getEntity(); if (entity != null) { if (entity instanceof EntityHuman) { - this.aG = 60; + this.aH = 60; this.killer = (EntityHuman) entity; } else if (entity instanceof EntityWolf) { EntityWolf entitywolf = (EntityWolf) entity; if (entitywolf.isTamed()) { - this.aG = 60; + this.aH = 60; this.killer = null; } } @@ -477,7 +519,7 @@ public abstract class EntityLiving extends Entity { if (flag) { this.world.a(this, (byte) 2); - this.aB(); + this.aM(); if (entity != null) { double d0 = entity.locX - this.locX; @@ -487,21 +529,21 @@ public abstract class EntityLiving extends Entity { d0 = (Math.random() - Math.random()) * 0.01D; } - this.at = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - this.yaw; + this.au = (float) (Math.atan2(d1, d0) * 180.0D / 3.1415927410125732D) - this.yaw; this.a(entity, i, d0, d1); } else { - this.at = (float) ((int) (Math.random() * 2.0D) * 180); + this.au = (float) ((int) (Math.random() * 2.0D) * 180); } } if (this.health <= 0) { if (flag) { - this.world.makeSound(this, this.n(), this.o(), this.w()); + this.world.makeSound(this, this.n(), this.o(), this.v()); } this.die(damagesource); } else if (flag) { - this.world.makeSound(this, this.m(), this.o(), this.w()); + this.world.makeSound(this, this.m(), this.o(), this.v()); } return true; @@ -509,11 +551,11 @@ public abstract class EntityLiving extends Entity { } } - private float w() { + private float v() { return this.l() ? (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.5F : (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F; } - protected int O() { + public int P() { return 0; } @@ -521,12 +563,12 @@ public abstract class EntityLiving extends Entity { protected int d(DamageSource damagesource, int i) { if (!damagesource.ignoresArmor()) { - int j = 25 - this.O(); - int k = i * j + this.aq; + int j = 25 - this.P(); + int k = i * j + this.ar; this.g(i); i = k / 25; - this.aq = k % 25; + this.ar = k % 25; } return i; @@ -536,10 +578,10 @@ public abstract class EntityLiving extends Entity { if (this.hasEffect(MobEffectList.RESISTANCE)) { int j = (this.getEffect(MobEffectList.RESISTANCE).getAmplifier() + 1) * 5; int k = 25 - j; - int l = i * k + this.aq; + int l = i * k + this.ar; i = l / 25; - this.aq = l % 25; + this.ar = l % 25; } return i; @@ -568,7 +610,7 @@ public abstract class EntityLiving extends Entity { } public void a(Entity entity, int i, double d0, double d1) { - this.cb = true; + this.ce = true; float f = MathHelper.a(d0 * d0 + d1 * d1); float f1 = 0.4F; @@ -576,7 +618,7 @@ public abstract class EntityLiving extends Entity { this.motY /= 2.0D; this.motZ /= 2.0D; this.motX -= d0 / (double) f * (double) f1; - this.motY += 0.4000000059604645D; + this.motY += (double) f1; this.motZ -= d1 / (double) f * (double) f1; if (this.motY > 0.4000000059604645D) { this.motY = 0.4000000059604645D; @@ -586,15 +628,15 @@ public abstract class EntityLiving extends Entity { public void die(DamageSource damagesource) { Entity entity = damagesource.getEntity(); - if (this.ah >= 0 && entity != null) { - entity.b(this, this.ah); + if (this.aj >= 0 && entity != null) { + entity.b(this, this.aj); } if (entity != null) { entity.a(this); } - this.ay = true; + this.az = true; if (!this.world.isStatic) { int i = 0; @@ -603,7 +645,7 @@ public abstract class EntityLiving extends Entity { } if (!this.l()) { - this.dropDeathLoot(this.aG > 0, i); + this.dropDeathLoot(this.aH > 0, i); } } @@ -656,8 +698,8 @@ public abstract class EntityLiving extends Entity { this.damageEntity(DamageSource.FALL, i); } - // CraftBukkit end + // CraftBukkit end int j = this.world.getTypeId(MathHelper.floor(this.locX), MathHelper.floor(this.locY - 0.20000000298023224D - (double) this.height), MathHelper.floor(this.locZ)); if (j > 0) { @@ -671,7 +713,7 @@ public abstract class EntityLiving extends Entity { public void a(float f, float f1) { double d0; - if (this.az()) { + if (this.aK()) { d0 = this.locY; this.a(f, f1, 0.02F); this.move(this.motX, this.motY, this.motZ); @@ -682,7 +724,7 @@ public abstract class EntityLiving extends Entity { if (this.positionChanged && this.d(this.motX, this.motY + 0.6000000238418579D - this.locY + d0, this.motZ)) { this.motY = 0.30000001192092896D; } - } else if (this.aA()) { + } else if (this.aL()) { d0 = this.locY; this.a(f, f1, 0.02F); this.move(this.motX, this.motY, this.motZ); @@ -706,7 +748,7 @@ public abstract class EntityLiving extends Entity { } float f3 = 0.16277136F / (f2 * f2 * f2); - float f4 = this.onGround ? this.ak * f3 : this.al; + float f4 = this.onGround ? this.al * f3 : this.am; this.a(f, f1, f4); f2 = 0.91F; @@ -759,7 +801,7 @@ public abstract class EntityLiving extends Entity { this.motZ *= (double) f2; } - this.aC = this.aD; + this.aD = this.aE; d0 = this.locX - this.lastX; double d1 = this.locZ - this.lastZ; float f6 = MathHelper.a(d0 * d0 + d1 * d1) * 4.0F; @@ -768,8 +810,8 @@ public abstract class EntityLiving extends Entity { f6 = 1.0F; } - this.aD += (f6 - this.aD) * 0.4F; - this.aE += this.aD; + this.aE += (f6 - this.aE) * 0.4F; + this.aF += this.aE; } public boolean r() { @@ -834,19 +876,31 @@ public abstract class EntityLiving extends Entity { return false; } + public void d(float f) { + this.aX = f; + } + + public void e(boolean flag) { + this.aZ = flag; + } + + public float ar() { + return this.bb; + } + public void d() { - if (this.d > 0) { - --this.d; + if (this.h > 0) { + --this.h; } - if (this.aK > 0) { - double d0 = this.locX + (this.aL - this.locX) / (double) this.aK; - double d1 = this.locY + (this.aM - this.locY) / (double) this.aK; - double d2 = this.locZ + (this.aN - this.locZ) / (double) this.aK; + if (this.aN > 0) { + double d0 = this.locX + (this.aO - this.locX) / (double) this.aN; + double d1 = this.locY + (this.aP - this.locY) / (double) this.aN; + double d2 = this.locZ + (this.aQ - this.locZ) / (double) this.aN; double d3; - for (d3 = this.aO - (double) this.yaw; d3 < -180.0D; d3 += 360.0D) { + for (d3 = this.aR - (double) this.yaw; d3 < -180.0D; d3 += 360.0D) { ; } @@ -854,12 +908,12 @@ public abstract class EntityLiving extends Entity { d3 -= 360.0D; } - this.yaw = (float) ((double) this.yaw + d3 / (double) this.aK); - this.pitch = (float) ((double) this.pitch + (this.aP - (double) this.pitch) / (double) this.aK); - --this.aK; + this.yaw = (float) ((double) this.yaw + d3 / (double) this.aN); + this.pitch = (float) ((double) this.pitch + (this.aS - (double) this.pitch) / (double) this.aN); + --this.aN; this.setPosition(d0, d1, d2); this.c(this.yaw, this.pitch); - List list = this.world.a(this, this.boundingBox.shrink(0.03125D, 0.0D, 0.03125D)); + List list = this.world.a((Entity) this, this.boundingBox.shrink(0.03125D, 0.0D, 0.03125D)); if (list.size() > 0) { double d4 = 0.0D; @@ -878,40 +932,45 @@ public abstract class EntityLiving extends Entity { } // MethodProfiler.a("ai"); // CraftBukkit - not in production code - if (this.L()) { - this.aW = false; - this.aT = 0.0F; - this.aU = 0.0F; - this.aV = 0.0F; - } else if (!this.aj) { - this.m_(); + if (this.M()) { + this.aZ = false; + this.aW = 0.0F; + this.aX = 0.0F; + this.aY = 0.0F; + } else if (this.at()) { + if (this.as()) { + this.av(); + } else { + this.m_(); + this.X = this.yaw; + } } // MethodProfiler.a(); // CraftBukkit - not in production code - boolean flag = this.az(); - boolean flag1 = this.aA(); + boolean flag = this.aK(); + boolean flag1 = this.aL(); - if (this.aW) { + if (this.aZ) { if (flag) { this.motY += 0.03999999910593033D; } else if (flag1) { this.motY += 0.03999999910593033D; - } else if (this.onGround && this.d == 0) { - this.X(); - this.d = 10; + } else if (this.onGround && this.h == 0) { + this.o_(); + this.h = 10; } } else { - this.d = 0; + this.h = 0; } - this.aT *= 0.98F; - this.aU *= 0.98F; - this.aV *= 0.9F; - float f = this.ak; + this.aW *= 0.98F; + this.aX *= 0.98F; + this.aY *= 0.9F; + float f = this.al; - this.ak *= this.F(); - this.a(this.aT, this.aU); - this.ak = f; + this.al *= this.G(); + this.a(this.aW, this.aX); + this.al = f; // MethodProfiler.a("push"); // CraftBukkit - not in production code List list1 = this.world.getEntities(this, this.boundingBox.grow(0.20000000298023224D, 0.0D, 0.20000000298023224D)); @@ -928,15 +987,23 @@ public abstract class EntityLiving extends Entity { // MethodProfiler.a(); // CraftBukkit - not in production code } - protected boolean L() { - return this.health <= 0; - } - - public boolean K() { + protected boolean as() { return false; } - protected void X() { + protected boolean at() { + return !this.world.isStatic; + } + + protected boolean M() { + return this.health <= 0; + } + + public boolean L() { + return false; + } + + protected void o_() { this.motY = 0.41999998688697815D; if (this.hasEffect(MobEffectList.JUMP)) { this.motY += (double) ((float) (this.getEffect(MobEffectList.JUMP).getAmplifier() + 1) * 0.1F); @@ -949,14 +1016,14 @@ public abstract class EntityLiving extends Entity { this.motZ += (double) (MathHelper.cos(f) * 0.2F); } - this.cb = true; + this.ce = true; } protected boolean d_() { return true; } - protected void ak() { + protected void au() { EntityHuman entityhuman = this.world.findNearbyPlayer(this, -1.0D); if (entityhuman != null) { @@ -969,56 +1036,70 @@ public abstract class EntityLiving extends Entity { this.die(); } - if (this.aS > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D && this.d_()) { + if (this.aV > 600 && this.random.nextInt(800) == 0 && d3 > 1024.0D && this.d_()) { this.die(); } else if (d3 < 1024.0D) { - this.aS = 0; + this.aV = 0; } } } + protected void av() { + ++this.aV; + this.au(); + if (this.aI != null && !this.aI.isAlive()) { + this.aI = null; + } + + this.goalSelector.a(); + this.navigation.a(); + this.moveController.a(); + this.lookController.a(); + this.jumpController.b(); + } + protected void m_() { - ++this.aS; + ++this.aV; EntityHuman entityhuman = this.world.findNearbyPlayer(this, -1.0D); - this.ak(); - this.aT = 0.0F; - this.aU = 0.0F; + this.au(); + this.aW = 0.0F; + this.aX = 0.0F; float f = 8.0F; if (this.random.nextFloat() < 0.02F) { entityhuman = this.world.findNearbyPlayer(this, (double) f); if (entityhuman != null) { - this.e = entityhuman; - this.aZ = 10 + this.random.nextInt(20); + this.i = entityhuman; + this.bc = 10 + this.random.nextInt(20); } else { - this.aV = (this.random.nextFloat() - 0.5F) * 20.0F; + this.aY = (this.random.nextFloat() - 0.5F) * 20.0F; } } - if (this.e != null) { - this.a(this.e, 10.0F, (float) this.q_()); - if (this.aZ-- <= 0 || this.e.dead || this.e.i(this) > (double) (f * f)) { - this.e = null; + if (this.i != null) { + this.a(this.i, 10.0F, (float) this.x()); + if (this.bc-- <= 0 || this.i.dead || this.i.i(this) > (double) (f * f)) { + this.i = null; } } else { if (this.random.nextFloat() < 0.05F) { - this.aV = (this.random.nextFloat() - 0.5F) * 20.0F; + this.aY = (this.random.nextFloat() - 0.5F) * 20.0F; } - this.yaw += this.aV; - this.pitch = this.aX; + this.yaw += this.aY; + this.pitch = this.ba; } - boolean flag = this.az(); - boolean flag1 = this.aA(); + boolean flag = this.aK(); + boolean flag1 = this.aL(); if (flag || flag1) { - this.aW = this.random.nextFloat() < 0.8F; + this.aZ = this.random.nextFloat() < 0.8F; } } - protected int q_() { + public int x() { return 40; } @@ -1030,9 +1111,9 @@ public abstract class EntityLiving extends Entity { if (entity instanceof EntityLiving) { EntityLiving entityliving = (EntityLiving) entity; - d2 = this.locY + (double) this.x() - (entityliving.locY + (double) entityliving.x()); + d2 = this.locY + (double) this.y() - (entityliving.locY + (double) entityliving.y()); } else { - d2 = (entity.boundingBox.b + entity.boundingBox.e) / 2.0D - (this.locY + (double) this.x()); + d2 = (entity.boundingBox.b + entity.boundingBox.e) / 2.0D - (this.locY + (double) this.y()); } double d3 = (double) MathHelper.a(d0 * d0 + d1 * d1); @@ -1043,12 +1124,12 @@ public abstract class EntityLiving extends Entity { this.yaw = this.b(this.yaw, f2, f); } - public boolean al() { - return this.e != null; + public boolean aw() { + return this.i != null; } - public Entity am() { - return this.e; + public Entity ax() { + return this.i; } private float b(float f, float f1, float f2) { @@ -1073,13 +1154,13 @@ public abstract class EntityLiving extends Entity { return f + f3; } - public void an() {} + public void ay() {} public boolean g() { - return this.world.containsEntity(this.boundingBox) && this.world.a(this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); + return this.world.containsEntity(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); } - protected void ao() { + protected void az() { // CraftBukkit start EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(null, this.getBukkitEntity(), EntityDamageEvent.DamageCause.VOID, 4); this.world.getServer().getPluginManager().callEvent(event); @@ -1092,11 +1173,11 @@ public abstract class EntityLiving extends Entity { // CraftBukkit end } - public Vec3D ap() { - return this.d(1.0F); + public Vec3D aA() { + return this.e(1.0F); } - public Vec3D d(float f) { + public Vec3D e(float f) { float f1; float f2; float f3; @@ -1128,7 +1209,7 @@ public abstract class EntityLiving extends Entity { return false; } - protected void aq() { + protected void aB() { Iterator iterator = this.effects.keySet().iterator(); while (iterator.hasNext()) { @@ -1168,7 +1249,7 @@ public abstract class EntityLiving extends Entity { } } - public void ar() { + public void aC() { Iterator iterator = this.effects.keySet().iterator(); while (iterator.hasNext()) { @@ -1218,7 +1299,7 @@ public abstract class EntityLiving extends Entity { return true; } - public boolean at() { + public boolean aE() { return this.getMonsterType() == MonsterType.UNDEAD; } @@ -1234,7 +1315,7 @@ public abstract class EntityLiving extends Entity { this.b = true; } - protected float F() { + protected float G() { float f = 1.0F; if (this.hasEffect(MobEffectList.FASTER_MOVEMENT)) { @@ -1272,7 +1353,7 @@ public abstract class EntityLiving extends Entity { vec3d1.a(-this.pitch * 3.1415927F / 180.0F); vec3d1.b(-this.yaw * 3.1415927F / 180.0F); - vec3d1 = vec3d1.add(this.locX, this.locY + (double) this.x(), this.locZ); + vec3d1 = vec3d1.add(this.locX, this.locY + (double) this.y(), this.locZ); this.world.a("iconcrack_" + itemstack.getItem().id, vec3d1.a, vec3d1.b, vec3d1.c, vec3d.a, vec3d.b + 0.05D, vec3d.c); } } diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java index aa11acd06e..5601ab00cf 100644 --- a/src/main/java/net/minecraft/server/EntityMagmaCube.java +++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -1,19 +1,22 @@ package net.minecraft.server; +import java.util.List; // CraftBukkit +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public class EntityMagmaCube extends EntitySlime { public EntityMagmaCube(World world) { super(world); this.texture = "/mob/lava.png"; this.fireProof = true; - this.ak = 0.2F; + this.al = 0.2F; } public boolean g() { - return this.world.difficulty > 0 && this.world.containsEntity(this.boundingBox) && this.world.a(this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); + return this.world.difficulty > 0 && this.world.containsEntity(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); } - protected int O() { + public int P() { return this.getSize() * 3; } @@ -21,43 +24,62 @@ public class EntityMagmaCube extends EntitySlime { return 1.0F; } - protected String w() { + protected String v() { return "flame"; } - protected EntitySlime y() { + protected EntitySlime z() { return new EntityMagmaCube(this.world); } protected int e() { - return 0; + return Item.MAGMA_CREAM.id; } - public boolean z() { + protected void dropDeathLoot(boolean flag, int i) { + // CraftBukkit start - whole method + List loot = new java.util.ArrayList(); + int j = this.e(); + + if (j > 0 && this.getSize() > 1) { + int k = this.random.nextInt(4) - 2; + + if (i > 0) { + k += this.random.nextInt(i + 1); + } + + loot.add(new org.bukkit.inventory.ItemStack(j, k)); + } + + CraftEventFactory.callEntityDeathEvent(this, loot); + // CraftBukkit end + } + + public boolean A() { return false; } - protected int A() { - return super.A() * 4; + protected int B() { + return super.B() * 4; } - protected void B() { + protected void C() { this.a *= 0.9F; } - protected void X() { + protected void o_() { this.motY = (double) (0.42F + (float) this.getSize() * 0.1F); - this.cb = true; + this.ce = true; } protected void b(float f) {} - protected boolean C() { + protected boolean D() { return true; } - protected int D() { - return super.D() + 2; + protected int E() { + return super.E() + 2; } protected String m() { @@ -68,15 +90,15 @@ public class EntityMagmaCube extends EntitySlime { return "mob.slime"; } - protected String E() { + protected String F() { return this.getSize() > 1 ? "mob.magmacube.big" : "mob.magmacube.small"; } - public boolean aA() { + public boolean aL() { return false; } - protected boolean G() { + protected boolean H() { return true; } } diff --git a/src/main/java/net/minecraft/server/EntityMinecart.java b/src/main/java/net/minecraft/server/EntityMinecart.java index 98f7dae84a..976eccd21b 100644 --- a/src/main/java/net/minecraft/server/EntityMinecart.java +++ b/src/main/java/net/minecraft/server/EntityMinecart.java @@ -51,7 +51,7 @@ public class EntityMinecart extends Entity implements IInventory { this.items = new ItemStack[27]; // CraftBukkit this.e = 0; this.f = false; - this.bc = true; + this.bf = true; this.b(0.98F, 0.7F); this.height = this.length / 2.0F; } @@ -115,7 +115,7 @@ public class EntityMinecart extends Entity implements IInventory { this.d(-this.m()); this.c(10); - this.aB(); + this.aM(); this.setDamage(this.getDamage() + i * 10); if (this.getDamage() > 40) { if (this.passenger != null) { @@ -211,7 +211,7 @@ public class EntityMinecart extends Entity implements IInventory { super.die(); } - public void w_() { + public void y_() { // CraftBukkit start double prevX = this.locX; double prevY = this.locY; @@ -748,8 +748,8 @@ public class EntityMinecart extends Entity implements IInventory { d1 *= d3; d0 *= 0.10000000149011612D; d1 *= 0.10000000149011612D; - d0 *= (double) (1.0F - this.bO); - d1 *= (double) (1.0F - this.bO); + d0 *= (double) (1.0F - this.bR); + d1 *= (double) (1.0F - this.bR); d0 *= 0.5D; d1 *= 0.5D; if (entity instanceof EntityMinecart) { diff --git a/src/main/java/net/minecraft/server/EntityMonster.java b/src/main/java/net/minecraft/server/EntityMonster.java index f1c1a1faf0..c4c198001d 100644 --- a/src/main/java/net/minecraft/server/EntityMonster.java +++ b/src/main/java/net/minecraft/server/EntityMonster.java @@ -14,21 +14,21 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { public EntityMonster(World world) { super(world); - this.az = 5; + this.aA = 5; } public void d() { float f = this.a(1.0F); if (f > 0.5F) { - this.aS += 2; + this.aV += 2; } super.d(); } - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (!this.world.isStatic && this.world.difficulty == 0) { this.die(); } @@ -55,8 +55,10 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { if (!event.isCancelled()) { if (event.getTarget() == null) { this.target = null; + this.aI = null; } else { this.target = ((CraftEntity) event.getTarget()).getHandle(); + this.aI = this.target instanceof EntityLiving ? (EntityLiving) this.target : null; } } // CraftBukkit end @@ -71,7 +73,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { } } - protected boolean d(Entity entity) { + public boolean d(Entity entity) { int i = this.damage; if (this.hasEffect(MobEffectList.INCREASE_DAMAGE)) { @@ -110,7 +112,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { } } - protected float a(int i, int j, int k) { + public float a(int i, int j, int k) { return 0.5F - this.world.m(i, j, k); } @@ -122,7 +124,7 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { super.a(nbttagcompound); } - protected boolean y() { + protected boolean z() { int i = MathHelper.floor(this.locX); int j = MathHelper.floor(this.boundingBox.b); int k = MathHelper.floor(this.locZ); @@ -145,6 +147,6 @@ public abstract class EntityMonster extends EntityCreature implements IMonster { } public boolean g() { - return this.y() && super.g(); + return this.z() && super.g(); } } diff --git a/src/main/java/net/minecraft/server/EntityPainting.java b/src/main/java/net/minecraft/server/EntityPainting.java index 51169030c7..b4d5c67ec6 100644 --- a/src/main/java/net/minecraft/server/EntityPainting.java +++ b/src/main/java/net/minecraft/server/EntityPainting.java @@ -120,7 +120,7 @@ public class EntityPainting extends Entity { return i == 32 ? 0.5F : (i == 64 ? 0.5F : 0.0F); } - public void w_() { + public void y_() { if (this.f++ == 100 && !this.world.isStatic) { this.f = 0; if (!this.survives()) { @@ -237,7 +237,7 @@ public class EntityPainting extends Entity { // CraftBukkit end this.die(); - this.aB(); + this.aM(); this.world.addEntity(new EntityItem(this.world, this.locX, this.locY, this.locZ, new ItemStack(Item.PAINTING))); } diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java index 23216072de..e9eb86b395 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -56,7 +56,7 @@ public class EntityPig extends EntityAnimal { } protected int e() { - return this.z() ? Item.GRILLED_PORK.id : Item.PORK.id; + return this.A() ? Item.GRILLED_PORK.id : Item.PORK.id; } public boolean hasSaddle() { diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index ac081d4716..c8ed8a0469 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -18,22 +18,26 @@ public class EntityPigZombie extends EntityZombie { public EntityPigZombie(World world) { super(world); this.texture = "/mob/pigzombie.png"; - this.aY = 0.5F; + this.bb = 0.5F; this.damage = 5; this.fireProof = true; } - public void w_() { - this.aY = this.target != null ? 0.95F : 0.5F; + protected boolean as() { + return false; + } + + public void y_() { + this.bb = this.target != null ? 0.95F : 0.5F; if (this.soundDelay > 0 && --this.soundDelay == 0) { this.world.makeSound(this, "mob.zombiepig.zpigangry", this.o() * 2.0F, ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 1.8F); } - super.w_(); + super.y_(); } public boolean g() { - return this.world.difficulty > 0 && this.world.containsEntity(this.boundingBox) && this.world.a(this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); + return this.world.difficulty > 0 && this.world.containsEntity(this.boundingBox) && this.world.a((Entity) this, this.boundingBox).size() == 0 && !this.world.c(this.boundingBox); } public void b(NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index e01b529c97..64821a6e75 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -24,13 +24,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public double e; public List chunkCoordIntPairQueue = new LinkedList(); public Set playerChunkCoordIntPairs = new HashSet(); - private int cc = -99999999; - private int cd = -99999999; - private boolean ce = true; + private int cf = -99999999; + private int cg = -99999999; + private boolean ch = true; public int lastSentExp = -99999999; // CraftBukkit - priv to pub - public int cg = 60; // CraftBukkit - private to public; temporary until we get an API out - private ItemStack[] ch = new ItemStack[] { null, null, null, null, null}; - private int ci = 0; + public int cj = 60; // CraftBukkit - private to public; temporary until we get an API out + private ItemStack[] ck = new ItemStack[] { null, null, null, null, null}; + private int cl = 0; public boolean h; public int ping; public boolean j = false; @@ -44,7 +44,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { int j = chunkcoordinates.z; int k = chunkcoordinates.y; - if (!world.worldProvider.e) { + if (!world.worldProvider.f) { i += this.random.nextInt(20) - 10; k = world.f(i, j); j += this.random.nextInt(20) - 10; @@ -52,7 +52,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.setPositionRotation((double) i + 0.5D, (double) k, (double) j + 0.5D, 0.0F, 0.0F); this.b = minecraftserver; - this.bM = 0.0F; + this.bP = 0.0F; this.name = s; this.height = 0.0F; @@ -119,28 +119,28 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public ItemStack[] getEquipment() { - return this.ch; + return this.ck; } - protected void w() { + protected void r_() { this.height = 0.0F; } - public float x() { + public float y() { return 1.62F; } - public void w_() { + public void y_() { this.itemInWorldManager.c(); - --this.cg; + --this.cj; this.activeContainer.a(); for (int i = 0; i < 5; ++i) { ItemStack itemstack = this.c(i); - if (itemstack != this.ch[i]) { + if (itemstack != this.ck[i]) { this.b.getTracker(this.dimension).a(this, new Packet5EntityEquipment(this.id, i, itemstack)); - this.ch[i] = itemstack; + this.ck[i] = itemstack; } } } @@ -187,7 +187,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public boolean damageEntity(DamageSource damagesource, int i) { - if (this.cg > 0) { + if (this.cj > 0) { return false; } else { // CraftBukkit - this.b.pvpMode -> this.world.pvpMode @@ -211,7 +211,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } } - protected boolean y() { + protected boolean z() { return this.b.pvpMode; } @@ -220,7 +220,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } public void a(boolean flag) { - super.w_(); + super.y_(); for (int i = 0; i < this.inventory.getSize(); ++i) { ItemStack itemstack = this.inventory.getItem(i); @@ -282,8 +282,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.b.serverConfigurationManager.changeDimension(this, b0); this.lastSentExp = -1; - this.cc = -1; - this.cd = -1; + this.cf = -1; + this.cg = -1; this.a((Statistic) AchievementList.x); } } @@ -304,11 +304,11 @@ public class EntityPlayer extends EntityHuman implements ICrafting { --this.I; } - if (this.getHealth() != this.cc || this.cd != this.foodData.a() || this.foodData.c() == 0.0F != this.ce) { + if (this.getHealth() != this.cf || this.cg != this.foodData.a() || this.foodData.c() == 0.0F != this.ch) { this.netServerHandler.sendPacket(new Packet8UpdateHealth(this.getHealth(), this.foodData.a(), this.foodData.c())); - this.cc = this.getHealth(); - this.cd = this.foodData.a(); - this.ce = this.foodData.c() == 0.0F; + this.cf = this.getHealth(); + this.cg = this.foodData.a(); + this.ch = this.foodData.c() == 0.0F; } if (this.expTotal != this.lastSentExp) { @@ -335,8 +335,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.b.serverConfigurationManager.changeDimension(this, 1); this.lastSentExp = -1; - this.cc = -1; - this.cd = -1; + this.cf = -1; + this.cg = -1; } } @@ -371,7 +371,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { this.activeContainer.a(); } - public void r_() { + public void s_() { if (!this.t) { this.u = -1; this.t = true; @@ -381,7 +381,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } } - public void A() {} + public void B() {} public EnumBedResult a(int i, int j, int k) { EnumBedResult enumbedresult = super.a(i, j, k); @@ -433,55 +433,55 @@ public class EntityPlayer extends EntityHuman implements ICrafting { super.a(d0, flag); } - private void aH() { - this.ci = this.ci % 100 + 1; + private void aS() { + this.cl = this.cl % 100 + 1; } public void b(int i, int j, int k) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 1, "Crafting", 9)); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 1, "Crafting", 9)); this.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } public void c(int i, int j, int k) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 4, "Enchanting", 9)); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 4, "Enchanting", 9)); this.activeContainer = new ContainerEnchantTable(this.inventory, this.world, i, j, k); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } public void a(IInventory iinventory) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 0, iinventory.getName(), iinventory.getSize())); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 0, iinventory.getName(), iinventory.getSize())); this.activeContainer = new ContainerChest(this.inventory, iinventory); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } public void a(TileEntityFurnace tileentityfurnace) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 2, tileentityfurnace.getName(), tileentityfurnace.getSize())); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 2, tileentityfurnace.getName(), tileentityfurnace.getSize())); this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } public void a(TileEntityDispenser tileentitydispenser) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 3, tileentitydispenser.getName(), tileentitydispenser.getSize())); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 3, tileentitydispenser.getName(), tileentitydispenser.getSize())); this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } public void a(TileEntityBrewingStand tileentitybrewingstand) { - this.aH(); - this.netServerHandler.sendPacket(new Packet100OpenWindow(this.ci, 5, tileentitybrewingstand.getName(), tileentitybrewingstand.getSize())); + this.aS(); + this.netServerHandler.sendPacket(new Packet100OpenWindow(this.cl, 5, tileentitybrewingstand.getName(), tileentitybrewingstand.getSize())); this.activeContainer = new ContainerBrewingStand(this.inventory, tileentitybrewingstand); - this.activeContainer.windowId = this.ci; + this.activeContainer.windowId = this.cl; this.activeContainer.a((ICrafting) this); } @@ -510,32 +510,23 @@ public class EntityPlayer extends EntityHuman implements ICrafting { public void closeInventory() { this.netServerHandler.sendPacket(new Packet101CloseWindow(this.activeContainer.windowId)); - this.D(); + this.E(); } - public void C() { + public void D() { if (!this.h) { this.netServerHandler.sendPacket(new Packet103SetSlot(-1, -1, this.inventory.l())); } } - public void D() { + public void E() { this.activeContainer.a((EntityHuman) this); this.activeContainer = this.defaultContainer; } - public void a(float f, float f1, boolean flag, boolean flag1, float f2, float f3) { - this.aT = f; - this.aU = f1; - this.aW = flag; - this.setSneak(flag1); - this.pitch = f2; - this.yaw = f3; - } - public void a(Statistic statistic, int i) { if (statistic != null) { - if (!statistic.g) { + if (!statistic.f) { while (i > 100) { this.netServerHandler.sendPacket(new Packet200Statistic(statistic.e, 100)); i -= 100; @@ -546,7 +537,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } } - public void E() { + public void F() { if (this.vehicle != null) { this.mount(this.vehicle); } @@ -560,20 +551,20 @@ public class EntityPlayer extends EntityHuman implements ICrafting { } } - public void s_() { - this.cc = -99999999; + public void t_() { + this.cf = -99999999; } public void a(String s) { LocaleLanguage localelanguage = LocaleLanguage.a(); - String s1 = localelanguage.a(s); + String s1 = localelanguage.b(s); this.netServerHandler.sendPacket(new Packet3Chat(s1)); } - protected void G() { + protected void H() { this.netServerHandler.sendPacket(new Packet38EntityStatus(this.id, (byte) 9)); - super.G(); + super.H(); } public void a(ItemStack itemstack, int i) { diff --git a/src/main/java/net/minecraft/server/EntityProjectile.java b/src/main/java/net/minecraft/server/EntityProjectile.java index dac092997d..b3add9a43b 100644 --- a/src/main/java/net/minecraft/server/EntityProjectile.java +++ b/src/main/java/net/minecraft/server/EntityProjectile.java @@ -30,7 +30,7 @@ public abstract class EntityProjectile extends Entity { super(world); this.shooter = entityliving; this.b(0.25F, 0.25F); - this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.x(), entityliving.locZ, entityliving.yaw, entityliving.pitch); + this.setPositionRotation(entityliving.locX, entityliving.locY + (double) entityliving.y(), entityliving.locZ, entityliving.yaw, entityliving.pitch); this.locX -= (double) (MathHelper.cos(this.yaw / 180.0F * 3.1415927F) * 0.16F); this.locY -= 0.10000000149011612D; this.locZ -= (double) (MathHelper.sin(this.yaw / 180.0F * 3.1415927F) * 0.16F); @@ -82,11 +82,11 @@ public abstract class EntityProjectile extends Entity { this.h = 0; } - public void w_() { - this.bI = this.locX; - this.bJ = this.locY; - this.bK = this.locZ; - super.w_(); + public void y_() { + this.bL = this.locX; + this.bM = this.locY; + this.bN = this.locZ; + super.y_(); if (this.shake > 0) { --this.shake; } @@ -190,7 +190,7 @@ public abstract class EntityProjectile extends Entity { float f2 = 0.99F; float f3 = this.e(); - if (this.az()) { + if (this.aK()) { for (int k = 0; k < 4; ++k) { float f4 = 0.25F; diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java index 466ef57925..46f077e41b 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -6,6 +6,7 @@ import org.bukkit.craftbukkit.event.CraftEventFactory; public class EntitySheep extends EntityAnimal { public static final float[][] a = new float[][] { { 1.0F, 1.0F, 1.0F}, { 0.95F, 0.7F, 0.2F}, { 0.9F, 0.5F, 0.85F}, { 0.6F, 0.7F, 0.95F}, { 0.9F, 0.9F, 0.2F}, { 0.5F, 0.8F, 0.1F}, { 0.95F, 0.7F, 0.8F}, { 0.3F, 0.3F, 0.3F}, { 0.6F, 0.6F, 0.6F}, { 0.3F, 0.6F, 0.7F}, { 0.7F, 0.4F, 0.9F}, { 0.2F, 0.4F, 0.8F}, { 0.5F, 0.4F, 0.3F}, { 0.4F, 0.5F, 0.2F}, { 0.8F, 0.3F, 0.3F}, { 0.1F, 0.1F, 0.1F}}; + private int b; public EntitySheep(World world) { super(world); @@ -38,13 +39,75 @@ public class EntitySheep extends EntityAnimal { return Block.WOOL.id; } + public void d() { + super.d(); + if (this.b > 0) { + --this.b; + } + } + + protected void o_() { + if (this.b <= 0) { + super.o_(); + } + } + + protected void m_() { + super.m_(); + int i; + int j; + int k; + + if (!this.E() && this.b <= 0 && (this.l() && this.random.nextInt(50) == 0 || this.random.nextInt(1000) == 0)) { + i = MathHelper.floor(this.locX); + j = MathHelper.floor(this.locY); + k = MathHelper.floor(this.locZ); + if (this.world.getTypeId(i, j, k) == Block.LONG_GRASS.id && this.world.getData(i, j, k) == 1 || this.world.getTypeId(i, j - 1, k) == Block.GRASS.id) { + this.b = 40; + this.world.a(this, (byte) 10); + } + } else if (this.b == 4) { + i = MathHelper.floor(this.locX); + j = MathHelper.floor(this.locY); + k = MathHelper.floor(this.locZ); + boolean flag = false; + + if (this.world.getTypeId(i, j, k) == Block.LONG_GRASS.id) { + this.world.f(2001, i, j, k, Block.LONG_GRASS.id + 256); + this.world.setTypeId(i, j, k, 0); + flag = true; + } else if (this.world.getTypeId(i, j - 1, k) == Block.GRASS.id) { + this.world.f(2001, i, j - 1, k, Block.GRASS.id); + this.world.setTypeId(i, j - 1, k, Block.DIRT.id); + flag = true; + } + + if (flag) { + this.setSheared(false); + if (this.l()) { + int l = this.getAge() + 1200; + + if (l > 0) { + l = 0; + } + + this.setAge(l); + } + } + } + } + + protected boolean v() { + return this.b > 0; + } + public boolean b(EntityHuman entityhuman) { ItemStack itemstack = entityhuman.inventory.getItemInHand(); - if (itemstack != null && itemstack.id == Item.SHEARS.id && !this.isSheared()) { + if (itemstack != null && itemstack.id == Item.SHEARS.id && !this.isSheared() && !this.l()) { if (!this.world.isStatic) { this.setSheared(true); - int i = 2 + this.random.nextInt(3); + int i = 1 + this.random.nextInt(3); for (int j = 0; j < i; ++j) { EntityItem entityitem = this.a(new ItemStack(Block.WOOL.id, 1, this.getColor()), 1.0F); diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java index 2d15252eb6..b7e88c10bd 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -36,7 +36,7 @@ public class EntitySkeleton extends EntityMonster { public void die(DamageSource damagesource) { super.die(damagesource); - if (damagesource.g() instanceof EntityArrow && damagesource.getEntity() instanceof EntityHuman) { + if (damagesource.b() instanceof EntityArrow && damagesource.getEntity() instanceof EntityHuman) { EntityHuman entityhuman = (EntityHuman) damagesource.getEntity(); double d0 = entityhuman.locX - this.locX; double d1 = entityhuman.locZ - this.locZ; @@ -73,7 +73,7 @@ public class EntitySkeleton extends EntityMonster { if (this.attackTicks == 0) { EntityArrow entityarrow = new EntityArrow(this.world, this, 1.0F); - double d2 = entity.locY + (double) entity.x() - 0.699999988079071D - entityarrow.locY; + double d2 = entity.locY + (double) entity.y() - 0.699999988079071D - entityarrow.locY; float f1 = MathHelper.a(d0 * d0 + d1 * d1) * 0.2F; this.world.makeSound(this, "random.bow", 1.0F, 1.0F / (this.random.nextFloat() * 0.4F + 0.8F)); diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java index be87d37384..a3e254a96c 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java @@ -15,7 +15,7 @@ public class EntitySlime extends EntityLiving implements IMonster { this.height = 0.0F; this.jumpDelay = this.random.nextInt(20) + 10; this.setSize(i); - this.az = i; + this.aA = i; } protected void b() { @@ -50,15 +50,15 @@ public class EntitySlime extends EntityLiving implements IMonster { this.setSize(nbttagcompound.getInt("Size") + 1); } - protected String w() { + protected String v() { return "slime"; } - protected String E() { + protected String F() { return "mob.slime"; } - public void w_() { + public void y_() { if (!this.world.isStatic && this.world.difficulty == 0 && this.getSize() > 0) { this.dead = true; } @@ -67,7 +67,7 @@ public class EntitySlime extends EntityLiving implements IMonster { this.c = this.b; boolean flag = this.onGround; - super.w_(); + super.y_(); if (this.onGround && !flag) { int i = this.getSize(); @@ -77,21 +77,21 @@ public class EntitySlime extends EntityLiving implements IMonster { float f2 = MathHelper.sin(f) * (float) i * 0.5F * f1; float f3 = MathHelper.cos(f) * (float) i * 0.5F * f1; - this.world.a(this.w(), this.locX + (double) f2, this.boundingBox.b, this.locZ + (double) f3, 0.0D, 0.0D, 0.0D); + this.world.a(this.v(), this.locX + (double) f2, this.boundingBox.b, this.locZ + (double) f3, 0.0D, 0.0D, 0.0D); } - if (this.G()) { - this.world.makeSound(this, this.E(), this.o(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) / 0.8F); + if (this.H()) { + this.world.makeSound(this, this.F(), this.o(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) / 0.8F); } this.a = -0.5F; } - this.B(); + this.C(); } protected void m_() { - this.ak(); + this.au(); EntityHuman entityhuman = this.world.findNearbyVulnerablePlayer(this, 16.0D); if (entityhuman != null) { @@ -99,36 +99,36 @@ public class EntitySlime extends EntityLiving implements IMonster { } if (this.onGround && this.jumpDelay-- <= 0) { - this.jumpDelay = this.A(); + this.jumpDelay = this.B(); if (entityhuman != null) { this.jumpDelay /= 3; } - this.aW = true; - if (this.I()) { - this.world.makeSound(this, this.E(), this.o(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 0.8F); + this.aZ = true; + if (this.J()) { + this.world.makeSound(this, this.F(), this.o(), ((this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F) * 0.8F); } this.a = 1.0F; - this.aT = 1.0F - this.random.nextFloat() * 2.0F; - this.aU = (float) (1 * this.getSize()); + this.aW = 1.0F - this.random.nextFloat() * 2.0F; + this.aX = (float) (1 * this.getSize()); } else { - this.aW = false; + this.aZ = false; if (this.onGround) { - this.aT = this.aU = 0.0F; + this.aW = this.aX = 0.0F; } } } - protected void B() { + protected void C() { this.a *= 0.6F; } - protected int A() { + protected int B() { return this.random.nextInt(20) + 10; } - protected EntitySlime y() { + protected EntitySlime z() { return new EntitySlime(this.world); } @@ -153,7 +153,7 @@ public class EntitySlime extends EntityLiving implements IMonster { for (int k = 0; k < j; ++k) { float f = ((float) (k % 2) - 0.5F) * (float) i / 4.0F; float f1 = ((float) (k / 2) - 0.5F) * (float) i / 4.0F; - EntitySlime entityslime = this.y(); + EntitySlime entityslime = this.z(); entityslime.setSize(i / 2); entityslime.setPositionRotation(this.locX + (double) f, this.locY + 0.5D, this.locZ + (double) f1, this.random.nextFloat() * 360.0F, 0.0F); @@ -165,20 +165,20 @@ public class EntitySlime extends EntityLiving implements IMonster { } public void a_(EntityHuman entityhuman) { - if (this.C()) { + if (this.D()) { int i = this.getSize(); - if (this.g(entityhuman) && (double) this.h(entityhuman) < 0.6D * (double) i && entityhuman.damageEntity(DamageSource.mobAttack(this), this.D())) { + if (this.g(entityhuman) && (double) this.h(entityhuman) < 0.6D * (double) i && entityhuman.damageEntity(DamageSource.mobAttack(this), this.E())) { this.world.makeSound(this, "mob.slimeattack", 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F); } } } - protected boolean C() { + protected boolean D() { return this.getSize() > 1; } - protected int D() { + protected int E() { return this.getSize(); } @@ -204,15 +204,15 @@ public class EntitySlime extends EntityLiving implements IMonster { return 0.4F * (float) this.getSize(); } - protected int q_() { + public int x() { return 0; } - protected boolean I() { + protected boolean J() { return this.getSize() > 1; } - protected boolean G() { + protected boolean H() { return this.getSize() > 2; } } diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java index adbca34baf..bf8cf8403e 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java @@ -17,7 +17,7 @@ public class EntitySnowman extends EntityGolem { public void d() { super.d(); - if (this.target == null && !this.D() && this.world.random.nextInt(100) == 0) { + if (this.target == null && !this.E() && this.world.random.nextInt(100) == 0) { List list = this.world.a(EntityMonster.class, AxisAlignedBB.b(this.locX, this.locY, this.locZ, this.locX + 1.0D, this.locY + 1.0D, this.locZ + 1.0D).grow(16.0D, 4.0D, 16.0D)); if (!list.isEmpty()) { @@ -51,7 +51,7 @@ public class EntitySnowman extends EntityGolem { if (this.attackTicks == 0) { EntitySnowball entitysnowball = new EntitySnowball(this.world, this); - double d2 = entity.locY + (double) entity.x() - 1.100000023841858D - entitysnowball.locY; + double d2 = entity.locY + (double) entity.y() - 1.100000023841858D - entitysnowball.locY; float f1 = MathHelper.a(d0 * d0 + d1 * d1) * 0.2F; this.world.makeSound(this, "random.bow", 1.0F, 1.0F / (this.random.nextFloat() * 0.4F + 0.8F)); diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java index 8a2b9d92aa..d240734f48 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java @@ -14,7 +14,7 @@ public class EntitySpider extends EntityMonster { super(world); this.texture = "/mob/spider.png"; this.b(1.4F, 0.9F); - this.aY = 0.8F; + this.bb = 0.8F; } protected void b() { @@ -26,8 +26,8 @@ public class EntitySpider extends EntityMonster { super.d(); } - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (!this.world.isStatic) { this.a(this.positionChanged); } @@ -138,7 +138,7 @@ public class EntitySpider extends EntityMonster { } public boolean r() { - return this.o_(); + return this.u(); } public void s() {} @@ -151,7 +151,7 @@ public class EntitySpider extends EntityMonster { return mobeffect.getEffectId() == MobEffectList.POISON.id ? false : super.a(mobeffect); } - public boolean o_() { + public boolean u() { return (this.datawatcher.getByte(16) & 1) != 0; } diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java index abe5fd86c4..71005f60e3 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -75,7 +75,7 @@ public class EntitySquid extends EntityWaterAnimal { return super.b(entityhuman); } - public boolean az() { + public boolean aK() { return this.world.a(this.boundingBox.grow(0.0D, -0.6000000238418579D, 0.0D), Material.WATER, this); } @@ -93,7 +93,7 @@ public class EntitySquid extends EntityWaterAnimal { } } - if (this.az()) { + if (this.aK()) { float f; if (this.h < 3.1415927F) { @@ -111,7 +111,7 @@ public class EntitySquid extends EntityWaterAnimal { this.n *= 0.99F; } - if (!this.aj) { + if (!this.world.isStatic) { this.motX = (double) (this.o * this.l); this.motY = (double) (this.p * this.l); this.motZ = (double) (this.q * this.l); @@ -124,7 +124,7 @@ public class EntitySquid extends EntityWaterAnimal { this.a += (-((float) Math.atan2((double) f, this.motY)) * 180.0F / 3.1415927F - this.a) * 0.1F; } else { this.j = MathHelper.abs(MathHelper.sin(this.h)) * 3.1415927F * 0.25F; - if (!this.aj) { + if (!this.world.isStatic) { this.motX = 0.0D; this.motY -= 0.08D; this.motY *= 0.9800000190734863D; @@ -140,10 +140,10 @@ public class EntitySquid extends EntityWaterAnimal { } protected void m_() { - ++this.aS; - if (this.aS > 100) { + ++this.aV; + if (this.aV > 100) { this.o = this.p = this.q = 0.0F; - } else if (this.random.nextInt(50) == 0 || !this.bS || this.o == 0.0F && this.p == 0.0F && this.q == 0.0F) { + } else if (this.random.nextInt(50) == 0 || !this.bV || this.o == 0.0F && this.p == 0.0F && this.q == 0.0F) { float f = this.random.nextFloat() * 3.1415927F * 2.0F; this.o = MathHelper.cos(f) * 0.2F; @@ -151,7 +151,7 @@ public class EntitySquid extends EntityWaterAnimal { this.q = MathHelper.sin(f) * 0.2F; } - this.ak(); + this.au(); } public boolean g() { diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java index df280342a5..d4deb68bd2 100644 --- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java +++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java @@ -16,7 +16,7 @@ public class EntityTNTPrimed extends Entity { public EntityTNTPrimed(World world) { super(world); this.fuseTicks = 0; - this.bc = true; + this.bf = true; this.b(0.98F, 0.98F); this.height = this.length / 2.0F; } @@ -45,7 +45,7 @@ public class EntityTNTPrimed extends Entity { return !this.dead; } - public void w_() { + public void y_() { this.lastX = this.locX; this.lastY = this.locY; this.lastZ = this.locZ; diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java index ae16623eb2..a3a5a4be03 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -60,7 +60,7 @@ public class EntityTrackerEntry { } ++this.t; - if (++this.l % this.c == 0 || this.tracker.cb) { + if (++this.l % this.c == 0 || this.tracker.ce) { int i = MathHelper.floor(this.tracker.locX * 32.0D); int j = MathHelper.floor(this.tracker.locY * 32.0D); int k = MathHelper.floor(this.tracker.locZ * 32.0D); @@ -126,7 +126,7 @@ public class EntityTrackerEntry { } } - this.tracker.cb = false; + this.tracker.ce = false; if (this.tracker.velocityChanged) { // CraftBukkit start - create PlayerVelocity event boolean cancelled = false; @@ -329,17 +329,17 @@ public class EntityTrackerEntry { return new Packet23VehicleSpawn(this.tracker, 51); } else { if (this.tracker instanceof EntityFallingBlock) { - EntityFallingBlock entityfallingsand = (EntityFallingBlock) this.tracker; + EntityFallingBlock entityfallingblock = (EntityFallingBlock) this.tracker; - if (entityfallingsand.a == Block.SAND.id) { + if (entityfallingblock.a == Block.SAND.id) { return new Packet23VehicleSpawn(this.tracker, 70); } - if (entityfallingsand.a == Block.GRAVEL.id) { + if (entityfallingblock.a == Block.GRAVEL.id) { return new Packet23VehicleSpawn(this.tracker, 71); } - if (entityfallingsand.a == Block.DRAGON_EGG.id) { + if (entityfallingblock.a == Block.DRAGON_EGG.id) { return new Packet23VehicleSpawn(this.tracker, 74); } } diff --git a/src/main/java/net/minecraft/server/EntityWeatherLighting.java b/src/main/java/net/minecraft/server/EntityWeatherLighting.java index 8a19aa52fa..6a715f2586 100644 --- a/src/main/java/net/minecraft/server/EntityWeatherLighting.java +++ b/src/main/java/net/minecraft/server/EntityWeatherLighting.java @@ -73,8 +73,8 @@ public class EntityWeatherLighting extends EntityWeather { } } - public void w_() { - super.w_(); + public void y_() { + super.y_(); if (this.lifeTicks == 2) { this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F); this.world.makeSound(this.locX, this.locY, this.locZ, "random.explode", 2.0F, 0.5F + this.random.nextFloat() * 0.2F); diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java index ad91308cc8..70805c41b2 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -27,7 +27,7 @@ public class EntityWolf extends EntityAnimal { super(world); this.texture = "/mob/wolf.png"; this.b(0.8F, 0.8F); - this.aY = 1.1F; + this.bb = 1.1F; } public int getMaxHealth() { @@ -94,7 +94,7 @@ public class EntityWolf extends EntityAnimal { protected void m_() { super.m_(); - if (!this.e && !this.D() && this.isTamed() && this.vehicle == null) { + if (!this.e && !this.E() && this.isTamed() && this.vehicle == null) { EntityHuman entityhuman = this.world.a(this.getOwnerName()); if (entityhuman != null) { @@ -103,10 +103,10 @@ public class EntityWolf extends EntityAnimal { if (f > 5.0F) { this.c(entityhuman, f); } - } else if (!this.az()) { + } else if (!this.aK()) { this.setSitting(true); } - } else if (this.target == null && !this.D() && !this.isTamed() && this.world.random.nextInt(100) == 0) { + } else if (this.target == null && !this.E() && !this.isTamed() && this.world.random.nextInt(100) == 0) { List list = this.world.a(EntitySheep.class, AxisAlignedBB.b(this.locX, this.locY, this.locZ, this.locX + 1.0D, this.locY + 1.0D, this.locZ + 1.0D).grow(16.0D, 4.0D, 16.0D)); if (!list.isEmpty()) { @@ -124,7 +124,7 @@ public class EntityWolf extends EntityAnimal { } } - if (this.az()) { + if (this.aK()) { this.setSitting(false); } @@ -136,8 +136,8 @@ public class EntityWolf extends EntityAnimal { public void d() { super.d(); this.a = false; - if (this.al() && !this.D() && !this.isAngry()) { - Entity entity = this.am(); + if (this.aw() && !this.E() && !this.isAngry()) { + Entity entity = this.ax(); if (entity instanceof EntityHuman) { EntityHuman entityhuman = (EntityHuman) entity; @@ -147,13 +147,13 @@ public class EntityWolf extends EntityAnimal { if (!this.isTamed() && itemstack.id == Item.BONE.id) { this.a = true; } else if (this.isTamed() && Item.byId[itemstack.id] instanceof ItemFood) { - this.a = ((ItemFood) Item.byId[itemstack.id]).p(); + this.a = ((ItemFood) Item.byId[itemstack.id]).q(); } } } } - if (!this.aj && this.g && !this.h && !this.D() && this.onGround) { + if (!this.world.isStatic && this.g && !this.h && !this.E() && this.onGround) { this.h = true; this.i = 0.0F; this.j = 0.0F; @@ -161,8 +161,8 @@ public class EntityWolf extends EntityAnimal { } } - public void w_() { - super.w_(); + public void y_() { + super.y_(); this.c = this.b; if (this.a) { this.b += (1.0F - this.b) * 0.4F; @@ -171,10 +171,10 @@ public class EntityWolf extends EntityAnimal { } if (this.a) { - this.aZ = 10; + this.bc = 10; } - if (this.ay()) { + if (this.aJ()) { this.g = true; this.h = false; this.i = 0.0F; @@ -207,12 +207,12 @@ public class EntityWolf extends EntityAnimal { } } - public float x() { + public float y() { return this.length * 0.8F; } - protected int q_() { - return this.isSitting() ? 20 : super.q_(); + public int x() { + return this.isSitting() ? 20 : super.x(); } private void c(Entity entity, float f) { @@ -236,7 +236,7 @@ public class EntityWolf extends EntityAnimal { } } - protected boolean w() { + protected boolean v() { return this.isSitting() || this.h; } @@ -386,9 +386,9 @@ public class EntityWolf extends EntityAnimal { if (itemstack != null && Item.byId[itemstack.id] instanceof ItemFood) { ItemFood itemfood = (ItemFood) Item.byId[itemstack.id]; - if (itemfood.p() && this.datawatcher.getInt(18) < 20) { + if (itemfood.q() && this.datawatcher.getInt(18) < 20) { --itemstack.count; - this.d(itemfood.n(), RegainReason.EATING); // CraftBukkit + this.d(itemfood.o(), RegainReason.EATING); // CraftBukkit if (itemstack.count <= 0) { entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, (ItemStack) null); } @@ -400,7 +400,7 @@ public class EntityWolf extends EntityAnimal { if (entityhuman.name.equalsIgnoreCase(this.getOwnerName())) { if (!this.world.isStatic) { this.setSitting(!this.isSitting()); - this.aW = false; + this.aZ = false; this.setPathEntity((PathEntity) null); } diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java index bb2cd0d05c..43d7b8f0f1 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -7,18 +7,27 @@ public class EntityZombie extends EntityMonster { public EntityZombie(World world) { super(world); this.texture = "/mob/zombie.png"; - this.aY = 0.5F; + this.bb = 0.5F; this.damage = 4; + this.goalSelector.a(1, new PathfinderGoalFloat(this)); + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, world, 16.0F)); + this.goalSelector.a(3, new PathfinderGoalRandomStroll(this)); + this.goalSelector.a(4, new PathfinderGoalLookAtPlayer(this, world, 8.0F)); + this.goalSelector.a(4, new PathfinderGoalRandomLookaround(this)); } public int getMaxHealth() { return 20; } - protected int O() { + public int P() { return 2; } + protected boolean as() { + return false; + } + public void d() { if (this.world.e() && !this.world.isStatic) { float f = this.a(1.0F); diff --git a/src/main/java/net/minecraft/server/FoodMetaData.java b/src/main/java/net/minecraft/server/FoodMetaData.java index ad7a7a3098..64581632d7 100644 --- a/src/main/java/net/minecraft/server/FoodMetaData.java +++ b/src/main/java/net/minecraft/server/FoodMetaData.java @@ -23,7 +23,7 @@ public class FoodMetaData { } public void a(ItemFood itemfood) { - this.a(itemfood.n(), itemfood.o()); + this.a(itemfood.o(), itemfood.p()); } public void a(EntityHuman entityhuman) { diff --git a/src/main/java/net/minecraft/server/ItemBoat.java b/src/main/java/net/minecraft/server/ItemBoat.java index d31131b865..a6bb0b2d2f 100644 --- a/src/main/java/net/minecraft/server/ItemBoat.java +++ b/src/main/java/net/minecraft/server/ItemBoat.java @@ -36,7 +36,7 @@ public class ItemBoat extends Item { if (movingobjectposition == null) { return itemstack; } else { - Vec3D vec3d2 = entityhuman.d(f); + Vec3D vec3d2 = entityhuman.e(f); boolean flag = false; float f9 = 1.0F; List list = world.getEntities(entityhuman, entityhuman.boundingBox.a(vec3d2.a * d3, vec3d2.b * d3, vec3d2.c * d3).grow((double) f9, (double) f9, (double) f9)); diff --git a/src/main/java/net/minecraft/server/ItemBucket.java b/src/main/java/net/minecraft/server/ItemBucket.java index 3dd4c157e8..e40460043b 100644 --- a/src/main/java/net/minecraft/server/ItemBucket.java +++ b/src/main/java/net/minecraft/server/ItemBucket.java @@ -128,7 +128,7 @@ public class ItemBucket extends Item { } // CraftBukkit end - if (world.worldProvider.d && this.a == Block.WATER.id) { + if (world.worldProvider.e && this.a == Block.WATER.id) { world.makeSound(d0 + 0.5D, d1 + 0.5D, d2 + 0.5D, "random.fizz", 0.5F, 2.6F + (world.random.nextFloat() - world.random.nextFloat()) * 0.8F); for (int l = 0; l < 8; ++l) { diff --git a/src/main/java/net/minecraft/server/ItemFishingRod.java b/src/main/java/net/minecraft/server/ItemFishingRod.java index 33fa84bfeb..f50ad53d78 100644 --- a/src/main/java/net/minecraft/server/ItemFishingRod.java +++ b/src/main/java/net/minecraft/server/ItemFishingRod.java @@ -15,7 +15,7 @@ public class ItemFishingRod extends Item { int i = entityhuman.hookedFish.j(); itemstack.damage(i, entityhuman); - entityhuman.r_(); + entityhuman.s_(); } else { // CraftBukkit start PlayerFishEvent playerFishEvent = new PlayerFishEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), null,PlayerFishEvent.State.FISHING); @@ -31,7 +31,7 @@ public class ItemFishingRod extends Item { world.addEntity(new EntityFishingHook(world, entityhuman)); } - entityhuman.r_(); + entityhuman.s_(); } return itemstack; diff --git a/src/main/java/net/minecraft/server/ItemFood.java b/src/main/java/net/minecraft/server/ItemFood.java index 755e13c805..c0dc28bcca 100644 --- a/src/main/java/net/minecraft/server/ItemFood.java +++ b/src/main/java/net/minecraft/server/ItemFood.java @@ -6,20 +6,20 @@ public class ItemFood extends Item { public final int a; private final int b; - private final float bR; - private final boolean bS; - private boolean bT; - private int bU; + private final float bS; + private final boolean bT; + private boolean bU; private int bV; private int bW; - private float bX; + private int bX; + private float bY; public ItemFood(int i, int j, float f, boolean flag) { super(i); this.a = 32; this.b = j; - this.bS = flag; - this.bR = f; + this.bT = flag; + this.bS = f; } public ItemFood(int i, int j, boolean flag) { @@ -31,16 +31,16 @@ public class ItemFood extends Item { // CraftBukkit start int oldFoodLevel = entityhuman.getFoodData().foodLevel; - FoodLevelChangeEvent event = new FoodLevelChangeEvent(entityhuman.getBukkitEntity(), Math.min(this.n() + entityhuman.getFoodData().foodLevel, 20)); + FoodLevelChangeEvent event = new FoodLevelChangeEvent(entityhuman.getBukkitEntity(), Math.min(this.o() + entityhuman.getFoodData().foodLevel, 20)); entityhuman.world.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { - entityhuman.getFoodData().a(event.getFoodLevel() - oldFoodLevel, this.o()); + entityhuman.getFoodData().a(event.getFoodLevel() - oldFoodLevel, this.p()); } // CraftBukkit end - if (!world.isStatic && this.bU > 0 && world.random.nextFloat() < this.bX) { - entityhuman.addEffect(new MobEffect(this.bU, this.bV * 20, this.bW)); + if (!world.isStatic && this.bV > 0 && world.random.nextFloat() < this.bY) { + entityhuman.addEffect(new MobEffect(this.bV, this.bW * 20, this.bX)); } return itemstack; @@ -55,35 +55,35 @@ public class ItemFood extends Item { } public ItemStack a(ItemStack itemstack, World world, EntityHuman entityhuman) { - if (entityhuman.b(this.bT)) { + if (entityhuman.b(this.bU)) { entityhuman.a(itemstack, this.c(itemstack)); } return itemstack; } - public int n() { + public int o() { return this.b; } - public float o() { - return this.bR; - } - - public boolean p() { + public float p() { return this.bS; } + public boolean q() { + return this.bT; + } + public ItemFood a(int i, int j, int k, float f) { - this.bU = i; - this.bV = j; - this.bW = k; - this.bX = f; + this.bV = i; + this.bW = j; + this.bX = k; + this.bY = f; return this; } - public ItemFood q() { - this.bT = true; + public ItemFood r() { + this.bU = true; return this; } diff --git a/src/main/java/net/minecraft/server/ItemInWorldManager.java b/src/main/java/net/minecraft/server/ItemInWorldManager.java index af8a27e443..57650ca645 100644 --- a/src/main/java/net/minecraft/server/ItemInWorldManager.java +++ b/src/main/java/net/minecraft/server/ItemInWorldManager.java @@ -221,14 +221,14 @@ public class ItemInWorldManager { if (this.b()) { ((EntityPlayer) this.player).netServerHandler.sendPacket(new Packet53BlockChange(i, j, k, this.world)); } else { - ItemStack itemstack = this.player.P(); + ItemStack itemstack = this.player.Q(); boolean flag1 = this.player.b(Block.byId[l]); if (itemstack != null) { itemstack.a(l, i, j, k, this.player); if (itemstack.count == 0) { itemstack.a(this.player); - this.player.Q(); + this.player.R(); } } diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java index 1209c884bc..a88b0a7f5f 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -228,6 +228,10 @@ public final class ItemStack { } public static boolean equals(ItemStack itemstack, ItemStack itemstack1) { + return itemstack == null && itemstack1 == null ? true : (itemstack != null && itemstack1 != null ? (itemstack.tag == null && itemstack1.tag != null ? false : itemstack.tag == null || itemstack.tag.equals(itemstack1.tag)) : false); + } + + public static boolean matches(ItemStack itemstack, ItemStack itemstack1) { return itemstack == null && itemstack1 == null ? true : (itemstack != null && itemstack1 != null ? itemstack.d(itemstack1) : false); } @@ -293,15 +297,11 @@ public final class ItemStack { } public void setTag(NBTTagCompound nbttagcompound) { - if (Item.byId[this.id].getMaxStackSize() != 1) { - throw new IllegalArgumentException("Cannot add tag data to a stackable item"); - } else { - this.tag = nbttagcompound; - } + this.tag = nbttagcompound; } public boolean q() { - return !this.getItem().e(this) ? false : !this.hasEnchantments(); + return !this.getItem().f(this) ? false : !this.hasEnchantments(); } public void addEnchantment(Enchantment enchantment, int i) { diff --git a/src/main/java/net/minecraft/server/ItemWorldMap.java b/src/main/java/net/minecraft/server/ItemWorldMap.java index 813f1d7f15..652b62ac52 100644 --- a/src/main/java/net/minecraft/server/ItemWorldMap.java +++ b/src/main/java/net/minecraft/server/ItemWorldMap.java @@ -48,7 +48,7 @@ public class ItemWorldMap extends ItemWorldMapBase { int i1 = MathHelper.floor(entity.locZ - (double) k) / i + short2 / 2; int j1 = 128 / i; - if (world.worldProvider.e) { + if (world.worldProvider.f) { j1 /= 2; } @@ -82,7 +82,7 @@ public class ItemWorldMap extends ItemWorldMapBase { int l4; int i5; - if (world.worldProvider.e) { + if (world.worldProvider.f) { l4 = i3 + j3 * 231871; l4 = l4 * l4 * 31287121 + l4 * 11; if ((l4 >> 20 & 1) == 0) { diff --git a/src/main/java/net/minecraft/server/LongHashMap.java b/src/main/java/net/minecraft/server/LongHashMap.java new file mode 100644 index 0000000000..0e856131dc --- /dev/null +++ b/src/main/java/net/minecraft/server/LongHashMap.java @@ -0,0 +1,157 @@ +package net.minecraft.server; + +public class LongHashMap { + + private transient LongHashMapEntry[] entries = new LongHashMapEntry[16]; + private transient int count; + private int c = 12; + private final float d = 0.75F; + private transient volatile int e; + + public LongHashMap() {} + + private static int g(long i) { + return a((int) (i ^ i >>> 32)); + } + + private static int a(int i) { + i ^= i >>> 20 ^ i >>> 12; + return i ^ i >>> 7 ^ i >>> 4; + } + + private static int a(int i, int j) { + return i & j - 1; + } + + public int count() { + return this.count; + } + + public Object getEntry(long i) { + int j = g(i); + + for (LongHashMapEntry longhashmapentry = this.entries[a(j, this.entries.length)]; longhashmapentry != null; longhashmapentry = longhashmapentry.c) { + if (longhashmapentry.a == i) { + return longhashmapentry.b; + } + } + + return null; + } + + public boolean contains(long i) { + return this.c(i) != null; + } + + final LongHashMapEntry c(long i) { + int j = g(i); + + for (LongHashMapEntry longhashmapentry = this.entries[a(j, this.entries.length)]; longhashmapentry != null; longhashmapentry = longhashmapentry.c) { + if (longhashmapentry.a == i) { + return longhashmapentry; + } + } + + return null; + } + + public void put(long i, Object object) { + int j = g(i); + int k = a(j, this.entries.length); + + for (LongHashMapEntry longhashmapentry = this.entries[k]; longhashmapentry != null; longhashmapentry = longhashmapentry.c) { + if (longhashmapentry.a == i) { + longhashmapentry.b = object; + } + } + + ++this.e; + this.a(j, i, object, k); + } + + private void b(int i) { + LongHashMapEntry[] alonghashmapentry = this.entries; + int j = alonghashmapentry.length; + + if (j == 1073741824) { + this.c = Integer.MAX_VALUE; + } else { + LongHashMapEntry[] alonghashmapentry1 = new LongHashMapEntry[i]; + + this.a(alonghashmapentry1); + this.entries = alonghashmapentry1; + this.c = (int) ((float) i * this.d); + } + } + + private void a(LongHashMapEntry[] alonghashmapentry) { + LongHashMapEntry[] alonghashmapentry1 = this.entries; + int i = alonghashmapentry.length; + + for (int j = 0; j < alonghashmapentry1.length; ++j) { + LongHashMapEntry longhashmapentry = alonghashmapentry1[j]; + + if (longhashmapentry != null) { + alonghashmapentry1[j] = null; + + LongHashMapEntry longhashmapentry1; + + do { + longhashmapentry1 = longhashmapentry.c; + int k = a(longhashmapentry.d, i); + + longhashmapentry.c = alonghashmapentry[k]; + alonghashmapentry[k] = longhashmapentry; + longhashmapentry = longhashmapentry1; + } while (longhashmapentry1 != null); + } + } + } + + public Object remove(long i) { + LongHashMapEntry longhashmapentry = this.e(i); + + return longhashmapentry == null ? null : longhashmapentry.b; + } + + final LongHashMapEntry e(long i) { + int j = g(i); + int k = a(j, this.entries.length); + LongHashMapEntry longhashmapentry = this.entries[k]; + + LongHashMapEntry longhashmapentry1; + LongHashMapEntry longhashmapentry2; + + for (longhashmapentry1 = longhashmapentry; longhashmapentry1 != null; longhashmapentry1 = longhashmapentry2) { + longhashmapentry2 = longhashmapentry1.c; + if (longhashmapentry1.a == i) { + ++this.e; + --this.count; + if (longhashmapentry == longhashmapentry1) { + this.entries[k] = longhashmapentry2; + } else { + longhashmapentry.c = longhashmapentry2; + } + + return longhashmapentry1; + } + + longhashmapentry = longhashmapentry1; + } + + return longhashmapentry1; + } + + private void a(int i, long j, Object object, int k) { + LongHashMapEntry longhashmapentry = this.entries[k]; + + this.entries[k] = new LongHashMapEntry(i, j, object, longhashmapentry); + if (this.count++ >= this.c) { + this.b(2 * this.entries.length); + } + } + + static int f(long i) { + return g(i); + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index a2831995a2..36591e2214 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -40,8 +40,8 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe public static Logger log = Logger.getLogger("Minecraft"); public static HashMap trackerList = new HashMap(); - private String s; - private int t; + private String t; + private int u; public NetworkListenThread networkListenThread; public PropertyManager propertyManager; // public WorldServer[] worldServer; // CraftBukkit - removed! @@ -54,16 +54,17 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe int ticks = 0; public String k; public int l; - private List w = new ArrayList(); - private List x = Collections.synchronizedList(new ArrayList()); + private List x = new ArrayList(); + private List y = Collections.synchronizedList(new ArrayList()); // public EntityTracker[] tracker = new EntityTracker[3]; // CraftBukkit - removed! public boolean onlineMode; public boolean spawnAnimals; + public boolean spawnNPCs; public boolean pvpMode; public boolean allowFlight; - public String r; - private RemoteStatusListener y; - private RemoteControlListener z; + public String s; + private RemoteStatusListener z; + private RemoteControlListener A; // CraftBukkit start public List worlds = new ArrayList(); @@ -110,24 +111,25 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe log.info("Loading properties"); this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support - this.s = this.propertyManager.getString("server-ip", ""); + this.t = this.propertyManager.getString("server-ip", ""); this.onlineMode = this.propertyManager.getBoolean("online-mode", true); this.spawnAnimals = this.propertyManager.getBoolean("spawn-animals", true); + this.spawnNPCs = this.propertyManager.getBoolean("spawn-npcs", true); this.pvpMode = this.propertyManager.getBoolean("pvp", true); this.allowFlight = this.propertyManager.getBoolean("allow-flight", false); - this.r = this.propertyManager.getString("motd", "A Minecraft Server"); - this.r.replace('\u00a7', '$'); + this.s = this.propertyManager.getString("motd", "A Minecraft Server"); + this.s.replace('\u00a7', '$'); InetAddress inetaddress = null; - if (this.s.length() > 0) { - inetaddress = InetAddress.getByName(this.s); + if (this.t.length() > 0) { + inetaddress = InetAddress.getByName(this.t); } - this.t = this.propertyManager.getInt("server-port", 25565); - log.info("Starting Minecraft server on " + (this.s.length() == 0 ? "*" : this.s) + ":" + this.t); + this.u = this.propertyManager.getInt("server-port", 25565); + log.info("Starting Minecraft server on " + (this.t.length() == 0 ? "*" : this.t) + ":" + this.u); try { - this.networkListenThread = new NetworkListenThread(this, inetaddress, this.t); + this.networkListenThread = new NetworkListenThread(this, inetaddress, this.u); } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable log.warning("**** FAILED TO BIND TO PORT!"); log.log(Level.WARNING, "The exception was: " + ioexception.toString()); @@ -147,6 +149,7 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe long i = System.nanoTime(); String s = this.propertyManager.getString("level-name", "world"); String s1 = this.propertyManager.getString("level-seed", ""); + String s2 = this.propertyManager.getString("level-type", "DEFAULT"); long j = (new Random()).nextLong(); if (s1.length() > 0) { @@ -161,8 +164,14 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe } } + WorldType worldtype = WorldType.a(s2); + + if (worldtype == null) { + worldtype = WorldType.NORMAL; + } + log.info("Preparing level \"" + s + "\""); - this.a(new WorldLoaderServer(new File(".")), s, j); + this.a(new WorldLoaderServer(new File(".")), s, j, worldtype); // CraftBukkit start - display seconds for the completion time long elapsed = System.nanoTime() - i; @@ -172,14 +181,14 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe if (this.propertyManager.getBoolean("enable-query", false)) { log.info("Starting GS4 status listener"); - this.y = new RemoteStatusListener(this); - this.y.a(); + this.z = new RemoteStatusListener(this); + this.z.a(); } if (this.propertyManager.getBoolean("enable-rcon", false)) { log.info("Starting remote control listener"); - this.z = new RemoteControlListener(this); - this.z.a(); + this.A = new RemoteControlListener(this); + this.A.a(); this.remoteConsole = new CraftRemoteConsoleCommandSender(); } @@ -195,7 +204,7 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe return true; } - private void a(Convertable convertable, String s, long i) { + private void a(Convertable convertable, String s, long i, WorldType worldtype) { if (convertable.isConvertable(s)) { log.info("Converting map!"); convertable.convert(s, new ConvertProgressUpdater(this)); @@ -234,7 +243,7 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe String name = (dimension == 0) ? s : s + "_" + worldType; ChunkGenerator gen = this.server.getGenerator(name); - WorldSettings settings = new WorldSettings(i, j, true, false); + WorldSettings settings = new WorldSettings(i, j, true, false, worldtype); if (k == 0) { world = new WorldServer(this, new ServerNBTManager(server.getWorldContainer(), s, true), s, dimension, settings, org.bukkit.World.Environment.getEnvironment(dimension), gen); // CraftBukkit @@ -291,37 +300,37 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe // CraftBukkit start for (int i1 = 0; i1 < this.worlds.size(); ++i1) { - // if (i1 == 0 || this.propertyManager.getBoolean("allow-nether", true)) { WorldServer worldserver = this.worlds.get(i1); log.info("Preparing start region for level " + i1 + " (Seed: " + worldserver.getSeed() + ")"); - if (worldserver.getWorld().getKeepSpawnInMemory()) { - // CraftBukkit end - ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); + if (!worldserver.getWorld().getKeepSpawnInMemory()) { + continue; + } + // CraftBukkit end + ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); - for (int j1 = -short1; j1 <= short1 && this.isRunning; j1 += 16) { - for (int k1 = -short1; k1 <= short1 && this.isRunning; k1 += 16) { - long l1 = System.currentTimeMillis(); + for (int j1 = -short1; j1 <= short1 && this.isRunning; j1 += 16) { + for (int k1 = -short1; k1 <= short1 && this.isRunning; k1 += 16) { + long l1 = System.currentTimeMillis(); - if (l1 < l) { - l = l1; - } + if (l1 < l) { + l = l1; + } - if (l1 > l + 1000L) { - int i2 = (short1 * 2 + 1) * (short1 * 2 + 1); - int j2 = (j1 + short1) * (short1 * 2 + 1) + k1 + 1; + if (l1 > l + 1000L) { + int i2 = (short1 * 2 + 1) * (short1 * 2 + 1); + int j2 = (j1 + short1) * (short1 * 2 + 1) + k1 + 1; - this.b("Preparing spawn area", j2 * 100 / i2); - l = l1; - } + this.b("Preparing spawn area", j2 * 100 / i2); + l = l1; + } - worldserver.chunkProviderServer.getChunkAt(chunkcoordinates.x + j1 >> 4, chunkcoordinates.z + k1 >> 4); + worldserver.chunkProviderServer.getChunkAt(chunkcoordinates.x + j1 >> 4, chunkcoordinates.z + k1 >> 4); - while (worldserver.updateLights() && this.isRunning) { - ; - } + while (worldserver.updateLights() && this.isRunning) { + ; } } - } // CraftBukkit + } } // CraftBukkit start @@ -379,13 +388,13 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe this.serverConfigurationManager.savePlayers(); } - // CraftBukkit start - multiworld is handled in saveChunks() already. - WorldServer worldserver = this.worlds.get(0); + // for (int i = 0; i < this.worldServer.length; ++i) { // CraftBukkit - multiworld is handled in saveChunks() already. + WorldServer worldserver = this.worlds.get(0); // CraftBukkit - if (worldserver != null) { - this.saveChunks(); - } - // CraftBukkit end + if (worldserver != null) { + this.saveChunks(); + } + // } // CraftBukkit } public void safeShutdown() { @@ -531,8 +540,8 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe } // CraftBukkit end - for (k = 0; k < this.w.size(); ++k) { - ((IUpdatePlayerListBox) this.w.get(k)).a(); + for (k = 0; k < this.x.size(); ++k) { + ((IUpdatePlayerListBox) this.x.get(k)).a(); } try { @@ -545,12 +554,12 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe } public void issueCommand(String s, ICommandListener icommandlistener) { - this.x.add(new ServerCommand(s, icommandlistener)); + this.y.add(new ServerCommand(s, icommandlistener)); } public void b() { - while (this.x.size() > 0) { - ServerCommand servercommand = (ServerCommand) this.x.remove(0); + while (this.y.size() > 0) { + ServerCommand servercommand = (ServerCommand) this.y.remove(0); // CraftBukkit start - ServerCommand for preprocessing ServerCommandEvent event = new ServerCommandEvent(Event.Type.SERVER_COMMAND, this.console, servercommand.command); @@ -564,7 +573,7 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe } public void a(IUpdatePlayerListBox iupdateplayerlistbox) { - this.w.add(iupdateplayerlistbox); + this.x.add(iupdateplayerlistbox); } public static void main(final OptionSet options) { // CraftBukkit - replaces main(String args[]) @@ -636,19 +645,19 @@ public class MinecraftServer implements Runnable, ICommandListener, IMinecraftSe } public String getMotd() { - return this.s; - } - - public int getPort() { return this.t; } + public int getPort() { + return this.u; + } + public String getServerAddress() { - return this.r; + return this.s; } public String getVersion() { - return "1.0.1"; + return "1.1"; } public int getPlayerCount() { diff --git a/src/main/java/net/minecraft/server/NetLoginHandler.java b/src/main/java/net/minecraft/server/NetLoginHandler.java index 60d3487747..9ed3b29863 100644 --- a/src/main/java/net/minecraft/server/NetLoginHandler.java +++ b/src/main/java/net/minecraft/server/NetLoginHandler.java @@ -69,8 +69,8 @@ public class NetLoginHandler extends NetHandler { public void a(Packet1Login packet1login) { this.g = packet1login.name; - if (packet1login.a != 22) { - if (packet1login.a > 22) { + if (packet1login.a != 23) { + if (packet1login.a > 23) { this.disconnect("Outdated server!"); } else { this.disconnect("Outdated client!"); @@ -104,7 +104,7 @@ public class NetLoginHandler extends NetHandler { if (maxPlayers > 60) { maxPlayers = 60; } - netserverhandler.sendPacket(new Packet1Login("", entityplayer.id, worldserver.getSeed(), entityplayer.itemInWorldManager.getGameMode(), (byte) worldserver.worldProvider.dimension, (byte) worldserver.difficulty, (byte) worldserver.height, (byte) maxPlayers)); + netserverhandler.sendPacket(new Packet1Login("", entityplayer.id, worldserver.getSeed(), worldserver.getWorldData().getType(), entityplayer.itemInWorldManager.getGameMode(), (byte) worldserver.worldProvider.dimension, (byte) worldserver.difficulty, (byte) worldserver.height, (byte) maxPlayers)); // CraftBukkit end netserverhandler.sendPacket(new Packet6SpawnPosition(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z)); @@ -137,7 +137,7 @@ public class NetLoginHandler extends NetHandler { if (this.networkManager.f() == null) return; // CraftBukkit - fix NPE when a client queries a server that is unable to handle it. try { // CraftBukkit start - ServerListPingEvent pingEvent = CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.r, this.server.serverConfigurationManager.getPlayerCount(), this.server.serverConfigurationManager.getMaxPlayers()); + ServerListPingEvent pingEvent = CraftEventFactory.callServerListPingEvent(this.server.server, getSocket().getInetAddress(), this.server.s, this.server.serverConfigurationManager.getPlayerCount(), this.server.serverConfigurationManager.getMaxPlayers()); String s = pingEvent.getMotd() + "\u00A7" + this.server.serverConfigurationManager.getPlayerCount() + "\u00A7" + pingEvent.getMaxPlayers(); // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index 4f0a22c2f7..3329e21972 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -46,11 +46,12 @@ public class NetServerHandler extends NetHandler implements ICommandListener { private long j; private static Random k = new Random(); private long l; + private int m = 0; private double x; private double y; private double z; private boolean checkMovement = true; - private IntHashMap q = new IntHashMap(); + private IntHashMap r = new IntHashMap(); public NetServerHandler(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) { this.minecraftServer = minecraftserver; @@ -97,40 +98,42 @@ public class NetServerHandler extends NetHandler implements ICommandListener { this.i = k.nextInt(); this.sendPacket(new Packet0KeepAlive(this.i)); } + + if (this.m > 0) { + --this.m; + } } public void disconnect(String s) { - // CraftBukkit start - String leaveMessage = "\u00A7e" + this.player.name + " left the game."; + if (!this.disconnected) { + // CraftBukkit start + String leaveMessage = "\u00A7e" + this.player.name + " left the game."; - PlayerKickEvent event = new PlayerKickEvent(this.server.getPlayer(this.player), s, leaveMessage); - this.server.getPluginManager().callEvent(event); + PlayerKickEvent event = new PlayerKickEvent(this.server.getPlayer(this.player), s, leaveMessage); + this.server.getPluginManager().callEvent(event); - if (event.isCancelled()) { - // Do not kick the player - return; + if (event.isCancelled()) { + // Do not kick the player + return; + } + // Send the possibly modified leave message + s = event.getReason(); + // CraftBukkit end + + this.player.F(); + this.sendPacket(new Packet255KickDisconnect(s)); + this.networkManager.d(); + + // CraftBukkit start + leaveMessage = event.getLeaveMessage(); + if (leaveMessage != null) { + this.minecraftServer.serverConfigurationManager.sendAll(new Packet3Chat(leaveMessage)); + } + // CraftBukkit end + + this.minecraftServer.serverConfigurationManager.disconnect(this.player); + this.disconnected = true; } - // Send the possibly modified leave message - s = event.getReason(); - // CraftBukkit end - - this.player.E(); - this.sendPacket(new Packet255KickDisconnect(s)); - this.networkManager.d(); - - // CraftBukkit start - leaveMessage = event.getLeaveMessage(); - if (leaveMessage != null) { - this.minecraftServer.serverConfigurationManager.sendAll(new Packet3Chat(leaveMessage)); - } - // CraftBukkit end - - this.minecraftServer.serverConfigurationManager.disconnect(this.player); - this.disconnected = true; - } - - public void a(Packet27PlayerInput packet27playerinput) { - this.player.a(packet27playerinput.c(), packet27playerinput.e(), packet27playerinput.g(), packet27playerinput.h(), packet27playerinput.d(), packet27playerinput.f()); } public void a(Packet10Flying packet10flying) { @@ -305,7 +308,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } this.player.a(true); - this.player.bL = 0.0F; + this.player.bO = 0.0F; this.player.setLocation(this.x, this.y, this.z, f2, f3); if (!this.checkMovement) { return; @@ -452,9 +455,9 @@ public class NetServerHandler extends NetHandler implements ICommandListener { } } // CraftBukkit end - this.player.N(); + this.player.O(); } else if (packet14blockdig.e == 5) { - this.player.I(); + this.player.J(); } else { boolean flag = worldserver.weirdIsOpCache = worldserver.dimension != 0 || this.minecraftServer.serverConfigurationManager.isOp(this.player.name); // CraftBukkit boolean flag1 = false; @@ -635,7 +638,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { this.player.activeContainer.a(); this.player.h = false; // CraftBukkit - TODO CHECK IF NEEDED -- new if structure might not need 'always'. Kept it in for now, but may be able to remove in future - if (!ItemStack.equals(this.player.inventory.getItemInHand(), packet15place.itemstack) || always) { + if (!ItemStack.matches(this.player.inventory.getItemInHand(), packet15place.itemstack) || always) { this.sendPacket(new Packet103SetSlot(this.player.activeContainer.windowId, slot.c, this.player.inventory.getItemInHand())); } } @@ -706,7 +709,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { s = s.trim(); for (int i = 0; i < s.length(); ++i) { - if (SharedConstants.allowedCharacters.indexOf(s.charAt(i)) < 0) { + if (SharedConstants.allowedCharacters.indexOf(s.charAt(i)) < 0 && s.charAt(i) < 32) { this.disconnect("Illegal characters in chat"); return; } @@ -736,11 +739,16 @@ public class NetServerHandler extends NetHandler implements ICommandListener { for (Player recipient : event.getRecipients()) { recipient.sendMessage(s); } + // CraftBukkit end + } + + this.m += 20; + if (this.m > 200) { + this.disconnect("disconnect.spam"); } } - return false; - // CraftBukkit end + return false; // CraftBukkit } private void handleCommand(String s) { @@ -833,7 +841,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (event.isCancelled()) return; // CraftBukkit end - this.player.r_(); + this.player.s_(); } } @@ -948,7 +956,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { public void a(Packet101CloseWindow packet101closewindow) { if (this.player.dead) return; // CraftBukkit - this.player.D(); + this.player.E(); } public void a(Packet102WindowClick packet102windowclick) { @@ -957,14 +965,14 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (this.player.activeContainer.windowId == packet102windowclick.a && this.player.activeContainer.c(this.player)) { ItemStack itemstack = this.player.activeContainer.a(packet102windowclick.b, packet102windowclick.c, packet102windowclick.f, this.player); - if (ItemStack.equals(packet102windowclick.e, itemstack)) { + if (ItemStack.matches(packet102windowclick.e, itemstack)) { this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, true)); this.player.h = true; this.player.activeContainer.a(); - this.player.C(); + this.player.D(); this.player.h = false; } else { - this.q.a(this.player.activeContainer.windowId, Short.valueOf(packet102windowclick.d)); + this.r.a(this.player.activeContainer.windowId, Short.valueOf(packet102windowclick.d)); this.player.netServerHandler.sendPacket(new Packet106Transaction(packet102windowclick.a, packet102windowclick.d, false)); this.player.activeContainer.a(this.player, false); ArrayList arraylist = new ArrayList(); @@ -1009,7 +1017,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { public void a(Packet106Transaction packet106transaction) { if (this.player.dead) return; // CraftBukkit - Short oshort = (Short) this.q.a(this.player.activeContainer.windowId); + Short oshort = (Short) this.r.a(this.player.activeContainer.windowId); if (oshort != null && packet106transaction.b == oshort.shortValue() && this.player.activeContainer.windowId == packet106transaction.a && !this.player.activeContainer.c(this.player)) { this.player.activeContainer.a(this.player, true); diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java index 1e9effb26a..659823aa86 100644 --- a/src/main/java/net/minecraft/server/NetworkManager.java +++ b/src/main/java/net/minecraft/server/NetworkManager.java @@ -237,10 +237,12 @@ public class NetworkManager { } public void d() { - this.a(); - this.q = true; - this.s.interrupt(); - (new NetworkMonitorThread(this)).start(); + if (!this.q) { + this.a(); + this.q = true; + this.s.interrupt(); + (new NetworkMonitorThread(this)).start(); + } } public int e() { diff --git a/src/main/java/net/minecraft/server/Packet.java b/src/main/java/net/minecraft/server/Packet.java index 1d43fd693c..9ab48ff18f 100644 --- a/src/main/java/net/minecraft/server/Packet.java +++ b/src/main/java/net/minecraft/server/Packet.java @@ -148,7 +148,7 @@ public abstract class Packet { short short2 = datainputstream.readShort(); itemstack = new ItemStack(short1, b0, short2); - if (Item.byId[short1].g()) { + if (Item.byId[short1].g() || Item.byId[short1].i()) { itemstack.tag = this.c(datainputstream); } } @@ -163,7 +163,7 @@ public abstract class Packet { dataoutputstream.writeShort(itemstack.id); dataoutputstream.writeByte(itemstack.count); dataoutputstream.writeShort(itemstack.getData()); - if (itemstack.getItem().g()) { + if (itemstack.getItem().g() || itemstack.getItem().i()) { this.a(itemstack.tag, dataoutputstream); } } @@ -221,7 +221,6 @@ public abstract class Packet { a(24, true, false, Packet24MobSpawn.class); a(25, true, false, Packet25EntityPainting.class); a(26, true, false, Packet26AddExpOrb.class); - a(27, false, false, Packet27PlayerInput.class); // CraftBukkit - true -> false; disabled unused packet. TODO -- check if needed a(28, true, false, Packet28EntityVelocity.class); a(29, true, false, Packet29DestroyEntity.class); a(30, true, false, Packet30Entity.class); @@ -257,6 +256,7 @@ public abstract class Packet { a(131, true, false, Packet131ItemData.class); a(200, true, false, Packet200Statistic.class); a(201, true, false, Packet201PlayerInfo.class); + a(250, true, true, Packet250CustomPayload.class); a(254, false, true, Packet254GetInfo.class); a(255, true, true, Packet255KickDisconnect.class); } diff --git a/src/main/java/net/minecraft/server/Packet3Chat.java b/src/main/java/net/minecraft/server/Packet3Chat.java index 072dc412f2..d88872509e 100644 --- a/src/main/java/net/minecraft/server/Packet3Chat.java +++ b/src/main/java/net/minecraft/server/Packet3Chat.java @@ -34,6 +34,6 @@ public class Packet3Chat extends Packet { } public int a() { - return this.message.length(); + return 2 + this.message.length() * 2; } } diff --git a/src/main/java/net/minecraft/server/PlayerInstance.java b/src/main/java/net/minecraft/server/PlayerInstance.java index c7cfcb541a..295297b439 100644 --- a/src/main/java/net/minecraft/server/PlayerInstance.java +++ b/src/main/java/net/minecraft/server/PlayerInstance.java @@ -162,14 +162,10 @@ class PlayerInstance { this.sendAll(new Packet52MultiBlockChange(this.chunkX, this.chunkZ, this.dirtyBlocks, this.dirtyCount, worldserver)); for (i = 0; i < this.dirtyCount; ++i) { - // CraftBukkit start - Fixes TileEntity updates occurring upon a multi-block change; dirtyCount -> dirtyBlocks[i] j = this.chunkX * 16 + (this.dirtyBlocks[i] >> 12 & 15); k = this.dirtyBlocks[i] & 255; l = this.chunkZ * 16 + (this.dirtyBlocks[i] >> 8 & 15); - // CraftBukkit end - if (Block.isTileEntity[worldserver.getTypeId(j, k, l)]) { - // System.out.println("Sending!"); // CraftBukkit this.sendTileEntity(worldserver.getTileEntity(j, k, l)); } } diff --git a/src/main/java/net/minecraft/server/PlayerInventory.java b/src/main/java/net/minecraft/server/PlayerInventory.java index e0f0914a67..decdc49ac2 100644 --- a/src/main/java/net/minecraft/server/PlayerInventory.java +++ b/src/main/java/net/minecraft/server/PlayerInventory.java @@ -43,7 +43,7 @@ public class PlayerInventory implements IInventory { private int firstPartial(ItemStack itemstack) { for (int i = 0; i < this.items.length; ++i) { - if (this.items[i] != null && this.items[i].id == itemstack.id && this.items[i].isStackable() && this.items[i].count < this.items[i].getMaxStackSize() && this.items[i].count < this.getMaxStackSize() && (!this.items[i].usesData() || this.items[i].getData() == itemstack.getData())) { + if (this.items[i] != null && this.items[i].id == itemstack.id && this.items[i].isStackable() && this.items[i].count < this.items[i].getMaxStackSize() && this.items[i].count < this.getMaxStackSize() && (!this.items[i].usesData() || this.items[i].getData() == itemstack.getData()) && ItemStack.equals(this.items[i], itemstack)) { return i; } } @@ -104,6 +104,9 @@ public class PlayerInventory implements IInventory { } else { if (this.items[k] == null) { this.items[k] = new ItemStack(i, 0, itemstack.getData()); + if (itemstack.hasTag()) { + this.items[k].setTag((NBTTagCompound) itemstack.getTag().clone()); + } } int l = j; diff --git a/src/main/java/net/minecraft/server/PlayerManager.java b/src/main/java/net/minecraft/server/PlayerManager.java index 434130f716..a03d4dcad7 100644 --- a/src/main/java/net/minecraft/server/PlayerManager.java +++ b/src/main/java/net/minecraft/server/PlayerManager.java @@ -35,6 +35,14 @@ public class PlayerManager { } this.c.clear(); + if (this.managedPlayers.isEmpty()) { + WorldServer worldserver = this.server.getWorldServer(this.e); + WorldProvider worldprovider = worldserver.worldProvider; + + if (!worldprovider.c()) { + worldserver.chunkProviderServer.c(); + } + } } private PlayerInstance a(int i, int j, boolean flag) { diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/ServerConfigurationManager.java index 0673c19b9f..aaa7eaa841 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManager.java @@ -279,7 +279,7 @@ public class ServerConfigurationManager { // CraftBukkit start byte actualDimension = (byte) (worldserver.getWorld().getEnvironment().getId()); - entityplayer1.netServerHandler.sendPacket(new Packet9Respawn(actualDimension, (byte) worldserver.difficulty, worldserver.getSeed(), worldserver.height, entityplayer1.itemInWorldManager.getGameMode())); + entityplayer1.netServerHandler.sendPacket(new Packet9Respawn(actualDimension, (byte) worldserver.difficulty, worldserver.getSeed(), entityplayer1.world.getWorldData().getType(), worldserver.height, entityplayer.itemInWorldManager.getGameMode())); entityplayer1.spawnIn(worldserver); entityplayer1.dead = false; entityplayer1.netServerHandler.teleport(new Location(worldserver.getWorld(), entityplayer1.locX, entityplayer1.locY, entityplayer1.locZ, entityplayer1.yaw, entityplayer1.pitch)); @@ -705,7 +705,7 @@ public class ServerConfigurationManager { public void updateClient(EntityPlayer entityplayer) { entityplayer.updateInventory(entityplayer.defaultContainer); - entityplayer.s_(); + entityplayer.t_(); entityplayer.lastSentExp = -1; // CraftBukkit } diff --git a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java index cdc8fbd545..566ec571b1 100644 --- a/src/main/java/net/minecraft/server/TileEntityMobSpawner.java +++ b/src/main/java/net/minecraft/server/TileEntityMobSpawner.java @@ -82,7 +82,7 @@ public class TileEntityMobSpawner extends TileEntity { // CraftBukkit end this.world.f(2004, this.x, this.y, this.z, 0); - entityliving.ah(); + entityliving.ao(); this.e(); } } diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index e3f1573ab7..7f2517ebfc 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -83,7 +83,7 @@ public class World implements IBlockAccess { public boolean isStatic; public WorldChunkManager getWorldChunkManager() { - return this.worldProvider.b; + return this.worldProvider.c; } // CraftBukkit start @@ -192,53 +192,57 @@ public class World implements IBlockAccess { } protected void c() { - this.isLoading = true; - WorldChunkManager worldchunkmanager = this.getWorldChunkManager(); - List list = worldchunkmanager.a(); - Random random = new Random(this.getSeed()); - ChunkPosition chunkposition = worldchunkmanager.a(0, 0, 256, list, random); - int i = 0; - int j = this.height / 2; - int k = 0; + if (!this.worldProvider.c()) { + this.worldData.setSpawn(0, this.worldProvider.getSeaLevel(), 0); + } else { + this.isLoading = true; + WorldChunkManager worldchunkmanager = this.getWorldChunkManager(); + List list = worldchunkmanager.a(); + Random random = new Random(this.getSeed()); + ChunkPosition chunkposition = worldchunkmanager.a(0, 0, 256, list, random); + int i = 0; + int j = this.worldProvider.getSeaLevel(); + int k = 0; - // CraftBukkit start - if (this.generator != null) { - Random rand = new Random(this.getSeed()); - Location spawn = this.generator.getFixedSpawnLocation(((WorldServer) this).getWorld(), rand); + // CraftBukkit start + if (this.generator != null) { + Random rand = new Random(this.getSeed()); + Location spawn = this.generator.getFixedSpawnLocation(((WorldServer) this).getWorld(), rand); - if (spawn != null) { - if (spawn.getWorld() != ((WorldServer) this).getWorld()) { - throw new IllegalStateException("Cannot set spawn point for " + this.worldData.name + " to be in another world (" + spawn.getWorld().getName() + ")"); - } else { - this.worldData.setSpawn(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ()); - this.isLoading = false; - return; + if (spawn != null) { + if (spawn.getWorld() != ((WorldServer) this).getWorld()) { + throw new IllegalStateException("Cannot set spawn point for " + this.worldData.name + " to be in another world (" + spawn.getWorld().getName() + ")"); + } else { + this.worldData.setSpawn(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ()); + this.isLoading = false; + return; + } } } - } - // CraftBukkit end + // CraftBukkit end - if (chunkposition != null) { - i = chunkposition.x; - k = chunkposition.z; - } else { - System.out.println("Unable to find spawn biome"); - } - - int l = 0; - - // CraftBukkit - use out own canSpawn - while (!this.canSpawn(i, k)) { - i += random.nextInt(64) - random.nextInt(64); - k += random.nextInt(64) - random.nextInt(64); - ++l; - if (l == 1000) { - break; + if (chunkposition != null) { + i = chunkposition.x; + k = chunkposition.z; + } else { + System.out.println("Unable to find spawn biome"); } - } - this.worldData.setSpawn(i, j, k); - this.isLoading = false; + int l = 0; + + // CraftBukkit - use out own canSpawn + while (!this.canSpawn(i, k)) { + i += random.nextInt(64) - random.nextInt(64); + k += random.nextInt(64) - random.nextInt(64); + ++l; + if (l == 1000) { + break; + } + } + + this.worldData.setSpawn(i, j, k); + this.isLoading = false; + } } public ChunkCoordinates d() { @@ -472,7 +476,7 @@ public class World implements IBlockAccess { k = i1; } - if (!this.worldProvider.e) { + if (!this.worldProvider.f) { for (i1 = k; i1 <= l; ++i1) { this.b(EnumSkyBlock.SKY, i, i1, j); } @@ -652,7 +656,7 @@ public class World implements IBlockAccess { } public float m(int i, int j, int k) { - return this.worldProvider.f[this.getLightLevel(i, j, k)]; + return this.worldProvider.g[this.getLightLevel(i, j, k)]; } public boolean e() { @@ -945,10 +949,10 @@ public class World implements IBlockAccess { this.everyoneSleeping(); } - int i = entity.bX; - int j = entity.bZ; + int i = entity.ca; + int j = entity.cc; - if (entity.bW && this.isChunkLoaded(i, j)) { + if (entity.bZ && this.isChunkLoaded(i, j)) { this.getChunkAt(i, j).b(entity); } @@ -1099,7 +1103,7 @@ public class World implements IBlockAccess { continue; } // CraftBukkit end - entity.w_(); + entity.y_(); if (entity.dead) { this.j.remove(i--); } @@ -1113,9 +1117,9 @@ public class World implements IBlockAccess { for (i = 0; i < this.J.size(); ++i) { entity = (Entity) this.J.get(i); - j = entity.bX; - k = entity.bZ; - if (entity.bW && this.isChunkLoaded(j, k)) { + j = entity.ca; + k = entity.cc; + if (entity.bZ && this.isChunkLoaded(j, k)) { this.getChunkAt(j, k).b(entity); } } @@ -1144,9 +1148,9 @@ public class World implements IBlockAccess { // MethodProfiler.a("remove"); // CraftBukkit - not in production code if (entity.dead) { - j = entity.bX; - k = entity.bZ; - if (entity.bW && this.isChunkLoaded(j, k)) { + j = entity.ca; + k = entity.cc; + if (entity.bZ && this.isChunkLoaded(j, k)) { this.getChunkAt(j, k).b(entity); } @@ -1241,30 +1245,30 @@ public class World implements IBlockAccess { byte b0 = 32; if (!flag || this.a(i - b0, 0, j - b0, i + b0, this.height, j + b0)) { - entity.bI = entity.locX; - entity.bJ = entity.locY; - entity.bK = entity.locZ; + entity.bL = entity.locX; + entity.bM = entity.locY; + entity.bN = entity.locZ; entity.lastYaw = entity.yaw; entity.lastPitch = entity.pitch; - if (flag && entity.bW) { + if (flag && entity.bZ) { if (entity.vehicle != null) { - entity.M(); + entity.N(); } else { - entity.w_(); + entity.y_(); } } // MethodProfiler.a("chunkCheck"); // CraftBukkit - not in production code if (Double.isNaN(entity.locX) || Double.isInfinite(entity.locX)) { - entity.locX = entity.bI; + entity.locX = entity.bL; } if (Double.isNaN(entity.locY) || Double.isInfinite(entity.locY)) { - entity.locY = entity.bJ; + entity.locY = entity.bM; } if (Double.isNaN(entity.locZ) || Double.isInfinite(entity.locZ)) { - entity.locZ = entity.bK; + entity.locZ = entity.bN; } if (Double.isNaN((double) entity.pitch) || Double.isInfinite((double) entity.pitch)) { @@ -1279,21 +1283,21 @@ public class World implements IBlockAccess { int l = MathHelper.floor(entity.locY / 16.0D); int i1 = MathHelper.floor(entity.locZ / 16.0D); - if (!entity.bW || entity.bX != k || entity.bY != l || entity.bZ != i1) { - if (entity.bW && this.isChunkLoaded(entity.bX, entity.bZ)) { - this.getChunkAt(entity.bX, entity.bZ).a(entity, entity.bY); + if (!entity.bZ || entity.ca != k || entity.cb != l || entity.cc != i1) { + if (entity.bZ && this.isChunkLoaded(entity.ca, entity.cc)) { + this.getChunkAt(entity.ca, entity.cc).a(entity, entity.cb); } if (this.isChunkLoaded(k, i1)) { - entity.bW = true; + entity.bZ = true; this.getChunkAt(k, i1).a(entity); } else { - entity.bW = false; + entity.bZ = false; } } // MethodProfiler.a(); // CraftBukkit - not in production code - if (flag && entity.bW && entity.passenger != null) { + if (flag && entity.bZ && entity.passenger != null) { if (!entity.passenger.dead && entity.passenger.vehicle == entity) { this.playerJoinedWorld(entity.passenger); } else { @@ -1305,12 +1309,12 @@ public class World implements IBlockAccess { } public boolean containsEntity(AxisAlignedBB axisalignedbb) { - List list = this.getEntities(null, axisalignedbb); + List list = this.getEntities((Entity) null, axisalignedbb); for (int i = 0; i < list.size(); ++i) { Entity entity = (Entity) list.get(i); - if (!entity.dead && entity.bc) { + if (!entity.dead && entity.bf) { return false; } } @@ -1753,7 +1757,7 @@ public class World implements IBlockAccess { } protected void i() { - if (!this.worldProvider.e) { + if (!this.worldProvider.f) { if (this.r > 0) { --this.r; } @@ -1941,35 +1945,37 @@ public class World implements IBlockAccess { } // MethodProfiler.b("iceandsnow"); // CraftBukkit - not in production code - this.l = this.l * 3 + 1013904223; - l1 = this.l >> 2; - i2 = l1 & 15; - j2 = l1 >> 8 & 15; - k2 = this.e(i2 + k1, j2 + j); - if (this.q(i2 + k1, k2 - 1, j2 + j)) { - // CraftBukkit start - BlockState blockState = this.getWorld().getBlockAt(i2 + k1, k2 - 1, j2 + j).getState(); - blockState.setTypeId(Block.ICE.id); + if (this.random.nextInt(16) == 0) { + this.l = this.l * 3 + 1013904223; + l1 = this.l >> 2; + i2 = l1 & 15; + j2 = l1 >> 8 & 15; + k2 = this.e(i2 + k1, j2 + j); + if (this.q(i2 + k1, k2 - 1, j2 + j)) { + // CraftBukkit start + BlockState blockState = this.getWorld().getBlockAt(i2 + k1, k2 - 1, j2 + j).getState(); + blockState.setTypeId(Block.ICE.id); - BlockFormEvent iceBlockForm = new BlockFormEvent(blockState.getBlock(), blockState); - this.getServer().getPluginManager().callEvent(iceBlockForm); - if (!iceBlockForm.isCancelled()) { - blockState.update(true); + BlockFormEvent iceBlockForm = new BlockFormEvent(blockState.getBlock(), blockState); + this.getServer().getPluginManager().callEvent(iceBlockForm); + if (!iceBlockForm.isCancelled()) { + blockState.update(true); + } + // CraftBukkit end } - // CraftBukkit end - } - if (this.w() && this.r(i2 + k1, k2, j2 + j)) { - // CraftBukkit start - BlockState blockState = this.getWorld().getBlockAt(i2 + k1, k2, j2 + j).getState(); - blockState.setTypeId(Block.SNOW.id); + if (this.w() && this.r(i2 + k1, k2, j2 + j)) { + // CraftBukkit start + BlockState blockState = this.getWorld().getBlockAt(i2 + k1, k2, j2 + j).getState(); + blockState.setTypeId(Block.SNOW.id); - BlockFormEvent snow = new BlockFormEvent(blockState.getBlock(), blockState); - this.getServer().getPluginManager().callEvent(snow); - if (!snow.isCancelled()) { - blockState.update(true); + BlockFormEvent snow = new BlockFormEvent(blockState.getBlock(), blockState); + this.getServer().getPluginManager().callEvent(snow); + if (!snow.isCancelled()) { + blockState.update(true); + } + // CraftBukkit end } - // CraftBukkit end } // MethodProfiler.b("checkLight"); // CraftBukkit - not in production code @@ -2065,7 +2071,7 @@ public class World implements IBlockAccess { } public void s(int i, int j, int k) { - if (!this.worldProvider.e) { + if (!this.worldProvider.f) { this.b(EnumSkyBlock.SKY, i, j, k); } diff --git a/src/main/java/net/minecraft/server/WorldData.java b/src/main/java/net/minecraft/server/WorldData.java index 5429aabe42..4bb321f1ad 100644 --- a/src/main/java/net/minecraft/server/WorldData.java +++ b/src/main/java/net/minecraft/server/WorldData.java @@ -5,6 +5,7 @@ import java.util.List; public class WorldData { private long seed; + private WorldType type; private int spawnX; private int spawnY; private int spawnZ; @@ -21,10 +22,21 @@ public class WorldData { private int thunderTicks; private int gameType; private boolean useMapFeatures; - private boolean hardcore = false; + private boolean hardcore; public WorldData(NBTTagCompound nbttagcompound) { + this.type = WorldType.NORMAL; + this.hardcore = false; this.seed = nbttagcompound.getLong("RandomSeed"); + if (nbttagcompound.hasKey("generatorName")) { + String s = nbttagcompound.getString("generatorName"); + + this.type = WorldType.a(s); + if (this.type == null) { + this.type = WorldType.NORMAL; + } + } + this.gameType = nbttagcompound.getInt("GameType"); if (nbttagcompound.hasKey("MapFeatures")) { this.useMapFeatures = nbttagcompound.getBoolean("MapFeatures"); @@ -52,15 +64,21 @@ public class WorldData { } public WorldData(WorldSettings worldsettings, String s) { + this.type = WorldType.NORMAL; + this.hardcore = false; this.seed = worldsettings.a(); this.gameType = worldsettings.b(); this.useMapFeatures = worldsettings.d(); this.name = s; this.hardcore = worldsettings.c(); + this.type = worldsettings.e(); } public WorldData(WorldData worlddata) { + this.type = WorldType.NORMAL; + this.hardcore = false; this.seed = worlddata.seed; + this.type = worlddata.type; this.gameType = worlddata.gameType; this.useMapFeatures = worlddata.useMapFeatures; this.spawnX = worlddata.spawnX; @@ -107,6 +125,7 @@ public class WorldData { private void a(NBTTagCompound nbttagcompound, NBTTagCompound nbttagcompound1) { nbttagcompound.setLong("RandomSeed", this.seed); + nbttagcompound.setString("generatorName", this.type.name()); nbttagcompound.setInt("GameType", this.gameType); nbttagcompound.setBoolean("MapFeatures", this.useMapFeatures); nbttagcompound.setInt("SpawnX", this.spawnX); @@ -228,4 +247,8 @@ public class WorldData { public boolean isHardcore() { return this.hardcore; } + + public WorldType getType() { + return this.type; + } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index adde7394bd..863631c7fe 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -102,6 +102,9 @@ public class WorldServer extends World implements BlockChangeDelegate { entity.die(); } // CraftBukkit end */ + if (!this.server.spawnNPCs && entity instanceof NPC) { + entity.die(); + } if (entity.passenger == null || !(entity.passenger instanceof EntityHuman)) { super.entityJoinedWorld(entity, flag); @@ -171,7 +174,7 @@ public class WorldServer extends World implements BlockChangeDelegate { protected void c(Entity entity) { super.c(entity); this.N.a(entity.id, entity); - Entity[] aentity = entity.aG(); + Entity[] aentity = entity.aR(); if (aentity != null) { for (int i = 0; i < aentity.length; ++i) { @@ -183,7 +186,7 @@ public class WorldServer extends World implements BlockChangeDelegate { protected void d(Entity entity) { super.d(entity); this.N.d(entity.id); - Entity[] aentity = entity.aG(); + Entity[] aentity = entity.aR(); if (aentity != null) { for (int i = 0; i < aentity.length; ++i) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 467f360336..7184022d7e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -55,6 +55,7 @@ import net.minecraft.server.WorldMap; import net.minecraft.server.WorldMapCollection; import net.minecraft.server.WorldNBTStorage; import net.minecraft.server.WorldSettings; +import net.minecraft.server.WorldType; import org.bukkit.*; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; @@ -512,6 +513,7 @@ public final class CraftServer implements Server { ChunkGenerator generator = creator.generator(); File folder = new File(name); World world = getWorld(name); + WorldType type = WorldType.a(creator.type().getName()); if (world != null) { return world; @@ -533,7 +535,7 @@ public final class CraftServer implements Server { int dimension = 10 + console.worlds.size(); boolean hardcore = false; - WorldServer internal = new WorldServer(console, new ServerNBTManager(getWorldContainer(), name, true), name, dimension, new WorldSettings(creator.seed(), getDefaultGameMode().getValue(), true, hardcore), creator.environment(), generator); + WorldServer internal = new WorldServer(console, new ServerNBTManager(getWorldContainer(), name, true), name, dimension, new WorldSettings(creator.seed(), getDefaultGameMode().getValue(), true, hardcore, type), creator.environment(), generator); if (!(worlds.containsKey(name.toLowerCase()))) { return null; diff --git a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java index aab74435ea..3bca36076f 100644 --- a/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java +++ b/src/main/java/org/bukkit/craftbukkit/enchantments/CraftEnchantment.java @@ -43,6 +43,8 @@ public class CraftEnchantment extends Enchantment { return EnchantmentTarget.TOOL; case WEAPON: return EnchantmentTarget.WEAPON; + case BOW: + return EnchantmentTarget.BOW; default: return null; } @@ -90,6 +92,14 @@ public class CraftEnchantment extends Enchantment { return "DURABILITY"; case 35: return "LOOT_BONUS_BLOCKS"; + case 48: + return "ARROW_DAMAGE"; + case 49: + return "ARROW_KNOCKBACK"; + case 50: + return "ARROW_FIRE"; + case 51: + return "ARROW_INFINITE"; default: return "UNKNOWN_ENCHANT_" + target.id; } diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHashset.java b/src/main/java/org/bukkit/craftbukkit/util/LongHashset.java index 0368aa6b5d..8c17e4f3b8 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LongHashset.java +++ b/src/main/java/org/bukkit/craftbukkit/util/LongHashset.java @@ -21,6 +21,10 @@ public class LongHashset extends LongHash { } } + public int size() { + return count; + } + public void add(int msw, int lsw) { add(toLong(msw, lsw)); }