Custom fish
Add your own fish to Enthalpy with one JSON file, then give them a mutation and a yield with a datapack.
The file#
The first time the game starts, Enthalpy writes config/enthalpy-fish.json if it is
missing. The template holds an empty list and a short explanation, and an example entry that is ignored.
Add your fish to the fish list:
{
"fish": [
{"id": "glimmer_guppy", "name": "Glimmer Guppy", "shape": "tropical_fish", "colour": "#7FD8FF"}
]
}| Field | Required | What it is |
|---|---|---|
id | Yes | The fish's ID. Lowercase letters, digits and underscores only. The raw fish becomes enthalpy:<id> and the cooked one enthalpy:cooked_<id>. If Enthalpy already has an item of either name, the game stops at start-up with an error that names the file. |
name | Yes | Its English name. The cooked fish is named "Cooked" followed by the same name. A lang file in a resource pack can override both. |
shape | No | Which vanilla fish the item is drawn from: cod (the default), salmon, pufferfish or tropical_fish. The cooked fish looks like cooked salmon for salmon and cooked cod for the other three. |
colour | Yes | The tint, as #RRGGBB (the # is optional). It tints the item, as it does Enthalpy's own bred fish, and the fish carry the same shimmer. |
What the mod generates#
For each fish, Enthalpy builds a small built-in pack in memory and puts it at the bottom of the pack order. Because it is at the bottom, any datapack or resource pack of yours can replace any of these files by using the same path. The pack holds:
- Two items, the raw and the cooked fish. Both are food, and the creative tab and JEI list them with Enthalpy's other bred fish.
- Tags. The raw fish joins
c:foods/raw_fish, the cooked fish joinsc:foods/cooked_fish, and both joinminecraft:fishes. The first tag is what lets it go into an Ecotone or Spawning Basin, be pressed for fish oil and be loaded as ammo; see Tags. - Three cooking recipes from raw to cooked: furnace, smoker and campfire, each with a recipe-book unlock when the player holds the fish. The files are
cooking/cooked_<id>_smelting,_smokingand_campfire_cookingunderdata/enthalpy/recipe. - A Triturator recipe at
enthalpy:triturator/fish/<id>that grinds the raw fish into Fish Meal. The default is two. Put a recipe at the same path to change the output. - Item models at
assets/enthalpy/models/item/<id>.jsonandcooked_<id>.json: the tinted vanilla fish, with the shimmer on the raw one. A resource pack can give the fish its own model at the same path.
Because the raw fish is in c:foods/raw_fish, it also presses into fish oil in the Vortex Separator like any other raw fish. Add it to enthalpy:oily_fish to make it press as much as salmon does.
Not generated: a Mekanism crushing recipe, a cooked-fish effect, a Spawning Basin mutation, a yield, or Howitzer ammo values. Those are all data, below.
Giving it a mutation#
A custom fish does not turn up on its own. Make it with a mutation recipe: a Spawning Basin turns a pair
into a new species when a catalyst is present. The file goes in a datapack at
data/<your namespace>/recipe/fish_mutation/glimmer_guppy.json:
{
"type": "enthalpy:fish_mutation",
"parent": {"item": "minecraft:tropical_fish"},
"partner": {"item": "minecraft:tropical_fish"},
"catalyst": {"tag": "c:dusts/glowstone"},
"result": {"id": "enthalpy:glimmer_guppy", "count": 1},
"chance": 0.1
}parent and partner are the pair, in either order; catalyst is the
item that sits in the Basin's catalyst slot and is used up when a mutation comes up; chance is
the chance each breeding makes the new fish. All three can be items or tags.
The optional tier makes a mutation need a better Spawning Basin. It takes
tempered, fortified, luminous or harmonic, and the
mutation only rolls in a Basin of that tier or above. Leave it out and any Basin can make the fish.
{
"type": "enthalpy:fish_mutation",
"parent": {"item": "enthalpy:glimmer_guppy"},
"partner": {"item": "minecraft:cod"},
"catalyst": {"item": "minecraft:emerald"},
"result": {"id": "enthalpy:diamond_ray", "count": 1},
"chance": 0.5,
"tier": "fortified"
}That one uses the custom fish as a parent for an existing species. Tags and mod conditions work as they do for any recipe; see the mutation format.
Giving it a yield#
A fish with no yield breeds copies of itself, like a vanilla fish. A resource fish instead turns
into a resource when an Ecotone breeds it. Make yours one with an entry in the enthalpy:fish_yields
data map, in a datapack at data/enthalpy/data_maps/item/fish_yields.json:
{
"values": {
"enthalpy:glimmer_guppy": {
"item": {"id": "minecraft:glowstone_dust", "count": 1},
"chance": 0.5,
"fish_chance": 0.1111
}
}
}item is what each yield gives, as an item or a tag (a tag gives the item your
preferred mods choose). chance is the chance
a breeding gives it. fish_chance is how often a pair breeds another of itself instead; keep it
low, as Enthalpy's own fish do, so a pair cannot be copied without limit. Leave it out and the fish never
copies itself. Data map entries from different datapacks merge, so you add yours without touching
Enthalpy's own.
To make the fish do something as ammo, add an entry to enthalpy:fish_ammo in the same way.
The Howitzer ammo format lists the fields.
Checklist#
- Add the fish to
config/enthalpy-fish.jsonand restart. - Check the raw and cooked fish in the creative tab, and that they cook.
- Add a mutation recipe so the fish can be bred, and a yield if it is a resource fish.
- Give a resource pack a name and a model if the tinted vanilla look is not enough.
- Copy the config file to the server and every client.