private void ItemUsedOnBlock(World world, Coordinates3D coordinates, BlockFace face, Coordinates3D cursor, ItemInfo item) { var info = world.GetBlockInfo(coordinates); if (Block.GetIsSolidOnFace(info, face) == false) return; coordinates += MathHelper.BlockFaceToCoordinates(face); switch (face) { case BlockFace.NegativeZ: world.SetBlockId(coordinates, item.ItemId); world.SetMetadata(coordinates, (byte)Orientation.FacingNorth); break; case BlockFace.PositiveZ: world.SetBlockId(coordinates, item.ItemId); world.SetMetadata(coordinates, (byte)Orientation.FacingSouth); break; case BlockFace.NegativeX: world.SetBlockId(coordinates, item.ItemId); world.SetMetadata(coordinates, (byte)Orientation.FacingWest); break; case BlockFace.PositiveX: world.SetBlockId(coordinates, item.ItemId); world.SetMetadata(coordinates, (byte)Orientation.FacingEast); break; default: // Ladders can't be placed lying flat. break; } }
public static void DefaultBlockMinedHandler(BlockDescriptor block, World world, Coordinates3D destroyedBlock, ItemDescriptor? tool) { var drops = Block.GetBlockDrop(block, world, destroyedBlock); world.SetBlockId(destroyedBlock, 0); world.SetMetadata(destroyedBlock, 0); foreach (var drop in drops) world.OnSpawnEntityRequested(new ItemEntity((Vector3)destroyedBlock + new Vector3(0.5), drop)); }
internal static void DefaultBlockMinedHandler(BlockDescriptor block, World world, Coordinates3D destroyedBlock, ItemDescriptor? tool) { if (GlobalDefaultBlockMinedHandler == null) { world.SetBlockId(destroyedBlock, 0); world.SetMetadata(destroyedBlock, 0); } else GlobalDefaultBlockMinedHandler(block, world, destroyedBlock, tool); }
internal static void DefaultBlockPlacedHandler(BlockDescriptor block, World world, Coordinates3D clickedBlock, Coordinates3D clickedSide, Coordinates3D cursorPosition) { if (world.GetBlockId(clickedBlock + clickedSide) == 0) // TODO: There are more situations than just air when a block can be overwritten { world.SetBlockId(clickedBlock + clickedSide, block.Id); world.SetMetadata(clickedBlock + clickedSide, block.Metadata); } }