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

CyclopsMC / IntegratedDynamics / 15366205963

31 May 2025 06:03PM UTC coverage: 45.019% (-0.5%) from 45.524%
15366205963

push

github

rubensworks
Merge remote-tracking branch 'origin/master-1.21-lts' into master-1.21

2555 of 8509 branches covered (30.03%)

Branch coverage included in aggregate %.

11885 of 23566 relevant lines covered (50.43%)

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

3
import com.google.common.collect.Sets;
4
import lombok.Setter;
5
import net.minecraft.client.gui.Font;
6
import net.minecraft.client.gui.GuiGraphics;
7
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
8
import net.minecraft.client.renderer.texture.TextureManager;
9
import net.minecraft.network.chat.Component;
10
import net.minecraft.network.chat.MutableComponent;
11
import net.minecraft.world.inventory.AbstractContainerMenu;
12
import net.neoforged.api.distmarker.Dist;
13
import net.neoforged.api.distmarker.OnlyIn;
14
import org.cyclops.cyclopscore.helper.IModHelpers;
15
import org.cyclops.integrateddynamics.IntegratedDynamics;
16
import org.cyclops.integrateddynamics.api.client.gui.subgui.ISubGuiBox;
17
import org.cyclops.integrateddynamics.api.evaluate.operator.IOperator;
18
import org.cyclops.integrateddynamics.api.evaluate.variable.IValue;
19
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
20
import org.cyclops.integrateddynamics.api.logicprogrammer.IConfigRenderPattern;
21
import org.cyclops.integrateddynamics.api.logicprogrammer.ILogicProgrammerElementType;
22
import org.cyclops.integrateddynamics.client.gui.container.ContainerScreenLogicProgrammerBase;
23
import org.cyclops.integrateddynamics.core.client.gui.IDropdownEntry;
24
import org.cyclops.integrateddynamics.core.client.gui.IDropdownEntryListener;
25
import org.cyclops.integrateddynamics.core.evaluate.operator.Operators;
26
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypeOperator;
27
import org.cyclops.integrateddynamics.core.evaluate.variable.ValueTypes;
28
import org.cyclops.integrateddynamics.core.evaluate.variable.gui.GuiElementValueTypeDropdownList;
29
import org.cyclops.integrateddynamics.core.evaluate.variable.gui.GuiElementValueTypeDropdownListRenderPattern;
30
import org.cyclops.integrateddynamics.core.helper.L10NValues;
31
import org.cyclops.integrateddynamics.inventory.container.ContainerLogicProgrammerBase;
32
import org.cyclops.integrateddynamics.network.packet.LogicProgrammerValueTypeOperatorValueChangedPacket;
33

34
import java.util.List;
35
import java.util.Set;
36

37
/**
38
 * Element for the operator value type.
39
 * @author rubensworks
40
 */
41
public class ValueTypeOperatorLPElement extends ValueTypeLPElementBase implements IDropdownEntryListener {
42

43
    @Setter
×
44
    private IOperator selectedOperator = null;
45
    private GuiElementValueTypeDropdownList<IOperator, ContainerScreenLogicProgrammerBase, ContainerLogicProgrammerBase> innerGuiElement;
46

47
    public ValueTypeOperatorLPElement() {
48
        super(ValueTypes.OPERATOR);
×
49
        Set<IDropdownEntry<IOperator>> operatorEntries = Sets.newLinkedHashSet();
×
50
        for (IOperator operator : Operators.REGISTRY.getOperators()) {
×
51
            operatorEntries.add(new OperatorDropdownEntry(operator));
×
52
        }
×
53
        this.innerGuiElement = new GuiElementValueTypeDropdownList<>(getValueType(), getRenderPattern());
×
54
        getInnerGuiElement().setDropdownPossibilities(operatorEntries);
×
55
        getInnerGuiElement().setDropdownEntryListener(this);
×
56
    }
×
57

58
    @Override
59
    public GuiElementValueTypeDropdownList<IOperator, ContainerScreenLogicProgrammerBase, ContainerLogicProgrammerBase> getInnerGuiElement() {
60
        return innerGuiElement;
×
61
    }
62

63
    @Override
64
    public ILogicProgrammerElementType getType() {
65
        return LogicProgrammerElementTypes.VALUETYPE;
×
66
    }
67

68
    @Override
69
    public Component validate() {
70
        if (selectedOperator == null) {
×
71
            return Component.translatable(L10NValues.VALUETYPE_ERROR_INVALIDINPUT, getInnerGuiElement().getInputString());
×
72
        }
73
        return null;
×
74
    }
75

76
    @Override
77
    public IConfigRenderPattern getRenderPattern() {
78
        return IConfigRenderPattern.NONE_CANVAS;
×
79
    }
80

81
    @Override
82
    public boolean canWriteElementPre() {
83
        return selectedOperator != null;
×
84
    }
85

86
    @Override
87
    public IValue getValue() {
88
        return ValueTypeOperator.ValueOperator.of(selectedOperator);
×
89
    }
90

91
    @Override
92
    public void setValue(IValue value) {
93
        this.selectedOperator = ((ValueTypeOperator.ValueOperator) value).getRawValue();
×
94
    }
×
95

96
    @Override
97
    @OnlyIn(Dist.CLIENT)
98
    public void setValueInGui(ISubGuiBox subGui) {
99
        if (this.selectedOperator != null) {
×
100
            ((GuiElementValueTypeDropdownListRenderPattern) subGui).getSearchField().setValue(this.selectedOperator.getLocalizedNameFull().getString());
×
101
            ((GuiElementValueTypeDropdownListRenderPattern) subGui).onTyped();
×
102
            ((GuiElementValueTypeDropdownListRenderPattern) subGui).getSearchField().refreshDropdownList();
×
103
        }
104
    }
×
105

106
    @Override
107
    public void activate() {
108

109
    }
×
110

111
    @Override
112
    public void onSetDropdownPossiblity(IDropdownEntry dropdownEntry) {
113
        OperatorDropdownEntry operatorDropdownEntry = (OperatorDropdownEntry) dropdownEntry;
×
114
        selectedOperator = operatorDropdownEntry == null ? null : operatorDropdownEntry.getValue();
×
115
        if (IModHelpers.get().getMinecraftHelpers().isClientSideThread()) {
×
116
            IntegratedDynamics._instance.getPacketHandler().sendToServer(
×
117
                    new LogicProgrammerValueTypeOperatorValueChangedPacket(ValueDeseralizationContext.ofClient(),
×
118
                            ValueTypeOperator.ValueOperator.of(selectedOperator)));
×
119
        }
120
    }
×
121

122
    @Override
123
    @OnlyIn(Dist.CLIENT)
124
    public ISubGuiBox createSubGui(int baseX, int baseY, int maxWidth, int maxHeight, ContainerScreenLogicProgrammerBase gui, ContainerLogicProgrammerBase container) {
125
        return new RenderPatternOperator(this, baseX, baseY, maxWidth, maxHeight, gui, container);
×
126
    }
127

128
    public static class RenderPatternOperator<S extends ISubGuiBox, G extends AbstractContainerScreen, C extends AbstractContainerMenu> extends ValueTypeOperatorLPElementRenderPattern {
129

130
        private final ValueTypeOperatorLPElement element;
131

132
        public RenderPatternOperator(ValueTypeOperatorLPElement element, int baseX, int baseY, int maxWidth, int maxHeight, ContainerScreenLogicProgrammerBase gui, ContainerLogicProgrammerBase container) {
133
            super(element, baseX, baseY, maxWidth, maxHeight, gui, container);
×
134
            this.element = element;
×
135
        }
×
136

137
        @Override
138
        public void renderBg(GuiGraphics guiGraphics, int guiLeft, int guiTop, TextureManager textureManager, Font fontRenderer, float partialTicks, int mouseX, int mouseY) {
139
            super.renderBg(guiGraphics, guiLeft, guiTop, textureManager, fontRenderer, partialTicks, mouseX, mouseY);
×
140
            IOperator operator = element.selectedOperator;
×
141
            if (operator != null) {
×
142
                int offsetY = 0;
×
143
                for (Component line : ValueTypeOperator.getSignatureLines(operator, true)) {
×
144
                    guiGraphics.drawString(fontRenderer, line, getX() + guiLeft + 10, getY() + guiTop + 25 + offsetY, IModHelpers.get().getBaseHelpers().RGBToInt(10, 10, 10), false);
×
145
                    offsetY += fontRenderer.lineHeight;
×
146
                }
×
147
            }
148
        }
×
149
    }
150

151
    public static class OperatorDropdownEntry implements IDropdownEntry<IOperator> {
152

153
        private final IOperator operator;
154

155
        public OperatorDropdownEntry(IOperator operator) {
×
156
            this.operator = operator;
×
157
        }
×
158

159
        @Override
160
        public String getMatchString() {
161
            return operator.getLocalizedNameFull().getString();
×
162
        }
163

164
        @Override
165
        public MutableComponent getDisplayString() {
166
            return Component.literal(getMatchString());
×
167
        }
168

169
        @Override
170
        public List<MutableComponent> getTooltip() {
171
            return ValueTypeOperator.getSignatureLines(operator, true);
×
172
        }
173

174
        @Override
175
        public IOperator getValue() {
176
            return operator;
×
177
        }
178
    }
179

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