Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public void SetBlockDatas(WorldEdit worldEdit, BlockSchematic[] schematics)
 {
     this.blockDatas = schematics;
     nextRnd         = rand.Next(blockDatas.Length);
     worldEdit.ResendBlockHighlights();
 }