0

编辑:问题:开始时一切运行顺利,但是当我在游戏中创建一个新世界时,矿石没有生成(通过使用/fill ~ ~ ~ ~5 0 ~5 air replace stone)。

我在尝试在 1.16.5 ( Fabric )中注册矿石时遇到问题

一些注意事项:

  1. 矿石块已正确注册,可以在游戏中放置和查看,只是我目前没有纹理。
  2. 我还没有矿石的战利品表(可能这就是问题所在?)
  3. 我不确定 mixin 是否已正确注册和处理,但是当我删除static标签时,它会给我一个错误。
  4. 生物群系修改 API 在 1.16.5 上似乎无法正常工作。如果有办法在 1.16.5 中使用 API,我更喜欢 API 而不是 mixins。

创建和注册矿石的代码片段。

package com.code2828.mods;
public class CheMC implements ModInitializer {

    public static final Block spodumene_ORE = new Block(FabricBlockSettings.of(Material.STONE).strength(h2h(6.8)));
    public static final ConfiguredFeature<?, ?> ORE_SPODUMENE_Ov = Feature.ORE
        .configure(new OreFeatureConfig(OreFeatureConfig.Rules.BASE_STONE_OVERWORLD, spodumene_ORE.getDefaultState(), 2))
        .decorate(Decorator.RANGE.configure(new RangeDecoratorConfig(0, 0, 128)))
        .spreadHorizontally()
        .repeat(26); // number of veins per chunk

    public static float h2h(double realHardness) { // returns: float minecraftHardness
        return (float) Math.pow((Math.E / 2.0) + 0.05, realHardness);
    }

    @Override
    public void onInitialize() {
        Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, new Identifier("chemc", "ore_spodumene_ov"), ORE_SPODUMENE_Ov);
    }
}

混音:

package com.code2828.mods.mixin;
@Mixin(DefaultBiomeFeatures.class)
public class DefaultBiomeFeaturesMixin {

    @Inject(method = "addDefaultOres(Lnet/minecraft/world/biome/GenerationSettings$Builder;)V", at = @At("TAIL"))
    private static void addDefaultOres(GenerationSettings.Builder builder, CallbackInfo ci) {
        builder.feature(GenerationStep.Feature.UNDERGROUND_ORES, CheMC.ORE_SPODUMENE_Ov);
    }
}
4

0 回答 0