编辑:问题:开始时一切运行顺利,但是当我在游戏中创建一个新世界时,矿石没有生成(通过使用/fill ~ ~ ~ ~5 0 ~5 air replace stone
)。
我在尝试在 1.16.5 ( Fabric )中注册矿石时遇到问题
一些注意事项:
- 矿石块已正确注册,可以在游戏中放置和查看,只是我目前没有纹理。
- 我还没有矿石的战利品表(可能这就是问题所在?)
- 我不确定 mixin 是否已正确注册和处理,但是当我删除
static
标签时,它会给我一个错误。 - 生物群系修改 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);
}
}