MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.12.2模组开发笔记/IRecipe接口详解:修订间差异

跳到导航 跳到搜索
这个方法用于判断合成原料是否“匹配上了”——换言之,就是判断玩家放入合成界面的物品及它们的摆放方式是否可以合成一个新物品。
 
这个方法传入了两个参数:第一个是InventoryCrafting类型的,你可以把这个类理解为“合成容器”,原版MC中合成容器有两种:一是工作台中9×9大小的合成容器,二是玩家背包里的4×4大小的合成容器;你可以从该参数中拿到合成容器的长、宽,以及该容器中放入的ItemStack。第二个参数是World类型的,代表玩家当前所处的world,world实例,这没什么好说的。
 
原版的ShapedRecipes和ShapelessRecipes类对于该方法的实现写的比较抽象,不过既然我们都要重新实现IRecipe了,不妨把这两个类抛开,把目光着眼于RecipeRepairItem这个类——看看这个类是怎么实现的该方法。
 
具体的代码实现,读者可以自行去查看,由于Minecraft EULA的限制,笔者就不在这里直接贴代码了,只说说大体的实现思路:
 
大致思路是:先创建了一个List<ItemStack>集合。再通过<code>inv.getSizeInventory()</code>拿到了放入合成容器中的ItemStack数量,再通过一个for循环把合成容器中的ItemStack添加到新定义的集合中去。这个时候读者可能就会想:判断一下该集合的长度是否等于2,不就可以返回boolean值了?是这样没错,不过我们还得加点判断——修复工具的这个配方中,工具种类总得相同吧!所以得加个ItemStack对应的Item两两之间是否相等的判断。因为Item对象是基于享元模式的,因此直接用<code>==</code>判断即可。
 
=== ItemStack getCraftingResult(InventoryCrafting inv) ===
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,258

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单