• 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/recipe/ItemVariableCopyRecipe.java
1
package org.cyclops.integrateddynamics.recipe;
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.CraftingBookCategory;
7
import net.minecraft.world.item.crafting.CraftingInput;
8
import net.minecraft.world.item.crafting.CustomRecipe;
9
import net.minecraft.world.item.crafting.RecipeSerializer;
10
import net.minecraft.world.level.Level;
11
import org.cyclops.cyclopscore.helper.IModHelpers;
12
import org.cyclops.integrateddynamics.IntegratedDynamics;
13
import org.cyclops.integrateddynamics.RegistryEntries;
14
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
15
import org.cyclops.integrateddynamics.api.item.IVariableFacade;
16
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
17
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
18
import org.cyclops.integrateddynamics.item.ItemVariable;
19

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

26
    private ValueDeseralizationContext lastValueDeseralizationContext;
27

28
    public ItemVariableCopyRecipe(CraftingBookCategory craftingBookCategory) {
29
        super(craftingBookCategory);
×
30
    }
×
31

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

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

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

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

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

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

95
    @Override
96
    public boolean isSpecial() {
97
        return true;
×
98
    }
99

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