This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
TrueCraft/TrueCraft.Core/Logic/Blocks/CraftingTableBlock.cs
2015-10-07 07:21:12 -04:00

85 lines
2.6 KiB
C#

using System;
using TrueCraft.API.Logic;
using TrueCraft.API;
using TrueCraft.API.World;
using TrueCraft.API.Networking;
using TrueCraft.Core.Windows;
using TrueCraft.Core.Entities;
namespace TrueCraft.Core.Logic.Blocks
{
public class CraftingTableBlock : BlockProvider, ICraftingRecipe, IBurnableItem
{
public static readonly byte BlockID = 0x3A;
public override byte ID { get { return 0x3A; } }
public override double BlastResistance { get { return 12.5; } }
public override double Hardness { get { return 2.5; } }
public override byte Luminance { get { return 0; } }
public override string DisplayName { get { return "Crafting Table"; } }
public TimeSpan BurnTime { get { return TimeSpan.FromSeconds(15); } }
public override SoundEffectClass SoundEffect
{
get
{
return SoundEffectClass.Wood;
}
}
public override bool BlockRightClicked(BlockDescriptor descriptor, BlockFace face, IWorld world, IRemoteClient user)
{
var window = new CraftingBenchWindow(user.Server.CraftingRepository, (InventoryWindow)user.Inventory);
user.OpenWindow(window);
window.Disposed += (sender, e) =>
{
var entityManager = user.Server.GetEntityManagerForWorld(world);
for (int i = 0; i < window.CraftingGrid.StartIndex + window.CraftingGrid.Length; i++)
{
var item = window[i];
if (!item.Empty)
{
var entity = new ItemEntity(descriptor.Coordinates + Coordinates3D.Up, item);
entityManager.SpawnEntity(entity);
}
}
};
return false;
}
public override Tuple<int, int> GetTextureMap(byte metadata)
{
return new Tuple<int, int>(11, 3);
}
public ItemStack[,] Pattern
{
get
{
return new[,]
{
{ new ItemStack(WoodenPlanksBlock.BlockID), new ItemStack(WoodenPlanksBlock.BlockID) },
{ new ItemStack(WoodenPlanksBlock.BlockID), new ItemStack(WoodenPlanksBlock.BlockID) },
};
}
}
public ItemStack Output
{
get
{
return new ItemStack(BlockID);
}
}
public bool SignificantMetadata
{
get { return false; }
}
}
}