Repository navigation
Neural Network Mode
TerminatorPlus was originally built around population-based reinforcement learning for bot PvP. That training pipeline is still in the plugin and takes priority over the new weapon-aware AI whenever a bot has a neural network attached.
| Mode | Damage source | Weapon director |
|---|---|---|
Normal (/bot create) |
Vanilla Player.attack() — real crits, shields, enchants |
CombatDirector runs every tick |
Training (/ai random, /ai reinforcement) |
Legacy deterministic damage table |
CombatDirector is bypassed
|
The switch is Bot.hasNeuralNetwork(). At the top of CombatDirector.tick():
if (bot.hasNeuralNetwork()) return false;When false is returned, the caller falls back to the legacy damage code path, preserving deterministic fitness scores. Normal bots fall through to the vanilla attack() call for real PvP.
/ai random # spawn bots with random networks, collect feedback
/ai reinforcement # run the reinforcement learning loop
/ai stop # end the session
/ai info <bot> # inspect a bot's network
Training mode is independent of the /bot command surface — /bot create still spawns non-training bots, and those will use the combat director.
- Reproducibility: the legacy damage table is deterministic — same input produces same output. The vanilla attack pipeline is not (knockback resistance RNG, crits, etc.), which corrupts fitness signals.
-
Speed:
CombatDirectorruns a dozen behaviors and cooldown checks per tick. Skipping it reduces training overhead. - Known baseline: historical fitness scores from earlier revisions remain comparable.
Currently, a bot is either a training bot (spawned by /ai ...) or a normal bot (spawned by /bot create). The hasNeuralNetwork() flag is set at construction; there's no runtime swap.
If you want a bot created by the training pipeline to use the combat director, you'd need to fork the plugin and clear Bot.neuralNetwork before it ticks. No command exposes this.
Presets only capture inventory and behavior settings — not neural-network weights. Applying a preset to a training bot doesn't affect its network; applying a preset to a normal bot doesn't create a network. The two systems are independent.
The plugin's README lists AI data saved to the plugin data folder, able to be loaded into bots as a future update. Until that lands, trained networks disappear when the server restarts.