public override bool OnWorldEditCommand(WorldEdit worldEdit, CmdArgs args) { switch (args[0]) { case "tremove": PlaceMode = args.Length > 1 && (args[1] == "1" || args[1] == "on"); worldEdit.Good(workspace.ToolName + " remove mode now " + (PlaceMode ? "on" : "off")); return(true); case "tm": EnumLineStartPoint startpoint = EnumLineStartPoint.LineStrip; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumLineStartPoint), index)) { startpoint = (EnumLineStartPoint)index; } } LineMode = startpoint; worldEdit.Good(workspace.ToolName + " mode " + startpoint + " set."); worldEdit.ResendBlockHighlights(); return(true); } return(false); }
public override void OnBuild(WorldEdit worldEdit, int oldBlockId, BlockSelection blockSel, ItemStack withItemStack) { if (blockDatas == null) { LoadBlockdatas(worldEdit.sapi); } if (blockDatas.Length == 0) { return; } worldEdit.sapi.World.BlockAccessor.SetBlock(oldBlockId, blockSel.Position); BlockSchematic blockData = blockDatas[nextRnd]; nextRnd = rand.Next(blockDatas.Length); BlockPos originPos = blockData.GetStartPos(blockSel.Position, Origin); blockData.Init(blockAccessRev); blockData.Place(blockAccessRev, worldEdit.sapi.World, originPos, ReplaceMode, worldEdit.ReplaceMetaBlocks); blockAccessRev.SetHistoryStateBlock(blockSel.Position.X, blockSel.Position.Y, blockSel.Position.Z, oldBlockId, blockAccessRev.GetStagedBlockId(blockSel.Position)); blockAccessRev.Commit(); blockData.PlaceEntitiesAndBlockEntities(blockAccessRev, worldEdit.sapi.World, originPos); if (RandomRotate) { SetRandomAngle(worldEdit.sapi.World); } worldEdit.ResendBlockHighlights(); }
public override bool OnWorldEditCommand(WorldEdit worldEdit, CmdArgs args) { switch (args[0]) { case "tr": Radius = 0; if (args.Length > 1) { float size; float.TryParse(args[1], NumberStyles.Any, GlobalConstants.DefaultCultureInfo, out size); Radius = size; } worldEdit.Good("Air Brush Radius " + Radius + " set."); return(true); case "tgr": Radius++; worldEdit.Good("Air Brush Radius " + Radius + " set"); return(true); case "tsr": Radius = Math.Max(0, Radius - 1); worldEdit.Good("Air Brush Radius " + Radius + " set"); return(true); case "tq": Quantity = 0; if (args.Length > 1) { float quant; float.TryParse(args[1], NumberStyles.Any, GlobalConstants.DefaultCultureInfo, out quant); Quantity = quant; } worldEdit.Good("Quantity " + Quantity + " set."); return(true); case "tm": EnumAirBrushMode mode = EnumAirBrushMode.Add; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumAirBrushMode), index)) { mode = (EnumAirBrushMode)index; } } Mode = mode; worldEdit.Good(workspace.ToolName + " mode " + mode + " set."); worldEdit.ResendBlockHighlights(); return(true); case "ta": EnumAirBrushApply apply = EnumAirBrushApply.AnyFace; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumAirBrushApply), index)) { apply = (EnumAirBrushApply)index; } } Apply = apply; worldEdit.Good(workspace.ToolName + " apply " + apply + " set."); worldEdit.ResendBlockHighlights(); return(true); } return(false); }
public override bool OnWorldEditCommand(WorldEdit worldEdit, CmdArgs args) { switch (args[0]) { case "tm": EnumBrushMode brushMode = EnumBrushMode.Fill; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumBrushMode), index)) { brushMode = (EnumBrushMode)index; } } BrushMode = brushMode; worldEdit.Good(workspace.ToolName + " mode " + brushMode + " set."); worldEdit.ResendBlockHighlights(); return(true); case "tdl": EnumDepthLimit depthLimit = EnumDepthLimit.NoLimit; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumDepthLimit), index)) { depthLimit = (EnumDepthLimit)index; } } DepthLimit = depthLimit; worldEdit.Good(workspace.ToolName + " depth limit set to " + depthLimit); worldEdit.ResendBlockHighlights(); return(true); case "ts": EnumBrushShape shape = EnumBrushShape.Ball; if (args.Length > 1) { int index; int.TryParse(args[1], out index); if (Enum.IsDefined(typeof(EnumBrushShape), index)) { shape = (EnumBrushShape)index; } } BrushShape = shape; worldEdit.Good(workspace.ToolName + " shape " + BrushShape + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); return(true); case "tsx": case "tsy": case "tsz": { float size = 0; if (args.Length > 1) { float.TryParse(args[1], out size); } if (args[0] == "tsx") { BrushDim1 = size; } if (args[0] == "tsy") { BrushDim2 = size; } if (args[0] == "tsz") { BrushDim3 = size; } string text = dimensionNames[(int)BrushShape][0] + "=" + BrushDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + BrushDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + BrushDim3; worldEdit.Good(workspace.ToolName + " dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); return(true); } case "tr": { BrushDim1 = 0; float size; if (args.Length > 1 && float.TryParse(args[1], out size)) { BrushDim1 = size; } if (args.Length > 2 && float.TryParse(args[2], out size)) { BrushDim2 = size; } else { BrushDim2 = BrushDim1; } if (args.Length > 3 && float.TryParse(args[3], out size)) { BrushDim3 = size; } else { BrushDim3 = BrushDim2; } string text = dimensionNames[(int)BrushShape][0] + "=" + BrushDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + BrushDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + BrushDim3; worldEdit.Good(workspace.ToolName + " dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); } return(true); case "tcx": case "tcy": case "tcz": { float size = 0; if (args.Length > 1) { float.TryParse(args[1], out size); } if (args[0] == "tcx") { CutoutDim1 = size; } if (args[0] == "tcy") { CutoutDim2 = size; } if (args[0] == "tcz") { CutoutDim3 = size; } string text = dimensionNames[(int)BrushShape][0] + "=" + CutoutDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + CutoutDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + CutoutDim3; worldEdit.Good(workspace.ToolName + " cutout dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); return(true); } case "tcr": { CutoutDim1 = 0; float size; if (args.Length > 1 && float.TryParse(args[1], out size)) { CutoutDim1 = size; } if (args.Length > 2 && float.TryParse(args[2], out size)) { CutoutDim2 = size; } else { CutoutDim2 = CutoutDim1; } if (args.Length > 3 && float.TryParse(args[3], out size)) { CutoutDim3 = size; } else { CutoutDim3 = CutoutDim2; } string text = dimensionNames[(int)BrushShape][0] + "=" + CutoutDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + CutoutDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + CutoutDim3; worldEdit.Good("Cutout " + workspace.ToolName + " dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); } return(true); case "tgr": { BrushDim1++; BrushDim2++; BrushDim3++; string text = dimensionNames[(int)BrushShape][0] + "=" + BrushDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + BrushDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + BrushDim3; worldEdit.Good(workspace.ToolName + " dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); } return(true); case "tsr": { BrushDim1 = Math.Max(0, BrushDim1 - 1); BrushDim2 = Math.Max(0, BrushDim2 - 1); BrushDim3 = Math.Max(0, BrushDim3 - 1); string text = dimensionNames[(int)BrushShape][0] + "=" + BrushDim1; text += ", " + dimensionNames[(int)BrushShape][1] + "=" + BrushDim2; text += ", " + dimensionNames[(int)BrushShape][2] + "=" + BrushDim3; worldEdit.Good(workspace.ToolName + " dimensions " + text + " set."); GenBrush(); worldEdit.ResendBlockHighlights(); } return(true); } return(false); }
public override bool OnWorldEditCommand(WorldEdit worldEdit, CmdArgs args) { switch (args[0]) { case "imc": if (workspace.clipboardBlockData != null) { this.blockDatas = new BlockSchematic[] { workspace.clipboardBlockData }; worldEdit.Good("Ok, using copied blockdata"); nextRnd = 0; worldEdit.ResendBlockHighlights(); } else { worldEdit.Good("No copied block data available"); } return(true); case "ims": string exportFolderPath = worldEdit.sapi.GetOrCreateDataPath("WorldEdit"); List <string> filenames = new List <string>(); for (int i = 1; i < args.Length; i++) { string filename = Path.GetFileName(args[i]); string filepath = Path.Combine(exportFolderPath, args[i]); if (!filename.EndsWith("*") && !filename.EndsWith("/") && !filename.EndsWith(".json")) { filename += ".json"; } try { string[] foundFilePaths = Directory.GetFiles(Path.GetDirectoryName(filepath), filename); for (int j = 0; j < foundFilePaths.Length; j++) { filenames.Add(foundFilePaths[j].Substring(exportFolderPath.Length + 1)); } } catch (Exception) { worldEdit.Bad("Unable to read files from this source"); return(true); } } if (filenames.Count > 0) { BlockDataFilenames = string.Join(",", filenames); LoadBlockdatas(worldEdit.sapi, worldEdit); worldEdit.Good("Ok, found " + filenames.Count + " block data source files"); } else { BlockDataFilenames = null; this.blockDatas = new BlockSchematic[0]; worldEdit.Good("No source files under this name/wildcard found"); } nextRnd = rand.Next(blockDatas.Length); worldEdit.ResendBlockHighlights(); return(true); case "imo": Origin = EnumOrigin.BottomCenter; if (args.Length > 1) { int origin; int.TryParse(args[1], out origin); if (Enum.IsDefined(typeof(EnumOrigin), origin)) { Origin = (EnumOrigin)origin; } } worldEdit.Good("Paste origin " + Origin + " set."); worldEdit.ResendBlockHighlights(); return(true); case "tm": ReplaceMode = EnumReplaceMode.Replaceable; if (args.Length > 1) { int replaceable = 0; int.TryParse(args[1], out replaceable); if (Enum.IsDefined(typeof(EnumReplaceMode), replaceable)) { ReplaceMode = (EnumReplaceMode)replaceable; } } worldEdit.Good("Replace mode " + ReplaceMode + " set."); worldEdit.ResendBlockHighlights(); return(true); case "imrrand": RandomRotate = args.Length > 1 && (args[1] == "1" || args[1] == "true" || args[1] == "on"); worldEdit.Good("Random rotation now " + (RandomRotate ? "on" : "off")); SetRandomAngle(worldEdit.sapi.World); worldEdit.ResendBlockHighlights(); return(true); case "imn": nextRnd = rand.Next(blockDatas.Length); worldEdit.ResendBlockHighlights(); break; case "imr": if (blockDatas == null || blockDatas.Length == 0) { worldEdit.Bad("Please define a block data source first."); return(true); } int angle = 90; if (args.Length > 1) { if (!int.TryParse(args[1], out angle)) { worldEdit.Bad("Invalid Angle (not a number)"); return(true); } } if (angle < 0) { angle += 360; } if (angle != 0 && angle != 90 && angle != 180 && angle != 270) { worldEdit.Bad("Invalid Angle, allowed values are -270, -180, -90, 0, 90, 180 and 270"); return(true); } for (int i = 0; i < blockDatas.Length; i++) { blockDatas[i].TransformWhilePacked(worldEdit.sapi.World, EnumOrigin.BottomCenter, angle, null); } worldEdit.ResendBlockHighlights(); worldEdit.Good("Ok, all schematics rotated by " + angle + " degrees"); return(true); case "imflip": if (blockDatas == null || blockDatas.Length == 0) { worldEdit.Bad("Please define a block data source first."); return(true); } for (int i = 0; i < blockDatas.Length; i++) { blockDatas[i].TransformWhilePacked(worldEdit.sapi.World, EnumOrigin.BottomCenter, 0, EnumAxis.Y); } worldEdit.ResendBlockHighlights(); worldEdit.Good("Ok, imported sources flipped"); return(true); case "immirror": if (blockDatas == null || blockDatas.Length == 0) { worldEdit.Bad("Please define a block data source first."); return(true); } EnumAxis axis = EnumAxis.X; if (args.PopWord().ToLowerInvariant() == "z") { axis = EnumAxis.Z; } for (int i = 0; i < blockDatas.Length; i++) { blockDatas[i].TransformWhilePacked(worldEdit.sapi.World, EnumOrigin.BottomCenter, 0, axis); } worldEdit.ResendBlockHighlights(); worldEdit.Good("Ok, imported sources mirrored around " + axis + " axis"); return(true); } return(false); }
public void SetBlockDatas(WorldEdit worldEdit, BlockSchematic[] schematics) { this.blockDatas = schematics; nextRnd = rand.Next(blockDatas.Length); worldEdit.ResendBlockHighlights(); }