Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
Block Thermo
A thermodynamic system for blocks
๐ About
Block Thermo is a thermodynamic system API mod for Minecraft 1.21.1 built on NeoForge. It provides a comprehensive temperature calculation system considering biomes, altitude, time, weather, and radiation sources, offering a powerful temperature API for other mods to use.
This mod features a modular design with extension points that allow other mods to customize various aspects of temperature calculation, including biome temperature, altitude modifiers, time modifiers, weather modifiers, and radiation modifiers.
โจ Features
Core Features
- Precise Temperature Calculation - Multi-factor temperature calculation based on biomes, altitude, time, weather, and radiation sources
- Modular Design - Extension points support, allowing other mods to customize temperature calculation logic
- Complete API - Provides a full API for other mods to integrate and extend
- Game Commands - Built-in temperature query and config reload commands
- Config System - Supports custom dimension configurations, biome temperatures, and radiation source configurations
- Multi-language Support - Supports English and Simplified Chinese
Temperature Calculation Factors
- Biome Temperature - Base temperature based on biome, with custom configuration support
- Altitude Modifier - Automatically adjusts temperature based on height
- Time Modifier - Daily temperature changes (highest at noon, lowest at midnight)
- Weather Modifier - Temperature offsets for clear, rain, and thunderstorm
- Radiation Modifier - Detects nearby radiation sources (such as fire, lava, torches, etc.) and calculates their influence
๐ Usage
Game Commands
Query current location temperature
/blockthermo temperature query
Displays detailed temperature information at your current location, including:
- Base temperature
- Altitude modifier
- Time modifier
- Weather modifier
- Radiation modifier
- Final temperature
Query temperature at specified location
/blockthermo temperature query <x> <y> <z>
Displays temperature information at the specified coordinates.
โ๏ธ Configuration
Mod configuration files are located in the config/block_thermo/ folder in your Minecraft directory.
Main Config (temperature_main.json)
Contains dimension settings, daily temperature ranges, weather temperature offsets, and radiation settings.
Biome Config (temperature_biomes.json)
Used to customize base temperatures and altitude change rates for specific biomes.
Radiation Sources Config (temperature_radiation.json)
Used to define radiation intensity for blocks.
๐ง For Developers
API Usage
Get Temperature
import com.drownedcloud.blockthermo.temperature.TemperatureCalculator;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
// Get temperature at current location
float temperature = TemperatureCalculator.getTemperature(level, blockPos);
Extend Temperature Calculation
Block Thermo provides multiple extension points for other mods to customize temperature calculation:
Biome Temperature Provider
ExtensionManager.setBiomeTemperatureProvider(new BiomeTemperatureProvider() {
@Override
public float getBaseTemperature(Biome biome) {
// Custom biome base temperature calculation
return biome.getBaseTemperature() * 30.0f;
}
});
Altitude Temperature Provider
ExtensionManager.setAltitudeTemperatureProvider(new AltitudeTemperatureProvider() {
@Override
public float getAltitudeModifier(float altitudeRate, int y, int seaLevel) {
// Custom altitude modifier calculation
return altitudeRate * (y - seaLevel);
}
});
Time Temperature Provider
ExtensionManager.setTimeTemperatureProvider(new TimeTemperatureProvider() {
@Override
public float getTimeModifier(Level level, float minTemp, float maxTemp) {
// Custom time modifier calculation
long dayTime = level.getDayTime() % 24000;
return minTemp + (maxTemp - minTemp) * (1 - Math.abs(dayTime - 12000) / 12000.0f);
}
});
Weather Temperature Provider
ExtensionManager.setWeatherTemperatureProvider(new WeatherTemperatureProvider() {
@Override
public float getWeatherModifier(Level level, float clear, float rain, float thunder) {
// Custom weather modifier calculation
if (level.isThundering()) return thunder;
if (level.isRaining()) return rain;
return clear;
}
});
Radiation Temperature Provider
ExtensionManager.setRadiationTemperatureProvider(new RadiationTemperatureProvider() {
@Override
public float getRadiationModifier(Level level, BlockPos pos, int maxDistance, String decayType, Map<Block, Float> sources) {
// Custom radiation modifier calculation
return 0.0f;
}
});
๐ Requirements
- Minecraft: 1.21.1 or 26.1
- NeoForge: 21.1.186 or higher
- Java: 21 or 25
๐ Links
- GitHub: https://github.com/Fallenflower-modder/BlockTempAPI
- Issues: https://github.com/Fallenflower-modder/BlockTempAPI/issues
๐ฌ Support
If you encounter any issues or have any suggestions while using this mod, please contact us through the following channels:
- Submit an Issue on GitHub
- Leave a comment in the CurseForge or Modrinth comments section
๐ค Contributing
Code contributions are welcome! Please submit a Pull Request or create an Issue to help improve this mod.


