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

CyclopsMC / IntegratedDynamics / 24034486947

06 Apr 2026 01:51PM UTC coverage: 53.645% (-0.08%) from 53.721%
24034486947

push

github

rubensworks
Update to MC 26.1.1

3052 of 8931 branches covered (34.17%)

Branch coverage included in aggregate %.

18680 of 31580 relevant lines covered (59.15%)

3.07 hits per line

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

4.0
/src/main/java/org/cyclops/integrateddynamics/recipe/ItemVariableCopyRecipe.java
1
package org.cyclops.integrateddynamics.recipe;
2

3
import net.minecraft.core.NonNullList;
4
import net.minecraft.world.item.ItemStack;
5
import net.minecraft.world.item.crafting.CraftingInput;
6
import net.minecraft.world.item.crafting.CustomRecipe;
7
import net.minecraft.world.item.crafting.RecipeSerializer;
8
import net.minecraft.world.level.Level;
9
import org.cyclops.cyclopscore.helper.IModHelpers;
10
import org.cyclops.integrateddynamics.IntegratedDynamics;
11
import org.cyclops.integrateddynamics.RegistryEntries;
12
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
13
import org.cyclops.integrateddynamics.api.item.IVariableFacade;
14
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
15
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
16
import org.cyclops.integrateddynamics.item.ItemVariable;
17

18
/**
19
 * Crafting recipe to copy variable data.
20
 * @author rubensworks
21
 */
22
public class ItemVariableCopyRecipe extends CustomRecipe {
23

24
    private ValueDeseralizationContext lastValueDeseralizationContext;
25

26
    public ItemVariableCopyRecipe() {
27
        super();
2✔
28
    }
1✔
29

30
    @Override
31
    public boolean matches(CraftingInput inv, Level worldIn) {
32
        lastValueDeseralizationContext = ValueDeseralizationContext.of(worldIn);
×
33
        return !assemble(inv).isEmpty();
×
34
    }
35

36
    @Override
37
    public ItemStack assemble(CraftingInput inv) {
38
        ItemStack withData = ItemStack.EMPTY;
×
39
        ItemStack withoutData = ItemStack.EMPTY;
×
40
        IVariableFacade facade;
41
        int count = 0;
×
42
        for(int j = 0; j < inv.size(); j++) {
×
43
            ItemStack element = inv.getItem(j);
×
44
            if(!element.isEmpty() && element.getItem() instanceof ItemVariable) {
×
45
                count++;
×
46
                facade = RegistryEntries.ITEM_VARIABLE.get().getVariableFacade(lastValueDeseralizationContext, element);
×
47
                if(!facade.isValid() && withoutData.isEmpty()) {
×
48
                    withoutData = element;
×
49
                }
50
                if(facade.isValid() && withData.isEmpty() && element.getCount() == 1) {
×
51
                    withData = element.copy();
×
52
                }
53
            }
54
        }
55
        if(count == 2 && !withoutData.isEmpty() && !withData.isEmpty()) {
×
56
            return withData;
×
57
        }
58
        return ItemStack.EMPTY;
×
59
    }
60

61
    public ItemStack getResultItem() {
62
        return new ItemStack(RegistryEntries.ITEM_VARIABLE, 1);
×
63
    }
64

65
    @Override
66
    public NonNullList<ItemStack> getRemainingItems(CraftingInput inv) {
67
        NonNullList<ItemStack> ret = NonNullList.withSize(inv.size(), ItemStack.EMPTY);
×
68
        for(int j = 0; j < inv.size(); j++) {
×
69
            ItemStack element = inv.getItem(j);
×
70
            if(!element.isEmpty() && element.getItem() instanceof ItemVariable) {
×
71
                IVariableFacade facade = RegistryEntries.ITEM_VARIABLE.get().getVariableFacade(lastValueDeseralizationContext, element);
×
72
                if(facade.isValid()) {
×
73
                    // Create a copy with a new id.
74
                    ItemStack copy = IntegratedDynamics._instance.getRegistryManager()
×
75
                            .getRegistry(IVariableFacadeHandlerRegistry.class).copy(!IModHelpers.get().getMinecraftHelpers().isClientSideThread(), element);
×
76

77
                    // If the input had a label, also copy the label
78
                    String label = LabelsWorldStorage.Access.getInstance(IntegratedDynamics._instance).get().getLabel(facade.getId());
×
79
                    if(label != null) {
×
80
                        IVariableFacade facadeCopy = RegistryEntries.ITEM_VARIABLE.get().getVariableFacade(lastValueDeseralizationContext, copy);
×
81
                        if (facadeCopy != null) {
×
82
                            LabelsWorldStorage.Access.getInstance(IntegratedDynamics._instance).get().put(facadeCopy.getId(), label);
×
83
                        }
84
                    }
85

86
                    ret.set(j, copy);
×
87
                }
88
            }
89
        }
90
        return ret;
×
91
    }
92

93
    @Override
94
    public boolean isSpecial() {
95
        return true;
2✔
96
    }
97

98
    @Override
99
    public RecipeSerializer<? extends CustomRecipe> getSerializer() {
100
        return RegistryEntries.RECIPESERIALIZER_VARIABLE_COPY.get();
×
101
    }
102
}
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