Ecotermico

EcoTermico is a realistic thermal simulation mod for Minecraft that adds dynamic temperature, weather, wind, water, shelter, environmental heat propagation, player thermal effects, and server administration tools.
Back to Files

EcoTermico-1.2.24.jar

File nameEcoTermico-1.2.24.jar
Uploader
LaercioAvilaLaercioAvila
Uploaded
Sep 10, 2026
Downloads
5
Size
1.2 MB
Mod Loaders
NeoForge
File ID
8853491
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:ecotermico-1685124:8853491"

Learn more about Curse Maven

What's new

1.2.24 - Release Documentation Integrity / Organização e Integridade da Documentação de Release — V1

EN-US

  • Reorganizes docs/RELEASE_CHECKLIST.md into explicit current-release, inherited-baseline and historical zones.
  • Moves 1.2.16/protocol-7 closure requirements out of the current-release area without deleting historical evidence.
  • Synchronizes living documentation headers and current mod-version metadata to 1.2.24 while preserving API V1, Capability Contract V1 and internal protocol 8.
  • Adds a dedicated validator that rejects stale release/protocol metadata inside the current zone and verifies changelog parity.
  • Preserves every pre-1.2.24 changelog section byte-for-byte.

PT-BR

  • Reorganiza docs/RELEASE_CHECKLIST.md em zonas explícitas de release atual, baseline herdada e histórico.
  • Move requisitos de fechamento da 1.2.16/protocolo 7 para fora da área de release atual sem apagar evidências históricas.
  • Sincroniza cabeçalhos da documentação viva e metadados da versão atual para 1.2.24, preservando API V1, Capability Contract V1 e protocolo interno 8.
  • Adiciona validator dedicado que rejeita metadados antigos de release/protocolo dentro da zona atual e confere paridade dos changelogs.
  • Preserva byte a byte todas as seções de changelog anteriores à 1.2.24.

1.2.23 - Weather Authority Semantics / Correção da Semântica physicallyAuthoritative — V1

EN-US

  • Preserves the public API V1 WeatherSnapshot record and constructor while correcting physicallyAuthoritative to mean only that an authoritative physical core is present.
  • Normalizes physical authority to false for unavailable snapshots, invalid sample times or non-finite physical temperature/humidity.
  • Adds additive physicalDataAvailable(), forecastAvailable() and dataSource() helpers plus WeatherDataSource (UNAVAILABLE, PHYSICAL_WITH_FORECAST, FORECAST_ESTIMATE).
  • Keeps cloud potential/cover, sky condition, fog, visibility and precipitation intensity explicitly derived/forecast/presentation data even inside a physically backed envelope.
  • Hardens PlayerWeatherSyncData.toSnapshot() so a client only preserves physical authority after a valid owning-player server sync.
  • Preserves the existing sync wire layout, public API V1, Capability Contract V1 and internal protocol 8.
  • Adds server/sync/client round-trip, unavailable, forecast-only, invalid timestamp and malformed physical-core regressions.

PT-BR

  • Preserva o record público V1 WeatherSnapshot e seu construtor, corrigindo physicallyAuthoritative para significar somente presença de núcleo físico autoritativo.
  • Normaliza autoridade física para false em snapshot indisponível, timestamp inválido ou temperatura/umidade físicas não finitas.
  • Adiciona de forma aditiva physicalDataAvailable(), forecastAvailable() e dataSource(), além de WeatherDataSource (UNAVAILABLE, PHYSICAL_WITH_FORECAST, FORECAST_ESTIMATE).
  • Mantém potencial/cobertura de nuvens, condição do céu, neblina, visibilidade e intensidade de precipitação explicitamente como dados derivados/forecast/apresentação mesmo dentro de envelope com base física.
  • Endurece PlayerWeatherSyncData.toSnapshot() para o cliente preservar autoridade física somente após sync válido do servidor para o próprio jogador.
  • Preserva o layout existente do sync, API pública V1, Capability Contract V1 e protocolo interno 8.
  • Adiciona regressões de round-trip servidor/sync/cliente, indisponível, apenas forecast, timestamp inválido e núcleo físico malformado.

1.2.22 - Seasonal Fallback Fairness / Justiça e Priorização do Fallback Sazonal — V1

EN-US

  • Evolves regional seasonal event history to SavedData V3 with independent RAIN/SNOW/THUNDER/BLIZZARD timestamps and typed missed-opportunity debt.
  • Ranks fallback candidates by the event actually expected by the loaded region: missing characteristic, missed opportunities, season progress, characteristic-event recency, loaded status and deterministic tie-breaks.
  • Preserves semantic families: THUNDER satisfies RAIN and BLIZZARD satisfies SNOW; snow never satisfies rain and rain never satisfies snow.
  • Removes iteration-order dependence by using one pure comparator for same-region aggregation and global selection.
  • Consumes only the selected expected-event debt after a forced opportunity so one region cannot monopolize fallback without falsely recording an event.
  • Adds DEBUG priority reasons plus regression/stress coverage for 2, 10 and 64 simultaneous regions and the minimum 3-day season.
  • Preserves public API V1, Capability Contract V1, internal protocol 8 and the canonical atmospheric region grid from 1.2.21.

PT-BR

  • Evolui o histórico sazonal regional para SavedData V3 com horários independentes de RAIN/SNOW/THUNDER/BLIZZARD e dívida de oportunidades perdidas tipada.
  • Prioriza o fallback pelo evento realmente esperado na região carregada: ausência característica, oportunidades perdidas, progresso da estação, recência do evento característico, estado loaded e desempates determinísticos.
  • Preserva famílias semânticas: THUNDER satisfaz RAIN e BLIZZARD satisfaz SNOW; neve nunca satisfaz chuva e chuva nunca satisfaz neve.
  • Remove dependência da ordem de iteração usando o mesmo comparador puro na agregação da região e na seleção global.
  • Consome somente a dívida do evento esperado selecionado após uma oportunidade forçada, evitando monopólio sem registrar evento falso.
  • Adiciona motivo da prioridade em DEBUG e regressões/estresse com 2, 10 e 64 regiões simultâneas e estação mínima de 3 dias.
  • Preserva API pública V1, Capability Contract V1, protocolo interno 8 e a malha atmosférica canônica da 1.2.21.

1.2.21 - Canonical Atmospheric Region Grid / Remoção do 128 Fixo em CloudCoverMath — V1

EN-US

  • Removes the hardcoded 128-block division from CloudCoverMath and PhysicalSkyTransmissionMath; both now receive already-resolved regionX/regionZ.
  • Adds pure AtmosphereRegionGrid as the canonical block-to-region resolver using the effective CommonConfig.ATMOSPHERE_REGION_SIZE_BLOCKS.
  • Aligns physical atmosphere, LOCAL virtual cells, cloud cover, physical sky transmission, regional seasonal history and late-season fallback to the same grid boundaries.
  • Resolves regional size once at runtime boundaries instead of reading configuration repeatedly inside pure math.
  • Adds regression coverage for 32/64/128/256/512, negative coordinates and exact positive/negative boundaries.
  • Preserves public API V1, Capability Contract V1 and internal network protocol 8.

PT-BR

  • Remove a divisão fixa de 128 blocos de CloudCoverMath e PhysicalSkyTransmissionMath; ambas passam a receber regionX/regionZ já resolvidos.
  • Adiciona AtmosphereRegionGrid pura como resolver canônico bloco→região usando o CommonConfig.ATMOSPHERE_REGION_SIZE_BLOCKS efetivo.
  • Alinha atmosfera física, células virtuais LOCAL, nebulosidade, transmissão física do céu, histórico sazonal regional e fallback de fim de estação às mesmas fronteiras de malha.
  • Resolve o tamanho regional nos limites de runtime em vez de reler configuração dentro da matemática pura.
  • Adiciona regressões para 32/64/128/256/512, coordenadas negativas e fronteiras exatas positivas/negativas.
  • Preserva API pública V1, Capability Contract V1 e protocolo interno de rede 8.

1.2.20 - regionSizeBlocks Persistence & Reindex V1 / Persistência e Reindexação de regionSizeBlocks — V1

EN-US

  • Adds per-dimension ecotermico_world SavedData for the structural regional geometry, persisting schema version, applied regionSizeBlocks and last reindex game time.
  • First use persists the effective value without fabricating a reindex; unchanged values do not dirty SavedData every tick.
  • Centralizes application so the in-memory physical regional index is rebuilt before a persisted mismatch is acknowledged as applied.
  • Config/restart changes rebuild tracked-chunk membership, discard old physical regional snapshots, refresh urgent keys and reset round-robin scheduling before the new geometry becomes live.
  • Applies the structural check on chunk lifecycle and server-level ticks, including while the atmosphere feature is disabled.
  • Adds JUnit/static regression coverage while preserving public API V1, Capability Contract V1 and internal protocol 8.
  • Reconciles at LevelEvent.Load and invalidates only SeasonalClimateEventSavedData entries whose keys depend on the previous region geometry before acknowledging the new size.
  • Unknown future ecotermico_world schemas are preserved as passthrough NBT and remain write-blocked to prevent downgrade.
  • Explicit migration regression cases cover 128→256, 256→128 and 64→512, plus first-use/restart/future-schema behavior.

PT-BR

  • Adiciona SavedData por dimensão ecotermico_world para a geometria regional estrutural, persistindo versão de schema, regionSizeBlocks aplicado e game time da última reindexação.
  • No primeiro uso, persiste o valor efetivo sem inventar uma reindexação; valor inalterado não marca o SavedData como dirty a cada tick.
  • Centraliza a aplicação para reconstruir o índice regional físico em memória antes de reconhecer uma divergência persistida como aplicada.
  • Mudanças por config/restart refazem o membership dos chunks rastreados, descartam snapshots regionais físicos antigos, renovam a fila urgente e zeram o round-robin antes de ativar a nova geometria.
  • A verificação estrutural ocorre no ciclo de vida de chunks e no tick do nível, inclusive com a atmosfera desativada.
  • Adiciona cobertura JUnit/estática preservando API pública V1, Capability Contract V1 e protocolo interno 8.
  • Reconcilia também em LevelEvent.Load e invalida somente entradas de SeasonalClimateEventSavedData cujas chaves dependem da geometria regional anterior antes de reconhecer o novo tamanho.
  • Schemas futuros desconhecidos de ecotermico_world são preservados como NBT passthrough e permanecem bloqueados para escrita, evitando downgrade.
  • Casos explícitos de regressão cobrem 128→256, 256→128 e 64→512, além de primeiro uso/restart/schema futuro.

1.2.19 - Virtual / Physical Atmosphere Separation V1 / Separação entre Atmosfera Virtual e Física — V1

EN-US

  • Starts the six-stage separation of virtual/predictive atmosphere from physical gameplay authority while preserving public API V1, Capability Contract V1 and internal protocol 8.
  • Stage 1/6 maps the authority boundary and records the existing physical-consumer leaks before behavior changes.
  • Defines one allowed direction: loaded physical/predictive state may anchor a virtual forecast; virtual cells must never drive physical temperature, wind, precipitation, damage or lightning.
  • Adds a reusable static audit that tracks the direct/indirect virtual-to-physical edges until the final strict gate reaches zero.
  • Stage 2/6 removes virtual-atmosphere input from physical microclimate/solar heating and introduces a loaded-world-only physical sky transmission model.
  • Extra storm cooling now follows only the resolved physical THUNDER/BLIZZARD WeatherType, never reconciled/virtual instability.
  • Stage 3/6 seals regional physical authority: VIRTUAL reconciliation remains diagnostic/API metadata but has zero physical influence over instability, humidity, sustained wind, gusts, storm wind multiplier or lightning scheduling.
  • RETAINED_PHYSICAL continuity remains available only inside the same regional state, while EcoTermico lightning now depends only on physical precipitation, biome thunder permission and physical/retained-physical instability.
  • Stage 4/6 removes visual getCloudPotential() from the physical seasonal precipitation scheduler and replaces it with loaded-world-only condensation/precipitation potential derived from biome downfall, physical humidity/instability, season and ambient temperature.
  • getCloudPotential() and WeatherSnapshot remain API/visual forecast surfaces, while PhysicalPrecipitationResolver remains the final local authority for rain, snow, thunder and blizzard form.
  • Stage 5/6 preserves API V1, Capability Contract V1 and protocol 8 while converting legacy virtual-influence/lightning reconciliation config keys into compatibility no-ops for physical gameplay.
  • Public docs now classify physical, hybrid-presentation and virtual/long-range atmospheric snapshots explicitly; historical changelog entries remain untouched.
  • Stage 6/6 closes the separation gate: strict audit reports zero virtual-to-physical paths, pure Java boundary tests prove VIRTUAL reconciliation cannot change physical results, and physical/predictive coverage remains allowed to anchor only the virtual forecast representation.
  • Final cumulative validation covers public API/protocol integrity, commands/methods, documentation, packaging hygiene and regression gates; Gradle/JUnit/NeoForge runtime status remains explicit rather than inferred.

PT-BR

  • Inicia a separação em seis estágios entre atmosfera virtual/preditiva e autoridade física de gameplay, preservando API pública V1, Capability Contract V1 e protocolo interno 8.
  • O Estágio 1/6 mapeia a fronteira de autoridade e registra os vazamentos atuais para consumidores físicos antes das mudanças comportamentais.
  • Define uma única direção permitida: estado físico/preditivo carregado pode ancorar o forecast virtual; células virtuais nunca podem dirigir temperatura, vento, precipitação, dano ou raios físicos.
  • Adiciona auditoria estática reutilizável que acompanha os caminhos virtual -> físico até o gate final estrito chegar a zero.
  • O Estágio 2/6 remove a entrada da atmosfera virtual do microclima/aquecimento solar físico e introduz um modelo de transmissão do céu baseado apenas no mundo carregado.
  • O resfriamento extra de tempestade passa a seguir somente o WeatherType físico THUNDER/BLIZZARD já resolvido, nunca instabilidade reconciliada/virtual.
  • O Estágio 3/6 sela a autoridade física regional: a reconciliação VIRTUAL permanece como metadado de diagnóstico/API, mas passa a ter influência física zero sobre instabilidade, umidade, vento sustentado, rajadas, multiplicador de tempestade ou agenda de raios.
  • A continuidade RETAINED_PHYSICAL permanece somente dentro do estado da mesma região, enquanto os raios extras do EcoTermico passam a depender apenas de precipitação física, permissão de trovão do bioma e instabilidade física/retida física.
  • O Estágio 4/6 remove o getCloudPotential() visual do scheduler físico de precipitação sazonal e o substitui por potencial de condensação/precipitação derivado somente de downfall do bioma, umidade/instabilidade físicas, estação e temperatura ambiente carregada.
  • getCloudPotential() e WeatherSnapshot permanecem superfícies de API/forecast visual, enquanto PhysicalPrecipitationResolver continua sendo a autoridade local final para a forma física de chuva, neve, trovão e nevasca.
  • O Estágio 5/6 preserva API V1, Capability Contract V1 e protocolo 8, mantendo as chaves legadas de influência virtual/progresso de raio apenas como compatibilidade de configuração e sem efeito no gameplay físico.
  • A documentação pública passa a classificar explicitamente snapshots físicos, híbridos de apresentação e virtuais/de longo alcance, sem reescrever entradas históricas do changelog.

1.2.18 - Internal Protocol 8 Preservation & Rationale V1 / Preservação e Justificativa do Protocolo Interno 8 — V1

EN-US

  • Starts the incremental Protocol 8 preservation checklist without changing gameplay or the public API V1 contract.
  • Documents beside ModPayloads.NETWORK_VERSION that protocol 8 replaced 7 because GuideOpenPayload added the serialized dynamicCloudCoverEnabled and seasonalClimateGuaranteeEnabled booleans.
  • Makes the internal wire protocol explicitly independent from TemperatureAPI.API_VERSION and forbids lowering the current protocol merely to match historical documentation.
  • Adds living technical documentation that records the origin, release lineage and future bump rule for protocol 8.
  • Stage 2/5 completed: formalizes API V1 / Capability Contract V1 / internal protocol 8 as independent version domains and keeps the network protocol private from external integrations.
  • Updates living API/release documentation to 1.2.18 and explicitly preserves historical protocol-7 references only in the releases that used them.
  • Stage 3/5 completed: audits all 25 GuideOpenPayload wire positions, authoritative factories, client/server consumers, defensive bounds and ordinal fallbacks.
  • Documents the canonical protocol-8 wire layout and adds a dedicated static integrity gate for future incompatible payload changes.
  • Stage 4/5 completed: adds a real GuideOpenPayload.STREAM_CODEC JUnit round-trip and freezes the 25-component protocol-8 record shape together with network version 8.
  • Makes the historical 1.2.17 feature gate forward-compatible with newer releases/protocols while still requiring the preserved 1.2.17 7 -> 8 rationale.
  • Pins all evidence under docs/history/1.2.13 and docs/history/1.2.16 by SHA-256 in the stage-4 regression gate; historical files are not rewritten.
  • Stage 5/5 completed: closes living documentation, release evidence and the permanent evolution policy; source 1.2.18 is finalized with public API V1 / Capability Contract V1 / internal protocol 8.
  • Future protocol changes must document the exact wire change, compatibility impact, migration/fallback, tests and regression risks; precautionary bumps and historical downgrades are explicitly forbidden.
  • Runtime certification remains explicit: JUnit/Gradle/NeoForge tasks are PASS only after real execution; wrapper/network blocking remains BLOCKED/PENDING.

PT-BR

  • Inicia a implementação incremental da checklist de preservação do Protocolo 8 sem alterar gameplay nem o contrato da API pública V1.
  • Documenta junto de ModPayloads.NETWORK_VERSION que o protocolo 8 substituiu o 7 porque GuideOpenPayload passou a serializar os booleanos dynamicCloudCoverEnabled e seasonalClimateGuaranteeEnabled.
  • Torna explícita a independência entre o protocolo interno de wire e TemperatureAPI.API_VERSION e proíbe reduzir o protocolo atual apenas para coincidir com documentação histórica.
  • Adiciona documentação técnica viva registrando origem, release de introdução e regra para futuros bumps do protocolo 8.
  • Estágio 2/5 concluído: formaliza API V1 / Capability Contract V1 / protocolo interno 8 como domínios independentes e mantém o protocolo de rede privado para integrações externas.
  • Atualiza documentação viva de API/release para 1.2.18 e preserva referências históricas ao protocolo 7 somente nas releases que realmente o utilizaram.
  • Estágio 3/5 concluído: audita as 25 posições de wire de GuideOpenPayload, factories autoritativas, consumidores client/server, limites defensivos e fallbacks de ordinais.
  • Documenta o layout canônico do protocolo 8 e adiciona gate estático dedicado de integridade contra futuras mudanças incompatíveis do payload.
  • Estágio 4/5 concluído: adiciona round-trip JUnit real por GuideOpenPayload.STREAM_CODEC e congela os 25 componentes do record do protocolo 8 junto da versão de rede 8.
  • Torna o gate histórico da 1.2.17 forward-compatible com releases/protocolos posteriores, mantendo obrigatória a justificativa histórica 7 -> 8 na seção da 1.2.17.
  • Fixa por SHA-256 todas as evidências em docs/history/1.2.13 e docs/history/1.2.16 no gate de regressão do Estágio 4; arquivos históricos não são reescritos.
  • Estágio 5/5 concluído: fecha documentação viva, evidências de release e a política permanente de evolução; a fonte 1.2.18 fica finalizada com API pública V1 / Capability Contract V1 / protocolo interno 8.
  • Futuras mudanças de protocolo devem documentar a alteração exata de wire, impacto de compatibilidade, migração/fallback, testes e riscos de regressão; bumps preventivos e downgrades para satisfazer histórico ficam explicitamente proibidos.
  • A certificação runtime permanece explícita: tasks JUnit/Gradle/NeoForge só recebem PASS após execução real; bloqueio de wrapper/rede permanece BLOCKED/PENDENTE.

1.2.17 - API Reconciliation, Atmospheric Cloud Cover & Seasonal Climate Guarantees

EN-US

  • Based on the official 1.2.16 line; restores the published API capability-discovery contract without removing existing API V1 signatures.
  • Keeps TemperatureAPI.API_VERSION = 1 and CAPABILITY_CONTRACT_VERSION = 1; adds four stable weather capability IDs.
  • Adds SkyCondition, WeatherSnapshot, cloudCover, cloud/overcast helpers, atmospheric visibility and solar-transmission queries.
  • Uses the existing virtual atmosphere as the single canonical source of cloudPotential; no second cloud-potential formula remains.
  • Cloud cover now attenuates direct solar microclimate heating while preserving the established precipitation attenuation bound.
  • Seasonal event history is persistent and regional; loaded regions keep being sampled during global precipitation windows and late-season fallback prioritizes regions with more missed eligible opportunities.
  • A late-season guarantee creates only an eligible weather opportunity; local biome permissions, moisture and thermal snow threshold still determine whether precipitation can occur and whether it is rain or snow.
  • Adds Administration controls for dynamic cloud cover and seasonal climate guarantees using the existing Apply/persistence flow.
  • Internal network protocol changes from 7 to 8 because GuideOpenPayload adds two serialized booleans. This is not a public API V1 break.
  • Fog density/visibility remain meteorological estimates; independent physical fog, drizzle, heat-wave/cold-wave and dry-event systems are not claimed by this release.

PT-BR

  • Parte da linha oficial 1.2.16 e restaura o contrato publicado de descoberta por capabilities sem remover assinaturas existentes da API V1.
  • Mantém TemperatureAPI.API_VERSION = 1 e CAPABILITY_CONTRACT_VERSION = 1; acrescenta quatro IDs meteorológicos estáveis.
  • Adiciona SkyCondition, WeatherSnapshot, cloudCover, consultas de nublado/encoberto, visibilidade atmosférica e transmissão solar.
  • Reutiliza a atmosfera virtual existente como única fonte canônica de cloudPotential; não permanece uma segunda fórmula concorrente.
  • A cobertura de nuvens passa a atenuar o aquecimento solar direto do microclima, preservando como limite a atenuação histórica de precipitação.
  • O histórico de eventos passa a ser persistente e regional; regiões carregadas continuam sendo amostradas durante janelas globais de precipitação e o fallback prioriza regiões com mais oportunidades elegíveis perdidas.
  • A garantia de fim de estação cria somente uma oportunidade climaticamente elegível; permissões do bioma, umidade e limiar térmico continuam decidindo se ocorre precipitação e se ela será chuva ou neve.
  • Administração recebe controles de nebulosidade dinâmica e garantia climática sazonal usando o fluxo existente de Aplicar/persistir.
  • O protocolo interno muda de 7 para 8 porque GuideOpenPayload ganhou dois booleanos serializados. Isso não é quebra da API pública V1.
  • Densidade de neblina/visibilidade ainda são estimativas meteorológicas; neblina física independente, garoa, ondas de calor/frio e eventos secos não são declarados implementados nesta release.

This mod has no additional files