This mod is made for datapack makers to make bots that can fight back
The bots have a much higher parity with a vanilla client compared to carpet, with things like Auto-Jump and the spear working.
Views and modifies HeRoBot settings via the /herobot command. Running /herobot with no arguments displays the mod version.
Usage
/herobot <setting> - Displays the current value and description/herobot <setting> <value> - Sets the setting temporarily for this session/herobot <setting> <value> <perm> - Sets the setting permanently (saved to config)Bots
allowSpawningOfflinePlayersSpawn offline players in online mode if an online-mode player with the specified name does not exist.
Default: true
allowListingBotPlayersAllows bot players to appear in the multiplayer player list.
Default: true
botPingToTicksChanges the ping to tick conversion rate for bot players. Used when converting a bot's ping (in ms) to a tick delay for knockback.
Default: 25
botLagAttacks[Experimental] Makes left clicks (attack) on bot players delayed by the bot's ping value.
Default: false
botLagUses[Experimental] Makes right clicks (use) on bot players delayed by the bot's ping value.
Default: false
botLeaveOnDeathBot players disconnect from the server on death instead of automatically respawning.
Default: false
Creative
creativeNoClipCreative no clip mode. Allows creative players who are flying to phase through blocks.
Default: false
creativeFlySpeedChanges the creative flying speed multiplier. Higher values make the client fly faster.
Default: 1.0
creativeFlyDragChanges creative air drag. Lower values reduce air resistance while flying.
Default: 0.09
Combat
shieldStunningEnables shield stunning, allowing entities to be damaged immediately after a shield is disabled.
Default: false
noProjectileRandomRemoves randomness from projectiles, making them perfectly accurate.
Default: false
Explosions
explosionNoBlockDamageControls whether explosions destroy blocks.
Values:
FALSE - vanilla behaviorMOST - affects non-solid blocks except glowstone and redstone-interaction blocksTRUE - prevents all block damageDefault: FALSE
explosionNoFirePrevents explosions from beds and respawn anchors from creating fire.
Default: false
windChargeNoTriggerWind charges won't activate redstone blocks.
Default: false
World / Misc
clientsIgnoreSlowTickRateIf false, makes client players ignore slower tick rates.
Default: true
editablePlayerNbtAllows editing player NBT data directly. Also allows mounting players via /ride when enabled.
Default: false
xpNoCooldownPlayers absorb experience instantly without delay.
Default: false
shulkerBoxAlwaysDropsShulker boxes will always drop, regardless of the doTileDrops gamerule.
Default: false
deleteChunkEntitiesWhen enabled, chunk reset/deletion also deletes entity data files within those chunks.
Default: false
rainThroughMovingPistonAllows rain to fall through blocks being moved by pistons.
Default: false
disableExperimentalScreenRemove the experimental world setting. If set on the client, disables all experimental screens. If set on a world, only disables it for that world.
Default: false
Bot players are fake players that join the server and can be controlled entirely through commands. They are spawned with /playerspawn and controlled with /player. Bot players have correct server-side behavior for combat, movement, and item usage.
Bot players automatically respawn on death with full health, empty inventory, and no XP (unless botLeaveOnDeath is enabled).
/playerspawnSpawns a bot player with optional position, rotation, gamemode, and dimension.
/playerspawn <name> - spawns at the executor's position/playerspawn <name> at <pos> - spawns at a specific position/playerspawn <name> at <pos> facing <rotation> - spawns with specific yaw/pitch/playerspawn <name> at <pos> facing <cardinal> - spawns facing a cardinal direction (north, south, east, west, up, down)/playerspawn <name> ... in <gamemode> - spawns in a specific gamemode (defaults to creative)/playerspawn <name> ... on <dimension> - spawns in a specific dimensionPrevents duplicate names. Respects whitelist and bans. Spectators spawn flying, survival players spawn grounded.
/playerControls bot players using action packs. All subcommands target with /player <targets> ... and support selectors for targeting multiple bots.
use, attack, swing, jump, drop, dropStack, swapHandsAction commands that make the bot perform player actions.
/player <targets> <action> - stops that action/player <targets> <action> once - performs the action once/player <targets> <action> continuous - performs the action every tick/player <targets> <action> interval <ticks> - performs the action every N ticksuse without parameters stops using without triggering another use (unlike carpet where it behaved like use once).
swing swings a hand without performing an action and resets the attack cooldown.
attack with a spear/kinetic weapon will perform a stab action instead.
autojumpControls automatic jumping over one-block obstacles while moving
/player <targets> autojump - attempts a single autojump (jumps if the bot is moving and would need to step up)/player <targets> autojump true - enables continuous autojump/player <targets> autojump false - disables continuous autojumpmoveControls bot movement direction.
/player <targets> move - stops all movement/player <targets> move forward/player <targets> move backward/player <targets> move left/player <targets> move rightsneak / sprint/player <targets> sneak - starts sneaking/player <targets> unsneak - stops sneaking/player <targets> sprint - starts sprinting/player <targets> unsprint - stops sprintingSneaking slows movement to 30% speed. Using an item (non-spear) slows to 20% speed.
lookControls where the bot is looking. Most look commands support delta <ticks> for smooth transitions over multiple ticks.
Cardinal Directions
/player <targets> look north|south|east|west|up|down/player <targets> look north delta <ticks>Exact Rotation
/player <targets> look <yaw> <pitch>/player <targets> look <yaw> <pitch> delta <ticks>Relative Turns
/player <targets> look left - turns 90 degrees left/player <targets> look right - turns 90 degrees right/player <targets> look back - turns 180 degrees/player <targets> look relative <rotation> - turns by the given relative rotationdelta <ticks>Look at Position
/player <targets> look at <pos>/player <targets> look at <pos> delta <ticks>Look at Entity
/player <targets> look upon <entity> - looks at the entity's eyes (default)/player <targets> look upon <entity> eyes - looks at the entity's eyes/player <targets> look upon <entity> feet - looks at the entity's feet/player <targets> look upon <entity> closest - looks at the closest point of the entity's hitboxdelta <ticks>Random
/player <targets> look random - looks in a random directionhotbarSelects a hotbar slot.
/player <targets> hotbar <slot> - selects slot 1 through 9itemCdControls item cooldowns.
/player <targets> itemCd - resets all item cooldowns (returns how many were reset)/player <targets> itemCd <item> - shows remaining cooldown ticks (returns tick count)/player <targets> itemCd <item> reset - resets the cooldown for that item/player <targets> itemCd <item> set - applies the item's default cooldown without using it/player <targets> itemCd <item> set <ticks> - applies a custom cooldown durationpingControls the bot's simulated ping. Knockback is delayed by the equivalent number of ticks based on the botPingToTicks setting.
/player <targets> ping - shows the bot's current ping and equivalent tick delay/player <targets> ping <value> - sets the ping in milliseconds (suggested: 0, 25, 50, 100, 150, 200)The tick delay has some randomness when the ping doesn't divide evenly by botPingToTicks. For example, with ping 30 and botPingToTicks 25, there is a 5/25 chance each tick to add 1 extra tick of delay.
copycatCopies another player's inventory and action pack onto the bot.
/player <targets> copycat <source>skin / handednessToggles visibility of individual skin parts on the bot.
Skin parts:
/player <targets> skin cape/player <targets> skin jacket/player <targets> skin leftSleeve/player <targets> skin rightSleeve/player <targets> skin leftPant/player <targets> skin rightPant/player <targets> skin hatEach call toggles the part on/off.
Left/Right Handedness:
/player <targets> handedness left/player <targets> handedness rightstop / kill / disconnect/player <targets> stop - stops all actions and movement/player <targets> kill - kills the bot (triggers death and respawn)/player <targets> disconnect - removes the bot from the server without a deathMeasures distance between two positions, entities, or hitboxes and stores the result as the command return value (scoreboard-friendly). Default distance is spherical (3D).
fromPoint-to-point distance using exact positions.
/distance from <pos> to <pos>/distance from <pos> to <entity>/distance from <entity> to <pos>/distance from <entity> to <entity>fromHitboxUses the full bounding box of the source instead of its center point.
/distance fromHitbox <block> to <pos|entity>/distance fromHitbox <entity> to <pos|entity>Can also be combined with toHitbox:
/distance from <pos|entity> toHitbox <block>/distance from <pos|entity> toHitbox <entity>/distance fromHitbox <block|entity> toHitbox <block|entity>e (Exponent Scaling)/distance ... e <exp>e 3 returns 4000horizontalMeasures XZ distance only (ignores Y).
/distance ... horizontale <exp>verticalMeasures Y distance only (ignores XZ).
/distance ... verticale <exp>Schedules commands or functions to run after a tick delay.
tickDelaySchedules a command or function to execute after a specified number of ticks.
/delayed tickDelay <ticks> command <command> - runs a command after the delay, supports full auto-completion/delayed tickDelay <ticks> function <function> - runs a datapack function after the delayqueueView and manage pending delayed commands.
/delayed queue - lists all pending delayed commands/delayed queue entity <entity> - lists delayed commands for a specific entity/delayed queue entity - lists delayed commands for the executing entity/delayed queue remove <index> - removes a specific delayed command by indexclear/delayed clear - clears all pending delayed commandsResets (deletes) chunk data so they regenerate fresh on next load. Loaded chunks are skipped and must be unloaded first.
chunkResets specific chunks by block column position.
/chunk-resetter chunk <pos> - resets the single chunk at the given position/chunk-resetter chunk <from> <to> - resets all chunks in the rectangular range (max 256 chunks)Entities in reset chunks are discarded.
worldResets all unloaded chunks in an entire dimension. Also deletes POI data. Entity data files are only deleted if deleteChunkEntities is enabled.
/chunk-resetter world - resets chunks in the current dimension/chunk-resetter world <dimension> - resets chunks in the specified dimension
Framework for fabric based server side players (and extra helpful settings)