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.
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.
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.
This patch touches many files but changes absolutely no functionality.
The goal here is to make future merges with worldedit produce fewer
conflicts that have to be resolved.
This patch was made by painstakingly diff'ing files and copying changes
over from the last upstream merge commit (02c6f11b) into this codebase.
Signed-off-by: Byron Marohn <combustible@live.com>
- 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
This converts the project into a multi-module Gradle build.
By default, Git does not show history past a rename, so use git log
--follow to see further history.