import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import net.minecraft.server.MinecraftServer; public class OEntityPlayerMP extends OEntityPlayer implements OICrafting { public ONetServerHandler a; public MinecraftServer b; public OItemInWorldManager c; public double d; public double e; public List f = new LinkedList(); public Set g = new HashSet(); private int bE = -99999999; private int bF = 60; private OItemStack[] bG = { null, null, null, null, null }; private int bH = 0; public boolean h; // hMod: Player storage private Player player; public OEntityPlayerMP(MinecraftServer paramMinecraftServer, OWorld paramOWorld, String paramString, OItemInWorldManager paramOItemInWorldManager) { super(paramOWorld); OChunkCoordinates localOChunkCoordinates = paramOWorld.m(); int i = localOChunkCoordinates.a; int j = localOChunkCoordinates.c; int k = localOChunkCoordinates.b; if (!paramOWorld.m.e) { i += bq.nextInt(etc.getInstance().getSpawnProtectionSize() * 2 + 1) - etc.getInstance().getSpawnProtectionSize(); k = paramOWorld.e(i, j); j += bq.nextInt(etc.getInstance().getSpawnProtectionSize() * 2 + 1) - etc.getInstance().getSpawnProtectionSize(); } c(i + 0.5D, k, j + 0.5D, 0.0F, 0.0F); b = paramMinecraftServer; bm = 0.0F; paramOItemInWorldManager.a = this; r = paramString; c = paramOItemInWorldManager; bc = 0.0F; // hMod: So we don't conflict with runecraft c = new Digging(paramOWorld, this); // hMod: Store player player = etc.getDataSource().getPlayer(paramString); player.setUser(this); } /** * Returns the player * * @return player */ public Player getPlayer() { return player; } /** * Reloads the player */ public void reloadPlayer() { player = etc.getDataSource().getPlayer(r); player.setUser(this); } public void m() { // hMod: Make sure this gets cast correctly, or mutant puppies will // spawn and eat your items. k.a((OICrafting) this); } @Override public OItemStack[] k_() { return bG; } @Override protected void l_() { bc = 0.0F; } @Override public float q() { return 1.62F; } @Override public void f_() { c.a(); bF -= 1; k.a(); for (int i = 0; i < 5; i++) { OItemStack localOItemStack = b_(i); if (localOItemStack != bG[i]) { b.k.a(this, new OPacket5PlayerInventory(aB, i, localOItemStack)); bG[i] = localOItemStack; } } } public OItemStack b_(int paramInt) { if (paramInt == 0) return i.b(); return i.b[(paramInt - 1)]; } @Override public void a(OEntity paramOEntity) { // hMod: drops inventory on death. if (etc.getInstance().isHealthEnabled()) i.h(); } @Override public boolean a(OEntity paramOEntity, int paramInt) { if (bF > 0) return false; if (!b.n) { if ((paramOEntity instanceof OEntityPlayer)) return false; if ((paramOEntity instanceof OEntityArrow)) { OEntityArrow localOEntityArrow = (OEntityArrow) paramOEntity; if ((localOEntityArrow.b instanceof OEntityPlayer)) return false; } } return super.a(paramOEntity, paramInt); } @Override public void b(int paramInt) { super.b(paramInt); } public void a(boolean paramBoolean) { super.f_(); if ((paramBoolean) && (!f.isEmpty())) { OChunkCoordIntPair localOChunkCoordIntPair = (OChunkCoordIntPair) f.get(0); if (localOChunkCoordIntPair != null) { int i = 0; if (a.b() < 2) i = 1; if (i != 0) { f.remove(localOChunkCoordIntPair); a.b(new OPacket51MapChunk(localOChunkCoordIntPair.a * 16, 0, localOChunkCoordIntPair.b * 16, 16, 128, 16, b.e)); List localList = b.e.d(localOChunkCoordIntPair.a * 16, 0, localOChunkCoordIntPair.b * 16, localOChunkCoordIntPair.a * 16 + 16, 128, localOChunkCoordIntPair.b * 16 + 16); for (int j = 0; j < localList.size(); j++) a((OTileEntity) localList.get(j)); } } } if (W != bE) { // updates your health when it is changed. if (!etc.getInstance().isHealthEnabled()) { W = 20; af = false; } else if ((Boolean) manager.callHook(PluginLoader.Hook.HEALTH_CHANGE, getPlayer(), bE, W)) W = bE; else a.b(new OPacket8(W)); bE = W; } } private void a(OTileEntity paramOTileEntity) { if (paramOTileEntity != null) { // hMod: Let plugins know we're showing a sign if (paramOTileEntity instanceof OTileEntitySign) { Sign sign = new Sign((OTileEntitySign) paramOTileEntity); manager.callHook(PluginLoader.Hook.SIGN_SHOW, getPlayer(), sign); } OPacket localOPacket = paramOTileEntity.e(); if (localOPacket != null) a.b(localOPacket); } } @Override public void r() { super.r(); } @Override public void b(OEntity paramOEntity, int paramInt) { if (!paramOEntity.bb) { if ((paramOEntity instanceof OEntityItem)) b.k.a(paramOEntity, new OPacket22Collect(paramOEntity.aB, aB)); if ((paramOEntity instanceof OEntityArrow)) b.k.a(paramOEntity, new OPacket22Collect(paramOEntity.aB, aB)); } super.b(paramOEntity, paramInt); k.a(); } @Override public void m_() { if (!p) { q = -1; p = true; b.k.a(this, new OPacket18ArmAnimation(this, 1)); } } public void t() { } @Override public OEnumStatus a(int paramInt1, int paramInt2, int paramInt3) { OEnumStatus localOEnumStatus = super.a(paramInt1, paramInt2, paramInt3); if (localOEnumStatus == OEnumStatus.a) b.k.a(this, new OPacket17Sleep(this, 0, paramInt1, paramInt2, paramInt3)); return localOEnumStatus; } @Override public void a(boolean paramBoolean1, boolean paramBoolean2, boolean paramBoolean3) { if (F()) b.k.b(this, new OPacket18ArmAnimation(this, 3)); super.a(paramBoolean1, paramBoolean2, paramBoolean3); a.a(aK, aL, aM, aQ, aR); } @Override public void b(OEntity paramOEntity) { super.b(paramOEntity); a.b(new OPacket39(this, aF)); a.a(aK, aL, aM, aQ, aR); } @Override protected void a(double paramDouble, boolean paramBoolean) { } public void b(double paramDouble, boolean paramBoolean) { super.a(paramDouble, paramBoolean); } private void aa() { bH = (bH % 100 + 1); } @Override public void b(int paramInt1, int paramInt2, int paramInt3) { aa(); a.b(new OPacket100(bH, 1, "Crafting", 9)); k = new OCraftingInventoryWorkbenchCB(i, aG, paramInt1, paramInt2, paramInt3); k.f = bH; // hMod: Make sure this gets cast correctly, or mutant puppies will // spawn and eat your items. k.a((OICrafting) this); } @Override public void a(OIInventory paramOIInventory) { // hMod: Check if we can open this Inventory inv = null; String name = paramOIInventory.c(); if (paramOIInventory instanceof OTileEntityChest) { inv = new Chest((OTileEntityChest) paramOIInventory); if ((Boolean) manager.callHook(PluginLoader.Hook.OPEN_INVENTORY, getPlayer(), inv)) return; } else if (paramOIInventory instanceof OInventoryLargeChest) { inv = new DoubleChest((OInventoryLargeChest) paramOIInventory); if ((Boolean) manager.callHook(PluginLoader.Hook.OPEN_INVENTORY, getPlayer(), inv)) return; } if (inv != null) name = inv.getName(); aa(); a.b(new OPacket100(bH, 0, name, paramOIInventory.q_())); k = new OCraftingInventoryChestCB(i, paramOIInventory); k.f = bH; // hMod: Make sure this gets cast correctly, or mutant puppies will // spawn and eat your items. k.a((OICrafting) this); } @Override public void a(OTileEntityFurnace paramOTileEntityFurnace) { // hMod: Check if we can open this Inventory inv = new Furnace(paramOTileEntityFurnace); String name = paramOTileEntityFurnace.c(); if ((Boolean) manager.callHook(PluginLoader.Hook.OPEN_INVENTORY, getPlayer(), inv)) return; if (inv != null) name = inv.getName(); aa(); a.b(new OPacket100(bH, 2, name, paramOTileEntityFurnace.q_())); k = new OCraftingInventoryFurnaceCB(i, paramOTileEntityFurnace); k.f = bH; // hMod: Make sure this gets cast correctly, or mutant puppies will // spawn and eat your items. k.a((OICrafting) this); } @Override public void a(OTileEntityDispenser paramOTileEntityDispenser) { Dispenser dis = new Dispenser(paramOTileEntityDispenser); String name = paramOTileEntityDispenser.c(); if ((Boolean) manager.callHook(PluginLoader.Hook.OPEN_INVENTORY, getPlayer(), dis)) return; if (dis != null) name = dis.getName(); aa(); a.b(new OPacket100(bH, 3, name, paramOTileEntityDispenser.q_())); k = new OCraftingInventoryDispenserCB(i, paramOTileEntityDispenser); k.f = bH; // hMod: Make sure this gets cast correctly, or mutant puppies will // spawn and eat your items. k.a((OICrafting) this); } public void a(OCraftingInventoryCB paramOCraftingInventoryCB, int paramInt, OItemStack paramOItemStack) { if ((paramOCraftingInventoryCB.a(paramInt) instanceof OSlotCrafting)) return; if (h) return; a.b(new OPacket103(paramOCraftingInventoryCB.f, paramInt, paramOItemStack)); } public void a(OCraftingInventoryCB paramOCraftingInventoryCB, List paramList) { a.b(new OPacket104(paramOCraftingInventoryCB.f, paramList)); a.b(new OPacket103(-1, -1, i.j())); } public void a(OCraftingInventoryCB paramOCraftingInventoryCB, int paramInt1, int paramInt2) { a.b(new OPacket105(paramOCraftingInventoryCB.f, paramInt1, paramInt2)); } @Override public void a(OItemStack paramOItemStack) { } @Override public void u() { a.b(new OPacket101(k.f)); w(); } public void v() { if (h) return; a.b(new OPacket103(-1, -1, i.j())); } public void w() { k.a((OEntityPlayer)this); k = j; } public void a(float paramFloat1, float paramFloat2, boolean paramBoolean1, boolean paramBoolean2, float paramFloat3, float paramFloat4) { au = paramFloat1; av = paramFloat2; ax = paramBoolean1; e(paramBoolean2); aR = paramFloat3; aQ = paramFloat4; } }