* Remove code duplication by checking buffer regain after all other.
The usual case is that regain is checked anyway.
* Don't use buffer for bunnyfly. Makes tags more unique.
* Horizontal buffer is not modeled such that it can't become negative.
* hvel tag added for using horizontal velocity.
* hspeed tag is only added on hspeed violations.
Altered model for bunny-hop problem. We reduce the sprinting-modificator
by a lot, and add extra buffer during the now introduced "bunny fly"
phase. Conditions have been refined.
Certainly needs more testing, also regarding effects.
The problems with attacking + sprint/bunny seems to be that the player
moves on as if sprinting, thus we reformulate it as the "lost sprint"
problem. The sprintback check is skipped during lostsprint phases.
This should be worth a ticket for Mojang/CB, sprint + jump + attack
somewhere around touch down time (+-) - server side sprinting turns off,
but the player moves on as if sprinting.
Since the sprinting time has been fixed, it should not be necessary to
consume buffers/velocity, because it will not trigger at all.
(Context: throwing ender pearls at entities.)
Potential false positives are survivalfly violations with vacc[...].
* Touch down near ground (lost-ground miss).
* Slow falling after login/teleports.
* Further split off rather seldom triggering code parts into methods.
* Accounting does not manipulate the accumulator anymore.
* Remove some unused parameters form signature(s).
* Method renaming.
* Comment cleanups.
(Expect more with time...)
SetupOrder allows to define a priority, so you can register
ActionFactoryFactory instances before any checks get them.
Default priorities are NCP core at -100, DataManager -80, rest at 0.
Allows to set a new ActionFactoryFactory without the ConfigManager.init
already trying to parse actions, thus implementing special actions
should be easier. Still three calls might be necessary to be on the
safe side:
1. ConfigManager.setActionFactoryFactory(new factory)
2. ConfigManaher.setAllActionFactories()
3. DataManager.clearConfigs()
Not entirely convinced if concurrency issues might arise with reload or
even on startup (chat).
Hint at per-velocity friction factor. Could be used to add short term
velocity that does not decrease. However it can't replace extra-buffer
due to special invalidation conditions.
Move the after-failure permission-, velocity- and
extra-buffer-checks into an extra method.
Move special checks like web/liquid to extra methods.
Alter checking order slightly.
Other cleanups (comments, declaration order, grouping).
Shuffle methods.
Finished? No.
This reduces false positives with throwing enderpearls at nearby
entities or for horizontal velocity.
Missing: Use up horizontal velocity if sprintback is triggered and
queued velocity is present.
Jump (+run) and throw an ender pearl at a nearby entity.
Survivalfly might trigger with limitjump, since the MediumLiftOff gets
reset on teleporting (would appreciate MC adding sequence numbers to
moving packets :p).
Set-back handling:
* Make the VehicleSetBack a class in the moving package.
* For set-backs use the debug flag from the time of checking.
Debugging:
* Alter debug output for moves slightly (differing locations).
* Add debug output for vehicle moves with players involved.
Note on 1.6:
* Not even PlayerMove is fired for pigs and horses, so no tracking.