public bool SetBlock(Block block) { _undoRecorder.RecordUndo(_level.GetBlock(block.Coordinates)); try { if (block.PlaceBlock(_level, null, block.Coordinates, BlockFace.Up, Vector3.Zero)) { return(true); } _level.SetBlock(block); } finally { _undoRecorder.RecordRedo(block); } return(true); }
public bool SetBlock(Block block) { var existing = _level.GetBlock(block.Coordinates); _undoRecorder.RecordUndo(existing); try { if (_level.OnBlockPlace(new BlockPlaceEventArgs(_player, _level, block, existing))) { //if (block.PlaceBlock(_level, _player, block.Coordinates, BlockFace.Up, Vector3.Zero)) return true; _level.SetBlock(block); } } finally { _undoRecorder.RecordRedo(block); } return(true); }