Horde Tables (Datapack Support) - SmileycorpMC/The-Hordes GitHub Wiki

Horde tables can be found in the data/<identifier>/tables folder in 1.2.X and data/<identifier>/horde_data/tables in 1.3.+.

Horde tables can be loaded via horde scripts, or specified as an argument if the horde is started via a command.

If you loaded the mod prior to 1.2.0 and have a modified table in your config file, it will be copied into the default file upon starting a newer version. This is no longer the case as of 1.3.+;

If your table is errored it will not load in the mod and the associated script files will error.

Note: it's recommended not to edit the default table, and instead to add your own table and specify that in the horde script, as if there is an error, the mod will attempt to load the default table as a failsafe, and crash if it contains errors.

An additional failsafe table will be included in future to prevent this issue.

There are four examples provided in the mod by default:

hordes:default
[
	"minecraft:zombie-35-0-20",
	"minecraft:zombie_villager-1-0-20",
	"minecraft:zombie_horse-3-20-40",
	"minecraft:husk-40-20-40",
	"minecraft:drowned{HandItems:[{id:trident,Count:1}]}-3-30-40",
	"minecraft:zoglin-3-40-40",
	"minecraft:zombified_piglin-10-40-0",
	"minecraft:husk-25-50-0",
	"minecraft:zoglin{Passengers:[{id:drowned,HandItems:[{id:trident,Count:1}]}]}-3-50-0",
	"minecraft:zombie_horse{Passengers:[{id:drowned,HandItems:[{id:trident,Count:1}]}]}-3-50-0"
]
hordes:drowned
[
	"minecraft:drowned-40-0-20",
	"minecraft:drowned{HandItems:[{id:trident,Count:1}]}-3-30-40"
]
hordes:skeletons
[
	"minecraft:skeleton-10-0-20",
	{
		"entity": "minecraft:skeleton",
		"weight": 20,
		"first_day": 0,
		"last_day": 30,
		"nbt": "{HandItems:[{id:stone_sword,Count:1}]}"
	},
	{
		"entity": "minecraft:skeleton_horse",
		"weight": 5,
		"first_day": 20,
		"last_day": 50,
		"nbt": "{Passengers:[{id:skeleton,HandItems:[{id:bow,Count:1b}]}]}"
	},
	"minecraft:stray-10-20-0",
	"minecraft:wither_skeleton-10-40-0",
	{
		"entity": "minecraft:skeleton_horse",
		"weight": 5,
		"first_day": 40,
		"last_day": 0,
		"nbt": "{Passengers:[{id:stray,HandItems:[{id:bow,Count:1b}]}]}"
	}
]
hordes:illagers
[
	{
		"entity": "minecraft:pillager",
		"weight": 15,
		"first_day": 0,
		"last_day": 0
	},
	{
		"entity": "minecraft:vindicator",
		"weight": 10,
		"first_day": 0,
		"last_day": 0
	},
	{
		"entity": "minecraft:witch",
		"weight": 5,
		"first_day": 20,
		"last_day": 0
	},
	{
		"entity": "minecraft:ravager",
		"weight": 5,
		"first_day": 30,
		"last_day": 40
	},
	{
		"entity": "minecraft:evoker",
		"weight": 3,
		"first_day": 40,
		"last_day": 40
	},
	{
		"entity": "minecraft:illusioner",
		"weight": 5,
		"first_day": 50,
		"last_day": 0
	},
	{
		"entity": "minecraft:ravager",
		"weight": 3,
		"first_day": 50,
		"last_day": 0,
		"nbt": "{Passengers:[{id:evoker}]}"
	},
	{
		"entity": "minecraft:ravager",
		"weight": 5,
		"first_day": 50,
		"last_day": 0,
		"nbt": "{Passengers:[{id:pillager}]}"
	}
]
hordes:mixed_mobs
[
	"minecraft:zombie-20-0-20",
	"minecraft:skeleton-10-20-30",
	"minecraft:spider-15-20-30",
	"minecraft:creeper-5-30-30",
	"minecraft:husk-20-30-50",
	"minecraft:stray-10-40-50",
	"minecraft:cave_spider-10-40-50",
	"minecraft:witch-5-40-50",
	"minecraft:pillager-10-40-50",
	"minecraft:zombified_piglin-10-40-50",
	{
		"entity": "minecraft:zombie_horse",
		"weight": 3,
		"first_day": 40,
		"last_day": 50,
		"nbt": "{Passengers:[{id:creeper}]}"
	},
	"minecraft:wither_skeleton-10-50-0",
	"minecraft:phantom-5-50-50",
	"minecraft:vindicator-10-50-50",
	"minecraft:zoglin-5-40-40",
	"minecraft:ravager-5-50-50",
	"minecraft:evoker-5-50-50",
	"minecraft:piglin_brute-10-60-0",
	{
		"entity": "minecraft:cave_spider",
		"weight": 15,
		"first_day": 60,
		"last_day": 0,
		"nbt": "{Passengers:[{id:stray,HandItems:[{id:bow,Count:1b}]}]}"
	},
	{
		"entity": "minecraft:zombie_horse",
		"weight": 5,
		"first_day": 60,
		"last_day": 0,
		"nbt": "{Passengers:[{id:drowned,HandItems:[{id:trident,Count:1b}]}]}"
	},
	{
		"entity": "minecraft:ravager",
		"weight": 3,
		"first_day": 60,
		"last_day": 0,
		"nbt": "{Passengers:[{id:evoker}]}"
	},
	{
		"entity": "minecraft:phantom",
		"weight": 3,
		"first_day": 60,
		"last_day": 0,
		"nbt": "{Passengers:[{id:creeper,powered:1}]}"
	}
]

In the examples provided above, you can see two different formats of adding entries to the table, which can be mixed and matched at will, and either can be used, being up to personal preference, which you would rather use.

Firstly there is the single line entry, which is in the same format as the table in the config used to use, and is the only format used by the hordes:default table in the example.

Using the following format <entity>{<nbt (optional)>}-<weight>-<first_day>-<last_day>.

This format is identical to the other format in use, but condenses the entry down to one line.

entity is the registry name of the entity you wish to spawn in the horde (the same name used with the /summon command)

weight is the likelyhood of an entity apearing in a wave, with a higher number meaning more likely.

first_day is the earliest day an entity can spawn in a horde.

last_day is the latest day an entity can spawn in a horde, setting this to 0 will set no maximum day.

nbt is optional additional nbt entities spawn with. If your nbt data includes a quotation mark ", put a backslash \ before it, or the table will error.

Entities do not need an nbt entry if you do not want them to spawn with additional nbt data.

Additionally if you are using version 1.5.0+ there are two extra properties: min_spawns and max_spawns.

Whenever a wave is determining which mobs to spawn it will first check each mobs min_spawns value and spawn that many of them. Then while it is spawning it will not spawn any more mobs if the amount of mob spawns is above max_spawns or max_spawns is 0.

Both min_spawns and max_spawns are optional and will both default to 0 if they are not set, which effectively disables both values.

example
[
	{
		"entity": "minecraft:pillager",
		"weight": 15,
		"first_day": 0,
		"last_day": 0
	},
	{
		"entity": "minecraft:vindicator",
		"weight": 10,
		"first_day": 0,
		"last_day": 0
	},
	{
		"entity": "minecraft:ravager",
		"weight": 1,
		"first_day": 0,
		"last_day": 0,
		"min_spawns": 1,
		"max_spawns": 1
	},
	{
		"entity": "minecraft:witch",
		"weight": 10,
		"first_day": 0,
		"last_day": 0,
		"min_spawns": 1,
		"max_spawns": 3
	}
]

The above example will always spawn 1 ravager and 1-3 witches per wave.

⚠️ **GitHub.com Fallback** ⚠️