public static WorldEditWorldObjectBlockData From(WorldObject worldObject)
        {
            WorldEditWorldObjectBlockData worldObjectData = new WorldEditWorldObjectBlockData();

            worldObjectData.WorldObjectType = worldObject.GetType();
            worldObjectData.Rotation        = worldObject.Rotation;

            worldObjectData.Components = new Dictionary <Type, Object>();
            if (worldObject.HasComponent <StorageComponent>())
            {
                StorageComponent      storageComponent = worldObject.GetComponent <StorageComponent>();
                List <InventoryStack> inventoryStacks  = new List <InventoryStack>();

                foreach (ItemStack stack in storageComponent.Inventory.Stacks)
                {
                    if (stack.Empty())
                    {
                        continue;
                    }
                    inventoryStacks.Add(InventoryStack.Create(stack));
                }

                worldObjectData.Components.Add(typeof(StorageComponent), inventoryStacks);
            }

            if (worldObject.HasComponent <CustomTextComponent>())
            {
                CustomTextComponent textComponent = worldObject.GetComponent <CustomTextComponent>();
                worldObjectData.Components.Add(typeof(CustomTextComponent), textComponent.TextData.Text);
            }

            return(worldObjectData);
        }
Example #2
0
        public static InventoryStack Create(ItemStack itemStack)
        {
            InventoryStack inventoryStack = new InventoryStack();

            if (!itemStack.Empty())
            {
                inventoryStack.ItemType = itemStack.Item.Type;
                inventoryStack.Quantity = itemStack.Quantity;
            }
            return(inventoryStack);
        }