介绍
简单的洗矿 API,允许通过事件定义物品扔进炼药锅后返回的物品。
基于 1.19.4 开发,但是理论上来讲 1.19.X 应该都能通用(范围可能还更广)。
该库已被整合进 CraftTech-API ,故不再独立维护。
注册
// 一个最基本的例子
Washable.EVENT.register((world, state, pos, stack) -> {
// 检查坩埚内是否盛水
if(BuiltInRegistries.BLOCK.getKey(state.getBlock()).getPath().equals("water_cauldron")){
// 检测物品是否为铁矿
if(stack.getItem() == Items.IRON_ORE){
// 将其替换为铁块
return new ItemStack(Items.IRON_BLOCK, stack.getCount());
// 检测物品是否为金苹果
}else if(stack.getItem() == Items.GOLDEN_APPLE){
// 减少水量
level.setBlock(pos, state.setValue(LayeredCauldronBlock.LEVEL, 0), state.getValue(LayeredCauldronBlock.LEVEL) - 1);
level.updateNeighborsAt(pos, block);
// 将其替换为附魔金苹果
return new ItemStack(Items.ENCHANTED_GOLDEN_APPLE, stack.getCount());
}
// 检查坩埚内是否盛细雪
}else if(BuiltInRegistries.BLOCK.getKey(state.getBlock()).getPath().equals("powder_snow_cauldron")){
// 检测物品是否为烤土豆
if(stack.getItem() == Items.BAKED_POTATO){
// 将其替换为普通土豆
return new ItemStack(Items.POTATO, stack.getCount());
// 检测物品是否为下界合金锭
}else if(stack.getItem() == Items.NETHERITE_INGOT){
// 将其替换为下界合金碎片
return new ItemStack(Items.NETHERITE_SCRAP, stack.getCount());
}
}
// 如果不需要更改物品,则返回null。
// 如果需要让物品消失,则返回ItemStack.EMPTY。
return null;
});