You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为多输入槽位的Minecraft方块实体实现Recipe匹配逻辑?

多输入槽Recipe匹配逻辑实现方案

你需要修改matches方法,让它遍历配方中的每一个原料,逐一对应检查容器里的输入槽位。以下是适配四个输入槽的实现代码:

@Override
public boolean matches(SimpleContainer pContainer, Level pLevel) {
    if(pLevel.isClientSide()) {
        return false;
    }

    // 先校验配方原料数量与输入槽数量是否匹配,避免数组越界
    if (this.recipeItems.size() != 4) {
        return false;
    }

    // 逐一检查每个配方原料是否匹配对应槽位的物品
    // 注意:这里的槽位索引(1、2、3、4)需要根据你实际的方块实体槽位定义调整
    return this.recipeItems.get(0).test(pContainer.getItem(1))
        && this.recipeItems.get(1).test(pContainer.getItem(2))
        && this.recipeItems.get(2).test(pContainer.getItem(3))
        && this.recipeItems.get(3).test(pContainer.getItem(4));
}

关键说明:

  • 槽位索引确认:代码里的pContainer.getItem(1)这类索引,要和你方块实体中定义的四个输入槽的实际索引一致。比如如果你的槽位是从0开始编号,就要改成0、1、2、3。
  • 无序配方适配(可选):如果你的配方允许四个原料放在任意输入槽(无需固定顺序),可以改用以下逻辑:
    @Override
    public boolean matches(SimpleContainer pContainer, Level pLevel) {
        if(pLevel.isClientSide()) {
            return false;
        }
    
        if (this.recipeItems.size() != 4) {
            return false;
        }
    
        // 收集所有输入槽的物品(假设四个槽是1-4)
        List<ItemStack> inputStacks = Arrays.asList(
            pContainer.getItem(1),
            pContainer.getItem(2),
            pContainer.getItem(3),
            pContainer.getItem(4)
        );
    
        // 遍历配方原料,逐一匹配并移除已匹配的输入物品
        List<ItemStack> remainingInputs = new ArrayList<>(inputStacks);
        for (Ingredient ingredient : this.recipeItems) {
            boolean matched = false;
            for (Iterator<ItemStack> iterator = remainingInputs.iterator(); iterator.hasNext();) {
                ItemStack stack = iterator.next();
                if (ingredient.test(stack)) {
                    iterator.remove();
                    matched = true;
                    break;
                }
            }
            if (!matched) {
                return false;
            }
        }
        return true;
    }
    
    这个逻辑会检查输入槽中是否包含所有配方原料,不限制原料放置的顺序。

内容的提问来源于stack exchange,提问作者321Nathango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:00:32