跳至主要內容

ModifyJS

芒果凍布丁2025年3月29日大约 1 分鐘forge-1.20modifyItemBuilder

簡介

這是一個簡單的模組,最開始只是為了對一些 KubeJS 社區沒有怎麼實現的補充,現在只是實現了一些物品的渲染,可以視作對 RenderJS 的一些簡單補充,其次是添加了 Mekanism 模組化物品 的註冊類型。

重要

這個模組重寫了 BlockItemBuildercreateObject 方法,這可能會在方塊註冊期間引起問題。

示例

物品渲染

// 方塊物品渲染
const $Axis = Java.loadClass("com.mojang.math.Axis");

StartupEvents.registry("block", (event) => {
  event.create("test_block").item((pose) => {
    pose.isCustomRenderer(true);
    pose.renderByItem((itemStack, itemDisplayContext, poseStack, buffer, packedLight, packedOverlay) => {
      poseStack.pushPose();
      let time = Date.now();
      let angle = (time / 10) % 360;
      poseStack.mulPose($Axis.YP.rotationDegrees(angle));
      Client.itemRenderer
        .getBlockEntityRenderer()
        .renderByItem("blue_bed", itemDisplayContext, poseStack, buffer, packedLight, packedOverlay);
      poseStack.popPose();
    });
  });
});

// 如果你需要為普通物品添加物品渲染器,你應該使用建構器類型 `mjs_item`
StartupEvents.registry("item", (event) => {
  event.create("test_item", "mjs_item")
    .isCustomRenderer(true)
    .renderByItem((itemStack, itemDisplayContext, poseStack, buffer, packedLight, packedOverlay) => {
      Client.itemRenderer
        .getBlockEntityRenderer()
        .renderByItem("blue_bed", itemDisplayContext, poseStack, buffer, packedLight, packedOverlay);
    });
});

Mekanism 模組化物品


StartupEvents.registry("item", (event) => {
  const module_item = event.create("module_create_energy_unit", "mek_unit")

    // Mekanism 模組化物品
    module_item
      .setSlot("all")
      .tickServer((module, player) => {
        const maxEnergy = KJSModuleUtils.getMaxEnergy(module.getContainer());
        module.getEnergyContainer().setEnergy(maxEnergy);
      });
});

物品建立器修改


// 這個例子可以讓所有沒有重寫過 use 方法的物品 use 方法都變成終界珍珠的 use 方法。
// 注意:如果要修改指定的物品,需要檢查它的類是否重寫了需要修改的方法。

ItemEvents.modification((event) => {
  event.modifyItemBuilder("*", (itemBuilder) => {
    itemBuilder.use((level, player, hand) => {
      Item.of("ender_pearl").use(level, player, hand);
      return true;
    });
    return itemBuilder;
  });
});
上次編輯於: 2025/3/29 上午5:04:42
貢獻者: Mango