Allow to use KubeJS customize Create's Heat Source Block, HeatLevel.
Please use KubeJS Create Mod when adding recipes, and use the .heatLevel() method to set the heat level.

ClientEvents.lang("en_us", (event) => {
event.add("create.recipe.heat_requirement.blaze", "Blaze");
event.add("create.recipe.heat_requirement.cryotheum", "Cryotheum");
event.add("create_heat_js.heat_source.cryotheum.soul_lantern.tip", "needs to be in the nether dimension");
});
ServerEvents.recipes((event) => {
event.recipes.create.mixing("minecraft:diamond", "minecraft:coal_block").heatLevel("BLAZE");
event.recipes.create.compacting("minecraft:water", "minecraft:blue_ice").heatLevel("CRYOTHEUM");
});
CreateHeatJS.registerHeatEvent(event => {
// 1. Basic Example: Register custom heat source BLAZE
event.registerHeat("BLAZE", builder => builder
.color(0xFF4500)
.addHeatSource("minecraft:magma_block")
.satisfies("HEATED")
)
// 2. Advanced Example: Register CRYOTHEUM
event.registerHeat("CRYOTHEUM", builder => builder
.color(0x00BFFF)
.addHeatSource("#minecraft:ice")
// Conditional heat source: only works in the Nether
.addHeatSourceIf((level, pos) => {
if (level.dimension === "minecraft:the_nether") {
return level.getBlockState(pos).block.id === "minecraft:soul_lantern"
}
return false
},"minecraft:soul_lantern",Component.translatable("create_heat_js.heat_source.cryotheum.soul_lantern.tip"))
.satisfies("HEATED")
.satisfiesIf("SUPERHEATED", ctx => ctx.getRecipeId() == "create:mixing/lava_from_cobble"))
// 3. Modify existing heat level
event.modifyHeat("SUPERHEATED", data => data
.satisfies("CUSTOM_LEVEL")
)
})
/**
* Heat Source String Format:
* - blocktag:namespace:path (Block Tag)
* - fluidtag:namespace:path (Fluid Tag)
* - block:namespace:path (Block ID)
* - fluid:namespace:path (Fluid ID)
* - namespace:path[prop=value] (Block State)
* - #namespace:path (Try to match Block or Fluid Tag)
*/
satisfies Relationshipsatisfies() establishes a **: if A.satisfies("B"), then:
A ──satisfies──> B means A ≥ B
Recipes need B ──> Can use A ✓
Recipes need A ──> Cannot use B ✗
Create mod has a built-in relationship: SUPERHEATED → HEATED
| Recipe Requirement | Blaze Burner (HEATED) | Blaze Burner (SUPERHEATED) |
|---|---|---|
| HEATED | ✓ | ✓ |
| SUPERHEATED | ✗ | ✓ |
This means: SUPERHEATED satisfies HEATED, but HEATED does not satisfy SUPERHEATED.
When you write:
event.registerHeat("BLAZE", builder => builder
.satisfies("HEATED")
)
You're creating: BLAZE → HEATED
| Recipe Requirement | BLAZE heat source | Blaze Burner (HEATED) |
|---|---|---|
| HEATED | ✓ | ✓ |
| BLAZE | ✓ | ✗ |
// Create a chain: LEVEL3 → LEVEL2 → LEVEL1
event.registerHeat("LEVEL2", builder => builder.satisfies("LEVEL1"))
event.registerHeat("LEVEL3", builder => builder.satisfies("LEVEL2"))
Result: LEVEL3 can satisfy LEVEL2 and LEVEL1 (transitive)
The relationship is transitive. If you write:
// Create already has: SUPERHEATED → HEATED
// You add: PYROTHEUM → SUPERHEATED
event.registerHeat("PYROTHEUM", builder => builder
.satisfies("SUPERHEATED")
)
PYROTHEUM will automatically satisfy HEATED too! No need to write .satisfies("HEATED").
PYROTHEUM → SUPERHEATED → HEATED
│ │ │
└───────────┴───────────┘
(all satisfied by PYROTHEUM)
| Recipe Requirement | PYROTHEUM |
|---|---|
| HEATED | ✓ (auto) |
| SUPERHEATED | ✓ |
| PYROTHEUM | ✓ |
// No satisfies() - completely independent
event.registerHeat("COLD", builder => builder
.color(0x00BFFF)
.addHeatSource("#minecraft:ice")
)
Result: COLD is independent, not connected to Create's heat system
// CRYOTHEUM is independent but can also satisfy Create's conditions
event.registerHeat("CRYOTHEUM", builder => builder
.satisfies("HEATED") // Can satisfy HEATED recipes
.satisfiesIf("SUPERHEATED", ctx => ctx.getRecipeId() == "specific_recipe")
)
Result: CRYOTHEUM is its own level, but can cross into Create's hierarchy
Create's Original:
NONE ← HEATED ← SUPERHEATED
(satisfies)
Your Custom:
BLAZE ──satisfies──> HEATED
(BLAZE ≥ HEATED)
Combined:
NONE ← HEATED ← SUPERHEATED
↑
└── BLAZE
Recipes needing HEATED: Can use HEATED, SUPERHEATED, or BLAZE
Recipes needing BLAZE: Can only use BLAZE
```
[curseforge-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/curseforge_vector.svg [curseforge-url]: https://www.curseforge.com/minecraft/mc-mods/create-heat-js [modrinth-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/modrinth_vector.svg [modrinth-url]: https://modrinth.com/mod/create-heat-js [github-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/github_vector.svg [github-url]: https://github.com/XiaoHuNao/CreateHeatJS