private void OnPlayerJoin(IPlayer player) { fromPlayer = player as IServerPlayer; WorldEditWorkspace workspace = GetOrCreateWorkSpace(player); IBlockAccessorRevertable revertableBlockAccess = sapi.World.GetBlockAccessorRevertable(true, true); // Initialize all tools once to build up the workspace for the client gui tool options foreach (var val in ToolRegistry.ToolTypes) { ToolRegistry.InstanceFromType(val.Key, workspace, revertableBlockAccess); } if (workspace.ToolsEnabled) { if (workspace.ToolInstance != null) { EnumHighlightBlocksMode mode = EnumHighlightBlocksMode.CenteredToSelectedBlock; if (workspace.ToolOffsetMode == EnumToolOffsetMode.Attach) { mode = EnumHighlightBlocksMode.AttachedToSelectedBlock; } sapi.World.HighlightBlocks(player, (int)EnumHighlightSlot.Brush, workspace.ToolInstance.GetBlockHighlights(this), workspace.ToolInstance.GetBlockHighlightColors(this), mode); } } else { workspace.HighlightSelectedArea(); } }
public HeightmapImporterTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.StringValues.ContainsKey("std.heightmapImportToolFilename")) { Filename = null; } }
private void OnLoad() { byte[] data = sapi.WorldManager.SaveGame.GetData("worldeditworkspaces"); if (data == null || data.Length == 0) { return; } try { using (MemoryStream ms = new MemoryStream(data)) { BinaryReader reader = new BinaryReader(ms); int count = reader.ReadInt32(); while (count-- > 0) { IBlockAccessorRevertable revertableBlockAccess = sapi.World.GetBlockAccessorRevertable(true, true); WorldEditWorkspace workspace = new WorldEditWorkspace(sapi.World, revertableBlockAccess); workspace.FromBytes(reader); if (workspace.PlayerUID == null) { continue; } workspaces[workspace.PlayerUID] = workspace; } } } catch (Exception) { sapi.Server.LogEvent("Exception thrown when trying to load worldedit workspaces. Will ignore."); } }
public WorldEditWorkspace(IWorldAccessor world, IBlockAccessorRevertable blockAccessor) { this.revertableBlockAccess = blockAccessor; this.world = world; blockAccessor.OnStoreHistoryState += BlockAccessor_OnStoreHistoryState; blockAccessor.OnRestoreHistoryState += BlockAccessor_OnRestoreHistoryState; }
public MoveTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.IntValues.ContainsKey(Prefix + "Mode")) { MoveRepeatMode = EnumMoveToolMode.MoveBlocks; } if (!workspace.IntValues.ContainsKey(Prefix + "Amount")) { Amount = 1; } }
public LineTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.IntValues.ContainsKey("std.lineStartPoint")) { LineMode = EnumLineStartPoint.LineStrip; } if (!workspace.IntValues.ContainsKey("std.lineRemove")) { PlaceMode = false; } }
public GrowShrinkTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.FloatValues.ContainsKey("std.growShrinkRadius")) { BrushRadius = 10; } if (!workspace.IntValues.ContainsKey("std.growShrinkMode")) { GrowShrinkMode = EnumGrowShrinkMode.Any; } }
public SelectTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.IntValues.ContainsKey(Prefix + "magicSelect")) { MagicSelect = false; } if (!workspace.StringValues.ContainsKey(Prefix + "magicEdgeBlocks")) { SetEdgeBlocks(workspace.world, new string[] { "air", "soil-*" }); } else { SetEdgeBlocks(workspace.world, EdgeBlocks); } }
public RaiseLowerTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { if (!workspace.FloatValues.ContainsKey("std.raiseLowerRadius")) { Radius = 4; } if (!workspace.FloatValues.ContainsKey("std.raiseLowerDepth")) { Depth = 3; } if (!workspace.IntValues.ContainsKey("std.raiseLowerMode")) { Mode = EnumHeightToolMode.Uniform; } }
public TreeGenTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.FloatValues.ContainsKey("std.treeToolMinTreeSize")) { MinTreeSize = 0.7f; } if (!workspace.FloatValues.ContainsKey("std.treeToolMaxTreeSize")) { MaxTreeSize = 1.3f; } if (!workspace.StringValues.ContainsKey("std.treeToolTreeVariant")) { TreeVariant = null; } }
public RepeatTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.IntValues.ContainsKey(Prefix + "Mode")) { RepeatMode = EnumRepeatToolMode.Repeat; } if (!workspace.IntValues.ContainsKey(Prefix + "Amount")) { Amount = 1; } if (!workspace.IntValues.ContainsKey(Prefix + "SelectionMode")) { SelectionMode = EnumRepeatSelectionMode.Keep; } }
WorldEditWorkspace GetOrCreateWorkSpace(IPlayer player) { string playeruid = player.PlayerUID; if (workspaces.ContainsKey(playeruid)) { return(workspaces[playeruid]); } else { IBlockAccessorRevertable revertableBlockAccess = sapi.World.GetBlockAccessorRevertable(true, true); workspaces[playeruid] = new WorldEditWorkspace(sapi.World, revertableBlockAccess); workspaces[playeruid].PlayerUID = playeruid; return(workspaces[playeruid]); } }
public FloodFillTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { if (!workspace.IntValues.ContainsKey("std.floodFillSearchRadius")) { SearchRadius = 32; } if (!workspace.IntValues.ContainsKey("std.checkEnclosure")) { CheckEnclosure = true; } ; if (!workspace.IntValues.ContainsKey("std.mode")) { Mode = 2; } }
public PaintBrushTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { if (!workspace.FloatValues.ContainsKey(Prefix + "Dim1")) { BrushDim1 = 4; } if (!workspace.FloatValues.ContainsKey(Prefix + "Dim2")) { BrushDim2 = 4; } if (!workspace.FloatValues.ContainsKey(Prefix + "Dim3")) { BrushDim3 = 4; } if (!workspace.FloatValues.ContainsKey(Prefix + "cutoutDim1")) { CutoutDim1 = 0; } if (!workspace.FloatValues.ContainsKey(Prefix + "cutoutDim2")) { CutoutDim2 = 0; } if (!workspace.FloatValues.ContainsKey(Prefix + "cutoutDim3")) { CutoutDim3 = 0; } if (!workspace.IntValues.ContainsKey(Prefix + "previewMode")) { PreviewMode = true; } if (!workspace.IntValues.ContainsKey(Prefix + "Mode")) { BrushMode = EnumBrushMode.Fill; } if (!workspace.IntValues.ContainsKey(Prefix + "Shape")) { BrushShape = EnumBrushShape.Ball; } if (!workspace.IntValues.ContainsKey(Prefix + "DepthLimit")) { DepthLimit = EnumDepthLimit.NoLimit; } GenBrush(); }
public ImportTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { if (!workspace.StringValues.ContainsKey("std.pasteToolFilenames")) { BlockDataFilenames = null; } if (!workspace.IntValues.ContainsKey("std.pasteToolOrigin")) { Origin = EnumOrigin.BottomCenter; } if (!workspace.IntValues.ContainsKey("std.importReplaceMode")) { ReplaceMode = EnumReplaceMode.Replaceable; } if (!workspace.IntValues.ContainsKey("std.pasteToolRandomRotate")) { RandomRotate = false; } }
public AirBrushTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { if (!workspace.FloatValues.ContainsKey("std.airBrushRadius")) { Radius = 8; } if (!workspace.FloatValues.ContainsKey("std.airBrushQuantity")) { Quantity = 10; } if (!workspace.IntValues.ContainsKey("std.airBrushApply")) { Apply = EnumAirBrushApply.AnyFace; } if (!workspace.IntValues.ContainsKey("std.airBrushMode")) { Mode = EnumAirBrushMode.Add; } lcgRand = new LCGRandom(workspace.world.Seed); }
public ErodeTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { if (!workspace.FloatValues.ContainsKey("std.erodeToolBrushRadius")) { BrushRadius = 10; } if (!workspace.FloatValues.ContainsKey("std.erodeToolKernelRadius")) { KernelRadius = 2; } if (!workspace.IntValues.ContainsKey("std.erodeToolIterations")) { Iterations = 1; } if (!workspace.IntValues.ContainsKey("std.useSelectedBlock")) { UseSelectedBlock = false; } PrecalcKernel(); }
public WorldEditWorkspace(IWorldAccessor world, IBlockAccessorRevertable blockAccessor) { this.revertableBlockAccess = blockAccessor; this.world = world; }
public ToolBase(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) { this.blockAccessRev = blockAccess; this.workspace = workspace; }
public AutoSelectTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccess) : base(workspace, blockAccess) { }
public EraserTool(WorldEditWorkspace workspace, IBlockAccessorRevertable blockAccessor) : base(workspace, blockAccessor) { }