Audit pass 3: rewrite remaining pages from audit findings
Rewrites rather than spot-fixes, since the affected pages had errors
throughout.
Actions Engine: documents that flag names must be lowercase (camelCase
flags are silently ignored), that targets are mandatory and not inherited
across GOTO or actions-on-fail, comparison operators and the EQUALS
default, ~filter semantics, PERMISSION negation, and that VAULT_BALANCE
fails open without Vault. Corrects HOOK (a velocity action, not a plugin
hook), the ~location/~speed/~message/~amount/~name usage columns, and
SELF's parameters. All examples reworked to actually run.
Version Support: replaces the range with the exact version-to-module
table, lists the explicitly rejected versions, and states that an
unsupported version disables the plugin.
Installation: ProMCCore data folder IS migrated automatically; splits
declared soft-dependencies from runtime-only detection; notes the
paper-plugin.yml load-before block is likely inert; corrects the Citizens
and WorldGuard descriptions.
Developer Getting Started: depend is CodexCore, not Codex; the
CodexPlugin example now implements all six abstract methods; hasEditor is
not an override; JYML lives in codex-plugin and loadOrExtract throws a
checked exception; getConfigFile appends .yml itself and its documented
auto-save does not exist; mccore.gui has no replacement.
Menus: documents the getPages off-by-one and the negative-modulo blank
page, that nav buttons need placing per page, that onClose must call
super, and that YAMLMenu is not a Menu subclass.
Compat and NMS: ArmorUtil is an armor-trim shim and a no-op before
1.19.4, unrelated to ArmorEquipEvent. Adds the missing NMS methods, the
NBTAttribute parameter type, and the codex-core dependency step.
Events: adds DROP and CONSUME, marks DEATH as never fired, notes BROKE
cannot be cancelled, that only outbound packets are intercepted and
EngineServerPacketEvent is never fired, and that IEvent/ICancellableEvent
are abstract classes which ArmorEquipEvent does not use.
Item Providers: isCustomItem and isCustomItemOfId are currently unusable;
getMainItemType is effectively never null; Nexo's exception behaviour
differs; documents both stripPrefix methods.
Also cross-references the casing trap between the two ~flag: value;
parsers, which disagree.
Audit pass 2: correct hooks, utilities, localization and module pages
- isNegaBetter makes NEGATIVE values win (the unlimited sentinel), not
lower ones; highest still wins among non-negatives. Also documents the
lowercase-key requirement, the -1-on-no-match return, and the int cast
that breaks getGroupValueDouble for fractions.
- Vault helpers are null-safe and return empty values rather than
failing. Conversely the engine's hook getters CAN be null even with the
plugin installed, since WorldGuard/Citizens/MythicMobs are hooked only
from the PluginEnableEvent path.
- PlayerUT.setExp adds to the current total rather than setting it;
setTotalExperience is the absolute form.
- LocUT.getFirstGroundBlock is not what /unstuck uses.
- MsgUT.isJSON checks for Codex's inline {json:} markup, not chat
components. sendTitles is deprecated.
- Debugger gates warn and err as well as log, and writes to System.out.
- Corrected EffectUT, RangeUtil, Zipper, NamespaceResolver and the
SoundUT/EnumUT rationale (registry-backed Keyed, not renamed constants).
- StringUT.replace returns a copy; the previous examples were no-ops.
- Localization: documents the two independent message systems sharing one
file, that language selection keys off general.lang rather than the
documented core.lang, and that the general.* set is never localised.
- Chat module does not persist data at all; documents the name-truncation
and reset bugs.
- Scoreboard module registers no boards of its own; /board list is
per-player; /board show requires lowercase and always reports failure.
- Join/interact: delays are cumulative, PlaceholderAPI is not expanded,
material and as are matched case-sensitively and fail silently, and
there is no click-type filter.
- Configuration: bungee_id is a server label not a channel, debug is
inert, removeBoatOnExit returns the boat to the player,
locale.world-names has no consumers, command-cooldown-message is
mccore-only, unstuck keys have no defaults.
Audit pass 1: correct permission prefix, data folder, and reload behaviour
Findings from a source audit of the wiki's factual claims.
- Permission prefix is codexcore., not codex. The plugin's declared name
is CodexCore (plugin.yml name: ${project.name}, module <name>), so
getNameRaw() yields codexcore. codex.stuck is unaffected: it is a
hardcoded literal.
- The onInteract bypass node is general.oninteract.bypass. The shipped
config.yml comment naming core.oninteract.bypass is itself wrong.
- Data folder is plugins/CodexCore/, not plugins/Codex/. Corrected on
every page.
- /stuck has no executor bound; only /unstuck works, and on Paper the
label does not exist at all. Documented as a known defect.
- /codex reload does not re-read config.yml from disk on the engine; it
re-applies the in-memory document. Restart is required for any change.
- core.lang is injected but never consumed; general.lang is the key that
selects the language file.
- Derived permission nodes are undeclared and fall back to Bukkit's
op-only default rather than declaring one.
- Wildcard grants depend on the permission plugin; Codex registers no
parent permissions.
Expand wiki from single page to full documentation set
The wiki previously consisted of one Home page covering a stale command
list and a config.yml dump. This replaces it with 20 pages covering the
plugin as it actually exists.
Corrections to previously documented content:
- /corereload no longer exists; the command is /codex reload
- command-aliases default is codex,codexengine,codexcore
- bungee_id default is codexcore
- documented previously missing keys: file-timings, action-bar-legacy
New server-owner pages: Installation, Configuration, Commands,
Permissions, Join and Interact Commands, Chat Module, Scoreboard Module,
Localization, Version Support.
New developer pages: Developer Getting Started, Actions Engine, Item
Providers, Menus and GUIs, Compat and NMS, Hooks, Events, Utilities.
Adds _Sidebar.md and _Footer.md for persistent navigation.