StartupEvents.registry('block', event => {
// 自动注册对应种子,ID为example_crop_seed
event.create("example_crop","crop");
})
StartupEvents.registry('block', event => {
// ^(* ̄(oo) ̄)^ 作物
event.create("pig_plant","crop")
.age(3)// 从 0 开始
.crop(Item.of("minecraft:porkchop").withCount(2),0.3)
.crop(Item.of("minecraft:porkchop"))
.texture("0","minecraft:block/nether_wart_stage0") // 阶段0纹理
.texture("1","minecraft:block/nether_wart_stage1") // 阶段1纹理
.texture("2","minecraft:block/nether_wart_stage1") // 阶段2纹理
.texture("3","minecraft:block/nether_wart_stage2") // 阶段3纹理
.bonemeal(cb =>{
// 使用骨粉时生成一只猪
let b = cb.block;
let entity = cb.getLevel().createEntity("minecraft:pig")
entity.setPosition(b.getX(),b.getY() + 1,b.getZ())
entity.spawn()
return 0;
})
.item(s =>{
// 设置种子纹理
s.texture("minecraft:item/spawn_egg");
})
// 末影人(小黑子)作物
event.create("enderman_plant","crop")
.survive((blockState,level,blockPos) =>{
// 注1:这里的第一个形参和第三个形参指的都是作物方块的对应属性,而不是被种植的方块。
// 注2:.survive的回调不止是决定作物是否生长,它更决定了作物是否能存活。
// 在玩家使用种子种植作物,以及随机刻触发作物生长前都会触发一次survive的回调。
// 如果返回false,则作物无法被玩家种植,或者作物会被破坏并掉落它的种子(类似于在原版没有光照的环境下种植作物)。(TRAYER)
// 检测天气状态(非雨天)和被种植的方块ID。
let id = level.getBlockState(blockPos.below()).getBlock().getId()
return (!level.isRaining()) && id == "minecraft:sand";
}).growTick((blockState,level,blockPos) => {
// 注:与.survive不同,.growTick的回调则决定了作物在一次随机刻触发的生长中会有多少概率生长。
// 如果返回的数字大于0,则生长的概率=1 / (25 / 返回值 + 1),如果返回数字小于等于0,则会使用原版的计算方式。(TRAYER)
// 被随机刻选中时有1/2的概率生长。
return 25;
}).item(s =>{
// 设置种子纹理
s.texture("minecraft:item/spawn_egg");
})
})