---
title: Dummy Entities
category: Tutorials
tags:
- beginner
mentions:
- SirLich
- Joelant05
- MedicalJewel105
- aexer0e
---
Dummy entities are invisible entities which are used behind the scenes for game-play purposes. Dummy entities are a very useful tool, and this document will cover some of the ways they are utilized, as well as showing how to set up the resource side of things.
## Using Dummies
This is a non-exhaustive list of how dummies can be used:
- **For data storage**: by adding tags to the entity, we can use it as a "game manager", much like Armor Stands used to be used.
- **As a named entity:** by name-tagging a dummy, and then using `execute` to select for it, you can make command-blocks `/say` with a pretty display name.
- **As a location marker:** you can run `execute` commands located at a dummy to get relative coordinates at a location.
- **As a waypoint:** by making entities which are aggressive to your dummy, you can pathfind entities to any location by placing a dummy there.
## Creating Dummies
### Behavior Entity
You can use whatever behaviors you like, but here is a good template. The important aspects are: no damage, and can't be pushed.
BP/entities/dummy.json
```json
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
"identifier": "wiki:dummy",
"is_summonable": true,
"is_spawnable": false,
"is_experimental": false
},
"components": {
"minecraft:breathable": { //Optional, allows the entity to breath underwater
"breathes_water": true
},
"minecraft:physics": {
"has_gravity": false, //Optional, allows the entity to not be affected by gravity or water
"has_collision": false
},
"minecraft:custom_hit_test": {
"hitboxes": [
{
"pivot": [0, 100, 0],
"width": 0,
"height": 0
}
]
},
"minecraft:damage_sensor": {
"triggers": {
"deals_damage": false
}
},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:collision_box": {
"width": 0.0001,
"height": 0.0001
}
}
}
}
```
If you want to disable collision at all (so you can place a block at it's position), you can use arrow runtime identifier, however, there can be some side effects.
### Resource Entity
RP/entity/dummy.json
```json
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "wiki:dummy",
"materials": {
"default": "entity_alphatest"
},
"geometry": {
"default": "geometry.dummy"
},
"render_controllers": ["controller.render.dummy"],
"textures": {
"default": "textures/entity/dummy"
}
}
}
}
```
### Geometry
RP/models/entity/dummy.json
```json
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.dummy",
"texture_width": 16,
"texture_height": 16
}
}
]
}
```
### Render Controller (Optional)
RP/render_controllers/dummy.json
```json
{
"format_version": "1.10.0",
"render_controllers": {
"controller.render.dummy": {
"geometry": "Geometry.default",
"textures": ["Texture.default"],
"materials": [
{
"*": "Material.default"
}
]
}
}
}
```
### Texture (Optional)
You can either leave the texture location blank, or open the model in blockbench and create a blank texture.