Block Heat Properties - TeamPneumatic/pnc-repressurized GitHub Wiki
Block Heat Properties
Block Heat Properties recipes allow custom heat properties (temperature & thermal resistance) to be assigned to any block in the game, including non-tile entity blocks. For example, default recipes define Lava and Magma as having a very high temperature, and Ice/Packed Ice/Blue Ice as having a low temperature. PneumaticCraft: Repressurized blocks & machines which support the concept of temperature (e.g. the Refinery, Thermopneumatic Processing Plant or Heat Pipe) will heat up or cool down when adjacent to such blocks.
Additionally, block transforms can be defined; when too much heat is added or removed, the block should transform to a different one. For example Lava transforms to Obsidian when too much heat is removed (e.g. absorbed by a Refinery), and Ice transforms to Water when too much heat is added (e.g. placed next to a hot advanced compressor).
It's also important to note that such blocks don't directly exchange heat with each other since they have no heat logic of their own. To force heat exchange, a ticking PneumaticCraft tile entity with heat logic must be placed between them, e.g. a Heat Pipe.
An example (default) heat properties entry, for Campfires:
{
"type": "pneumaticcraft:heat_properties",
"block": "minecraft:campfire",
"statePredicate": {
"lit": "true"
},
"temperature": 1700,
"thermalResistance": 5000,
"heatCapacity": 10000,
"transformCold": {
"block": "minecraft:campfire[lit=false]"
}
}
- The
type
field must be present and always bepneumaticcraft:heat_properties
- One of (but not both)
block
andfluid
fields must be present, and are the registry name of the block or fluid respectively - The
statePredicate
field is optional, and limits the test to only specific blockstates- In the example above, the Campfire must be lit (
lit=true
) to qualify as a hot block
- In the example above, the Campfire must be lit (
- The
temperature
field is mandatory for blocks, but optional for fluids (since fluids are registered with a default temperature, e.g. Lava is 1300K and Water is 300K). The temperature is in Kelvin (K). - The
thermalResistance
field is optional, and defaults to values defined in the mod config (Heat section). Thermal resistance limits the transfer rate of heat between neighbouring blocks; the higher the resistance, the slower heat transfers.- For blocks, see
blockThermalResistance
in mod config. - For fluids, see
fluidThermalResistance
in mod config.
- For blocks, see
- The
transformCold
,transformHot
,transformColdFlowing
&transformHotFlowing
fields are all optional; these control whether the block or fluid will transform into a new block or fluid when too much heat is added or removed.- The value of these fields is a blockstate definition, in string form. Blockstate definitions are the block's registry name, optionally including one or more blockstate property values. E.g. in the example above, a lit Campfire transforms to an unlit Campfire (
lit=false
) when too much heat is removed. transformColdFlowing
&transformHotFlowing
apply only to liquids, and are used to transform the flowing version of a liquid. E.g. Lava source blocks transform to Obsidian, but flowing blocks transform to Cobblestone.
- The value of these fields is a blockstate definition, in string form. Blockstate definitions are the block's registry name, optionally including one or more blockstate property values. E.g. in the example above, a lit Campfire transforms to an unlit Campfire (
- The
heatCapacity
field is optional, and only relevant when block transforms are in effect; it defines the total amount of heat which can be gained or lost before the block transforms.- If omitted, the behaviour for blocks is not to transform ever, and for fluids, to use the
defaultFluidHeatCapacity
value from mod config. (If you want a fluid which never transforms, simply setheatCapacity
to 0 and/or omit alltransformXXX
fields).
- If omitted, the behaviour for blocks is not to transform ever, and for fluids, to use the