promotional bannermobile promotional banner
premium banner
A simple api provide developers with ability of get temperature of any position! [ColdSweat Supported!]

Description

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

πŸ’¬ 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.