Skip to content Skip to footer

21.3 扩展篇:熔炉配方及燃料值

1. 原版熔炉配方1.1. 燃料热值1. 原版熔炉配方

和原版工作台配方不一样,原版熔炉并没有使用专门的 Recipe 类或接口,而是单纯地使用 FurnaceRecipes 这样一个类来管理一个私有的 Map。实际上这个类使用这个 Map 的方式更像是在用 Collection>,毕竟 ItemStack 不满足用作 Map 的键的要求。实际上我们甚至不需要去管 FurnaceRecipes 这个类,因为 FML 出手了。

// inputItem 是输入的 ItemStack

// outputItem 是输出的 ItemStack

// expGained 是烧炼一次后玩家获得的经验数量,一定是 float。

GameRegistry.addSmelting(inputItem, outputItem, expGained);

1.1. 燃料热值

在 Forge patch 过原版熔炉后,燃料热值由一个事件决定:

@SubscribeEvent

public static void getVanillaFurnaceFuelValue(FurnaceFuelBurnTimeEvent event) {

if (check(event.getItemStack())) {

event.setBurnTime(100);

// 可以设定为 0。0 代表“这个物品不是燃料”,更准确地说是“这个物品燃烧时间是 0”。

// 可以设定为 -1。-1 代表“由原版逻辑来决定”。

// 可通过 event.getBurnTime() 获得当前决定的燃烧时间。

// 这个事件可以取消。取消意味着后续的 Event listener 将不会收到这个事件,进而

// 无法修改燃烧时间。

}

}

Copyright © 2088 U20世界杯_u20世界杯葡萄牙 - kwllb.com All Rights Reserved.
友情链接