public static Tile cloneTile(Tile tile) { return new Tile { type = tile.type, liquid = tile.liquid, active = tile.active, frameNumber = tile.frameNumber, wallFrameX = tile.wallFrameX, wallFrameY = tile.wallFrameY, lava = tile.lava, lighted = tile.lighted, frameX = tile.frameX, frameY = tile.frameY }; }
public static Tile cloneTile(Tile tile, int X = 0, int Y = 0) { return new Tile { type = tile.type, liquid = tile.liquid, Active = tile.Active, frameNumber = tile.frameNumber, wallFrameX = tile.wallFrameX, wallFrameY = tile.wallFrameY, lava = tile.lava, lighted = tile.lighted, frameX = tile.frameX, frameY = tile.frameY, tileX = X, tileY = Y }; }
public void GetData(int start, int length) { if (this.whoAmI < 256) { NetPlay.serverSock[this.whoAmI].timeOut = 0; } else { NetPlay.clientSock.timeOut = 0; } int num = 0; num = start + 1; byte b = this.readBuffer[start]; if (Main.netMode == 1 && NetPlay.clientSock.statusMax > 0) { NetPlay.clientSock.statusCount++; } if (Main.verboseNetplay) { for (int i = start; i < start + length; i++) { } for (int j = start; j < start + length; j++) { byte arg_85_0 = this.readBuffer[j]; } } if (Main.netMode == 2 && b != 38 && NetPlay.serverSock[this.whoAmI].state == -1) { NetMessage.SendData(2, this.whoAmI, -1, "Incorrect password.", 0, 0f, 0f, 0f); return; } if (b == 1 && Main.netMode == 2) { LoginEvent Event = new LoginEvent(); Event.setSocket(NetPlay.serverSock[this.whoAmI]); Event.setSender(Main.player[this.whoAmI]); Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_PRELOGIN, Event); if (Event.getCancelled()) { NetMessage.SendData(2, this.whoAmI, -1, "Disconnected By Server.", 0, 0f, 0f, 0f); return; } if (Main.dedServ && Program.server.getBanList().containsException(NetPlay.serverSock[this.whoAmI].tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0])) { NetMessage.SendData(2, this.whoAmI, -1, "You are banned from this Server.", 0, 0f, 0f, 0f); return; } if(Program.properties.isUsingWhiteList() && !Program.server.getWhiteList().containsException(NetPlay.serverSock[this.whoAmI].tcpClient.Client.RemoteEndPoint.ToString().Split(':')[0])) { NetMessage.SendData(2, this.whoAmI, -1, "You are not on the WhiteList.", 0, 0f, 0f, 0f); return; } if (NetPlay.serverSock[this.whoAmI].state == 0) { string version = Encoding.ASCII.GetString(this.readBuffer, start + 1, length - 1); if (!(version == "Terraria" + Statics.currentRelease)) { NetMessage.SendData(2, this.whoAmI, -1, "You are not using the same version as this Server.", 0, 0f, 0f, 0f); return; } if (NetPlay.password == null || NetPlay.password == "") { NetPlay.serverSock[this.whoAmI].state = 1; NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0f, 0f, 0f); return; } NetPlay.serverSock[this.whoAmI].state = -1; NetMessage.SendData(37, this.whoAmI, -1, "", 0, 0f, 0f, 0f); return; } } else { if (b == 2 && Main.netMode == 1) { NetPlay.disconnect = true; Main.statusText = Encoding.ASCII.GetString(this.readBuffer, start + 1, length - 1); return; } if (b == 3 && Main.netMode == 1) { if (NetPlay.clientSock.state == 1) { NetPlay.clientSock.state = 2; } int num2 = (int)this.readBuffer[start + 1]; if (num2 != Main.myPlayer) { Main.player[num2] = (Player)Main.player[Main.myPlayer].Clone(); Main.player[Main.myPlayer] = new Player(); Main.player[num2].whoAmi = num2; Main.myPlayer = num2; } NetMessage.SendData(4, -1, -1, Main.player[Main.myPlayer].name, Main.myPlayer, 0f, 0f, 0f); NetMessage.SendData(16, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); NetMessage.SendData(42, -1, -1, "", Main.myPlayer, 0f, 0f, 0f); for (int k = 0; k < 44; k++) { NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].inventory[k].name, Main.myPlayer, (float)k, 0f, 0f); } NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[0].name, Main.myPlayer, 44f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[1].name, Main.myPlayer, 45f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[2].name, Main.myPlayer, 46f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[3].name, Main.myPlayer, 47f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[4].name, Main.myPlayer, 48f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[5].name, Main.myPlayer, 49f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[6].name, Main.myPlayer, 50f, 0f, 0f); NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[7].name, Main.myPlayer, 51f, 0f, 0f); NetMessage.SendData(6, -1, -1, "", 0, 0f, 0f, 0f); if (NetPlay.clientSock.state == 2) { NetPlay.clientSock.state = 3; return; } } else { if (b == 4) { bool flag = false; int num3 = (int)this.readBuffer[start + 1]; if (Main.netMode == 2) { num3 = this.whoAmI; } if (num3 == Main.myPlayer) { return; } int hair = (int)this.readBuffer[start + 2]; Main.player[num3].hair = hair; Main.player[num3].whoAmi = num3; num += 2; Main.player[num3].hairColor.R = this.readBuffer[num]; num++; Main.player[num3].hairColor.G = this.readBuffer[num]; num++; Main.player[num3].hairColor.B = this.readBuffer[num]; num++; Main.player[num3].skinColor.R = this.readBuffer[num]; num++; Main.player[num3].skinColor.G = this.readBuffer[num]; num++; Main.player[num3].skinColor.B = this.readBuffer[num]; num++; Main.player[num3].eyeColor.R = this.readBuffer[num]; num++; Main.player[num3].eyeColor.G = this.readBuffer[num]; num++; Main.player[num3].eyeColor.B = this.readBuffer[num]; num++; Main.player[num3].shirtColor.R = this.readBuffer[num]; num++; Main.player[num3].shirtColor.G = this.readBuffer[num]; num++; Main.player[num3].shirtColor.B = this.readBuffer[num]; num++; Main.player[num3].underShirtColor.R = this.readBuffer[num]; num++; Main.player[num3].underShirtColor.G = this.readBuffer[num]; num++; Main.player[num3].underShirtColor.B = this.readBuffer[num]; num++; Main.player[num3].pantsColor.R = this.readBuffer[num]; num++; Main.player[num3].pantsColor.G = this.readBuffer[num]; num++; Main.player[num3].pantsColor.B = this.readBuffer[num]; num++; Main.player[num3].shoeColor.R = this.readBuffer[num]; num++; Main.player[num3].shoeColor.G = this.readBuffer[num]; num++; Main.player[num3].shoeColor.B = this.readBuffer[num]; num++; string string2 = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); Main.player[num3].name = string2; if (Main.netMode == 2) { if (NetPlay.serverSock[this.whoAmI].state < 10) { for (int l = 0; l < 255; l++) { if (l != num3 && string2 == Main.player[l].name && NetPlay.serverSock[l].active) { flag = true; } } } if (flag) { NetMessage.SendData(2, this.whoAmI, -1, string2 + " is already on this server.", 0, 0f, 0f, 0f); return; } if (string2.Length > 20) { NetMessage.SendData(2, this.whoAmI, -1, "Name is too long.", 0, 0f, 0f, 0f); } NetPlay.serverSock[this.whoAmI].oldName = string2; NetPlay.serverSock[this.whoAmI].name = string2; NetMessage.SendData(4, -1, this.whoAmI, string2, num3, 0f, 0f, 0f); return; } } else { if (b == 5) { int num2 = (int)this.readBuffer[start + 1]; if (Main.netMode == 2) { num2 = this.whoAmI; } if (num2 != Main.myPlayer) { lock (Main.player[num2]) { int num3 = (int)this.readBuffer[start + 2]; int stack = (int)this.readBuffer[start + 3]; string string3 = Encoding.ASCII.GetString(this.readBuffer, start + 4, length - 4); if (num3 < 44) { Main.player[num2].inventory[num3] = new Item(); Main.player[num2].inventory[num3].SetDefaults(string3); Main.player[num2].inventory[num3].stack = stack; } else { Main.player[num2].armor[num3 - 44] = new Item(); Main.player[num2].armor[num3 - 44].SetDefaults(string3); Main.player[num2].armor[num3 - 44].stack = stack; } if (Main.netMode == 2 && num2 == this.whoAmI) { NetMessage.SendData(5, -1, this.whoAmI, string3, num2, (float)num3, 0f, 0f); } } } } else { if (b == 6) { if (Main.netMode == 2) { if (NetPlay.serverSock[this.whoAmI].state == 1) { NetPlay.serverSock[this.whoAmI].state = 2; } NetMessage.SendData(7, this.whoAmI, -1, "", 0, 0f, 0f, 0f); return; } } else { if (b == 7) { if (Main.netMode == 1) { Main.time = (double)BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.dayTime = false; if (this.readBuffer[num] == 1) { Main.dayTime = true; } num++; Main.moonPhase = (int)this.readBuffer[num]; num++; int num6 = (int)this.readBuffer[num]; num++; if (num6 == 1) { Main.bloodMoon = true; } else { Main.bloodMoon = false; } Main.maxTilesX = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.maxTilesY = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.spawnTileX = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.spawnTileY = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.worldSurface = (double)BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.rockLayer = (double)BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.worldID = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.worldName = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); if (NetPlay.clientSock.state == 3) { NetPlay.clientSock.state = 4; return; } } } else { if (b == 8) { if (Main.netMode == 2) { int num7 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num8 = BitConverter.ToInt32(this.readBuffer, num); num += 4; bool flag2 = true; if (num7 == -1 || num8 == -1) { flag2 = false; } else { if (num7 < 10 || num7 > Main.maxTilesX - 10) { flag2 = false; } else { if (num8 < 10 || num8 > Main.maxTilesY - 10) { flag2 = false; } } } int num9 = 1350; if (flag2) { num9 *= 2; } if (NetPlay.serverSock[this.whoAmI].state == 2) { NetPlay.serverSock[this.whoAmI].state = 3; } NetMessage.SendData(9, this.whoAmI, -1, "Receiving tile data", num9, 0f, 0f, 0f); NetPlay.serverSock[this.whoAmI].statusText2 = "is receiving tile data"; NetPlay.serverSock[this.whoAmI].statusMax += num9; int sectionX = NetPlay.GetSectionX(Main.spawnTileX); int sectionY = NetPlay.GetSectionY(Main.spawnTileY); for (int m = sectionX - 2; m < sectionX + 3; m++) { for (int n = sectionY - 1; n < sectionY + 2; n++) { NetMessage.SendSection(this.whoAmI, m, n); } } if (flag2) { num7 = NetPlay.GetSectionX(num7); num8 = NetPlay.GetSectionY(num8); for (int num10 = num7 - 2; num10 < num7 + 3; num10++) { for (int num11 = num8 - 1; num11 < num8 + 2; num11++) { NetMessage.SendSection(this.whoAmI, num10, num11); } } NetMessage.SendData(11, this.whoAmI, -1, "", num7 - 2, (float)(num8 - 1), (float)(num7 + 2), (float)(num8 + 1)); } NetMessage.SendData(11, this.whoAmI, -1, "", sectionX - 2, (float)(sectionY - 1), (float)(sectionX + 2), (float)(sectionY + 1)); NetMessage.SendData(49, this.whoAmI, -1, "", 0, 0f, 0f, 0f); for (int num12 = 0; num12 < 200; num12++) { if (Main.item[num12].active) { NetMessage.SendData(21, this.whoAmI, -1, "", num12, 0f, 0f, 0f); NetMessage.SendData(22, this.whoAmI, -1, "", num12, 0f, 0f, 0f); } } for (int num13 = 0; num13 < 1000; num13++) { if (Main.npc[num13].active) { NetMessage.SendData(23, this.whoAmI, -1, "", num13, 0f, 0f, 0f); } } return; } } else { if (b == 9) { if (Main.netMode == 1) { int num14 = BitConverter.ToInt32(this.readBuffer, start + 1); string string4 = Encoding.ASCII.GetString(this.readBuffer, start + 5, length - 5); NetPlay.clientSock.statusMax += num14; NetPlay.clientSock.statusText = string4; return; } } else { if (b == 10) { short num15 = BitConverter.ToInt16(this.readBuffer, start + 1); int num16 = BitConverter.ToInt32(this.readBuffer, start + 3); int num17 = BitConverter.ToInt32(this.readBuffer, start + 7); num = start + 11; for (int num18 = num16; num18 < num16 + (int)num15; num18++) { if (Main.tile[num18, num17] == null) { Main.tile[num18, num17] = new Tile(); } byte b2 = this.readBuffer[num]; num++; bool active = Main.tile[num18, num17].active; if ((b2 & 1) == 1) { Main.tile[num18, num17].active = true; } else { Main.tile[num18, num17].active = false; } if ((b2 & 2) == 2) { Main.tile[num18, num17].lighted = true; } if ((b2 & 4) == 4) { Main.tile[num18, num17].wall = 1; } else { Main.tile[num18, num17].wall = 0; } if ((b2 & 8) == 8) { Main.tile[num18, num17].liquid = 1; } else { Main.tile[num18, num17].liquid = 0; } if (Main.tile[num18, num17].active) { int type = (int)Main.tile[num18, num17].type; Main.tile[num18, num17].type = this.readBuffer[num]; num++; if (Main.tileFrameImportant[(int)Main.tile[num18, num17].type]) { Main.tile[num18, num17].frameX = BitConverter.ToInt16(this.readBuffer, num); num += 2; Main.tile[num18, num17].frameY = BitConverter.ToInt16(this.readBuffer, num); num += 2; } else { if (!active || (int)Main.tile[num18, num17].type != type) { Main.tile[num18, num17].frameX = -1; Main.tile[num18, num17].frameY = -1; } } } if (Main.tile[num18, num17].wall > 0) { Main.tile[num18, num17].wall = this.readBuffer[num]; num++; } if (Main.tile[num18, num17].liquid > 0) { Main.tile[num18, num17].liquid = this.readBuffer[num]; num++; byte b3 = this.readBuffer[num]; num++; if (b3 == 1) { Main.tile[num18, num17].lava = true; } else { Main.tile[num18, num17].lava = false; } } } if (Main.netMode == 2) { NetMessage.SendData((int)b, -1, this.whoAmI, "", (int)num15, (float)num16, (float)num17, 0f); return; } } else { if (b == 11) { if (Main.netMode == 1) { int startX = (int)BitConverter.ToInt16(this.readBuffer, num); num += 4; int startY = (int)BitConverter.ToInt16(this.readBuffer, num); num += 4; int endX = (int)BitConverter.ToInt16(this.readBuffer, num); num += 4; int endY = (int)BitConverter.ToInt16(this.readBuffer, num); num += 4; WorldGen.SectionTileFrame(startX, startY, endX, endY); return; } } else { if (b == 12) { int num19 = (int)this.readBuffer[num]; num++; Main.player[num19].SpawnX = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.player[num19].SpawnY = BitConverter.ToInt32(this.readBuffer, num); num += 4; Main.player[num19].Spawn(); if (Main.netMode == 2 && NetPlay.serverSock[this.whoAmI].state >= 3) { NetMessage.buffer[this.whoAmI].broadcast = true; NetMessage.SendData(12, -1, this.whoAmI, "", this.whoAmI, 0f, 0f, 0f); if (NetPlay.serverSock[this.whoAmI].state == 3) { NetPlay.serverSock[this.whoAmI].state = 10; NetMessage.greetPlayer(this.whoAmI); NetMessage.syncPlayers(); return; } } } else { if (b == 13) { int num20 = (int)this.readBuffer[num]; if (Main.netMode == 1 && !Main.player[num20].active) { NetMessage.SendData(15, -1, -1, "", 0, 0f, 0f, 0f); } num++; int num21 = (int)this.readBuffer[num]; num++; int selectedItem = (int)this.readBuffer[num]; num++; float x = BitConverter.ToSingle(this.readBuffer, num); num += 4; float num22 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float x2 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y = BitConverter.ToSingle(this.readBuffer, num); num += 4; Main.player[num20].selectedItem = selectedItem; Main.player[num20].position.X = x; Main.player[num20].position.Y = num22; Main.player[num20].velocity.X = x2; Main.player[num20].velocity.Y = y; Main.player[num20].oldVelocity = Main.player[num20].velocity; Main.player[num20].fallStart = (int)(num22 / 16f); Main.player[num20].controlUp = false; Main.player[num20].controlDown = false; Main.player[num20].controlLeft = false; Main.player[num20].controlRight = false; Main.player[num20].controlJump = false; Main.player[num20].controlUseItem = false; Main.player[num20].direction = -1; if ((num21 & 1) == 1) { Main.player[num20].controlUp = true; } if ((num21 & 2) == 2) { Main.player[num20].controlDown = true; } if ((num21 & 4) == 4) { Main.player[num20].controlLeft = true; } if ((num21 & 8) == 8) { Main.player[num20].controlRight = true; } if ((num21 & 16) == 16) { Main.player[num20].controlJump = true; } if ((num21 & 32) == 32) { Main.player[num20].controlUseItem = true; } if ((num21 & 64) == 64) { Main.player[num20].direction = 1; } if (Main.netMode == 2 && NetPlay.serverSock[this.whoAmI].state == 10) { NetMessage.SendData(13, -1, this.whoAmI, "", num20, 0f, 0f, 0f); return; } } else { if (b == 14) { if (Main.netMode == 1) { int num23 = (int)this.readBuffer[num]; num++; int num24 = (int)this.readBuffer[num]; if (num24 == 1) { if (Main.player[num23].active) { Main.player[num23] = new Player(); } Main.player[num23].active = true; return; } Main.player[num23].active = false; return; } } else { if (b == 15) { if (Main.netMode == 2) { NetMessage.syncPlayers(); return; } } else { if (b == 16) { int num25 = (int)this.readBuffer[num]; num++; int statLife = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int statLifeMax = (int)BitConverter.ToInt16(this.readBuffer, num); if (Main.netMode == 2) { num25 = this.whoAmI; } Main.player[num25].statLife = statLife; Main.player[num25].statLifeMax = statLifeMax; if (Main.player[num25].statLife <= 0) { Main.player[num25].dead = true; } if (Main.netMode == 2) { NetMessage.SendData(16, -1, this.whoAmI, "", num25, 0f, 0f, 0f); return; } } else { if (b == 17) { byte b4 = this.readBuffer[num]; num++; int num26 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num27 = BitConverter.ToInt32(this.readBuffer, num); num += 4; byte b5 = this.readBuffer[num]; bool fail = false; if (b5 == 1) { fail = true; } Tile tile = new Tile(); if (Main.tile[num26, num27] != null) { tile = WorldGen.cloneTile(Main.tile[num26, num27]); } if (Main.tile[num26, num27] == null) { Main.tile[num26, num27] = new Tile(); } if (Main.netMode == 2 && !NetPlay.serverSock[this.whoAmI].tileSection[NetPlay.GetSectionX(num26), NetPlay.GetSectionY(num27)]) { fail = true; } tile.tileX = num26; tile.tileY = num27; TileBreakEvent Event = new TileBreakEvent(); Event.setSender(Main.player[this.whoAmI]); Event.setTile(tile); Event.setTileType(b5); Program.server.getPluginManager().processHook(Hooks.TILE_BREAK, Event); if (Event.getCancelled()) { NetMessage.SendTileSquare(this.whoAmI, num26, num27, 1); return; } if (b4 == 0) { WorldGen.KillTile(num26, num27, fail, false, false); } else { if (b4 == 1) { WorldGen.PlaceTile(num26, num27, (int)b5, false, true, -1); } else { if (b4 == 2) { WorldGen.KillWall(num26, num27, fail); } else { if (b4 == 3) { WorldGen.PlaceWall(num26, num27, (int)b5, false); } else { if (b4 == 4) { WorldGen.KillTile(num26, num27, fail, false, true); } } } } } if (Main.netMode == 2) { NetMessage.SendData(17, -1, this.whoAmI, "", (int)b4, (float)num26, (float)num27, (float)b5); if (b4 == 1 && b5 == 53) { NetMessage.SendTileSquare(-1, num26, num27, 1); return; } } } else { if (b == 18) { if (Main.netMode == 1) { byte b6 = this.readBuffer[num]; num++; int num28 = BitConverter.ToInt32(this.readBuffer, num); num += 4; short sunModY = BitConverter.ToInt16(this.readBuffer, num); num += 2; short moonModY = BitConverter.ToInt16(this.readBuffer, num); num += 2; if (b6 == 1) { Main.dayTime = true; } else { Main.dayTime = false; } Main.time = (double)num28; Main.sunModY = sunModY; Main.moonModY = moonModY; if (Main.netMode == 2) { NetMessage.SendData(18, -1, this.whoAmI, "", 0, 0f, 0f, 0f); return; } } } else { if (b == 19) { byte b7 = this.readBuffer[num]; num++; int num29 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num30 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num31 = (int)this.readBuffer[num]; int direction = 0; if (num31 == 0) { direction = -1; } if (b7 == 0) { WorldGen.OpenDoor(num29, num30, direction); } else { if (b7 == 1) { WorldGen.CloseDoor(num29, num30, true); } } if (Main.netMode == 2) { NetMessage.SendData(19, -1, this.whoAmI, "", (int)b7, (float)num29, (float)num30, (float)num31); return; } } else { if (b == 20) { short num32 = BitConverter.ToInt16(this.readBuffer, start + 1); int num33 = BitConverter.ToInt32(this.readBuffer, start + 3); int num34 = BitConverter.ToInt32(this.readBuffer, start + 7); num = start + 11; for (int num35 = num33; num35 < num33 + (int)num32; num35++) { for (int num36 = num34; num36 < num34 + (int)num32; num36++) { if (Main.tile[num35, num36] == null) { Main.tile[num35, num36] = new Tile(); } byte b8 = this.readBuffer[num]; num++; bool active2 = Main.tile[num35, num36].active; if ((b8 & 1) == 1) { Main.tile[num35, num36].active = true; } else { Main.tile[num35, num36].active = false; } if ((b8 & 2) == 2) { Main.tile[num35, num36].lighted = true; } if ((b8 & 4) == 4) { Main.tile[num35, num36].wall = 1; } else { Main.tile[num35, num36].wall = 0; } if ((b8 & 8) == 8) { Main.tile[num35, num36].liquid = 1; } else { Main.tile[num35, num36].liquid = 0; } if (Main.tile[num35, num36].active) { int type2 = (int)Main.tile[num35, num36].type; Main.tile[num35, num36].type = this.readBuffer[num]; num++; if (Main.tileFrameImportant[(int)Main.tile[num35, num36].type]) { Main.tile[num35, num36].frameX = BitConverter.ToInt16(this.readBuffer, num); num += 2; Main.tile[num35, num36].frameY = BitConverter.ToInt16(this.readBuffer, num); num += 2; } else { if (!active2 || (int)Main.tile[num35, num36].type != type2) { Main.tile[num35, num36].frameX = -1; Main.tile[num35, num36].frameY = -1; } } } if (Main.tile[num35, num36].wall > 0) { Main.tile[num35, num36].wall = this.readBuffer[num]; num++; } if (Main.tile[num35, num36].liquid > 0) { Main.tile[num35, num36].liquid = this.readBuffer[num]; num++; byte b9 = this.readBuffer[num]; num++; if (b9 == 1) { Main.tile[num35, num36].lava = true; } else { Main.tile[num35, num36].lava = false; } } } } WorldGen.RangeFrame(num33, num34, num33 + (int)num32, num34 + (int)num32); if (Main.netMode == 2) { NetMessage.SendData((int)b, -1, this.whoAmI, "", (int)num32, (float)num33, (float)num34, 0f); return; } } else { if (b == 21) { short num37 = BitConverter.ToInt16(this.readBuffer, num); num += 2; float num38 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float num39 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float x3 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y2 = BitConverter.ToSingle(this.readBuffer, num); num += 4; byte stack2 = this.readBuffer[num]; num++; string string5 = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); if (Main.netMode == 1) { if (string5 == "0") { Main.item[(int)num37].active = false; return; } Main.item[(int)num37].SetDefaults(string5); Main.item[(int)num37].stack = (int)stack2; Main.item[(int)num37].position.X = num38; Main.item[(int)num37].position.Y = num39; Main.item[(int)num37].velocity.X = x3; Main.item[(int)num37].velocity.Y = y2; Main.item[(int)num37].active = true; Main.item[(int)num37].wet = Collision.WetCollision(Main.item[(int)num37].position, Main.item[(int)num37].width, Main.item[(int)num37].height); return; } else { if (string5 == "0") { if (num37 < 200) { Main.item[(int)num37].active = false; NetMessage.SendData(21, -1, -1, "", (int)num37, 0f, 0f, 0f); return; } } else { bool flag3 = false; if (num37 == 200) { flag3 = true; } if (flag3) { Item item = new Item(); item.SetDefaults(string5); num37 = (short)Item.NewItem((int)num38, (int)num39, item.width, item.height, item.type, (int)stack2, true); } Main.item[(int)num37].SetDefaults(string5); Main.item[(int)num37].stack = (int)stack2; Main.item[(int)num37].position.X = num38; Main.item[(int)num37].position.Y = num39; Main.item[(int)num37].velocity.X = x3; Main.item[(int)num37].velocity.Y = y2; Main.item[(int)num37].active = true; Main.item[(int)num37].owner = Main.myPlayer; if (flag3) { NetMessage.SendData(21, -1, -1, "", (int)num37, 0f, 0f, 0f); Main.item[(int)num37].ownIgnore = this.whoAmI; Main.item[(int)num37].ownTime = 100; Main.item[(int)num37].FindOwner((int)num37); return; } NetMessage.SendData(21, -1, this.whoAmI, "", (int)num37, 0f, 0f, 0f); return; } } } else { if (b == 22) { short num40 = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b10 = this.readBuffer[num]; Main.item[(int)num40].owner = (int)b10; if ((int)b10 == Main.myPlayer) { Main.item[(int)num40].keepTime = 15; } else { Main.item[(int)num40].keepTime = 0; } if (Main.netMode == 2) { Main.item[(int)num40].owner = 255; Main.item[(int)num40].keepTime = 15; NetMessage.SendData(22, -1, -1, "", (int)num40, 0f, 0f, 0f); return; } } else { if (b == 23) { short num41 = BitConverter.ToInt16(this.readBuffer, num); num += 2; float x4 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y3 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float x5 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y4 = BitConverter.ToSingle(this.readBuffer, num); num += 4; int target = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int direction2 = (int)(this.readBuffer[num] - 1); num++; byte arg_212E_0 = this.readBuffer[num]; num++; int num42 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; float[] array = new float[NPC.maxAI]; for (int num43 = 0; num43 < NPC.maxAI; num43++) { array[num43] = BitConverter.ToSingle(this.readBuffer, num); num += 4; } string string6 = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); if (!Main.npc[(int)num41].active || Main.npc[(int)num41].name != string6) { Main.npc[(int)num41].active = true; Main.npc[(int)num41].SetDefaults(string6); } Main.npc[(int)num41].position.X = x4; Main.npc[(int)num41].position.Y = y3; Main.npc[(int)num41].velocity.X = x5; Main.npc[(int)num41].velocity.Y = y4; Main.npc[(int)num41].target = target; Main.npc[(int)num41].direction = direction2; Main.npc[(int)num41].life = num42; if (num42 <= 0) { Main.npc[(int)num41].active = false; } for (int num44 = 0; num44 < NPC.maxAI; num44++) { Main.npc[(int)num41].ai[num44] = array[num44]; } return; } if (b == 24) { short num45 = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b11 = this.readBuffer[num]; Main.npc[(int)num45].StrikeNPC(Main.player[(int)b11].inventory[Main.player[(int)b11].selectedItem].damage, Main.player[(int)b11].inventory[Main.player[(int)b11].selectedItem].knockBack, Main.player[(int)b11].direction); if (Main.netMode == 2) { NetMessage.SendData(24, -1, this.whoAmI, "", (int)num45, (float)b11, 0f, 0f); NetMessage.SendData(23, -1, -1, "", (int)num45, 0f, 0f, 0f); return; } } else { if (b == 25) { int num46 = (int)this.readBuffer[start + 1]; if (Main.netMode == 2) { num46 = this.whoAmI; } byte b12 = this.readBuffer[start + 2]; byte b13 = this.readBuffer[start + 3]; byte b14 = this.readBuffer[start + 4]; string string7 = Encoding.ASCII.GetString(this.readBuffer, start + 5, length - 5); if (Main.netMode == 2) { string Chat = string7.ToLower().Trim(); if (Chat.Length > 0) { if(Chat.Substring(0, 1).Equals("/")) { PlayerCommandEvent Event = new PlayerCommandEvent(); Event.setMessage(Chat); Event.setSender(Main.player[this.whoAmI]); Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_COMMAND, Event); if (Event.getCancelled()) { return; } Console.WriteLine(Main.player[this.whoAmI].name + " Sent Command: " + string7); Program.commandParser.parsePlayerCommand(Main.player[this.whoAmI], Chat); return; } else { PlayerChatEvent Event = new PlayerChatEvent(); Event.setMessage(Chat); Event.setSender(Main.player[this.whoAmI]); Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_CHAT, Event); if (Event.getCancelled()) { return; } } NetMessage.SendData(25, -1, -1, string7, num46, (float)b12, (float)b13, (float)b14); if (Main.dedServ) { Console.WriteLine("<" + Main.player[this.whoAmI].name + "> " + string7); return; } } } } else { if (b == 26) { byte b15 = this.readBuffer[num]; num++; int num49 = (int)(this.readBuffer[num] - 1); num++; short num50 = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b16 = this.readBuffer[num]; bool pvp = false; if (b16 != 0) { pvp = true; } //if( Main.player[(int)b15].Hurt((int)num50, num49, pvp, true); // <= 0.0) { // return; //} if (Main.netMode == 2) { //NetMessage.SendData(26, -1, this.whoAmI, "", (int)b15, (float)num49, (float)num50, (float)b16); return; } } else { if (b == 27) { short num51 = BitConverter.ToInt16(this.readBuffer, num); num += 2; float x6 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y5 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float x7 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float y6 = BitConverter.ToSingle(this.readBuffer, num); num += 4; float knockBack = BitConverter.ToSingle(this.readBuffer, num); num += 4; short damage = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b17 = this.readBuffer[num]; num++; byte b18 = this.readBuffer[num]; num++; float[] array2 = new float[Projectile.maxAI]; for (int num52 = 0; num52 < Projectile.maxAI; num52++) { array2[num52] = BitConverter.ToSingle(this.readBuffer, num); num += 4; } int num53 = 1000; for (int num54 = 0; num54 < 1000; num54++) { if (Main.projectile[num54].owner == (int)b17 && Main.projectile[num54].identity == (int)num51 && Main.projectile[num54].active) { num53 = num54; break; } } if (num53 == 1000) { for (int num55 = 0; num55 < 1000; num55++) { if (!Main.projectile[num55].active) { num53 = num55; break; } } } if (!Main.projectile[num53].active || Main.projectile[num53].type != (int)b18) { Main.projectile[num53].SetDefaults((int)b18); } Main.projectile[num53].identity = (int)num51; Main.projectile[num53].position.X = x6; Main.projectile[num53].position.Y = y5; Main.projectile[num53].velocity.X = x7; Main.projectile[num53].velocity.Y = y6; Main.projectile[num53].damage = (int)damage; Main.projectile[num53].type = (int)b18; Main.projectile[num53].owner = (int)b17; Main.projectile[num53].knockBack = knockBack; for (int num56 = 0; num56 < Projectile.maxAI; num56++) { Main.projectile[num53].ai[num56] = array2[num56]; } if (Main.netMode == 2) { NetMessage.SendData(27, -1, this.whoAmI, "", num53, 0f, 0f, 0f); return; } } else { if (b == 28) { short num57 = BitConverter.ToInt16(this.readBuffer, num); num += 2; short num58 = BitConverter.ToInt16(this.readBuffer, num); num += 2; float num59 = BitConverter.ToSingle(this.readBuffer, num); num += 4; int num60 = (int)(this.readBuffer[num] - 1); if (num58 >= 0) { Main.npc[(int)num57].StrikeNPC((int)num58, num59, num60); } else { Main.npc[(int)num57].life = 0; Main.npc[(int)num57].HitEffect(0, 10.0); Main.npc[(int)num57].active = false; } if (Main.netMode == 2) { NetMessage.SendData(28, -1, this.whoAmI, "", (int)num57, (float)num58, num59, (float)num60); NetMessage.SendData(23, -1, -1, "", (int)num57, 0f, 0f, 0f); return; } } else { if (b == 29) { short num61 = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b19 = this.readBuffer[num]; for (int num62 = 0; num62 < 1000; num62++) { if (Main.projectile[num62].owner == (int)b19 && Main.projectile[num62].identity == (int)num61 && Main.projectile[num62].active) { Main.projectile[num62].Kill(); break; } } if (Main.netMode == 2) { NetMessage.SendData(29, -1, this.whoAmI, "", (int)num61, (float)b19, 0f, 0f); return; } } else { if (b == 30) { byte b20 = this.readBuffer[num]; num++; byte b21 = this.readBuffer[num]; if (b21 == 1) { Main.player[(int)b20].hostile = true; } else { Main.player[(int)b20].hostile = false; } if (Main.netMode == 2) { NetMessage.SendData(30, -1, this.whoAmI, "", (int)b20, 0f, 0f, 0f); string str = " has enabled PvP!"; if (b21 == 0) { str = " has disabled PvP!"; } NetMessage.SendData(25, -1, -1, Main.player[(int)b20].name + str, 255, (float)Main.teamColor[Main.player[(int)b20].team].R, (float)Main.teamColor[Main.player[(int)b20].team].G, (float)Main.teamColor[Main.player[(int)b20].team].B); return; } } else { if (b == 31) { if (Main.netMode == 2) { int x8 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int y7 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num63 = Chest.FindChest(x8, y7); if (num63 > -1 && Chest.UsingChest(num63) == -1) { for (int num64 = 0; num64 < Chest.maxItems; num64++) { NetMessage.SendData(32, this.whoAmI, -1, "", num63, (float)num64, 0f, 0f); } NetMessage.SendData(33, this.whoAmI, -1, "", num63, 0f, 0f, 0f); Main.player[this.whoAmI].chest = num63; return; } } } else { if (b == 32) { int num65 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int num66 = (int)this.readBuffer[num]; num++; int stack3 = (int)this.readBuffer[num]; num++; string string8 = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); if (Main.chest[num65] == null) { Main.chest[num65] = new Chest(); } if (Main.chest[num65].item[num66] == null) { Main.chest[num65].item[num66] = new Item(); } Main.chest[num65].item[num66].SetDefaults(string8); Main.chest[num65].item[num66].stack = stack3; return; } if (b == 33) { int num67 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int chestX = BitConverter.ToInt32(this.readBuffer, num); num += 4; int chestY = BitConverter.ToInt32(this.readBuffer, num); if (Main.netMode == 1) { if (Main.player[Main.myPlayer].chest == -1) { Main.playerInventory = true; //Main.PlaySound(10, -1, -1, 1); } else { if (Main.player[Main.myPlayer].chest != num67 && num67 != -1) { Main.playerInventory = true; //Main.PlaySound(12, -1, -1, 1); } else { if (Main.player[Main.myPlayer].chest != -1 && num67 == -1) { //Main.PlaySound(11, -1, -1, 1); } } } Main.player[Main.myPlayer].chest = num67; Main.player[Main.myPlayer].chestX = chestX; Main.player[Main.myPlayer].chestY = chestY; return; } Main.player[this.whoAmI].chest = num67; return; } else { if (b == 34) { if (Main.netMode == 2) { int num68 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num69 = BitConverter.ToInt32(this.readBuffer, num); WorldGen.KillTile(num68, num69, false, false, false); if (!Main.tile[num68, num69].active) { NetMessage.SendData(17, -1, -1, "", 0, (float)num68, (float)num69, 0f); return; } } } else { if (b == 35) { int num70 = (int)this.readBuffer[num]; num++; int num71 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; if (num70 != Main.myPlayer) { Main.player[num70].HealEffect(num71); } if (Main.netMode == 2) { NetMessage.SendData(35, -1, this.whoAmI, "", num70, (float)num71, 0f, 0f); return; } } else { if (b == 36) { int num72 = (int)this.readBuffer[num]; num++; int num73 = (int)this.readBuffer[num]; num++; int num74 = (int)this.readBuffer[num]; num++; int num75 = (int)this.readBuffer[num]; num++; int num76 = (int)this.readBuffer[num]; num++; if (num73 == 0) { Main.player[num72].zoneEvil = false; } else { Main.player[num72].zoneEvil = true; } if (num74 == 0) { Main.player[num72].zoneMeteor = false; } else { Main.player[num72].zoneMeteor = true; } if (num75 == 0) { Main.player[num72].zoneDungeon = false; } else { Main.player[num72].zoneDungeon = true; } if (num76 == 0) { Main.player[num72].zoneJungle = false; return; } Main.player[num72].zoneJungle = true; return; } else { if (b == 37) { if (Main.netMode == 1) { if (Main.autoPass) { NetMessage.SendData(38, -1, -1, NetPlay.password, 0, 0f, 0f, 0f); Main.autoPass = false; return; } NetPlay.password = ""; Main.menuMode = 31; return; } } else { if (b == 38) { if (Main.netMode == 2) { string pasword = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); if (pasword == NetPlay.password) { Main.player[this.whoAmI].setOp(true); } else { Main.player[this.whoAmI].setOp(false); } NetPlay.serverSock[this.whoAmI].state = 1; NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0f, 0f, 0f); return; } } else { if (b == 39 && Main.netMode == 1) { short num77 = BitConverter.ToInt16(this.readBuffer, num); Main.item[(int)num77].owner = 255; NetMessage.SendData(22, -1, -1, "", (int)num77, 0f, 0f, 0f); return; } if (b == 40) { byte b22 = this.readBuffer[num]; num++; int talkNPC = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; Main.player[(int)b22].talkNPC = talkNPC; if (Main.netMode == 2) { NetMessage.SendData(40, -1, this.whoAmI, "", (int)b22, 0f, 0f, 0f); return; } } else { if (b == 41) { byte b23 = this.readBuffer[num]; num++; float itemRotation = BitConverter.ToSingle(this.readBuffer, num); num += 4; int itemAnimation = (int)BitConverter.ToInt16(this.readBuffer, num); Main.player[(int)b23].itemRotation = itemRotation; Main.player[(int)b23].itemAnimation = itemAnimation; if (Main.netMode == 2) { NetMessage.SendData(41, -1, this.whoAmI, "", (int)b23, 0f, 0f, 0f); return; } } else { if (b == 42) { int num78 = (int)this.readBuffer[num]; num++; int statMana = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int statManaMax = (int)BitConverter.ToInt16(this.readBuffer, num); if (Main.netMode == 2) { num78 = this.whoAmI; } Main.player[num78].statMana = statMana; Main.player[num78].statManaMax = statManaMax; if (Main.netMode == 2) { NetMessage.SendData(42, -1, this.whoAmI, "", num78, 0f, 0f, 0f); return; } } else { if (b == 43) { int num79 = (int)this.readBuffer[num]; num++; int num80 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; if (num79 != Main.myPlayer) { Main.player[num79].ManaEffect(num80); } if (Main.netMode == 2) { NetMessage.SendData(43, -1, this.whoAmI, "", num79, (float)num80, 0f, 0f); return; } } else { if (b == 44) { byte b24 = this.readBuffer[num]; num++; int num81 = (int)(this.readBuffer[num] - 1); num++; short num82 = BitConverter.ToInt16(this.readBuffer, num); num += 2; byte b25 = this.readBuffer[num]; bool pvp2 = false; if (b25 != 0) { pvp2 = true; } Main.player[(int)b24].KillMe((double)num82, num81, pvp2); if (Main.netMode == 2) { NetMessage.SendData(44, -1, this.whoAmI, "", (int)b24, (float)num81, (float)num82, (float)b25); return; } } else { if (b == 45) { int num83 = (int)this.readBuffer[num]; num++; int num84 = (int)this.readBuffer[num]; num++; int team = Main.player[num83].team; if (Main.netMode == 2) { NetMessage.SendData(45, -1, this.whoAmI, "", num83, 0f, 0f, 0f); Party party = Party.NONE; string str2 = ""; if (num84 == 0) { str2 = " is no longer on a party."; } else { if (num84 == 1) { str2 = " has joined the red party."; party = Party.RED; } else { if (num84 == 2) { str2 = " has joined the green party."; party = Party.GREEN; } else { if (num84 == 3) { str2 = " has joined the blue party."; party = Party.BLUE; } else { if (num84 == 4) { str2 = " has joined the yellow party."; party = Party.YELLOW; } } } } } PartyChangeEvent Event = new PartyChangeEvent(); Event.setPartyType(party); Event.setSender(Main.player[this.whoAmI]); Program.server.getPluginManager().processHook(Plugin.Hooks.PLAYER_PARTYCHANGE, Event); if (Event.getCancelled()) { return; } Main.player[num83].team = num84; for (int num85 = 0; num85 < 255; num85++) { if (num85 == this.whoAmI || (team > 0 && Main.player[num85].team == team) || (num84 > 0 && Main.player[num85].team == num84)) { NetMessage.SendData(25, num85, -1, Main.player[num83].name + str2, 255, (float)Main.teamColor[num84].R, (float)Main.teamColor[num84].G, (float)Main.teamColor[num84].B); } } return; } } else { if (b == 46) { if (Main.netMode == 2) { int i2 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int j2 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num86 = Sign.ReadSign(i2, j2); if (num86 >= 0) { NetMessage.SendData(47, this.whoAmI, -1, "", num86, 0f, 0f, 0f); return; } } } else { if (b == 47) { int num87 = (int)BitConverter.ToInt16(this.readBuffer, num); num += 2; int x9 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int y8 = BitConverter.ToInt32(this.readBuffer, num); num += 4; string string10 = Encoding.ASCII.GetString(this.readBuffer, num, length - num + start); Main.sign[num87] = new Sign(); Main.sign[num87].x = x9; Main.sign[num87].y = y8; Sign.TextSign(num87, string10); if (Main.netMode == 1 && Main.sign[num87] != null && num87 != Main.player[Main.myPlayer].sign) { Main.playerInventory = false; Main.player[Main.myPlayer].talkNPC = -1; Main.editSign = false; //Main.PlaySound(10, -1, -1, 1); Main.player[Main.myPlayer].sign = num87; Main.npcChatText = Main.sign[num87].text; return; } } else { if (b == 48) { int num88 = BitConverter.ToInt32(this.readBuffer, num); num += 4; int num89 = BitConverter.ToInt32(this.readBuffer, num); num += 4; byte liquid = this.readBuffer[num]; num++; byte b26 = this.readBuffer[num]; num++; if (Main.tile[num88, num89] == null) { Main.tile[num88, num89] = new Tile(); } lock (Main.tile[num88, num89]) { Main.tile[num88, num89].liquid = liquid; if (b26 == 1) { Main.tile[num88, num89].lava = true; } else { Main.tile[num88, num89].lava = false; } if (Main.netMode == 2) { WorldGen.SquareTileFrame(num88, num89, true); } return; } } if (b == 49 && NetPlay.clientSock.state == 6) { NetPlay.clientSock.state = 10; Main.player[Main.myPlayer].Spawn(); } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } }