public override void OnBlockRemoved() { base.OnBlockRemoved(); if (clientDialog != null) { clientDialog.TryClose(); if (clientDialog != null) { clientDialog.Dispose(); clientDialog = null; } } }
public override void OnReceivedServerPacket(int packetid, byte[] data) { if (packetid == (int)EnumBlockStovePacket.OpenGUI) { using (MemoryStream ms = new MemoryStream(data)) { BinaryReader reader = new BinaryReader(ms); string dialogClassName = reader.ReadString(); string dialogTitle = reader.ReadString(); TreeAttribute tree = new TreeAttribute(); tree.FromBytes(reader); Inventory.FromTreeAttributes(tree); Inventory.ResolveBlocksOrItems(); IClientWorldAccessor clientWorld = (IClientWorldAccessor)Api.World; SyncedTreeAttribute dtree = new SyncedTreeAttribute(); SetDialogValues(dtree); if (clientDialog != null) { clientDialog.TryClose(); clientDialog = null; } else { clientDialog = new GuiDialogBlockEntityFurnace(dialogTitle, Inventory, Pos, dtree, Api as ICoreClientAPI); clientDialog.OnClosed += () => { clientDialog.Dispose(); clientDialog = null; }; clientDialog.TryOpen(); } } } if (packetid == (int)EnumBlockEntityPacketId.Close) { IClientWorldAccessor clientWorld = (IClientWorldAccessor)Api.World; clientWorld.Player.InventoryManager.CloseInventory(Inventory); } }