diff options
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityPlayer.java')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityPlayer.java | 501 |
1 files changed, 203 insertions, 298 deletions
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java index 4cc6e137..cb259c9a 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1,383 +1,288 @@ package net.minecraft.server; +import java.util.HashSet; +import java.util.LinkedList; import java.util.List; -import java.util.Random; +import java.util.Set; // CraftBukkit start -import org.bukkit.craftbukkit.entity.CraftHumanEntity; import org.bukkit.craftbukkit.CraftServer; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.craftbukkit.entity.CraftPlayer; // CraftBukkit end -public abstract class EntityPlayer extends EntityLiving { - - public InventoryPlayer an; - public CraftingInventoryCB ao; - public CraftingInventoryCB ap; - public byte aq; - public int ar; - public float as; - public float at; - public boolean au; - public int av; - public String aw; - public int ax; - public double ay; - public double az; - public double aA; - public double aB; - public double aC; - public double aD; - private int a; - public EntityFish aE; - - public EntityPlayer(World world) { +public class EntityPlayer extends EntityHuman implements ICrafting { + + public NetServerHandler a; + public MinecraftServer b; + public ItemInWorldManager c; + public double d; + public double e; + public List f = new LinkedList(); + public Set ak = new HashSet(); + public double al; + private int bD = -99999999; + private int bE = 60; + private ItemStack[] bF = new ItemStack[] { null, null, null, null, null}; + private int bG = 0; + public boolean am; + + public EntityPlayer(MinecraftServer minecraftserver, World world, String s, ItemInWorldManager iteminworldmanager) { super(world); - an = new InventoryPlayer(this); - aq = 0; - ar = 0; - au = false; - av = 0; - a = 0; - aE = null; - ao = ((CraftingInventoryCB) (new CraftingInventoryPlayerCB(an, !world.z))); - ap = ao; - H = 1.62F; - c((double) world.m + 0.5D, world.n + 1, (double) world.o + 0.5D, 0.0F, 0.0F); - aZ = 20; - aS = "humanoid"; - aR = 180F; - Y = 20; - aP = "/mob/char.png"; + int i = world.spawnX; + int j = world.spawnZ; + int k = world.spawnY; + + if (!world.q.e) { + i += this.random.nextInt(20) - 10; + k = world.e(i, j); + j += this.random.nextInt(20) - 10; + } + + this.c((double) i + 0.5D, (double) k, (double) j + 0.5D, 0.0F, 0.0F); + this.b = minecraftserver; + this.S = 0.0F; + iteminworldmanager.a = this; + this.name = s; + this.c = iteminworldmanager; + this.height = 0.0F; + // CraftBukkit start - CraftServer server = ((WorldServer) this.l).getServer(); - this.bukkitEntity = new CraftHumanEntity(server, this); + CraftServer server = ((WorldServer) this.world).getServer(); + this.bukkitEntity = new CraftPlayer(server, this); // CraftBukkit end } - public void b_() { - super.b_(); - if (!l.z && ap != null && !ap.b(this)) { - L(); - ap = ao; - } - ay = aB; - az = aC; - aA = aD; - double d1 = p - aB; - double d2 = q - aC; - double d3 = r - aD; - double d4 = 10D; - - if (d1 > d4) { - ay = aB = p; - } - if (d3 > d4) { - aA = aD = r; - } - if (d2 > d4) { - az = aC = q; - } - if (d1 < -d4) { - ay = aB = p; - } - if (d3 < -d4) { - aA = aD = r; - } - if (d2 < -d4) { - az = aC = q; - } - aB += d1 * 0.25D; - aD += d3 * 0.25D; - aC += d2 * 0.25D; + public void l() { + this.activeContainer.a((ICrafting) this); } - protected void L() { - ap = ao; + public ItemStack[] I() { + return this.bF; } - public void D() { - super.D(); - as = at; - at = 0.0F; - } + public void b_() { + --this.bE; + this.activeContainer.a(); + + for (int i = 0; i < 5; ++i) { + ItemStack itemstack = this.a(i); - protected void d() { - if (au) { - av++; - if (av == 8) { - av = 0; - au = false; + if (itemstack != this.bF[i]) { + this.b.k.a(this, new Packet5EntityEquipment(this.id, i, itemstack)); + this.bF[i] = itemstack; } - } else { - av = 0; } - aY = (float) av / 8F; } - public void o() { - if (l.k == 0 && aZ < 20 && (X % 20) * 12 == 0) { - d(1); - } - an.f(); - as = at; - super.o(); - float f1 = MathHelper.a(s * s + u * u); - float f2 = (float) Math.atan(-t * 0.20000000298023224D) * 15F; + public ItemStack a(int i) { + return i == 0 ? this.inventory.e() : this.inventory.b[i - 1]; + } - if (f1 > 0.1F) { - f1 = 0.1F; - } - if (!A || aZ <= 0) { - f1 = 0.0F; - } - if (A || aZ <= 0) { - f2 = 0.0F; - } - at += (f1 - at) * 0.4F; - bh += (f2 - bh) * 0.8F; - if (aZ > 0) { - List list = l.b(((Entity) (this)), z.b(1.0D, 0.0D, 1.0D)); + public void f(Entity entity) { + this.inventory.h(); + } + + public boolean a(Entity entity, int i) { + if (this.bE > 0) { + return false; + } else { + if (!this.b.n) { + if (entity instanceof EntityHuman) { + return false; + } - if (list != null) { - for (int i = 0; i < list.size(); i++) { - Entity entity = (Entity) list.get(i); + if (entity instanceof EntityArrow) { + EntityArrow entityarrow = (EntityArrow) entity; - if (!entity.G) { - j(entity); + if (entityarrow.b instanceof EntityHuman) { + return false; } } } + + return super.a(entity, i); } } - private void j(Entity entity) { - entity.b(this); + public void d(int i) { + super.d(i); } - public void f(Entity entity) { - super.f(entity); - a(0.2F, 0.2F); - a(p, q, r); - t = 0.10000000149011612D; - if (aw.equals("Notch")) { - a(new ItemStack(Item.h, 1), true); - } - an.h(); - if (entity != null) { - s = -MathHelper.b(((bd + v) * 3.141593F) / 180F) * 0.1F; - u = -MathHelper.a(((bd + v) * 3.141593F) / 180F) * 0.1F; - } else { - s = u = 0.0D; + public void n() { + super.b_(); + ChunkCoordIntPair chunkcoordintpair = null; + double d0 = 0.0D; + + for (int i = 0; i < this.f.size(); ++i) { + ChunkCoordIntPair chunkcoordintpair1 = (ChunkCoordIntPair) this.f.get(i); + double d1 = chunkcoordintpair1.a(this); + + if (i == 0 || d1 < d0) { + chunkcoordintpair = chunkcoordintpair1; + d0 = chunkcoordintpair1.a(this); + } } - H = 0.1F; - } - public void b(Entity entity, int i) { - ar += i; - } + if (chunkcoordintpair != null) { + boolean flag = false; - public void O() { - a(an.b(an.c, 1), false); - } + if (d0 < 1024.0D) { + flag = true; + } - public void b(ItemStack itemstack) { - a(itemstack, false); - } + if (this.a.b() < 2) { + flag = true; + } - public void a(ItemStack itemstack, boolean flag) { - if (itemstack == null) { - return; + if (flag) { + this.f.remove(chunkcoordintpair); + this.a.b((Packet) (new Packet51MapChunk(chunkcoordintpair.a * 16, 0, chunkcoordintpair.b * 16, 16, 128, 16, this.b.e))); + List list = this.b.e.d(chunkcoordintpair.a * 16, 0, chunkcoordintpair.b * 16, chunkcoordintpair.a * 16 + 16, 128, chunkcoordintpair.b * 16 + 16); + + for (int j = 0; j < list.size(); ++j) { + this.a((TileEntity) list.get(j)); + } + } } - EntityItem entityitem = new EntityItem(l, p, (q - 0.30000001192092896D) + (double) w(), r, itemstack); - entityitem.c = 40; - float f1 = 0.1F; + if (this.health != this.bD) { + this.a.b((Packet) (new Packet8UpdateHealth(this.health))); + this.bD = this.health; + } + } - if (flag) { - float f3 = W.nextFloat() * 0.5F; - float f5 = W.nextFloat() * 3.141593F * 2.0F; + private void a(TileEntity tileentity) { + if (tileentity != null) { + Packet packet = tileentity.g(); - entityitem.s = -MathHelper.a(f5) * f3; - entityitem.u = MathHelper.b(f5) * f3; - entityitem.t = 0.20000000298023224D; - } else { - float f2 = 0.3F; - - entityitem.s = -MathHelper.a((v / 180F) * 3.141593F) * MathHelper.b((w / 180F) * 3.141593F) * f2; - entityitem.u = MathHelper.b((v / 180F) * 3.141593F) * MathHelper.b((w / 180F) * 3.141593F) * f2; - entityitem.t = -MathHelper.a((w / 180F) * 3.141593F) * f2 + 0.1F; - f2 = 0.02F; - float f4 = W.nextFloat() * 3.141593F * 2.0F; - - f2 *= W.nextFloat(); - entityitem.s += Math.cos(f4) * (double) f2; - entityitem.t += (W.nextFloat() - W.nextFloat()) * 0.1F; - entityitem.u += Math.sin(f4) * (double) f2; + if (packet != null) { + this.a.b(packet); + } } - a(entityitem); } - protected void a(EntityItem entityitem) { - l.a(((Entity) (entityitem))); + public void o() { + this.motX = this.motY = this.motZ = 0.0D; + this.bA = false; + super.o(); } - public float a(Block block) { - float f1 = an.a(block); + public void c(Entity entity, int i) { + if (!entity.dead) { + if (entity instanceof EntityItem) { + this.b.k.a(entity, new Packet22Collect(entity.id, this.id)); + } - if (a(Material.f)) { - f1 /= 5F; - } - if (!A) { - f1 /= 5F; + if (entity instanceof EntityArrow) { + this.b.k.a(entity, new Packet22Collect(entity.id, this.id)); + } } - return f1; - } - public boolean b(Block block) { - return an.b(block); + super.c(entity, i); + this.activeContainer.a(); } - public void b(NBTTagCompound nbttagcompound) { - super.b(nbttagcompound); - NBTTagList nbttaglist = nbttagcompound.k("Inventory"); + public void K() { + if (!this.au) { + this.av = -1; + this.au = true; + this.b.k.a(this, new Packet18ArmAnimation(this, 1)); + } + } - an.b(nbttaglist); - ax = nbttagcompound.d("Dimension"); + public float w() { + return 1.62F; } - public void a(NBTTagCompound nbttagcompound) { - super.a(nbttagcompound); - nbttagcompound.a("Inventory", ((NBTBase) (an.a(new NBTTagList())))); - nbttagcompound.a("Dimension", ax); + public void e(Entity entity) { + // CraftBukkit start + setPassengerOf(entity); } - public void a(IInventory iinventory) {} + public void setPassengerOf(Entity entity) { + // e(null) doesn't really fly for overloaded methods, + // so this method is needed - public void a(int i, int k, int l) {} + super.setPassengerOf(entity); + // CraftBukkit end + this.a.b((Packet) (new Packet39AttachEntity(this, this.vehicle))); + this.a.a(this.locX, this.locY, this.locZ, this.yaw, this.pitch); + } - public void c(Entity entity, int i) {} + protected void a(double d0, boolean flag) {} - public float w() { - return 0.12F; + public void b(double d0, boolean flag) { + super.a(d0, flag); } - public boolean a(Entity entity, int i) { - bw = 0; - if (aZ <= 0) { - return false; - } - if ((entity instanceof EntityMobs) || (entity instanceof EntityArrow)) { - if (l.k == 0) { - i = 0; - } - if (l.k == 1) { - i = i / 3 + 1; - } - if (l.k == 3) { - i = (i * 3) / 2; - } - } - if (i == 0) { - return false; - } else { - return super.a(entity, i); - } + private void U() { + this.bG = this.bG % 100 + 1; } - protected void e(int i) { - int k = 25 - an.g(); - int l = i * k + a; - - an.c(i); - i = l / 25; - a = l % 25; - super.e(i); + public void a(int i, int j, int k) { + this.U(); + this.a.b((Packet) (new Packet100OpenWindow(this.bG, 1, "Crafting", 9))); + this.activeContainer = new ContainerWorkbench(this.inventory, this.world, i, j, k); + this.activeContainer.f = this.bG; + this.activeContainer.a((ICrafting) this); } - public void a(TileEntityFurnace tileentityfurnace) {} - - public void a(TileEntityDispenser tileentitydispenser) {} + public void a(IInventory iinventory) { + this.U(); + this.a.b((Packet) (new Packet100OpenWindow(this.bG, 0, iinventory.b(), iinventory.h_()))); + this.activeContainer = new ContainerChest(this.inventory, iinventory); + this.activeContainer.f = this.bG; + this.activeContainer.a((ICrafting) this); + } - public void a(TileEntitySign tileentitysign) {} + public void a(TileEntityFurnace tileentityfurnace) { + this.U(); + this.a.b((Packet) (new Packet100OpenWindow(this.bG, 2, tileentityfurnace.b(), tileentityfurnace.h_()))); + this.activeContainer = new ContainerFurnace(this.inventory, tileentityfurnace); + this.activeContainer.f = this.bG; + this.activeContainer.a((ICrafting) this); + } - public void g(Entity entity) { - if (entity.a(this)) { - return; - } - ItemStack itemstack = P(); + public void a(TileEntityDispenser tileentitydispenser) { + this.U(); + this.a.b((Packet) (new Packet100OpenWindow(this.bG, 3, tileentitydispenser.b(), tileentitydispenser.h_()))); + this.activeContainer = new ContainerDispenser(this.inventory, tileentitydispenser); + this.activeContainer.f = this.bG; + this.activeContainer.a((ICrafting) this); + } - if (itemstack != null && (entity instanceof EntityLiving)) { - itemstack.b((EntityLiving) entity); - if (itemstack.a <= 0) { - itemstack.a(this); - Q(); + public void a(Container container, int i, ItemStack itemstack) { + if (!(container.a(i) instanceof SlotResult)) { + if (!this.am) { + this.a.b((Packet) (new Packet103SetSlot(container.f, i, itemstack))); } } } - public ItemStack P() { - return an.e(); + public void a(Container container, List list) { + this.a.b((Packet) (new Packet104WindowItems(container.f, list))); + this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.i()))); } - public void Q() { - an.a(an.c, ((ItemStack) (null))); + public void a(Container container, int i, int j) { + this.a.b((Packet) (new Packet105CraftProgressBar(container.f, i, j))); } - public double F() { - return (double) (H - 0.5F); - } + public void a(ItemStack itemstack) {} - public void K() { - av = -1; - au = true; + public void L() { + this.a.b((Packet) (new Packet101CloseWindow(this.activeContainer.f))); + this.N(); } - public void h(Entity entity) { - int i = an.a(entity); - - if (i > 0) { - // CraftBukkit start - if(entity instanceof EntityLiving) { - CraftServer server = ((WorldServer) l).getServer(); - org.bukkit.entity.Entity damager = this.getBukkitEntity(); - org.bukkit.entity.Entity damagee = (entity == null)?null:entity.getBukkitEntity(); - DamageCause damageType = EntityDamageEvent.DamageCause.ENTITY_ATTACK; - int damageDone = i; - - EntityDamageByEntityEvent edbee = new EntityDamageByEntityEvent(damager, damagee, damageType, damageDone); - server.getPluginManager().callEvent(edbee); - - if (!edbee.isCancelled()){ - entity.a(((Entity) this), edbee.getDamage()); - } else { - return; - } - } else { - entity.a(((Entity) (this)), i); - } - // CraftBukkit end - ItemStack itemstack = P(); - - if (itemstack != null && (entity instanceof EntityLiving)) { - itemstack.a((EntityLiving) entity); - if (itemstack.a <= 0) { - itemstack.a(this); - Q(); - } - } + public void M() { + if (!this.am) { + this.a.b((Packet) (new Packet103SetSlot(-1, -1, this.inventory.i()))); } } - public void a(ItemStack itemstack) {} - - public void q() { - super.q(); - ao.a(this); - if (ap != null) { - ap.a(this); - } + public void N() { + this.activeContainer.a((EntityHuman) this); + this.activeContainer = this.defaultContainer; } } |