multitileentity - CHanzyLazer/gregtech6-CH_Edition GitHub Wiki

修改 GT 实体方块

实际是对 src/main/java/gregtech/loaders/b/loader_MultiTileEntities 中的加载实体方块进行修改。 可以在 .minecraft/config/gregtechCH/multiTileEntity.json 文件中实现对 GT 的实体方块(MultiTileEntity)的修改(replace)和移除(remove),甚至添加(append)自定义的实体方块。

修改

replace 项中添加条目即可实现对 GT 实体方块的修改,这里实际是使用一种新的实体方块替换了旧的实体方块。为了实现修改的效果,提供了缺省值的支持,即对于没有设置的参数则会使用原本实体方块的参数来进行替代。

支持的修改参数有:

  • ID:需要修改的实体方块的 ID,必须
  • localised:实体方块的英文名称
  • categoricalName:实体方块的分类名称
  • creativeTabID:实体方块在创造模式选项卡的位置 ID
  • class:实体方块的类名称,需要完整类名
  • blockMetaData:这里用于设置实体方块的挖掘等级
  • stackSize:实体方块的最大堆叠数目
  • block:实体方块的方块种类,可选 "metal", "metalChips", "metalWires", "machine", "wooden", "bush", "stone", "wool", "TNT", "utilMetal", "utilStone", "utilWood", "utilWool", "hive"
  • parametersMerge:用于合并的参数(NBT),和旧的名称一致的将其替换成新的,旧的没有的会进行添加,json 对象 格式,例如
{
  "gt.output":128, 
  "gt.eff":10000
}
  • parametersRemove:需要删除的参数名称(NBT),理论上不常用,json 数组 格式,例如
["gt.output", "gt.eff"]

GT 的实体方块的许多参数都使用 NBT 格式存储,其中参数(NBT)的名称即为对应的 NBT 名称,可以查看源码文件 src/main/java/gregtech/loaders/b/loader_MultiTileEntities 来查看此实体方块拥有哪些 NBT 名称,以及在 src/main/java/gregapi/data/CS 中查看对应 NBT 名称的具体字符串定义。

例子:

{
  "replace":[
    {
      "ID":1100,
      "parametersMerge":{
        "gt.output":128, 
        "gt.eff":10000
      },
      "recipe":["BBB", "B", "Blocks:brick_block"]
    },
    {
      "ID":9221,
      "stackSize":64,
      "parametersMerge":{
        "gt.maxdurability":4800000000
      }
    }
  ]
}

这个例子将铅固体燃烧室(ID:1100)的输出修改成了 128 HU/t,效率调整到了 100% (这里和源码的表达方式统一,10000 对应 100% 效率),并将合成表修改成了只需要三个砖块就可以合成; 将 U-235 燃料棒(ID:9221)的最大堆叠数目调整到了 64,并且将耐久度增加到了 4800000000(翻了 4 倍)。

移除

remove 项中添加对应的 ID 即可移除相应的实体方块的注册。注意会直接取消相关的注册,因此如果有在注册外添加的合成会得到这个实体方块则会得到一个错误的透明物品。而需要此物品的合成表依旧会保留,同样需要的是这个错误的透明物品。 例子:

{
  "remove":[9220, 9320]
}

这个例子将移除 U-238 燃料棒(ID:9220)和其枯竭的燃料棒(ID:9320)

添加

appendBefore 或者 appendAfter 项中添加条目即可实现添加自定义的实体方块,由于不常用这里不提供缺省值的支持,也就是所有的条目都必须要设置。其中 appendBefore 表示在给定的 ID 前添加自定义的实体方块,appendAfter 表示在给定的 ID 后添加自定义的实体方块。

支持的修改参数有:

  • beforeIDafterID:添加的实体在哪个实体的前面或后面,必须
  • ID:需要修改的实体方块的 ID,必须
  • localised:实体方块的英文名称,默认为 null,必须(不设置合理值会报错)
  • categoricalName:实体方块的分类名称,默认为 null
  • creativeTabID:实体方块在创造模式选项卡的位置 ID,默认为 20001(一般机器)
  • class:实体方块的类名称,需要完整类名,默认为 "gregapi.tileentity.machines.MultiTileEntityBasicMachine"(一般机器)
  • blockMetaData:这里用于设置实体方块的挖掘等级,默认为 0
  • stackSize:实体方块的最大堆叠数目,默认为 64
  • block:实体方块的方块种类,可选 "metal", "metalChips", "metalWires", "machine", "wooden", "bush", "stone", "wool", "TNT", "utilMetal", "utilStone", "utilWood", "utilWool", "hive",默认为 "machine"
  • parameters:实体方块的参数(NBT)json 对象 格式,默认为空
  • recipe:实体方块的合成表,格式可以参看 合成表介绍,默认为空(不可合成)

例子:

{
  "appendBefore":[
    {
      "beforeID":20001,
      "localised":"Oven (Any Stone)",
      "categoricalName":"Basic Machines",
      "ID":20000,
      "creativeTabID":20001,
      "class":"gregapi.tileentity.machines.MultiTileEntityBasicMachine",
      "blockMetaData":1,
      "stackSize":16,
      "block":"machine",
      "parameters":{
        "gt.material":"AnyStone",
        "gt.hardness":4.0,
        "gt.resistance":4.0,
        "gt.input":8,
        "gt.texture":"oven",
        "gt.energy.accepted":"ENERGY.HEAT",
        "gt.recipemap":"mc.recipe.furnace",
        "gt.invsidein":4,
        "gt.invsideautoin":2,
        "gt.invsideout":16,
        "gt.invsideautoout":4,
        "gt.tanksideout":63,
        "gt.energy.accepted.sides":1
      },
      "recipe":["wMh", "BCB", "MMM", "M", "OreDictItemData:blockSolidAnyStone", "C", "OreDictItemData:plateDoubleAnyCopper", "B", "Blocks:brick_block"]
    }
  ],
  "appendAfter":[
    {
      "afterID":20004,
      "localised":"Oven (Any Tungsten)",
      "categoricalName":"Basic Machines",
      "ID":20005,
      "creativeTabID":20001,
      "class":"gregapi.tileentity.machines.MultiTileEntityBasicMachine",
      "blockMetaData":3,
      "stackSize":16,
      "block":"machine",
      "parameters":{
        "gt.material":"AnyTungsten",
        "gt.hardness":12.5,
        "gt.resistance":12.5,
        "gt.input":4096,
        "gt.texture":"oven",
        "gt.energy.accepted":"ENERGY.HEAT",
        "gt.recipemap":"mc.recipe.furnace",
        "gt.invsidein":4,
        "gt.invsideautoin":2,
        "gt.invsideout":16,
        "gt.invsideautoout":4,
        "gt.tanksideout":63,
        "gt.energy.accepted.sides":1
      },
      "recipe":["wMh", "BCB", "M", "OreDictItemData:casingMachineAnyTungsten", "C", "OreDictItemData:plateDoubleAnyCopper", "B", "Blocks:brick_block"]
    }
  ]
}

在这个例子中在青铜熔炉(ID:20001)前添加了一个石头熔炉并分配了 20000 作为其 ID,输入为 8 HU/t;在碳化钨熔炉(ID:20004)后添加了一个钨熔炉,并分配了 20005 作为其 ID,输入为 4096 HU/t。 注意分配的 ID 不能是已有的实体方块的 ID,"gt.invsidein" 等设置输入输出方向的 NBT 直接参照的其他熔炉进行设置。

DEBUG

可以在 .minecraft/logs/gregtech.log 中查看修改是否成功(关键词:MTE REGISTRY ERROR)。

全部放在一起的例子:

{
  "replace":[
    {
      "ID":1100,
      "parametersMerge":{
        "gt.output":128, 
        "gt.eff":10000
      },
      "recipe":["BBB", "B", "Blocks:brick_block"]
    },
    {
      "ID":9221,
      "stackSize":64,
      "parametersMerge":{
        "gt.maxdurability":4800000000
      }
    }
  ],
  "remove":[
    9220, 9320
  ],
  "appendBefore":[
    {
      "beforeID":20001,
      "localised":"Oven (Any Stone)",
      "categoricalName":"Basic Machines",
      "ID":20000,
      "creativeTabID":20001,
      "class":"gregapi.tileentity.machines.MultiTileEntityBasicMachine",
      "blockMetaData":1,
      "stackSize":16,
      "block":"machine",
      "parameters":{
        "gt.material":"AnyStone",
        "gt.hardness":4.0,
        "gt.resistance":4.0,
        "gt.input":8,
        "gt.texture":"oven",
        "gt.energy.accepted":"ENERGY.HEAT",
        "gt.recipemap":"mc.recipe.furnace",
        "gt.invsidein":4,
        "gt.invsideautoin":2,
        "gt.invsideout":16,
        "gt.invsideautoout":4,
        "gt.tanksideout":63,
        "gt.energy.accepted.sides":1
      },
      "recipe":["wMh", "BCB", "MMM", "M", "OreDictItemData:blockSolidAnyStone", "C", "OreDictItemData:plateDoubleAnyCopper", "B", "Blocks:brick_block"]
    }
  ],
  "appendAfter":[
    {
      "afterID":20004,
      "localised":"Oven (Any Tungsten)",
      "categoricalName":"Basic Machines",
      "ID":20005,
      "creativeTabID":20001,
      "class":"gregapi.tileentity.machines.MultiTileEntityBasicMachine",
      "blockMetaData":3,
      "stackSize":16,
      "block":"machine",
      "parameters":{
        "gt.material":"AnyTungsten",
        "gt.hardness":12.5,
        "gt.resistance":12.5,
        "gt.input":4096,
        "gt.texture":"oven",
        "gt.energy.accepted":"ENERGY.HEAT",
        "gt.recipemap":"mc.recipe.furnace",
        "gt.invsidein":4,
        "gt.invsideautoin":2,
        "gt.invsideout":16,
        "gt.invsideautoout":4,
        "gt.tanksideout":63,
        "gt.energy.accepted.sides":1
      },
      "recipe":["wMh", "BCB", "M", "OreDictItemData:casingMachineAnyTungsten", "C", "OreDictItemData:plateDoubleAnyCopper", "B", "Blocks:brick_block"]
    }
  ]
}