public static BlockLogicDescriptor Initialize(BlockLogicDescriptor descriptor) { descriptor.GetSupportDirection = (b, w, c) => SupportDirection.Down; descriptor.GetDrop = (b, w, c) => new[] { new ItemStack(CakeItem.ItemId) }; descriptor.BlockRightClicked = (block, world, coord, side, cursor) => { byte data = world.GetMetadata(coord); if (data == 0x5) { world.SetBlock(coord, new BlockDescriptor(AirBlock.BlockId)); // If there is no more pieces left then delete block return true; } else { data++; world.SetMetadata(coord, data); // Eat a piece return true; } }; return descriptor; }
public static BlockLogicDescriptor Initialize(BlockLogicDescriptor descriptor) { descriptor.GetSupportDirection = (b, w, c) => SupportDirection.Down; descriptor.GetDrop = (b, w, c) => new[] { new ItemStack(CakeItem.ItemId) }; return descriptor; }
public static BlockLogicDescriptor Initialize(BlockLogicDescriptor descriptor) { //descriptor.GetDrop = (b, w, c) => new[] { new ItemStack(DirtBlock.BlockId) }; return descriptor; }
public static BlockLogicDescriptor Initialize(BlockLogicDescriptor descriptor) { descriptor.BoundingBox = null; return descriptor; }
public static void LoadTypes(Type[] types) { foreach (var type in types) { var attribute = (BlockAttribute)type.GetCustomAttributes(typeof(BlockAttribute), false).First(); var method = type.GetMethods().FirstOrDefault(m => m.Name == attribute.Initializer && m.ReturnType == typeof(BlockLogicDescriptor) && m.GetParameters().Length == 1 && m.GetParameters()[0].ParameterType == typeof(BlockLogicDescriptor) && !m.IsGenericMethod); var descriptor = new BlockLogicDescriptor(type); descriptor.Hardness = attribute.Hardness; descriptor.DisplayName = attribute.DisplayName; if (method != null) descriptor = (BlockLogicDescriptor)method.Invoke(null, new object[] { descriptor }); BlockLogicDescriptors[attribute.BlockId] = descriptor; } }