ページ 11

minecraft1.12.2 レシピ削除について

Posted: 2019年9月13日(金) 18:39
by Asphere
いつも使っていたフォーラムが閲覧できなくなっていたので質問します。
今1.12.2でmodを製作中なのですが、既存のレシピ(minecraftバニラに存在しているレシピ)の削除はできないのでしょうか。
かまどで鉄鉱石を焼いた時鉄インゴットがでなくなるようにしたいです。
よろしくおねがいします。

Re: minecraft1.12.2 レシピ削除について

Posted: 2019年9月17日(火) 18:33
by menndouyukkuri
MOD製作、それも1.12.2となるとそれ自体は全然わかりませんが、Minecraft非公式日本ユーザーフォーラムの各トピックははかなりの率でWayback Machineに保存されていました。
書き込みはもうできませんが、閲覧だけならいつものURLの先頭(httpより前)に

コード: 全て選択

https://web.archive.org/web/20190715130350/
とつけてやればできるかもしれません。

Re: minecraft1.12.2 レシピ削除について

Posted: 2019年9月21日(土) 05:31
by noriokun4649

コード: 全て選択

    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        ItemStack result;
        ItemStack iron = new ItemStack(Items.IRON_INGOT, 1, 0);
        ItemStack iron_ore = new ItemStack(Blocks.IRON_ORE, 1, 32767);
        Map<ItemStack, ItemStack> recipes = FurnaceRecipes.instance().getSmeltingList();
        Iterator<ItemStack> interator = recipes.keySet().iterator();
        while (interator.hasNext())
        {
            ItemStack recipe = interator.next();
            result = recipes.get(recipe);
            if (ItemStack.areItemStacksEqual(iron, result) && ItemStack.areItemStacksEqual(iron_ore,recipe))
            {
                interator.remove();
            }
        }
    }
こんな感じでどうでしょう。
FurnaceRecipesからかまどレシピのインスタンス取得して、レシピのリストを取得。
ItemStackの比較は難しいので、イテレータを使ってItemStackのStaticメソッドのareItemStacksEqualを使って、
かまどレシピの素材が鉄鉱石で、結果が鉄インゴットなものだけレシピ削除みたいな感じです。