void SelectionBlockChange(Player p, ushort x, ushort y, ushort z, ExtBlock block) { lock (selLock) { Blockchange = SelectionBlockChange; RevertBlock(x, y, z); selMarks[selIndex] = new Vec3S32(x, y, z); if (selMarkCallback != null) { selMarkCallback(p, selMarks, selIndex, selState, block); } // Mark callback cancelled selection if (selCallback == null) { return; } selIndex++; if (selIndex == 1 && selTitle != null) { SendCpeMessage(CpeMessageType.BottomRight2, "Mark #1" + FormatSelectionMark(selMarks[0])); } else if (selIndex == 2 && selTitle != null) { SendCpeMessage(CpeMessageType.BottomRight1, "Mark #2" + FormatSelectionMark(selMarks[0])); } if (selIndex != selMarks.Length) { return; } string title = selTitle; object state = selState; SelectionMarkHandler markCallback = selMarkCallback; SelectionHandler callback = selCallback; ClearSelection(); if (!block.IsPhysicsType) { block = p.BlockBindings[block.RawID]; } bool canRepeat = callback(this, selMarks, state, block); if (canRepeat && staticCommands) { MakeSelection(selIndex, title, state, callback, markCallback); } } }
string FormatSelectionMark(Vec3S32 P) { return(": &S(" + P.X + ", " + P.Y + ", " + P.Z + ")"); }