跳到正文

Create Heat JS

作者:XiaoHuNao

允许使用 KubeJS,自定义机械动力的热源方块和 HeatLevel。

收藏

截图

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。
# Create Heat JS ![icon.png](https://github.com/XiaoHuNao/CreateHeatJS/blob/1.20.1/src/main/resources/icon.png?raw=true) [![curseforge-badge]][curseforge-url] [![modrinth-badge]][modrinth-url] [![github-badge]][github-url]

允许使用 KubeJS 自定义 Create 的热源方块和热量等级。

添加配方时请使用 KubeJS Create Mod,并使用 .heatLevel() 方法设置热量等级。

示例

配方示例 配方示例

客户端脚本

ClientEvents.lang("en_us", (event) => {
    event.add("create.recipe.heat_requirement.blaze", "Blaze");
    event.add("create.recipe.heat_requirement.cryotheum", "Cryotheum");
    event.add("create_heat_js.heat_source.cryotheum.soul_lantern.tip", "needs to be in the nether dimension");
});

服务端脚本

ServerEvents.recipes((event) => {
  event.recipes.create.mixing("minecraft:diamond", "minecraft:coal_block").heatLevel("BLAZE");
  event.recipes.create.compacting("minecraft:water", "minecraft:blue_ice").heatLevel("CRYOTHEUM");
});

启动脚本

CreateHeatJS.registerHeatEvent(event => {
    // 1. Basic Example: Register custom heat source BLAZE
    event.registerHeat("BLAZE", builder => builder
        .color(0xFF4500)
        .addHeatSource("minecraft:magma_block")
        .satisfies("HEATED")
    )

    // 2. Advanced Example: Register CRYOTHEUM
    event.registerHeat("CRYOTHEUM", builder => builder
        .color(0x00BFFF)
        .addHeatSource("#minecraft:ice")

        // Conditional heat source: only works in the Nether
        .addHeatSourceIf((level, pos) => {
            if (level.dimension === "minecraft:the_nether") {
                return level.getBlockState(pos).block.id === "minecraft:soul_lantern"
            }
            return false
        },"minecraft:soul_lantern",Component.translatable("create_heat_js.heat_source.cryotheum.soul_lantern.tip"))

        .satisfies("HEATED")
        .satisfiesIf("SUPERHEATED", ctx => ctx.getRecipeId() == "create:mixing/lava_from_cobble"))

    // 3. Modify existing heat level
    event.modifyHeat("SUPERHEATED", data => data
        .satisfies("CUSTOM_LEVEL")
    )
})

/**
 * Heat Source String Format:
 * - blocktag:namespace:path (Block Tag)
 * - fluidtag:namespace:path (Fluid Tag)
 * - block:namespace:path (Block ID)
 * - fluid:namespace:path (Fluid ID)
 * - namespace:path[prop=value] (Block State)
 * - #namespace:path (Try to match Block or Fluid Tag)
 */

理解 satisfies 关系

基本概念

satisfies() 用于建立一种关系:如果 A.satisfies("B"),那么:

  • 热量等级为 A 的热源可以完成需要 B 的配方
  • 但热量等级为 B 的热源不能完成需要 A 的配方
A ──satisfies──> B    means    A ≥ B

Recipes need B ──> Can use A ✓
Recipes need A ──> Cannot use B ✗

示例:Create 原有的层级关系

Create 模组内置了以下关系:SUPERHEATED → HEATED

配方要求 烈焰人燃烧室(HEATED) 烈焰人燃烧室(SUPERHEATED)
HEATED ✓ ✓
SUPERHEATED ✗ ✓

这意味着:SUPERHEATED 可以满足 HEATED,但 HEATED 不能满足 SUPERHEATED。

自定义关系

当你编写:

event.registerHeat("BLAZE", builder => builder
    .satisfies("HEATED")
)

你创建的关系是:BLAZE → HEATED

配方要求 BLAZE 热源 烈焰人燃烧室(HEATED)
HEATED ✓ ✓
BLAZE ✓ ✗

三种关系类型

1. 垂直关系(线性层级)

// Create a chain: LEVEL3 → LEVEL2 → LEVEL1
event.registerHeat("LEVEL2", builder => builder.satisfies("LEVEL1"))
event.registerHeat("LEVEL3", builder => builder.satisfies("LEVEL2"))

结果:LEVEL3 可以满足 LEVEL2 和 LEVEL1(传递关系)

传递性(自动兼容)

这种关系具有传递性。如果你编写:

// Create already has: SUPERHEATED → HEATED
// You add: PYROTHEUM → SUPERHEATED
event.registerHeat("PYROTHEUM", builder => builder
    .satisfies("SUPERHEATED")
)

PYROTHEUM 也会自动满足 HEATED!无需再编写 .satisfies("HEATED")。

PYROTHEUM → SUPERHEATED → HEATED
    │           │           │
    └───────────┴───────────┘
         (all satisfied by PYROTHEUM)
配方要求 PYROTHEUM
HEATED ✓(自动满足)
SUPERHEATED ✓
PYROTHEUM ✓

2. 水平关系(独立系统)

// No satisfies() - completely independent
event.registerHeat("COLD", builder => builder
    .color(0x00BFFF)
    .addHeatSource("#minecraft:ice")
)

结果:COLD 是独立的,与 Create 的热量系统没有关联

3. 交叉关系

// CRYOTHEUM is independent but can also satisfy Create's conditions
event.registerHeat("CRYOTHEUM", builder => builder
    .satisfies("HEATED")  // Can satisfy HEATED recipes
    .satisfiesIf("SUPERHEATED", ctx => ctx.getRecipeId() == "specific_recipe")
)

结果:CRYOTHEUM 属于自己的层级,但也可以跨接到 Create 的层级体系中

关系示意图

Create's Original:
  NONE ← HEATED ← SUPERHEATED
         (satisfies)

Your Custom:
  BLAZE ──satisfies──> HEATED
  (BLAZE ≥ HEATED)

Combined:
  NONE ← HEATED ← SUPERHEATED
          ↑
          └── BLAZE

Recipes needing HEATED: Can use HEATED, SUPERHEATED, or BLAZE
Recipes needing BLAZE:  Can only use BLAZE

“`

[curseforge-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/curseforge_vector.svg [curseforge-url]: https://www.curseforge.com/minecraft/mc-mods/create-heat-js [modrinth-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/modrinth_vector.svg [modrinth-url]: https://modrinth.com/mod/create-heat-js [github-badge]: https://raw.githubusercontent.com/intergrav/devins-badges/v3/assets/cozy/available/github_vector.svg [github-url]: https://github.com/XiaoHuNao/CreateHeatJS

常见问题

Create Heat JS 支持哪些 Minecraft 版本?

Create Heat JS 支持 Minecraft Java 版 1.19.2–1.21.1,共 3 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

Create Heat JS 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

XiaoHuNao 的其他作品

查看全部 →