ActuallyAdditions/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/SolidFuelRecipe.java

151 lines
4.5 KiB
Java
Raw Normal View History

package de.ellpeck.actuallyadditions.mod.crafting;
import com.google.gson.JsonObject;
2024-03-03 01:20:53 +01:00
import net.minecraft.core.RegistryAccess;
2024-03-02 21:23:08 +01:00
import net.minecraft.data.recipes.FinishedRecipe;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level;
import javax.annotation.Nullable;
2024-03-02 21:23:08 +01:00
public class SolidFuelRecipe implements Recipe<SingleItem> {
public static String NAME = "solid_fuel";
private Ingredient itemIngredient;
private int burnTime;
private int totalEnergy;
private ResourceLocation id;
public SolidFuelRecipe(ResourceLocation id, Ingredient itemIngredient, int totalEnergy, int burnTime) {
this.itemIngredient = itemIngredient;
this.burnTime = burnTime;
this.totalEnergy = totalEnergy;
this.id = id;
}
public int getBurnTime() {
return burnTime;
}
public int getTotalEnergy() {
return totalEnergy;
}
@Override
2024-03-02 21:23:08 +01:00
public boolean matches(SingleItem pInv, Level pLevel) {
return itemIngredient.test(pInv.getItem());
}
2021-12-30 18:30:01 +01:00
public boolean matches(ItemStack stack) {
return this.itemIngredient.test(stack);
}
@Override
public boolean isSpecial() {
return true;
}
@Override
2024-03-03 01:20:53 +01:00
public ItemStack assemble(SingleItem pInv, RegistryAccess registryAccess) {
return ItemStack.EMPTY;
}
@Override
public boolean canCraftInDimensions(int pWidth, int pHeight) {
return false;
}
@Override
2024-03-03 01:20:53 +01:00
public ItemStack getResultItem(RegistryAccess pRegistryAccess) {
return ItemStack.EMPTY;
}
@Override
public ResourceLocation getId() {
return id;
}
@Override
2024-03-02 21:23:08 +01:00
public RecipeSerializer<?> getSerializer() {
return ActuallyRecipes.SOLID_FUEL_RECIPE.get();
}
@Override
2024-03-02 21:23:08 +01:00
public RecipeType<?> getType() {
return ActuallyRecipes.Types.SOLID_FUEL;
}
2024-03-03 01:20:53 +01:00
public static class Serializer implements RecipeSerializer<SolidFuelRecipe> {
@Override
public SolidFuelRecipe fromJson(ResourceLocation pId, JsonObject pJson) {
Ingredient itemIngredient = Ingredient.fromJson(pJson.get("item"));
int totalEnergy = pJson.get("total_energy").getAsInt();
int burnTime = pJson.get("burn_time").getAsInt();
return new SolidFuelRecipe(pId, itemIngredient, totalEnergy, burnTime);
}
@Override
2024-03-02 21:23:08 +01:00
public SolidFuelRecipe fromNetwork(ResourceLocation pId, FriendlyByteBuf pBuffer) {
Ingredient itemIngredient = Ingredient.fromNetwork(pBuffer);
int totalEnergy = pBuffer.readInt();
int burnTime = pBuffer.readInt();
return new SolidFuelRecipe(pId, itemIngredient, totalEnergy, burnTime);
}
@Override
2024-03-02 21:23:08 +01:00
public void toNetwork(FriendlyByteBuf pBuffer, SolidFuelRecipe pRecipe) {
pRecipe.itemIngredient.toNetwork(pBuffer);
pBuffer.writeInt(pRecipe.totalEnergy);
pBuffer.writeInt(pRecipe.burnTime);
}
}
2024-03-02 21:23:08 +01:00
public static class Result implements FinishedRecipe {
private Ingredient itemIngredient;
private int burnTime;
private int totalEnergy;
private ResourceLocation id;
2024-03-02 21:23:08 +01:00
public Result(ResourceLocation id, Ingredient itemIngredient, int totalEnergy, int burnTime) {
this.itemIngredient = itemIngredient;
this.burnTime = burnTime;
this.totalEnergy = totalEnergy;
this.id = id;
}
@Override
public void serializeRecipeData(JsonObject pJson) {
pJson.add("item", itemIngredient.toJson());
pJson.addProperty("total_energy", totalEnergy);
pJson.addProperty("burn_time", burnTime);
}
@Override
public ResourceLocation getId() {
return id;
}
@Override
2024-03-02 21:23:08 +01:00
public RecipeSerializer<?> getType() {
return ActuallyRecipes.SOLID_FUEL_RECIPE.get();
}
@Nullable
@Override
public JsonObject serializeAdvancement() {
return null;
}
@Nullable
@Override
public ResourceLocation getAdvancementId() {
return null;
}
}
}