Skip to content

Instantly share code, notes, and snippets.

@boy0001
Created April 10, 2019 17:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save boy0001/c75b280bfe2cdfb2d93a3c450284feed to your computer and use it in GitHub Desktop.
Save boy0001/c75b280bfe2cdfb2d93a3c450284feed to your computer and use it in GitHub Desktop.
fawe features
probably a bunch I'm forgetting
clipboard/history on disk
- uses numeric ids (basically block state ordinal)
- The way I've implemented it has some issues
- when undoing an edit the order it undoes blocks is reversed
- Downside of compression algorithm being one way
- If no compression is used, then edits take up multi-gb on disk, which is unfeasible
Per world history
- Instead of `//undo` undoing your stuff in another world
- Part of the history on disk
Clipboard downloading/uploading
- //download uses empcraft.com for downloading (but can point to any URL)
- uploading a schematic to the server can work from any url
Asset system (part of clipboard saving/loading)
- also uses empcraft.com
Limits
- Requires an overhaul of the config system
- uses permissions for each limit
- https://github.com/IntellectualSites/FastAsyncWorldEdit-1.13/blob/master/worldedit-core/src/main/java/com/boydti/fawe/config/Settings.java#L113
Per player schematics
- Option to save schematics per player
Freebuild (permission node)
- hooks into Bukkit event system to determine where players can set blocks
- caches per column, and only checks specific plugins
Scripting
- Updated craftscript system which uses newer javascript / nashorn
- for registering patterns/masks/commands which work exactly like java ones
- https://github.com/boy0001/FastAsyncWorldedit/wiki/JavaScript-API
`//rollback` and `//inspect`
- For out of order undo
- Requries SQL database with summary of all history
persistent brushes
- serializes BrushTool and uses a bit of NMS to set the brush
Fawe patterns & masks require using a command dispatcher as binding
- diagonal stack requires doing rotate etc. in reverse order (i.e. looping over the destination instead of the source)
Source masks
- Probably nothing major
set sky/block light
- Needs NMS
Translatable messages / commands
- Too much work
Interactive messages/commands
Tab completion
- Buggy/WIP
Coloring
- NMS, gets block and biome colors for use in patterns/masks
- can convert images (url) to blocks
Transforms
- Transforms the position of the edit
- scaling, rotation, offset, spread etc.
- https://github.com/boy0001/FastAsyncWorldedit/blob/master/core/src/main/java/com/sk89q/worldedit/command/TransformCommands.java
New formats (mainly structure blocks and MCA files)
Lazy copying
- Uses the region as the clipboard instead of actually copying anything
Schematic/Brush visualization
- NMS + FAWE Anvil (probably not possible since worldedit lags with large schematics)
- Visualizes what the brush will do as you look around
Scroll actions
- mousewheel to bind various actions to the brush (clipboards, masks, patterns, range, size, target)
Brush targeting
- Various target modes (mask, offsets, point + distance, angle)
Shift + Click runs the brush clear action
Multi brushes
- Bind multiple brushes to a single tool (for left & right click)
Cave generation
Various things I wont consider porting because they are too intertwined or buggy
- Anvil, CFI, some inventory stuff
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment