Описание
# Vanilla Essentials
A mod that adds useful tools for technical players, command block users, and mapmakers
Feel free to send feedback [here](https://docs.google.com/forms/d/e/1FAIpQLScXe0xAWlpl7xKlKYQjnKrzolt4ZT3SnkwT8F-xkrxFGEyimQ/viewform?usp=dialog)
## Features
### Entities
* Hitbox entity
### Commands
* `/raycast`
* `/compare`
* `/rename`
* `/advancedsummon`
* `/count`
* `/activate`
* `/convert`
* `/iftick`
* `/distance`
* `/rtp`
* `/coords`
* `/nearfill`
* `/scan`
* `/ifat`
* `/area`
* `/findblock`
* `/ifpowered`
* `/wait`
### Keybinds
* Copy block position (`F6`)
* Change fly speed (`backtick`)
* Quick fill (`F8`)
### Scoreboard Criteria
* Right-click
* OP permission
### Other
* Antikill
* Antitp
* Entity selector count argument
* Exclude self argument
* Adds a `custom_data` NBT tag to every entity
## Usage
### Hitbox Entity
* An invisible entity with a hitbox.
* Has NBT data `scale` to adjust its size and `IsEnabled` to toggle collision.
* This is a **server-side** feature.
### Commands
#### `/raycast`
* Performs a raycast from the player's perspective to detect a block.
* Usage:
* `/raycast block []`
* `/raycast ifblock []`
* With `block`, returns the coordinate along the given axis (`x`, `y`, or `z`) of the block the player is looking at.
* With `ifblock`, returns `1` if the block the player is looking at matches the given block state.
* If no block is hit, the command fails.
* Returns the result or error if conditions are not met.
* Runs on the **server side**.
#### `/compare`
* Runs command on entities whose NBT values match a comparison source (another entity or storage).
* Usage:
* `/compare entity `
* `/compare storage `
* Runs on the **server side**.
#### `/rename`
* Renames the item you're holding in your main hand.
* Usage: `/rename `
* Supports only **plain text** — no color codes or JSON components.
* Runs on the **client side**.
#### `/advancedsummon`
* Spawns entities with advanced options.
* Usage:
* `/advancedsummon area []` — summons one entity per block in the cuboid area.
* `/advancedsummon multiple []` — summons the specified number of entities.
* Runs on the **server side**.
#### `/count`
* Counts entities and players matching the target selector.
* Usage: `/count `
* Returns the count as the command result.
* Runs on the **server side**.
#### `/activate`
* Toggles interactable blocks at the specified position.
* Can activate command blocks.
* For levers, it flips the state (on/off).
* For buttons and pressure plates, it simulates pressing and automatically releases after 1 second.
* Usage: `/activate `
* Runs on the **server side**.
#### `/convert`
* Converts blocks into entities.
* Usage: `/convert (falling_block|block_display) []`
* Runs on the **server side**.
#### `/iftick`
* Checks if the current game tick matches the specified tick number.
* Usage: `/iftick `
* Succeeds only if the current tick count modulo `` is zero.
* Useful for timing functions to run periodically.
* Runs on the **server side**.
#### `/distance`
* Measures the straight-line (Euclidean) distance between two blocks or two entities.
* Usage:
* `/distance block `
* `/distance entity `
* Outputs the integer distance in chat.
* Returns the integer distance as the command result.
* Runs on the **server side**.
#### `/rtp`
* Teleports target entities to a **random grid-aligned** position within the specified cuboid area.
* Usage: `/rtp `
* Runs on the **server side**.
#### `/coords`
* Client-side command to save, list, remove, and copy named block positions.
* Positions are saved **per world/server** in a JSON file (`saved_cords.json`) inside your Minecraft folder.
* Usage:
* `/coords save ` — saves your current player block position under ``.
* `/coords list` — lists all saved positions for the current world/server.
* `/coords remove ` — deletes the saved position ``.
* `/coords copy ` — copies the saved coordinates `` to your clipboard as `x y z`.
* Saved coordinates persist between Minecraft sessions.
* Runs on the **client side**.
#### `/nearfill`
* Fills a volume relative to the player’s position using an offset.
* Usage:
* `/nearfill ` — fills the block at the offset from the player with ``.
* `/nearfill replace ` — replaces blocks.
* Runs on the **server side**.
#### `/scan`
* Returns the specified block count in an area.
* Usage: `/scan `
* Runs on the **server side**.
#### `/ifat`
* Executes a command as all targets in an area.
* Usage: `/ifat `
* Runs on the **server side**.
#### `/area`
* Executes a command for every block in an area.
* Usage: `/area `
* Runs on the **server side**.
#### `/findblock`
* Finds the closest block in a radius and returns the axis.
* Usage: `/findblock []`
* Runs on the **server side**.
#### `/ifpowered`
* Detects if a block is powered.
* Usage: `/ifpowered []`
* The command fails if the block is not powered but succeeds if the not boolean is set to true.
* Runs on the **server side**.
#### `/snapshot`
* Used to restore areas.
* Usage:
* `/snapshot save []`
* `/snapshot restore `
* `/snapshot remove `
* Runs on the **server side**.
#### `/wait`
* Delays command block chains
* Usage: `/wait `
* Runs on the **server side**.
### Keybinds
#### Copy Block Position (`F6`)
* Press `F6` while looking at a block to copy its coordinates to your clipboard.
* Coordinates format: `x y z`.
#### Change Fly Speed (`backtick`)
* Scroll while holding `backtick` to change fly speed.
#### Quick fill (`F8`)
* Press the key once to select the first corner of an area.
* Press again to select the second corner — the area will be filled with the block in your hand.
* Press Ctrl + key to manually clear the selection.
* If only the first point is selected, it will auto-clear after 30 seconds.
### Scoreboard Criteria
#### Right-click
* Tracks when the player right-clicks with any item.
#### OP Permission
* Custom scoreboard criteria that detects if a player has operator permissions.
### Other
#### Antikill
* Entities tagged `antikill` cannot be killed by `/kill`.
#### Antitp
* Entities tagged `antitp` cannot be teleported by `/tp`.
#### Entity selector count argument
* Can be used in any entity selector (`@e[...]`) with the `count` argument.
* Supports a single number (`count=2`) or a range (`count=2..3`).
* The selector only targets entities if the number of matches falls within the specified range.
* If the number of matching entities is outside the range, no entities are targeted.
#### Exclude self argument
* When added to an entity selector (`exclude_self=true`), it excludes the executor entity (`@s`) from the targets.