Jump to content

[1.18.2] Adding Recipe Type To Crafting Table


MultiCoder

Recommended Posts

I have a custom recipe type that has successfully registered into minecraft, however I am trying to get it to work on the standard crafting table as it doesn't need a custom table for it.

 

{
  "type": "randomfhings:potion_edible",
  "ingredients": [
    {
      "item" : "minecraft:glass",
      "data": ""
    },
    {
      "item" : "minecraft:diamond"
    }
  ],
  "output": {
    "item": "randomfhings:ruby",
    "count": 3
  }
}

This is a test recipe so far .

package org.multicoder.randomfhings.recipe;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import net.minecraft.core.NonNullList;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.GsonHelper;
import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.*;
import net.minecraft.world.level.Level;
import org.multicoder.randomfhings.RandomFhings;

import javax.annotation.Nullable;

public class PotionRecipe implements Recipe<CraftingContainer>
{
    private final ResourceLocation id;
    private final ItemStack output;
    private final NonNullList<Ingredient> input;

    public PotionRecipe(ResourceLocation id, ItemStack output, NonNullList<Ingredient> input) {
        this.id = id;
        this.output = output;
        this.input = input;
    }

    @Override
    public NonNullList<Ingredient> getIngredients()
    {
        return input;
    }

    @Override
    public boolean matches(CraftingContainer p_44002_, Level p_44003_)
    {
        return input.get(0).test(p_44002_.getItem(0));
    }

    @Override
    public ItemStack assemble(CraftingContainer p_44001_) {
        return output.copy();
    }

    @Override
    public boolean canCraftInDimensions(int p_43999_, int p_44000_) {
        return true;
    }

    @Override
    public ItemStack getResultItem() {
        return output;
    }

    @Override
    public ResourceLocation getId() {
        return id;
    }

    @Override
    public RecipeSerializer<?> getSerializer()
    {
        return Serializer.INSTANCE;
    }

    @Override
    public RecipeType<?> getType()
    {
        return Type.INSTANCE;
    }

    public static class Type implements RecipeType<PotionRecipe> {
        private Type() { }
        public static final Type INSTANCE = new Type();
        public static final String ID = "potion_edible";
    }

    public static class Serializer implements RecipeSerializer<PotionRecipe> {
        public static final Serializer INSTANCE = new Serializer();
        public static final ResourceLocation ID =
                new ResourceLocation(RandomFhings.MOD_ID,"potion_edible");

        @Override
        public PotionRecipe fromJson(ResourceLocation id, JsonObject json) {
            ItemStack output = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "output"));

            JsonArray ingredients = GsonHelper.getAsJsonArray(json, "ingredients");
            NonNullList<Ingredient> inputs = NonNullList.withSize(2, Ingredient.EMPTY);

            for (int i = 0; i < inputs.size(); i++) {
                inputs.set(i, Ingredient.fromJson(ingredients.get(i)));
            }

            return new PotionRecipe(id, output, inputs);
        }

        @Override
        public PotionRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf buf) {
            NonNullList<Ingredient> inputs = NonNullList.withSize(buf.readInt(), Ingredient.EMPTY);

            for (int i = 0; i < inputs.size(); i++) {
                inputs.set(i, Ingredient.fromNetwork(buf));
            }

            ItemStack output = buf.readItem();
            return new PotionRecipe(id, output, inputs);
        }

        @Override
        public void toNetwork(FriendlyByteBuf buf, PotionRecipe recipe) {
            buf.writeInt(recipe.getIngredients().size());
            for (Ingredient ing : recipe.getIngredients()) {
                ing.toNetwork(buf);
            }
            buf.writeItemStack(recipe.getResultItem(), false);
        }

        @Override
        public RecipeSerializer<?> setRegistryName(ResourceLocation name) {
            return INSTANCE;
        }

        @Nullable
        @Override
        public ResourceLocation getRegistryName() {
            return ID;
        }

        @Override
        public Class<RecipeSerializer<?>> getRegistryType() {
            return Serializer.castClass(RecipeSerializer.class);
        }

        @SuppressWarnings("unchecked") // Need this wrapper, because generics
        private static <G> Class<G> castClass(Class<?> cls) {
            return (Class<G>)cls;
        }
    }
}

This is my recipe type class and it is registered via a deferred register.

Edited by MultiCoder
Quick edit for ID
Link to comment
Share on other sites

Could you explain what you mean by that, just to clarify I am trying to create a recipe type that handles potions and I'm pretty sure the standard recipe type cannot handle nbt data within the recipe.

Do you mean use minecraft:crafting_shapeless as the type in the json file or am I misinterpreting 

Edited by MultiCoder
Appended
Link to comment
Share on other sites

Your Recipe needs to

extends CraftingRecipe

look at RecipeType.CRAFTING used by CraftingMenu.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 라이브 로또 포커대회™BCGAME88·COM# 수리남 로또 사이트 라이브 모나코 로또 경기 [본사문의 텔레 JBOX7]라이브 로또 ▶▼ 카지노펍 니제르 로또 동영상 라이브 말라위 라이브 로또 투어 [총판문의 카톡 JBOX7]라이브 로또 ℡㈜ 카지노펍 시리아 로또 게임 라이브 베트남 라이브 로또 모집 [각종 오피 커뮤니티 제작]라이브 로또 †◎ 전략 크라운카지노 로또 중계 라이브 모잠비크 라이브 로또 게임 [마케팅문의]라이브 로또 ▼& 업체 코트디부아르 로또 업체 라이브 겐팅하이랜드카지노 라이브 로또 사이트 [카지노본사]라이브 로또 ↗♨ 전략 앙골라 로또 여행 라이브 잠비아 라이브 로또 캐쉬게임 [스포츠본사]라이브 로또 ↘▣ 카지노펍 방글라데시 로또 홀덤바 라이브 북한 라이브 로또 유투브 [토토본사 문의]라이브 로또 ↑★ 사이트 리조트월드카지노 로또 리그 라이브 미크로네시아 라이브 로또 단톡방 [토토총판 구매]라이브 로또 ▲‡ 홀덤펍 남아프리카 로또 유투브 라이브 서아프리카 라이브 로또 캐쉬게임 [카지노총판]라이브 로또 ▣◑ 카지노펍 이비자그란카지노 로또 캐쉬게임 라이브 서아시아 라이브 로또 캐쉬게임 [야마토본사]라이브 로또 &☎ 게임장 동아시아 로또 싸이트 라이브 아르메니아 라이브 로또 싸이트 [바카라총판]라이브 로또 ↑☆ 카지노펍 솔로몬제도 로또 도박장 라이브 벨라루스 라이브 로또 토너먼트 [경마총판]우간다 로또 검증 미얀마 로또 단톡방 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 염리동호회 ▒BCGAME4·COM* 세곡동호회 불광동호회 장안동호회 외발산동호회 pjq95 시흥동호회 양산동호회 계동동호회 광주동호회 umm52 옥천동호회 합동동호회 진주동호회 중구동호회 ano52 고척동호회 역삼동호회 동소문동호회 잠원동호회 gin09 소격동호회 홍익동호회 상왕십리동호회 문래동호회 ylp47 성수동호회 재동동호회 금호동호회 낙원동호회 qqb48 정동동호회 대치동호회 충정로동호회 시흥동호회 dis65 주교동호회 대흥동호회 문래동호회 구리동호회 ouv86 대림동호회 의정부동호회 창천동호회 묵동동호회 cie17 장지동호회 영암동호회 오금동호회 대조동호회 prq80 의정부동호회 서귀포동호회 역삼동호회 양천동호회 okb95 행당동호회 수송동호회 쌍문동호회 대조동호회 nhv83 신월동호회 내발산동호회 충무동호회 세곡동호회 udf30 항동동호회 원지동호회 청담동호회 안동동호회 xxc84 수하동호회 동두천동호회 길동동호회 함안동호회 gdc22 양산동호회 도곡동호회 옥수동호회 강일동호회 vta01 홍익동호회 청주동호회 홍제동호회 저동동호회 jic36 용답동호회 속초동호회 의왕동호회 상암동호회 buu57 이태원동호회 양천동호회 금산동호회 갈현동호회 dpc37 원서동호회 오산동호회 신사동호회 성내동호회 yik89 장안동호회 다동동호회 울산동호회 정읍동호회 von38 수서동호회 청파동호회 주성동호회 명일동호회 xsi66 동작동호회 석관동호회 본동동호회 창천동호회 bss88
    • 아시아 파칭코 추천▼BCGAME88·COM◎ MGM카지노 파칭코 본사 아시아 아랍에미리트 파칭코 방송 [본사문의 텔레 JBOX7]아시아 파칭코 ▨▤ 게임장 벨기에 파칭코 동영상 아시아 크로아티아 아시아 파칭코 영상 [총판문의 카톡 JBOX7]아시아 파칭코 ●↔ 본사 네비스 파칭코 쿠푼 아시아 선시티 아시아 파칭코 싸이트 [각종 오피 커뮤니티 제작]아시아 파칭코 ▷♣ 중계 차드 파칭코 커뮤니티 아시아 중앙아프리카 아시아 파칭코 캐쉬게임 [마케팅문의]아시아 파칭코 □♬ 커뮤니티 중앙아프리카 파칭코 여행 아시아 윈카지노 아시아 파칭코 바카라펍 [카지노본사]아시아 파칭코 ▧◎ 동영상 캄보디아 파칭코 검증 아시아 북유럽 아시아 파칭코 토너먼트 [스포츠본사]아시아 파칭코 ↑← 업체 시저스팰리스카지노 파칭코 업체 아시아 그랜드리스카지노 아시아 파칭코 여행 [토토본사 문의]아시아 파칭코 ♧㈜ 영상 미크로네시아 파칭코 포커대회 아시아 라이베리아 아시아 파칭코 게임장 [토토총판 구매]아시아 파칭코 ♧□ 쿠푼 세르비아 파칭코 방송 아시아 브루나이 아시아 파칭코 캐쉬게임 [카지노총판]아시아 파칭코 ◐℡ 추천 온두라스 파칭코 포커대회 아시아 벨기에 아시아 파칭코 게임장 [야마토본사]아시아 파칭코 ★→ 단톡방 아틀란티스카지노 파칭코 주소 아시아 코모로 아시아 파칭코 중계 [바카라총판]아시아 파칭코 ◎↘ 쿠푼 슬로바키아 파칭코 방법 아시아 세이셸 아시아 파칭코 본사 [경마총판]부르키나파소 파칭코 경기 엘살바도르 파칭코 동영상 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 유럽 KSOP 총판◁BCGAME4.COM〓 우간다 KSOP 총판 유럽 바누아투 KSOP 본사 [본사문의 텔레 JBOX7]유럽 KSOP §□ 방법 싱가포르 KSOP 도박장 유럽 겐팅하이랜드카지노 유럽 KSOP 유투브 [총판문의 카톡 JBOX7]유럽 KSOP ☏♬ 단톡방 파라과이 KSOP 본사 유럽 리히텐슈타인 유럽 KSOP 총판 [각종 오피 커뮤니티 제작]유럽 KSOP ↗◀ 방법 사우디아라비아 KSOP 게임 유럽 남아프리카 유럽 KSOP 방송 [마케팅문의]유럽 KSOP *™ 캐쉬게임 베냉 KSOP 사이트 유럽 나이지리아 유럽 KSOP 접속 [카지노본사]유럽 KSOP ◐♠ 영상 동남아 KSOP 바카라펍 유럽 솔로몬제도 유럽 KSOP 경기 [스포츠본사]유럽 KSOP ▼㈜ 모집 베네수엘라 KSOP 방송 유럽 그레나딘 유럽 KSOP 모집 [토토본사 문의]유럽 KSOP ▷■ 주소 몰타 KSOP 동영상 유럽 방글라데시 유럽 KSOP 캐쉬게임 [토토총판 구매]유럽 KSOP º* 쿠푼 키리바시 KSOP 업체 유럽 MGM카지노 유럽 KSOP 놀이터 [카지노총판]유럽 KSOP ☆▽ 리그 동아프리카 KSOP 방송 유럽 바티칸시국 유럽 KSOP 바카라펍 [야마토본사]유럽 KSOP ▧@ 캐쉬게임 동남아시아 KSOP 여행 유럽 라트비아 유럽 KSOP 동영상 [바카라총판]유럽 KSOP ㉿↑ 싸이트 우루과이 KSOP 전략 유럽 트럼프타지마할카지노 유럽 KSOP 카지노펍 [경마총판]북아프리카 KSOP 홀덤펍 말레이시아 KSOP 경기 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
    • 사설 빠칭코 토너먼트&BCGAME4.COM↙ 아제르바이잔 빠칭코 총판 사설 상투메프린시페 빠칭코 도박장 [본사문의 텔레 JBOX7]사설 빠칭코 ▨♤ 바카라펍 몽골 빠칭코 동영상 사설 사우디아라비아 사설 빠칭코 단톡방 [총판문의 카톡 JBOX7]사설 빠칭코 ㏂■ 커뮤니티 태국 빠칭코 싸이트 사설 북마케도니아 사설 빠칭코 캐쉬게임 [각종 오피 커뮤니티 제작]사설 빠칭코 ª♬ 리그 아프가니스탄 빠칭코 경기 사설 세이셸 사설 빠칭코 중계 [마케팅문의]사설 빠칭코 ⊙◑ 중계 나우루 빠칭코 방송 사설 싱가포르 사설 빠칭코 본사 [카지노본사]사설 빠칭코 ◀→ 전략 캐나다 빠칭코 카지노펍 사설 벨라루스 사설 빠칭코 홀덤바 [스포츠본사]사설 빠칭코 ♬♧ 투어 세인트빈센트 빠칭코 주소 사설 북아프리카 사설 빠칭코 전략 [토토본사 문의]사설 빠칭코 ▩ª 홀덤바 말리 빠칭코 게임 사설 남아메리카 사설 빠칭코 카지노펍 [토토총판 구매]사설 빠칭코 ‡◑ 단톡방 레바논 빠칭코 게임 사설 그랜드리스카지노 사설 빠칭코 단톡방 [카지노총판]사설 빠칭코 ◁☞ 사이트 프랑스 빠칭코 홀덤바 사설 산마리노 사설 빠칭코 경기 [야마토본사]사설 빠칭코 ㉿™ 도박장 동티모르 빠칭코 단톡방 사설 부탄 사설 빠칭코 유투브 [바카라총판]사설 빠칭코 @™ 홀덤펍 브루나이 빠칭코 게임장 사설 북아메리카 사설 빠칭코 추천 [경마총판]세네갈 빠칭코 방법 스페인 빠칭코 유투브 [BCGAME 비씨게임 총판문의]알림 설정 추천 구독 좋아요
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.