Commit Graph

15 Commits

Author SHA1 Message Date
asofold 62df128efd [BLEEDING][BREAKING] MC 1.13 Material changes, first batch.
First batch:
* Initialize blocks somehow, so no errors nor missing blocks happen
during startup.

Possibly Missing:
* There might be references of removed/renamed material (blocks/items)
throughout the code.
* Some blocks may behave different now/then.

Missing:
* Block#getData may not reflect (all?) properties anymore.
* Block shape getting is missing. Block shapes are now (potentially)
more complex to process. Concept might be to keep a double array for the
rough bounds, and add an (optional +- null) array of arrays for sub
shapes, if present (IBlockCacheNode). So a first rough update is more
simple/compatible.
2018-08-20 12:37:51 +02:00
asofold 97d59045ae [BLEEDING][BREAKING][INSTABLE] Swiftly throw in permission caching.
Benefits:
* Improves performance, where permission lookup has major impact, with
timeout based lookup, static permissions (skip permission check
entirely), and world/offline based invalidation. (Once fully
implemented.)
* Hopefully more efficient: use Bukkit Permission for faster defaults.
* (Allows control over how which permission is to be
updated/invalidated, which is useful per se.)

Risks:
* Complex changes yield bugs.
* Other plugins depending on NCP might break.
* Cache incoherence might happen (permissions are changed dynamically +-
unintended malconfiguration, or in case of bugs).
* (Endless loops certainly have all been fixed.)

Breaking:
* Lots of more or less internal API has been changed or removed: Check,
CheckType, CheckUtils, TickTask, ...
* Permission checking behavior has been altered.

Rough points:
* Implement a permission cache within PlayerData.
* Remove the player tasks and permission updates in favour of handling
those within DataManager and PlayerData.
* Adjust everything else to it (partly TBD).
* Updating sets of permissions (e.g. for CHAT) is done more lazily now,
i.e. one per 10 ticks). An actual permission check would still yield an
update next tick (asynchronous).
* Fixed/extended random spots (DualCollection, MiniListener registration
support, StringUtil).

Missing:
* Basic implementation
  * Cleanup after logout (stages: 1. non-essential like permissions,
2. unrecoverable like set-back location, 3. complete data removal).
* Coverage
  * Might have missed spots.
  * NoCheatPlus.nameSetPerms should be replaced by caching + default
config for world-wise updating.
  * Command permissions are always checked. At least for players,
cache based lookup should get implemented.
  * More unit tests.
* Extended configurability: Per-world settings/policies.
* Efficiency
  * Not all parts of the implementation are 100%/optimal yet.
2018-01-30 23:09:34 +01:00
asofold 68a7eab297 Allow join with a StringBuilder passed. Simplify some method signatures. 2017-04-26 14:26:24 +02:00
asofold 4e91a9d5fc Ready for UEFA EC: GPLv3 headers.
Might need more training still.
2016-06-02 20:33:21 +02:00
asofold 752e130640 Adjustments for elytra and creativefly default model configs.
* Allow moderate ascending with elytra.
* Let ground be true by default.
* Disable some stuff for spectator mode by default.
* Alter logging.
2016-03-26 00:19:20 +01:00
asofold c22126449b [BLEEDING] Dedicated MCAccess for 1.9.
This won't cover all effects of internal changes, some blocks might be
interpreted wrongly still, some shapes may have changed in an
incompatible way (e.g. skulls).
2016-03-03 20:11:46 +01:00
asofold 5fe02d75d2 Random: Add join for an array. 2015-11-15 05:32:00 +01:00
asofold ea5b249197 Alter how command lists are interpreted. Might fix some issues.
Details:
* Only trim commands from the left side (both on feed and check).
* Ensure versions with and without leading '/' are fed into trees.
* Move methods to feed CharPrefixTree from configs to CommandUtil.

Potentially fixes (untested):
* Only deny the sub-commands for a prefix, example: feed 'version ' to
consoleonly, in order to allow 'version' but not 'version NoCheatplus'.
* Might fix some plugin/server specific prefixes not being detected,
example: feed "/version" and expect "/bukkit:version" to be blocked.
2014-12-17 18:54:04 +01:00
asofold 1a88df80c5 Trim exceptions (depth 1), add tabs if header is used. 2014-11-12 19:53:44 +01:00
asofold 780d59d8a7 Use a utility method to get a String of a Throwable. 2014-11-11 20:28:49 +01:00
asofold 0201e4178b Spaces. 2014-11-11 20:23:49 +01:00
asofold 6e6b198188 Move auxiliary code. 2013-05-21 15:51:51 +02:00
asofold 33abae929b Should have used a regex :p. 2013-02-20 22:04:43 +01:00
asofold c16ccd8435 Add convenience method to StringUtil for splitting by chars. 2013-02-20 21:18:16 +01:00
asofold ee1f410dae [SAFETY COMMIT, REFACTOR, BREAKING]
Moving big parts of code between sub-projects. Some refactoring was
needed to unlink some classes. Deprecated methods removed. Some utility
methods were moved to differently named utilities. Few signatures
changed (e.g. BlockProperties.init). Most changes should only concern
bugs or developers who dug into some NCP deeply (not sure those exist).
It should still all be there.
2013-01-20 04:18:08 +01:00