2021-12-19 18:27:43 +01:00
|
|
|
package de.ellpeck.actuallyadditions.mod.crafting;
|
|
|
|
|
2024-03-04 20:21:48 +01:00
|
|
|
import com.mojang.serialization.Codec;
|
|
|
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
2024-03-03 01:20:53 +01:00
|
|
|
import net.minecraft.core.RegistryAccess;
|
2024-03-02 21:23:08 +01:00
|
|
|
import net.minecraft.network.FriendlyByteBuf;
|
|
|
|
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;
|
2021-12-19 18:27:43 +01:00
|
|
|
|
2024-03-02 21:23:08 +01:00
|
|
|
public class SolidFuelRecipe implements Recipe<SingleItem> {
|
2021-12-19 18:27:43 +01:00
|
|
|
public static String NAME = "solid_fuel";
|
|
|
|
private Ingredient itemIngredient;
|
|
|
|
private int burnTime;
|
|
|
|
private int totalEnergy;
|
|
|
|
|
2024-03-04 20:21:48 +01:00
|
|
|
public SolidFuelRecipe(Ingredient itemIngredient, int totalEnergy, int burnTime) {
|
2021-12-19 18:27:43 +01:00
|
|
|
this.itemIngredient = itemIngredient;
|
|
|
|
this.burnTime = burnTime;
|
|
|
|
this.totalEnergy = totalEnergy;
|
|
|
|
}
|
|
|
|
|
|
|
|
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) {
|
2021-12-19 18:27:43 +01:00
|
|
|
return itemIngredient.test(pInv.getItem());
|
|
|
|
}
|
|
|
|
|
2021-12-30 18:30:01 +01:00
|
|
|
public boolean matches(ItemStack stack) {
|
|
|
|
return this.itemIngredient.test(stack);
|
|
|
|
}
|
|
|
|
|
2023-01-15 22:46:42 +01:00
|
|
|
@Override
|
|
|
|
public boolean isSpecial() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2021-12-19 18:27:43 +01:00
|
|
|
@Override
|
2024-03-03 01:20:53 +01:00
|
|
|
public ItemStack assemble(SingleItem pInv, RegistryAccess registryAccess) {
|
2021-12-19 18:27:43 +01:00
|
|
|
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) {
|
2021-12-19 18:27:43 +01:00
|
|
|
return ItemStack.EMPTY;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2024-03-02 21:23:08 +01:00
|
|
|
public RecipeSerializer<?> getSerializer() {
|
2021-12-19 18:27:43 +01:00
|
|
|
return ActuallyRecipes.SOLID_FUEL_RECIPE.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2024-03-02 21:23:08 +01:00
|
|
|
public RecipeType<?> getType() {
|
2024-03-03 17:48:28 +01:00
|
|
|
return ActuallyRecipes.Types.SOLID_FUEL.get();
|
2021-12-19 18:27:43 +01:00
|
|
|
}
|
|
|
|
|
2024-03-03 01:20:53 +01:00
|
|
|
public static class Serializer implements RecipeSerializer<SolidFuelRecipe> {
|
2024-03-04 20:21:48 +01:00
|
|
|
private static final Codec<SolidFuelRecipe> CODEC = RecordCodecBuilder.create(
|
|
|
|
instance -> instance.group(
|
|
|
|
Ingredient.CODEC_NONEMPTY.fieldOf("item").forGetter(recipe -> recipe.itemIngredient),
|
|
|
|
Codec.INT.fieldOf("total_energy").forGetter(recipe -> recipe.totalEnergy),
|
|
|
|
Codec.INT.fieldOf("burn_time").forGetter(recipe -> recipe.burnTime)
|
|
|
|
)
|
|
|
|
.apply(instance, SolidFuelRecipe::new)
|
|
|
|
);
|
|
|
|
|
|
|
|
// @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);
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
2021-12-19 18:27:43 +01:00
|
|
|
@Override
|
2024-03-04 20:21:48 +01:00
|
|
|
public Codec<SolidFuelRecipe> codec() {
|
|
|
|
return CODEC;
|
2021-12-19 18:27:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2024-03-04 20:21:48 +01:00
|
|
|
public SolidFuelRecipe fromNetwork(FriendlyByteBuf pBuffer) {
|
2021-12-19 18:27:43 +01:00
|
|
|
Ingredient itemIngredient = Ingredient.fromNetwork(pBuffer);
|
|
|
|
int totalEnergy = pBuffer.readInt();
|
|
|
|
int burnTime = pBuffer.readInt();
|
2024-03-04 20:21:48 +01:00
|
|
|
return new SolidFuelRecipe(itemIngredient, totalEnergy, burnTime);
|
2021-12-19 18:27:43 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2024-03-02 21:23:08 +01:00
|
|
|
public void toNetwork(FriendlyByteBuf pBuffer, SolidFuelRecipe pRecipe) {
|
2021-12-19 18:27:43 +01:00
|
|
|
pRecipe.itemIngredient.toNetwork(pBuffer);
|
|
|
|
pBuffer.writeInt(pRecipe.totalEnergy);
|
|
|
|
pBuffer.writeInt(pRecipe.burnTime);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|