跳至主要內容

KubeJS Create 所提供的 `CreateEvents`

芒果凍布丁Prunoideae原創2025年5月25日大约 2 分鐘

重要

下列事件皆為啟動腳本,故皆須放置於 startup_scripts/ 中,且皆不可熱重新載入。

蒸氣鍋爐熱量源 - boilerHeatHandler

CreateEvents.boilerHeatHandler((event) => {
  // 熱量等級說明:
  // -1:此方塊不提供任何形式的熱量。
  // 0 :此方塊提供被動熱量。(例如未加燃料的烈焰使者燃燒室)
  // 1 :此方塊提供 1 單位的熱量(在狀態欄中顯示 1 個綠色條,例如加燃料的烈焰使者燃燒室)
  // 2 :此方塊提供 2 單位的熱量(例如烈焰蛋糕+烈焰使者燃燒室)
  // X :此方塊提供 X 單位的熱量,狀態欄中顯示 X 個綠色條
  //
  // 注意,回調函數僅在鍋爐有更新信號時調用。
  // 例如相鄰方塊的狀態變化、破壞或放置等。

  // 添加單個方塊的加熱器。
  // 回調函數的參數類型為 BlockContainerJS。
  event.add("minecraft:diamond_block", (block) => {
    return 2;
  });

  // 添加方塊篩選器的加熱器。
  event.addAdvanced("#minecraft:logs", (block) => {
    if (block.id === "minecraft:oak_log") {
      return 1;
    } else {
      return 2;
    }
  });
});

管道流體效果 - pipeFluidEffect

CreateEvents.pipeFluidEffect((event) => {
  // 添加液體處理器,支援 FluidIngredient。

  event.add(
    Fluid.water(), // 流體
    (pipe, fluid) => {
      const { world } = pipe;
      if (world.server.tickCount % 5 != 0) return;

      world.getEntitiesWithin(pipe.AOE).forEach((entity) => {
        if (entity.living) {
          entity.heal(5);
        }
      });
    }
  );
});

注液器注液方塊 - spoutHandler

CreateEvents.spoutHandler((event) => {
  // 創建注液器處理器,需要提供 ID,因為這裡沒有辦法生成一個一致的 UUID。
  //
  // 注液器每個 tick 都會以 simulate = true 的方式調用處理器,如果返回值 > 0,則注液器將開始注液動畫,
  // 動畫結束時,處理器將再次以 simulate = false 的方式調用。
  //
  // 返回的整數表示此操作應該消耗多少單位液體。
  // 單位視模組載入器而不同,Forge = 1MB、Fabric = 1 unit
  // 1 B(Bucket,桶) = 1000 MB(MiliBucket,千分之一桶) = 81000 unit(單位流體)

  event.add(
    "kubejs:obsidian", // ID
    "minecraft:lava", // 目標方塊
    (block, fluid, simulate) => {
      if (fluid.id === Fluid.water().id && fluid.amount >= 100) {
        if (!simulate) {
          block.set("minecraft:obsidian");
        }
        return 100;
      }
      return 0;
    }
  );
});
上次編輯於: 2025/5/25 上午2:00:55
貢獻者: Mango