• 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

0.0
/src/main/java/org/cyclops/integrateddynamics/core/recipe/type/RecipeEnergyContainerCombination.java
1
package org.cyclops.integrateddynamics.core.recipe.type;
2

3
import net.minecraft.core.HolderLookup;
4
import net.minecraft.core.NonNullList;
5
import net.minecraft.world.item.ItemStack;
6
import net.minecraft.world.item.crafting.*;
7
import net.minecraft.world.level.Level;
8
import net.neoforged.neoforge.capabilities.Capabilities;
9
import net.neoforged.neoforge.common.CommonHooks;
10
import net.neoforged.neoforge.transfer.access.ItemAccess;
11
import org.cyclops.cyclopscore.helper.IModHelpers;
12
import org.cyclops.integrateddynamics.RegistryEntries;
13
import org.cyclops.integrateddynamics.capability.energystorage.IEnergyStorageCapacity;
14
import org.cyclops.integrateddynamics.capability.energystorage.IEnergyStorageMutable;
15

16
/**
17
 * Recipe for combining energy batteries in a shapeless manner.
18
 * @author rubensworks
19
 */
20
public class RecipeEnergyContainerCombination extends CustomRecipe {
21

22
    private final Ingredient batteryItem;
23
    private final int maxCapacity;
24

25
    public RecipeEnergyContainerCombination(Ingredient batteryItem, int maxCapacity) {
26
        super(CraftingBookCategory.MISC);
×
27
        this.batteryItem = batteryItem;
×
28
        this.maxCapacity = maxCapacity;
×
29
    }
×
30

31
    public Ingredient getBatteryItem() {
32
        return batteryItem;
×
33
    }
34

35
    public int getMaxCapacity() {
36
        return maxCapacity;
×
37
    }
38

39
    @Override
40
    public boolean matches(CraftingInput grid, Level world) {
41
        return !assemble(grid, world.registryAccess()).isEmpty();
×
42
    }
43

44
    protected ItemStack getResultItem(HolderLookup.Provider registryAccess) {
45
        return new ItemStack(this.batteryItem.items().findFirst().get());
×
46
    }
47

48
    @Override
49
    public NonNullList<ItemStack> getRemainingItems(CraftingInput inventory) {
50
        NonNullList<ItemStack> aitemstack = NonNullList.withSize(inventory.size(), ItemStack.EMPTY);
×
51

52
        for (int i = 0; i < aitemstack.size(); ++i) {
×
53
            ItemStack itemstack = inventory.getItem(i);
×
54
            aitemstack.set(i, CommonHooks.getCraftingRemainder(itemstack));
×
55
        }
56

57
        return aitemstack;
×
58
    }
59

60
    @Override
61
    public RecipeSerializer<? extends CustomRecipe> getSerializer() {
62
        return RegistryEntries.RECIPESERIALIZER_ENERGY_CONTAINER_COMBINATION.get();
×
63
    }
64

65
    @Override
66
    public ItemStack assemble(CraftingInput grid, HolderLookup.Provider registryAccess) {
67
        ItemStack output = getResultItem(registryAccess).copy();
×
68
        IEnergyStorageCapacity energyStorage = (IEnergyStorageCapacity) output.getCapability(Capabilities.Energy.ITEM, ItemAccess.forStack(output));
×
69

70
        int totalCapacity = 0;
×
71
        int totalEnergy = 0;
×
72
        int inputItems = 0;
×
73

74
        // Loop over the grid and count the total contents and capacity + collect energy.
75
        for(int j = 0; j < grid.size(); j++) {
×
76
            ItemStack element = grid.getItem(j).copy().split(1);
×
77
            if(!element.isEmpty()) {
×
78
                if(this.batteryItem.test(element)) {
×
79
                    IEnergyStorageCapacity currentEnergyStorage = (IEnergyStorageCapacity) element.getCapability(Capabilities.Energy.ITEM, ItemAccess.forStack(element));
×
80
                    inputItems++;
×
81
                    totalEnergy = IModHelpers.get().getBaseHelpers().addSafe(totalEnergy, currentEnergyStorage.getAmountAsInt());
×
82
                    totalCapacity = IModHelpers.get().getBaseHelpers().addSafe(totalCapacity, currentEnergyStorage.getCapacityAsInt());
×
83
                } else {
×
84
                    return ItemStack.EMPTY;
×
85
                }
86
            }
87
        }
88

89
        if(inputItems < 2
×
90
                || totalCapacity > this.maxCapacity) {
91
            return ItemStack.EMPTY;
×
92
        }
93

94
        // Set capacity and fill fluid into output.
95
        energyStorage.setCapacity(totalCapacity);
×
96
        ((IEnergyStorageMutable) energyStorage).setEnergy(totalEnergy);
×
97

98
        return output;
×
99
    }
100

101
}
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