Untitled
unknown
java
a year ago
3.1 kB
7
Indexable
Never
public static class Serializer implements RecipeSerializer<GrindstonePolishingRecipe> { @Override public GrindstonePolishingRecipe fromJson(ResourceLocation pRecipeId, JsonObject jsonObject) { String group = GsonHelper.getAsString(jsonObject, "group", ""); NonNullList<Ingredient> nonnulllist = itemsFromJson(GsonHelper.getAsJsonArray(jsonObject, "ingredients")); if (nonnulllist.isEmpty()) { throw new JsonParseException("No ingredients for shapeless recipe"); } if (!jsonObject.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object"); ItemStack result; if (jsonObject.get("result").isJsonObject()) { result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(jsonObject, "result")); } else { String resultItem = GsonHelper.getAsString(jsonObject, "result"); ResourceLocation resourcelocation = new ResourceLocation(resultItem); result = new ItemStack(ForgeRegistries.ITEMS.getDelegate(resourcelocation).orElseThrow(() -> new IllegalStateException("Item: " + resultItem + " does not exist"))); } int experience = GsonHelper.getAsInt(jsonObject, "experience", 0); return new GrindstonePolishingRecipe(pRecipeId, group, nonnulllist, result, experience); } private static NonNullList<Ingredient> itemsFromJson(JsonArray pIngredientArray) { NonNullList<Ingredient> nonnulllist = NonNullList.create(); for(int i = 0; i < pIngredientArray.size(); ++i) { Ingredient ingredient = Ingredient.fromJson(pIngredientArray.get(i)); if (!ingredient.isEmpty()) { nonnulllist.add(ingredient); } } return nonnulllist; } @Nullable @Override public GrindstonePolishingRecipe fromNetwork(ResourceLocation pRecipeId, FriendlyByteBuf pBuffer) { String group = pBuffer.readUtf(); int i = pBuffer.readVarInt(); NonNullList<Ingredient> nonnulllist = NonNullList.withSize(i, Ingredient.EMPTY); nonnulllist.replaceAll(ignored -> Ingredient.fromNetwork(pBuffer)); ItemStack result = pBuffer.readItem(); int experience = pBuffer.readInt(); return new GrindstonePolishingRecipe(pRecipeId, group, nonnulllist, result, experience); } @Override public void toNetwork(FriendlyByteBuf pBuffer, GrindstonePolishingRecipe pRecipe) { pBuffer.writeUtf(pRecipe.recipeGroup); pBuffer.writeVarInt(pRecipe.ingredients.size()); for(Ingredient ingredient : pRecipe.ingredients) { ingredient.toNetwork(pBuffer); } pBuffer.writeItem(pRecipe.result); pBuffer.writeInt(pRecipe.experience); } }