public static void ReceiveCablePlacement(BinaryReader reader, int sender) { TagCompound tag = TagIO.Read(reader); Point16 position = tag.Get <Point16>("Position"); string name = tag.GetString("Name"); Cable cable = new Cable(); cable.SetDefaults(name); cable.position = position; cable.layer = PTWorld.Instance.layer; cable.grid = new CableGrid { energy = new EnergyStorage(cable.MaxIO * 2, cable.MaxIO), tiles = new List <Cable> { cable } }; PTWorld.Instance.layer.Add(position, cable); cable.Merge(); cable.Frame(); foreach (Cable merge in Cable.sides.Select(x => x + position).Where(PTWorld.Instance.layer.ContainsKey).Select(x => PTWorld.Instance.layer[x]).Where(x => x.name == name)) { merge.Frame(); } if (Main.netMode == NetmodeID.Server) { SendCablePlacement(cable, sender); } }