本篇教程由作者设定未经允许禁止转载。

GTCEu为玩家提供了一套极为简便的自定义矿脉方法。而且修改后能正确的反映在jei的矿物系统里,非常方便。

打开位于config\gregtech\dimensions.json,该文件存储的是gt矿脉所涉及的维度的名字,这样会显示在维度ID的后边,如0(overworld),不写也没事,我们这里截取一段。

{
      "dimID": 0,
      "dimName": "Overworld"
    },

显而易见的,该段描述了主世界维度,主世界的维度id是0。

我们也可以在这个文件里添加其他维度,例如:

{
      "dimID": 7,
      "dimName": "Twilight Forest"
    },

显而易见的,这是暮色森林的维度,在游戏里边就看到7(Twilight Forest)了。

打开config\gregtech\worldgen\vein文件夹,这里存放着不同维度的矿脉配置,gt已经提供了主世界,下界,末地三个文件夹,我们这里依葫芦画瓢,为了方便后续维护,文件夹命名建议是对应的维度。

在这里假如我们想在星系月球维度(id为-28)添加一个铝土矿矿脉,先新建一个moon(叫什么不重要,主要是看得懂便于分类,建议使用字母命名)文件夹。再打开GT已经配置好的铝土矿矿脉示例(原版的gt铝土矿位于末地,需要找一下),现在简单的分析一下。

{
  "weight": 40,                                      //权重
  "density": 0.25,
  "min_height": 10,                               //矿脉生成的位置
  "max_height": 80,
  "vein_populator": {
    "type": "surface_rock",                    //矿脉类型,普通矿物或者宝石类
    "material": "aluminium"
  },
  "dimension_filter": [                          //配置的维度
    "name:moon.moon"  或者  dimension_id:  -28         //格式为 dimension_id:对应维度id(在这里已经修改)
  ],
  "generator": {                                   //矿脉细节
    "type": "layered",                            //矿脉是分层的
    "radius": [                                       //矿脉的半径,矿石密度
      14,
      16
    ]
  },
  "filler": {
    "type": "layered",                            //对于分层矿脉,需要配置其上,中,下层,以及散乱生成的矿物
    "values": [
      {
        "primary": "ore:bauxite"            //在这里我们可以添加自己想要的矿物,随便修改
      },
      {
        "secondary": "ore:ilmenite"
      },
      {
        "between": "ore:aluminium"
      },
      {
        "sporadic": "ore:ilmenite"
      }
    ]
  }
}

GT已经拥有主世界三个维度的方块信息,比如花岗岩矿石以及末地石矿石。与主世界不同的是,月球的底下生成的是月球石头,因此我们需要添加月球石头的基底来生成矿脉。打开script文件夹,新建文件(本魔改需要模组DevTech支持,目前不支持ceu最新版本)。

import mods.gregtech.material.MaterialRegistry;
import mods.gregtech.material.MaterialBuilder;
import mods.gregtech.material.Material;
import mods.gregtech.ore.OrePrefix;
import mods.gregtech.StoneType;

MaterialBuilder(9501, "moon_stone").dust().color(0x636362).build();                       //注册ID,注意不要重复
val oreMoonStone as OrePrefix = OrePrefix.registerOrePrefix("oreMoonStone", 1);
oreMoonStone.addSecondaryMaterial(<material:moon_stone>, 1);
StoneType.create(16, "moon_stone", "oreMoonStone", <material:moon_stone>, "galacticraftcore:basic_block_moon:basictypemoon=moon_stone");

此处是为了让GT矿脉能够识别月球石头作为基地并且在正常生成矿脉,其余维度替换名称即可。

这样我们就把铝土矿移动到了月球维度,也可以在jei里查询到对应变化,是不是非常方便呢?

最后,请打开gtceu的cfg的配置界面,将worldgen options里的allUniqueStoneTypes改为true,这样你的矿石就可以在gt的终端里显示了,也可以在jei里查询到相应的配方。

另一种写法,在你的矿脉文件内添加如下代码:

   "generation_predicate":["block:galacticraftcore:basic_block_moon:basictypemoon=moon_stone"],

这里表示矿石会自动以石头基底替换月球石头。

当然,你也可以使用:

  "generation_predicate":[any],

来替换所有方块,包括空气,这里有极大概率会让你的矿石生成在空气内!!

关于给你的矿石汉化方法,新注册的矿石没有名字,我们需要做如下修改:

打开lang文件,加入以下两条。

material.moon_stone=月球

item.material.oreprefix.oreMoonStone=月球%s

即可

gt的流体矿脉配置,相较于矿石,虚拟油田的配置更加简单,举一个简单的例子即可。

{
  "weight": 15,
  "name": "Heavy Oil Deposit",
  "yield": {
    "min": 200,                           // 油田的最大最小产量
    "max": 300
  },
  "depletion": {
    "amount": 1,
    "chance": 100,
    "depleted_yield": 20
  },
  "fluid": "oil_heavy",                  //油田里的液体
    "dimension_filter": [               //维度
    "name:planet.moon"
  ],
  "biome_modifier": {                  //生物群系
    "type": "biome_dictionary",
    "ocean": 5,
    "sandy": 10
  }
}