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

CyclopsMC / IntegratedDynamics / 15366166327

31 May 2025 05:58PM UTC coverage: 44.766% (-0.5%) from 45.303%
15366166327

push

github

rubensworks
Bump mod version

2565 of 8515 branches covered (30.12%)

Branch coverage included in aggregate %.

11734 of 23427 relevant lines covered (50.09%)

2.38 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/logicprogrammer/ValueTypeItemStackLPElement.java
1
package org.cyclops.integrateddynamics.core.logicprogrammer;
2

3
import net.minecraft.client.gui.Font;
4
import net.minecraft.client.gui.GuiGraphics;
5
import net.minecraft.client.renderer.texture.TextureManager;
6
import net.minecraft.network.chat.Component;
7
import net.minecraft.world.entity.player.Player;
8
import net.minecraft.world.item.ItemStack;
9
import net.neoforged.api.distmarker.Dist;
10
import net.neoforged.api.distmarker.OnlyIn;
11
import org.cyclops.integrateddynamics.api.client.gui.subgui.ISubGuiBox;
12
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
13
import org.cyclops.integrateddynamics.api.evaluate.variable.IValueType;
14
import org.cyclops.integrateddynamics.api.logicprogrammer.IConfigRenderPattern;
15
import org.cyclops.integrateddynamics.api.logicprogrammer.ILogicProgrammerElementType;
16
import org.cyclops.integrateddynamics.client.gui.container.ContainerScreenLogicProgrammerBase;
17
import org.cyclops.integrateddynamics.core.helper.L10NValues;
18
import org.cyclops.integrateddynamics.inventory.container.ContainerLogicProgrammerBase;
19

20
/**
21
 * Element for a value type that can be derived from an {@link ItemStack}.
22
 * @author rubensworks
23
 */
24
public class ValueTypeItemStackLPElement<V extends IValue> extends ValueTypeLPElementBase {
25

26
    private final IItemStackToValue<V> itemStackToValue;
27
    private ItemStack itemStack = ItemStack.EMPTY;
×
28

29
    public ValueTypeItemStackLPElement(IValueType valueType, IItemStackToValue<V> itemStackToValue) {
30
        super(valueType);
×
31
        this.itemStackToValue = itemStackToValue;
×
32
    }
×
33

34
    @Override
35
    public ILogicProgrammerElementType getType() {
36
        return LogicProgrammerElementTypes.VALUETYPE;
×
37
    }
38

39
    @Override
40
    public IConfigRenderPattern getRenderPattern() {
41
        return IConfigRenderPattern.SINGLE_SLOT;
×
42
    }
43

44
    @Override
45
    public int getItemStackSizeLimit() {
46
        return ItemStack.EMPTY.getMaxStackSize();
×
47
    }
48

49
    @Override
50
    public void onInputSlotUpdated(Player player, int slotId, ItemStack itemStack) {
51
        this.itemStack = itemStack;
×
52
    }
×
53

54
    @Override
55
    public boolean canWriteElementPre() {
56
        return this.itemStackToValue.isNullable() || !this.itemStack.isEmpty();
×
57
    }
58

59
    @Override
60
    public void activate() {
61
        this.itemStack = ItemStack.EMPTY;
×
62
    }
×
63

64
    @Override
65
    public void deactivate() {
66

67
    }
×
68

69
    @Override
70
    public Component validate() {
71
        if(!this.itemStackToValue.isNullable() && this.itemStack.isEmpty()) {
×
72
            return Component.translatable(L10NValues.VALUETYPE_ERROR_INVALIDINPUTITEM);
×
73
        }
74
        return itemStackToValue.validate(itemStack);
×
75
    }
76

77
    @Override
78
    public boolean isItemValidForSlot(int slotId, ItemStack itemStack) {
79
        return true;
×
80
    }
81

82
    @Override
83
    public IValue getValue() {
84
        return this.itemStackToValue.getValue(this.itemStack);
×
85
    }
86

87
    @Override
88
    public void setValue(IValue value) {
89
        this.itemStack = this.itemStackToValue.getValueAsItemStack((V) value);
×
90
    }
×
91

92
    @Override
93
    @OnlyIn(Dist.CLIENT)
94
    public ISubGuiBox createSubGui(int baseX, int baseY, int maxWidth, int maxHeight,
95
                                   ContainerScreenLogicProgrammerBase gui, ContainerLogicProgrammerBase container) {
96
        return new SubGuiRenderPattern(this, baseX, baseY, maxWidth, maxHeight, gui, container);
×
97
    }
98

99
    @Override
100
    public void setValueInContainer(ContainerLogicProgrammerBase container) {
101
        container.getTemporaryInputSlots().setItem(0, this.itemStack);
×
102
    }
×
103

104
    @OnlyIn(Dist.CLIENT)
105
    protected static class SubGuiRenderPattern extends RenderPattern<ValueTypeItemStackLPElement, ContainerScreenLogicProgrammerBase, ContainerLogicProgrammerBase>
106
            implements IRenderPatternValueTypeTooltip {
107

108
        private boolean renderTooltip = true;
×
109

110
        public SubGuiRenderPattern(ValueTypeItemStackLPElement element, int baseX, int baseY, int maxWidth, int maxHeight,
111
                                   ContainerScreenLogicProgrammerBase gui, ContainerLogicProgrammerBase container) {
112
            super(element, baseX, baseY, maxWidth, maxHeight, gui, container);
×
113
        }
×
114

115
        @Override
116
        public void drawGuiContainerForegroundLayer(GuiGraphics guiGraphics, int guiLeft, int guiTop, TextureManager textureManager, Font fontRenderer, int mouseX, int mouseY) {
117
            super.drawGuiContainerForegroundLayer(guiGraphics, guiLeft, guiTop, textureManager, fontRenderer, mouseX, mouseY);
×
118
            this.drawTooltipForeground(gui, guiGraphics, container, guiLeft, guiTop, mouseX, mouseY, element.getValueType());
×
119
        }
×
120

121
        @Override
122
        public boolean isRenderTooltip() {
123
            return this.renderTooltip;
×
124
        }
125

126
        @Override
127
        public void setRenderTooltip(boolean renderTooltip) {
128
            this.renderTooltip = renderTooltip;
×
129
        }
×
130

131
    }
132

133
    public static interface IItemStackToValue<V extends IValue> {
134

135
        public boolean isNullable();
136
        public Component validate(ItemStack itemStack);
137
        public V getValue(ItemStack itemStack);
138
        public ItemStack getValueAsItemStack(V value);
139

140
    }
141

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