自定义生物群系和世界类型
在这节中,我们将来学习如何添加个自定义的生物群系江门泡沫板胶价格,
和结构类似,先我们的新建个类,继承原版的生物群系。
public class ObsidianBiome extends Biome {
protected ObsidianBiome(Builder biomeBuilder) {
super(biomeBuilder);
this.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Feature.ORE.withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, Blocks.GOLD_ORE.getDefaultState(), 9)).withPlacement(Placement.COUNT_RANGE.configure(new CountRangeConfig(2, 32, 32, 8))));
this.addSpawn(EntityClassification.AMBIENT, new SpawnListEntry(EntityType.WITHER_SKELETON, 3, 5, 1));
DefaultBiomeFeatures.addCarvers(this);
}
}
可以看到这里的内容非常的简单,不过就是给我的的生物群系添加Feature子类的,之前已经写过自然生成的大对这些法并不陌生。唯个值得说的是DefaultBiomeFeatures,原版在这里定义了些预先设置好的Feature、Structure、Carvers和Spawn,大可以直接调用里面自带的法。
接下来就是注册我们的生物群系
public class BiomeRegistry {
public static final DeferredRegister<Biome> BIOMES = new DeferredRegister<>(ForgeRegistries.BIOMES, "neutrino");
public static RegistryObject<ObsidianBiome> obsidianBiome = BIOMES.register("obsidian_biome", () -> {
return new ObsidianBiome(new Biome.Builder().category(Biome.Category.PLAINS)
.surfaceBuilder(SurfaceBuilder.DEFAULT,
new SurfaceBuilderConfig(Blocks.OBSIDIAN.getDefaultState(), Blocks.STONE.getDefaultState(), Blocks.END_STONE.getDefaultState())
)
.scale(3f)
.downfall(.5f)
.precipitation(Biome.RainType.SNOW)
.depth(1f)
.temperature(.7f)
.waterColor(xca15)
.waterFogColor(x632ebf)
);
});
}
这里的内容也类似,因为这里的参数过多,很多参数也没发简单的解释,这里就不多加解释为什么了。我建议大自行参照原版的实现填写内容。
当然别忘了在Mod主类中,将BIOMES注册到Mod总线中。
创建完成之后,接下来就是将我们的生物群系添加到主世界的世界生成中。
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
public class CommonSetupEvent {
@SubscribeEvent
public static void onCommonSetup(FMLCommonSetupEvent event) {
BiomeManager.addBiome(BiomeManager.BiomeType.COOL, new BiomeManager.BiomeEntry(BiomeRegistry.obsidianBiome.get(), 1));
}
}
这里我们在FMLCommonSetupEvent世界中江门泡沫板胶价格,调用BiomeManager.addBiome添加了我们的生物群系,BiomeManager.BiomeEntry构造法的二个参数是权重,这里我们填的点让我们的生物群系容易被找到。
开游戏寻找下,万能胶生产厂家应该就能看见我们的生物群系了。
但是寻找生物群系有时候是非常麻烦的事情,我们可以创建个WorldType来帮助我们调试生物群系。所谓的WorldType就是原版中的默认、平坦、巨大化等。
当然,创建个自定义的也非常简单
public class ObsidianWorldType extends WorldType {
public ObsidianWorldType() {
super("neutrino_type");
}
@Override
public ChunkGenerator<?> createChunkGenerator(World world) {
OverworldGenSettings settings = new OverworldGenSettings();
SingleBiomeProvider singleBiomeProvider = new SingleBiomeProvider(new SingleBiomeProviderSettings(world.getWorldInfo()).setBiome(BiomeRegistry.obsidianBiome.get()));
return new OverworldChunkGenerator(world, singleBiomeProvider, settings);
}
}
这里我们直接继承了WorldType类。
它的构造法里需要填入个名字,请注意这个名字不能过16个字符
然后就是他的createChunkGenerator法,这里需要返回个ChunkGenerator,因为我们希望能像原版主世界的样的地形起伏,所以返回的是OverworldChunkGenerator。因为我们只需要生成种生物群系,所以在这里用了 SingleBiomeProvider(单生物群系提供器)。还有个OverworldGenSettings就没什么好讲的了。
创建完成之后,我们只需要在你的主类中,创建个变量实例化它就行。
@Mod("neutrino")
public class Neutrino {
public static final ObsidianWorldType obsidianWorldType = new ObsidianWorldType();
public Neutrino() {
...代码省略...
此时开游戏,你应该就能看见新的世界类型了
奥力斯 保温护角专用胶批发 联系人:王经理 手机:13903175735(微信同号) 地址:河北省任丘市北辛庄乡南代河工业区
创建个存档试试吧。
源代码
相关词条:储罐保温 异型材设备 钢绞线厂家 玻璃丝棉厂家 万能胶厂家1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,均表示默认详情页的描述,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。
