• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 20210191346

14 Dec 2025 03:32PM UTC coverage: 19.514% (-33.5%) from 53.061%
20210191346

push

github

rubensworks
Remove deprecations

663 of 8728 branches covered (7.6%)

Branch coverage included in aggregate %.

6786 of 29445 relevant lines covered (23.05%)

1.09 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

35.9
/src/main/java/org/cyclops/integrateddynamics/core/recipe/type/RecipeSerializerDryingBasin.java
1
package org.cyclops.integrateddynamics.core.recipe.type;
2

3
import com.google.gson.JsonSyntaxException;
4
import com.mojang.serialization.Codec;
5
import com.mojang.serialization.MapCodec;
6
import com.mojang.serialization.codecs.RecordCodecBuilder;
7
import net.minecraft.network.RegistryFriendlyByteBuf;
8
import net.minecraft.network.codec.ByteBufCodecs;
9
import net.minecraft.network.codec.StreamCodec;
10
import net.minecraft.world.item.crafting.Ingredient;
11
import net.minecraft.world.item.crafting.RecipeSerializer;
12
import net.neoforged.neoforge.fluids.FluidStack;
13
import org.cyclops.cyclopscore.helper.RecipeSerializerHelpers;
14
import org.cyclops.integrateddynamics.GeneralConfig;
15

16
/**
17
 * Recipe serializer for drying basin recipes
18
 * @author rubensworks
19
 */
20
public class RecipeSerializerDryingBasin implements RecipeSerializer<RecipeDryingBasin> {
3✔
21

22
    public static final MapCodec<RecipeDryingBasin> CODEC = RecordCodecBuilder.mapCodec(
3✔
23
            builder -> builder.group(
7✔
24
                            Ingredient.CODEC.optionalFieldOf("input_item").forGetter(RecipeDryingBasin::getInputIngredient),
5✔
25
                            FluidStack.CODEC.optionalFieldOf("input_fluid").forGetter(RecipeDryingBasin::getInputFluid),
4✔
26
                            RecipeSerializerHelpers.getCodecItemStackOrTag(() -> GeneralConfig.recipeTagOutputModPriorities).optionalFieldOf("output_item").forGetter(RecipeDryingBasin::getOutputItem),
7✔
27
                            FluidStack.CODEC.optionalFieldOf("output_fluid").forGetter(RecipeDryingBasin::getOutputFluid),
5✔
28
                            Codec.INT.fieldOf("duration").forGetter(RecipeDryingBasin::getDuration)
3✔
29
                    )
30
                    .apply(builder, (inputItem, inputFluid, outputItem, outputFluid, duration) -> {
1✔
31
                        // Validation
32
                        if (inputItem.isEmpty() && inputFluid.isEmpty()) {
×
33
                            throw new JsonSyntaxException("An input item or fluid is required");
×
34
                        }
35
                        if (outputItem.isEmpty() && outputFluid.isEmpty()) {
×
36
                            throw new JsonSyntaxException("An output item or fluid is required");
×
37
                        }
38
                        if (inputFluid.isPresent() && outputFluid.isPresent()) {
×
39
                            throw new JsonSyntaxException("Can't have both an input and output fluid");
×
40
                        }
41
                        if (duration <= 0) {
×
42
                            throw new JsonSyntaxException("Durations must be higher than one tick");
×
43
                        }
44

45
                        return new RecipeDryingBasin(inputItem, inputFluid, outputItem, outputFluid, duration);
×
46
                    })
47
    );
48
    public static final StreamCodec<RegistryFriendlyByteBuf, RecipeDryingBasin> STREAM_CODEC = StreamCodec.composite(
4✔
49
            ByteBufCodecs.optional(Ingredient.CONTENTS_STREAM_CODEC), RecipeDryingBasin::getInputIngredient,
3✔
50
            ByteBufCodecs.optional(FluidStack.STREAM_CODEC), RecipeDryingBasin::getInputFluid,
3✔
51
            ByteBufCodecs.optional(RecipeSerializerHelpers.STREAM_CODEC_ITEMSTACK_OR_TAG), RecipeDryingBasin::getOutputItem,
3✔
52
            ByteBufCodecs.optional(FluidStack.STREAM_CODEC), RecipeDryingBasin::getOutputFluid,
5✔
53
            ByteBufCodecs.INT, RecipeDryingBasin::getDuration,
54
            RecipeDryingBasin::new
55
    );
56

57
    @Override
58
    public MapCodec<RecipeDryingBasin> codec() {
59
        return CODEC;
×
60
    }
61

62
    @Override
63
    public StreamCodec<RegistryFriendlyByteBuf, RecipeDryingBasin> streamCodec() {
64
        return STREAM_CODEC;
×
65
    }
66
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc