Commit Graph

86 Commits

Author SHA1 Message Date
37c993be16 Port ClipboardCommands, update to new Key 2019-04-18 12:34:57 -07:00
f33140b327 Port ChunkCommands, fix up injection, simplify registration 2019-04-16 23:02:23 -07:00
e4d8091432 Convert part of the brush commands 2019-04-15 02:01:25 -07:00
267ccf2298 First attempt at integrating Piston as the only command system 2019-04-15 01:21:15 -07:00
f8c4f23658 Partial work on biome commands, need logging replacement 2019-04-14 01:30:40 -07:00
8ab6585815 Patch new cmds system into old system 2019-04-04 16:16:04 -07:00
9ba1121592 swap order of checks
since a boolean check is faster than getting inventory item + string
comparison
2019-04-04 10:45:21 +11:00
d7d2d03ee8 Clipboard offset pattern is now #copy@[x,y,z].
Since the parsers were changed around, unescaped commas are parsed as
separate blocks now.
2019-03-27 23:36:59 -04:00
2a194b0434 Add pattern that randomly chooses states.
Also works with fuzzy states.

Syntax is `*type`, e.g. `//set *stone_slab` or with states,
`//set *oak_fence[waterlogged=false]`
2019-03-26 18:11:32 -04:00
1934006d14 Better enforce the Request lifetime.
Previously, the current request would just get a new EditSession when
one was created. Now, a Request is reset before and after:
 - a command is used and
 - an interact is fired with the platform
This means each action taken will get a single, non-reusable Request.

Note that this only applies to actions taken through the platform.
API users will not be using requests anyway, since things like Masks,
etc. will be constructed directly instead of being passed through the
platform's parsers and so on. (e.g. if a plugin loads a schematic into
the world with a mask, they should create the EditSession and mask it
directly, and not use that Mask again for another EditSession in another
World).

Also, get rid of a bunch of (some now-)unnecessary EditSession creation
during command dispatching.

Note that this also fixed the dynamic selection mask, which apparently
has been broken for some unknown amount of time.
2019-03-20 19:13:54 -04:00
25631af31c Add RequestExtent to be used when a delayed EditSession is needed.
For example, if you set a mask that takes an extent (many of them),
and then move to another world, the mask will test blocks in the old
world and return bad results.
2019-03-20 19:13:54 -04:00
d6804737cf Switch to SLF4J logging. 2019-03-13 19:51:48 -07:00
de08c8b8c7 Add better control over expression timeouts. (#451)
Add better control over expression timeouts.
* //timeout command can be used to change player's current timeout.
* Config now also has a max timeout, can be bypassed with permission
* Timeout of < 0 will let expressions run indefinitely.
* Said expressions won't run on a separate thread, slightly reducing the
  overhead from context switching. For large //gen commands, for example,
  this can actually increase speed.
2019-03-06 19:58:32 -05:00
f84f3c6f85 Fix error when parsing hand/offhand/pos1 as blocks. 2019-03-03 19:51:49 -05:00
5de8e0852c Treat categories as empty when missing 2019-02-18 21:17:36 +10:00
1b101740fe Use a proper registry for biomes 2019-02-16 17:27:00 +10:00
88014b18a3 Added a few new things using block states.
* `//set ##*tag` sets all states in the tag (not just default state per type)
* `//set ^type` is a pattern changing block type but copying all valid existing states
* `//set ^[prop=val,...]` sets the property `prop` to `val` wherever the existing block has that property
* `//set ^type[prop=val,...]` does both of the above
Those work anywhere a pattern is taken, of course.

* The mask syntax `^[prop=val]` matches blocks with the property `prop` set to `val`, or blocks that don't have the property at all.
* The mask syntax `^=[prop=val]` only matches blocks that have the property.
Those work anywhere a mask is taken, of course. (`//mask`, `//gmask`, `//replace`, etc)

The `//drain` command now takes `-w` flag that removes the waterlogged state from blocks (in addition to removing water, as before).
2019-02-14 17:21:01 -05:00
287be0209c Slight readability and usability improvements.
Also no longer allows trailing strings (e.g. //set #clipboardasdf).
2019-02-12 17:11:57 -05:00
19796aa3be Added offset to ClipboardPattern.
Takes input like '//set #clipboard@-1,0,1' which shifts the pattern over.
It also now extends RepeatingExtentPattern, which was previously unused.
2019-02-12 17:11:57 -05:00
3e988e7ffe Fixed parsing fuzzy blocks failing. 2019-02-11 20:30:42 +10:00
cdd71178f5 Ensure BlockCategories are initialized.
We should probably have a way to initialize all these catalog classes ahead of time.
2019-02-04 22:34:25 -05:00
f3ec5bbdde Added a ##tag parser Pattern. gives a random combination using the blocks from the tag with an equal distribution. 2019-01-31 22:28:04 +10:00
2f8bdccf65 Clarify state when asking for caps with no platforms 2018-12-28 22:20:12 -08:00
8da984d9f9 Fuzzier fuzzies 2018-12-27 15:19:58 +10:00
3fefcbf971 Remove all raw usages of BSH, improve API generics 2018-12-26 16:39:10 -08:00
b75d5149eb Fixed the bundle being directly used outside of the registry system. 2018-12-23 21:43:20 +10:00
1d5e9b7d04 Few fixes 2018-12-23 21:24:58 +10:00
645fd682b6 Finish porting all the old masks across 2018-12-23 19:10:05 +10:00
6312bcecf6 Fixed the item parser not using the ItemRegistry 2018-12-23 19:02:58 +10:00
c5d9aadab8 Start work on modularising masks and patterns 2018-12-23 18:56:26 +10:00
c949b07df1 Added a method to teleport entities across worlds. 2018-12-21 16:56:10 +10:00
8f236afae9 Added a display name to Actors 2018-12-18 17:36:53 +10:00
24800a662a Finish removal of PlayerDirection, and partially added diagonal support back to commands. 2018-11-12 12:38:13 +10:00
2c8b2fe089 Move vectors to static creators, for caching 2018-11-03 23:00:24 -07:00
399e0ad5fa Refactor vector system to be cleaner
- Move Vector, etc. into `.math` package
- Drop many methods that will be auto-promoted anyways, eg. with
`divide(int)` and `divide(double)` the first is now gone.
- Take Block vectors into their own class hierarchy
- Make it clear throughout the API what takes blockvectors
- many more improvements
2018-11-03 23:00:23 -07:00
1fa1ff895b Flush or disable buffers in tools 2018-10-20 19:47:17 -07:00
fdc3cd56f7 Add a mask for block categories. Eg, you can now do //replace ##wool minecraft:sand to replace all wool with sand 2018-08-30 14:51:38 +10:00
d3b3d57041 Merge pull request #420 from sk89q/server-side-cui
Added a server side version of WorldEditCUI with limited functionality
2018-08-20 14:46:08 +10:00
7b83f97c35 Fixed NotABlockException not getting thrown 2018-08-19 14:41:09 +10:00
7f419618cc Switch to using fake blocks, no more world pollution 2018-08-18 15:22:49 +10:00
bc5609114b Add a material to check if air is air, because there are now 3 types of air. 2018-08-16 15:42:11 +10:00
f54d6afb65 Make BaseBlock more memory efficient, and make it clear in the API that it's not intended to be used for every single block. 2018-08-10 20:29:06 +10:00
5f4cc3e694 Cleanup a little bit more code. 2018-08-06 19:08:15 +10:00
b2769befdb Added a few utility methods. 2018-08-04 11:43:42 +10:00
c05c33cab0 Make a lot of progress on legacy conversions. 2018-08-04 11:43:42 +10:00
1480606b52 Fixed a few more issues found looking over the changeset. 2018-08-04 11:43:42 +10:00
1090c44a2e Parser must use lowercase. 2018-08-04 11:43:41 +10:00
965e977411 Fixed a few more errors, and added legacy support to the item parser. 2018-08-04 11:43:41 +10:00
9f9fda72b7 Re-add legacy support to block parser, and fix query tool. 2018-08-04 11:43:41 +10:00
663dd1f4d8 Added an entity, weathertype, and gamemode registry. 2018-08-04 11:43:41 +10:00