promotional bannermobile promotional banner

天圆地方/GeoCraft

Experimental
A mod that adds realistic geo-elements into Minecraft.
Back to Files

GeoCraft-0.3.0-alpha.1-Cleanroom

File nameGeoCraft-0.3.0-alpha.1-CRL.jar
Uploader
QiguaiAAAAQiguaiAAAA
Uploaded
Aug 2, 2026
Downloads
9
Size
1.5 MB
Mod Loaders
Forge
File ID
8559416
Type
A
Alpha
Supported game versions
  • 1.12.2

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:qg-geocraft-1423755:8559416")

Learn more about Curse Maven

What's new

v0.3.0-alpha.1

请注意,该版本是 v0.3.0 的 alpha 阶段测试版本,可能存在未知的 bug,请在使用前注意备份!

ATTENTION: This is an alpha test build of v0.3.0. Unknown bugs may exist. BACK UP your world before use!

详细更新信息见此

Click HERE to read detail update information.

新内容 New

流体物理 Fluid Physics

  • 重写流体更新器(Fluid Updater)为更加开放性的流体任务调度器(Fluid Task Scheduler),允许第三方替换流体任务调度器实现;

    Rewrote the Fluid Updater into the more open Fluid Task Scheduler, allowing third parties to replace the fluid task scheduler implementation;

  • 重写流体任务(Fluid Task),调整为单例注册表实现,并加入了相应的注册管理类 FluidTaskRegistry 以及 FluidTaskRegistryEvent、FluidTaskSchedulerEvent 两个事件,允许第三方注册更多流体任务;

    Rewrote Fluid Tasks into a singleton-registry implementation, and added the registry class FluidTaskRegistry along with two events, FluidTaskRegistryEvent and FluidTaskSchedulerEvent, allowing third parties to register more fluid tasks;

  • 加入了流体任务的跨存档 ID 重映射机制;

    Added a cross-save ID remapping mechanism for fluid tasks;

  • 加入了区块型流体任务调度器(Chunky Fluid Task Scheduler),以替代旧版的不具有持久化的全局流体更新器。新的区块型流体任务调度器会持久化未执行的流体任务,并具有更好的性能和内存表现;

    Added the Chunky Fluid Task Scheduler, replacing the previous global Fluid Updater which had no persistence. The new Chunky Fluid Task Scheduler persists unexecuted fluid tasks, and has better performance and memory characteristics;

  • 加入了流体任务不适用的协商机制,任务方和方块方共同决定流体任务是否适用,并可指派新的替代任务。

    Added a negotiation mechanism for inapplicable fluid tasks: the task side and the block side jointly decide whether a fluid task applies, and may assign a replacement task.

方块计划刻调度器 Block Tick Scheduler

  • 重写方块更新器(Block Updater)为更加开放性的方块计划刻调度器(Block Tick Scheduler),简称计划刻调度器,允许第三方替换方块计划刻调度器实现;

    Rewrote the Block Updater into the more open Block Tick Scheduler (Tick Scheduler for short), allowing third parties to replace the block tick scheduler implementation;

  • 加入了四种可配置的区块型方块计划刻调度器实现:

    Added four configurable chunky block tick scheduler implementations:

    • PACKED [默认]区块型打包偏序方块计划刻调度器(Chunky Packed Partial Order Block Tick Scheduler);

      PACKED [default] Chunky Packed Partial Order Block Tick Scheduler;

    • BOXED 区块型装箱偏序方块计划刻调度器(Chunky Boxed Partial Order Block Tick Scheduler);

      BOXED Chunky Boxed Partial Order Block Tick Scheduler;

    • PACKED_TOTAL_ORDER 区块型打包全序方块计划刻调度器(Chunky Packed Total Order Block Tick Scheduler);

      PACKED_TOTAL_ORDER Chunky Packed Total Order Block Tick Scheduler;

    • BOXED_TOTAL_ORDER 区块型装箱全序方块计划刻调度器(Chunky Boxed Total Order Block Tick Scheduler)。

      BOXED_TOTAL_ORDER Chunky Boxed Total Order Block Tick Scheduler.

  • 加入了 BlockTickValidator 机制,用于抽象一个计划刻是否适用的逻辑判断;

    Added the BlockTickValidator mechanism, abstracting the logic that decides whether a scheduled tick applies;

  • 加入了 BlockTickSchedulerEvent 类以及其中的 Create 和 InitValidator 两个事件,允许第三方使用自己的调度器或 BlockTickValidator 实现;

    Added the BlockTickSchedulerEvent class with its two events, Create and InitValidator, allowing third parties to use their own scheduler or BlockTickValidator implementations;

  • 加入了基于原版计划刻机制的 MojangBlockTickScheduler 实现,会作为没有任何可用调度器的备选。

    Added the MojangBlockTickScheduler implementation based on the vanilla scheduled tick mechanism, serving as the fallback when no other scheduler is available.

命令 Commands

  • 为 /fluidphysics 命令加入 task 子命令,用于查询或手动计划流体任务。语法为:

    Added the task sub-command to /fluidphysics, for querying or manually scheduling fluid tasks. Syntax:

    /fluidphysics task query [维度:维度] [位置:方块坐标]

    /fluidphysics task query [Dimension:Dimension] [Position:BlockPos]

    /fluidphysics task schedule <流体任务 ID:流体任务> <流体:流体> [维度:维度] [位置:方块坐标]

    /fluidphysics task schedule <Fluid Task ID:Fluid Task> <Fluid:Fluid> [Dimension:Dimension] [Position:BlockPos]

    • query 子命令展示指定位置是否存在流体任务及其任务 ID;

      The query sub-command shows whether a fluid task exists at the given position, along with its task ID;

    • schedule 子命令把指定的流体任务计划到指定位置。

      The schedule sub-command schedules the given fluid task at the given position.

  • 加入了流体任务参数命令节点。

    Added the fluid task command parameter node.

配置系统 Configs

  • 加入了配置项 general.block_updater.blockTickSchedulerMode,用于选择方块计划刻调度器的模式,默认为 PACKED

    Added the config option general.block_updater.blockTickSchedulerMode for choosing the block tick scheduler mode, defaulting to PACKED.

  • 加入了针对通用优化项目的配置分类 optimisation

    Added the config category optimisation for general optimisations;

  • 加入了 optimisation 类下的配置项 skipRedundantBlockChangeRecords(默认启用)。当启用时,天圆地方会注入一个 Mixin,从而当一个区块在一游戏刻内的变更数达到 Forge 的 clumpingThreshold 配置项后,跳过冗余的逐方块变更记录,从而优化部分性能;

    Added the option skipRedundantBlockChangeRecords under the optimisation category (enabled by default). When enabled, GeoCraft injects a Mixin so that once a chunk's change count within one game tick reaches Forge's clumpingThreshold config value, redundant per-block change records are skipped, greatly optimising performance in extreme scenarios;

  • 加入了针对枚举类型的配置项(ConfigEnum)。

    Added config options for enum types (ConfigEnum).

镍 API / Nickel API

  • NBTMatcher 现在具有严格匹配(strict)模式。在严格模式下,复合标签匹配会要求键集合相等,列表与数组匹配要求在多重集合语义下相等;

    NBTMatcher now has a strict matching mode. In strict mode, compound tag matching requires the key sets to be equal, and list/array matching requires equality under multiset semantics;

  • 维度参数节点现在接受 ~,表示命令执行者所在的维度;

    The dimension parameter node now accepts ~, meaning the current dimension of the command executor;

  • NickelRuntimeException 加入了链式的 withCause(Throwable) 方法;

    Added the chainable withCause(Throwable) method to NickelRuntimeException;

变更 Change

  • 天圆地方的英文名开始逐步迁移到 OrbTellusCraft(简称 OTC);

    The English name of GeoCraft is gradually migrating to OrbTellusCraft (OTC for short);

  • 天圆地方的根包名从 top.qiguaiaaaa.geocraft 变更为 moe.qingu.geocraft

    The root package of GeoCraft changes from top.qiguaiaaaa.geocraft to moe.qingu.geocraft;

  • 整理了 Mixin 配置文件的组织方式,并迁移到了新英文名。

    Reorganised the Mixin configuration files and migrated them to the new English name.

API

  • 天圆地方 API 从 v0.3.3 升级到 v0.3.4,版本代码从 5 升级到 6。这是一次破坏性变动;

    GeoCraft API is upgraded from v0.3.3 to v0.3.4, with the version code going from 5 to 6. This is a breaking change;

  • 移除了大量类,并简化了部分包结构。

    Removed a large number of classes and simplified parts of the package structure.

流体物理 Fluid Physics

  • 正式更名流体物理模式的代码层命名。经典模式 VANILLA_LIKE 调整为 CLASSIC,有限模式 MORE_REALITY 调整为 FINITE。配置文件保持向下兼容;

    Formally renamed the code-level names of the fluid physics modes: Classic mode VANILLA_LIKE becomes CLASSIC, and Finite mode MORE_REALITY becomes FINITE. Config files remain backward compatible;

  • 现在压强系统会在压强搜索完成后,以略高的优先级计划方块更新;

    The pressure system now schedules block updates with slightly-high priority after a pressure search completes;

  • 移除了流体更新器(Fluid Updater)和方块更新器(Block Updater)。

    Removed the Fluid Updater and the Block Updater.

配置系统 Configs

  • 修改 general.block_updater.enableBlockUpdater 现在不再实时生效,而是需要重启世界;

    Changed general.block_updater.enableBlockUpdater: it no longer takes effect immediately, and now requires a world restart;

  • 修改 general.block_updater.maxUpdateBlocksPerTick 不再需要重启游戏,仅需重启世界即可生效;

    Changed general.block_updater.maxUpdateBlocksPerTick: it no longer requires a game restart, a world restart is enough;

  • 现在 general.block_updater.maxTimeUsage 受实现限制,在全序调度器下不会生效;

    Due to implementation constraints, general.block_updater.maxTimeUsage now does not take effect under total-order schedulers;

  • 配置项 general.block_updater.sortTasksByDistanceToPlayers 正式向玩家开放,其排序的颗粒度从方块层面调整为区块层面。该配置在全序调度器下不会生效;

    The config option general.block_updater.sortTasksByDistanceToPlayers is now formally open to players, with its sorting granularity changed from per block to per chunk. This option does not take effect under total-order schedulers;

  • 正式移除了早已弃用的配置项 general.block_updater.cleaningPeriodallowDynamicFluidToUpdate

    Formally removed the long-deprecated config options general.block_updater.cleaningPeriod and allowDynamicFluidToUpdate;

  • 弃用了 fluid_updater.dropExcessTasksfluid_updater.cleanPeriod

    Deprecated fluid_updater.dropExcessTasks and fluid_updater.cleanPeriod;

  • 现在调整流体物理模式时可以输入中文别名;

    Chinese aliases are now accepted when setting the fluid physics mode;

  • 调整了 @GeoConfig.Since 注解,支持表达弃用的版本信息。

    Adjusted the @GeoConfig.Since annotation to support expressing deprecation version information.

持久化 Persistence

  • 区块计划刻存档数据格式从 v1 升级到 v2,并具有自动迁移旧版数据的能力;

    The chunk scheduled tick save data format is upgraded from v1 to v2, with automatic migration of old data;

  • 正式移除了早已弃用的维度级 GeoCraftWorldSavedData(GeoCraftData.dat)数据文件。

    Formally removed the long-deprecated dimension-level GeoCraftWorldSavedData (GeoCraftData.dat) data file.

镍 API / Nickel API

  • 版本号升级到 v0.0.5,版本代码升级到 -1020。这是一次破坏性更新。

    Version is upgraded to v0.0.5, and the version code to -1020. This is a breaking update.

修复 Fix

流体物理 Fluid Physics

  • 有限模式下原版流体在区块加载边缘进行计划刻更新时,不再静默丢弃更新任务或转换为静态流体方块;

    In Finite mode, vanilla fluids receiving scheduled tick updates at the chunk loading edge no longer silently drop their update tasks or convert into static fluid blocks;

  • 密度为零的流体现在会自上而下更新,而非自下而上,以遵循 Forge 标准;

    Fluids with zero density now update top-down instead of bottom-up, following the Forge standard;

  • 压强任务创建时现在会不可变化 BlockPos。

    BlockPos instances are now made immutable when pressure tasks are created.

测试 Test

  • 加入了针对方块计划刻调度器的诸多测试;

    Added numerous tests for the block tick scheduler;

  • 加入了针对 NBTMatcher 严格匹配模式的测试;

    Added tests for the NBTMatcher strict matching mode;

  • 完善了测试框架。

    Improved the test framework.

升级指南 Upgrade Guide

从低于 v0.3.0-alpha.1 版本升级到该版本,请注意计划刻数据存储方式将永久改变且不可无损降级。将 v0.3.0-alpha.1 及之后版本的存档降级到 v0.2.7 及以下版本,所有天圆地方自身的方块计划刻数据和存档的流体任务数据将不可逆地丢失

When upgrading to this version from any version below v0.3.0-alpha.1, note that the scheduled tick data storage format changes permanently and cannot be downgraded losslessly. If a world played on v0.3.0-alpha.1 or later is downgraded to v0.2.7 or below, all of GeoCraft's own block scheduled tick data and the world's fluid task data will be lost irreversibly.

自 v0.3.0-alpha.1 版本开始,流体任务调度器不再支持清除超额流体任务。

Since v0.3.0-alpha.1, the fluid task scheduler no longer supports clearing excess fluid tasks.

自 v0.3.0-alpha.1 版本开始,若需要在 Cleanroom 模组加载器上使用 Forge 版本天圆地方,请注意禁用天圆地方自带的方块计划刻调度器,否则将出现兼容性问题!建议如非必要,否则请使用 Cleanroom 版本的天圆地方(文件后缀 CRL),后者可以让您在 Cleanroom 模组加载器上享受到天圆地方的全部功能。

Since v0.3.0-alpha.1, if you need to run the Forge build of GeoCraft on the Cleanroom mod loader, make sure to disable GeoCraft's own block tick scheduler — otherwise compatibility problems will occur! Unless necessary, we recommend using the Cleanroom build of GeoCraft (file suffix CRL) instead, which gives you the full functionality of GeoCraft on the Cleanroom mod loader.

若出现类似以下的报错信息,则说明您可能在 Cleanroom 模组加载器上错误地使用了 Forge 版本的天圆地方,并使用了天圆地方自带的方块计划刻调度器:

If you see an error like the following, you have likely mistakenly used the Forge build of GeoCraft on the Cleanroom mod loader with GeoCraft's own block tick scheduler enabled:

``` Description: Exception in server tick loop

java.lang.ExceptionInInitializerError at moe.qingu.nickel.nbt.NBTUtils.getLongArrField(NBTUtils.java:66) at moe.qingu.nickel.nbt.NBTUtils.<clinit>(NBTUtils.java:57) at moe.qingu.geocraft.world.scheduler.packed.PackedBlockTickDatum.deserializeNBTV2Packed(PackedBlockTickDatum.java:162) at moe.qingu.geocraft.world.scheduler.packed.PackedBlockTickDatum.deserializeNBT(PackedBlockTickDatum.java:123) at moe.qingu.geocraft.world.scheduler.packed.PackedBlockTickDatum.deserializeNBT(PackedBlockTickDatum.java:56) at net.minecraftforge.common.capabilities.CapabilityDispatcher.deserializeNBT(CapabilityDispatcher.java:135) at net.minecraft.world.chunk.storage.AnvilChunkLoader.func_75823_a(AnvilChunkLoader.java:489) at net.minecraft.world.chunk.storage.AnvilChunkLoader.checkedReadChunkFromNBT__Async(AnvilChunkLoader.java:131) at net.minecraft.world.chunk.storage.AnvilChunkLoader.loadChunk__Async(AnvilChunkLoader.java:94) at net.minecraftforge.common.chunkio.ChunkIOProvider.run(ChunkIOProvider.java:70) at net.minecraftforge.common.chunkio.ChunkIOExecutor.syncChunkLoad(ChunkIOExecutor.java:92) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:117) at net.minecraft.world.gen.ChunkProviderServer.func_186028_c(ChunkProviderServer.java:86) at net.minecraft.world.gen.ChunkProviderServer.func_186025_d(ChunkProviderServer.java:135) at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:355) at net.minecraft.server.integrated.IntegratedServer.func_71247_a(IntegratedServer.java:160) at net.minecraft.server.integrated.IntegratedServer.func_71197_b(IntegratedServer.java:175) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:512) at java.base/java.lang.Thread.run(Thread.java:1474) Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: moe.qingu.nickel.util.reflect.HandlerFieldAccessor at moe.qingu.nickel.util.reflect.FieldAccessor.<clinit>(FieldAccessor.java:57) ... 19 more Caused by: java.lang.ClassNotFoundException: moe.qingu.nickel.util.reflect.HandlerFieldAccessor at top.outlands.foundation.boot.ActualClassLoader.findClass(ActualClassLoader.java:262) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:557) at top.outlands.foundation.boot.ActualClassLoader.loadClass(ActualClassLoader.java:273) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at java.base/java.lang.Class.forName(Class.java:458) at moe.qingu.nickel.util.reflect.FieldAccessor.<clinit>(FieldAccessor.java:53) ... 19 more Caused by: java.lang.ClassNotFoundException at top.outlands.foundation.boot.ActualClassLoader.findClass(ActualClassLoader.java:245) ... 26 more

</div>

---

*本更新日志的英文均在 AI 辅助下完成翻译,如有疑问请以中文原文为准。*

*The English text in this changelog was translated with AI assistance. In case of any discrepancy, the original Chinese text shall prevail.*

This mod has no additional files