There seem to be cases with a repeated horizontal speed increase which
should be covered by the bunnyhop mechanisms. The first increase will
not go as high as possible but have 0 y-diff, while the second one will
trigger a violation with a higher y-diff and another increas in the
horizontal distance. This commit does not cover a general multi-step
speed-increase case, but just attempts to catch this special case.
The command lists for handleaschat and exclusions are now also fed with
a leading "/" if missing. Allows more convenient setup and less
confusion potential for relating comamnd lists in "protect plugins" to
other lists.
opinconsoleonly has been made a list of commands:
protection.commands.consoleonly.
Further the message sent to the player is the permission message,
if the player does not have permission to use the command,
provided NCP can find the command.
All three command lists are also checked with the original
command label.
Commands to change to "no permission" or "unknown command" behavior,
can now be configured with a string list each. Commands that have a
permission set will have the default set to false, while commands that
don't have a permission will be altered to have a filter permission,
namely nocheatplus.filter.command.<commandname>.
* Fix color replacing in command protection (had no effect previously).
* Use "no permission" message for default bukkit command protection.
* Use command protection only, no more parsing pre process for /pl etc.
* Other tweaks (update descriptions, add shortcuts / child permissions).
Changes are mostly backwards compatible.
Fixed:
* Filter permissions were wrong (not starting with nocheatplus).
Changed:
* Commands are grouped under nocheatplus.command now.
* Notification permission is independent of the notify command,
changed to nocheatplus.notify.
New:
* Shortcut permissions (nocheatplus.shortcut...) for safer use.
* Shortcut permission for testers: nocheatplus.tester
This change addresses the fact that the bunny hop thing also applies
when not sprinting, also without actually jumping. In future the buffer
will be much more confined to special cases and/or limited in how it
regains level (nu pogodi).
* Currently bunny applies very often on sprinting, thus it can be pre-
checked before permchecks, and if necessary re-checked after
permchecks.
* Remove heuristic permchecks, since the above should do better.
* Fix bunny not trigger for assumeonground && jumpphase == 0.
Further we will try to get rid of the horizontal buffer as we know it,
confining it to special cases. However we have to extend bunny hop to
apply without sprinting as well. Might need a more general concept
for ground-move-modifiers and friction to achieve it.
Setting to something on creation of data is ineffective, because it gets
set to 0 on passable violations.
Keeping the buffer means other abuse potential.
Probably better postpone until re-design/removal of the buffer concept.
Might consider for future:
The problems of the type lost-sprint, bunny seem to be client mechanics.
The ground-modifiers apply and stay valid during jump, thus turning off
sprint for attacking makes sense.
So i revert the statement about "could be worth a ticket" for the
moment. However with looking forward to have a Minecraft API, it could
could be appropriate to provide something to allow server-side checking,
yet again finding the right ground modifier needs knowledge of the
exact moves the client did, so client side could change to send all the
transition events as suggested before.
Horizontal speed after-failure checks:
* More conditions to confine use more (on-ground, web/fluid/etc.).
* Increase bunny counter during bunny-fly until touching the ground.
* Check bunny fly first and ignore sprinting for that one.
* Attempt to fix "double bunny", i.e. small blocks on blocks.
* Redo part of checking order, do permission checks first, otherwise
there might happen unwanted invalidation of velocity.
* Force permission check with the first getting of hDistance on
certain conditions, to prevent certain redundant call.
* 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.