summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/EntityPlayer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/minecraft/server/EntityPlayer.java')
-rw-r--r--src/main/java/net/minecraft/server/EntityPlayer.java501
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;
}
}