• 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/client/gui/container/ContainerScreenLabeller.java
1
package org.cyclops.integrateddynamics.client.gui.container;
2

3
import net.minecraft.client.gui.GuiGraphics;
4
import net.minecraft.client.input.CharacterEvent;
5
import net.minecraft.client.input.KeyEvent;
6
import net.minecraft.client.input.MouseButtonEvent;
7
import net.minecraft.core.component.DataComponents;
8
import net.minecraft.network.chat.Component;
9
import net.minecraft.resources.ResourceLocation;
10
import net.minecraft.util.ARGB;
11
import net.minecraft.world.entity.player.Inventory;
12
import net.minecraft.world.item.ItemStack;
13
import org.apache.commons.lang3.StringUtils;
14
import org.cyclops.cyclopscore.client.gui.component.button.ButtonText;
15
import org.cyclops.cyclopscore.client.gui.component.input.WidgetTextFieldExtended;
16
import org.cyclops.cyclopscore.client.gui.container.ContainerScreenExtended;
17
import org.cyclops.cyclopscore.inventory.SimpleInventory;
18
import org.cyclops.integrateddynamics.IntegratedDynamics;
19
import org.cyclops.integrateddynamics.Reference;
20
import org.cyclops.integrateddynamics.api.evaluate.variable.ValueDeseralizationContext;
21
import org.cyclops.integrateddynamics.api.item.IVariableFacade;
22
import org.cyclops.integrateddynamics.api.item.IVariableFacadeHandlerRegistry;
23
import org.cyclops.integrateddynamics.core.persist.world.LabelsWorldStorage;
24
import org.cyclops.integrateddynamics.inventory.container.ContainerLabeller;
25
import org.cyclops.integrateddynamics.network.packet.ItemStackRenamePacket;
26
import org.lwjgl.glfw.GLFW;
27

28
/**
29
 * Gui for the labeller.
30
 * @author rubensworks
31
 */
32
public class ContainerScreenLabeller extends ContainerScreenExtended<ContainerLabeller> {
33

34
    private WidgetTextFieldExtended searchField;
35

36
    public ContainerScreenLabeller(ContainerLabeller container, Inventory playerInventory, Component title) {
37
        super(container, playerInventory, title);
×
38
        SimpleInventory temporaryInputSlots = container.getTemporaryInputSlots();
×
39
        temporaryInputSlots.addDirtyMarkListener(() -> {
×
40
            ItemStack itemStack = temporaryInputSlots.getItem(0);
×
41
            IVariableFacadeHandlerRegistry registry = IntegratedDynamics._instance.getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class);
×
42
            IVariableFacade variableFacade = registry.handle(ValueDeseralizationContext.of(container.getPlayerIInventory().player.level()), itemStack);
×
43
            String label = LabelsWorldStorage.Access.getInstance(IntegratedDynamics._instance).get().getLabel(variableFacade.getId());
×
44
            if(label == null && !itemStack.isEmpty() && itemStack.has(DataComponents.CUSTOM_NAME)) {
×
45
                label = itemStack.getHoverName().getString();
×
46
            }
47
            if(label != null) {
×
48
                this.setText(label);
×
49
            }
50
        });
×
51
    }
×
52

53
    @Override
54
    protected ResourceLocation constructGuiTexture() {
55
        return ResourceLocation.fromNamespaceAndPath(Reference.MOD_ID, "textures/gui/labeller.png");
×
56
    }
57

58
    @Override
59
    public void init() {
60
        super.init();
×
61
        addRenderableWidget(new ButtonText(this.leftPos + 133,  this.topPos + 8,
×
62
                Component.translatable("item.integrateddynamics.labeller.button.write"),
×
63
                Component.translatable("item.integrateddynamics.labeller.button.write"), button -> {
×
64
            ItemStack itemStack = getMenu().getItemStack();
×
65
            IVariableFacadeHandlerRegistry registry = IntegratedDynamics._instance.getRegistryManager().getRegistry(IVariableFacadeHandlerRegistry.class);
×
66
            IVariableFacade variableFacade = registry.handle(ValueDeseralizationContext.of(container.getPlayerIInventory().player.level()), itemStack);
×
67
            if(variableFacade.isValid()) {
×
68
                int variableId = variableFacade.getId();
×
69
                String label = StringUtils.isBlank(searchField.getValue()) ? "" : searchField.getValue();
×
70
                LabelsWorldStorage.Access.getInstance(IntegratedDynamics._instance).get().put(variableId, label);
×
71
            } else if(!itemStack.isEmpty()) {
×
72
                String name = searchField.getValue();
×
73
                IntegratedDynamics._instance.getPacketHandler().sendToServer(new ItemStackRenamePacket(name));
×
74
                getMenu().setItemStackName(name);
×
75
            }
76
        }));
×
77

78
        int searchWidth = 87;
×
79
        int searchX = 36;
×
80
        int searchY = 11;
×
81
        this.searchField = new WidgetTextFieldExtended(font, this.leftPos + searchX, this.topPos + searchY, searchWidth, font.lineHeight, Component.translatable("gui.cyclopscore.search"));
×
82
        this.searchField.setMaxLength(64);
×
83
        this.searchField.setBordered(false);
×
84
        this.searchField.setVisible(true);
×
85
        this.searchField.setFocused(true);
×
86
        this.searchField.setTextColor(ARGB.opaque(16777215));
×
87
        this.searchField.setCanLoseFocus(false);
×
88
        this.searchField.setValue("");
×
89
        this.searchField.setX(this.leftPos + (searchX + searchWidth) - this.searchField.getWidth());
×
90
    }
×
91

92
    @Override
93
    protected int getBaseYSize() {
94
        return 113;
×
95
    }
96

97
    @Override
98
    public boolean charTyped(CharacterEvent evt) {
99
        if (!this.searchField.charTyped(evt)) {
×
100
            return super.charTyped(evt);
×
101
        }
102
        return true;
×
103
    }
104

105
    @Override
106
    public boolean keyPressed(KeyEvent evt) {
107
        if (evt.input() != GLFW.GLFW_KEY_ESCAPE) {
×
108
            this.searchField.keyPressed(evt);
×
109
            return true;
×
110
        }
111
        return super.keyPressed(evt);
×
112
    }
113

114
    @Override
115
    public boolean mouseClicked(MouseButtonEvent evt, boolean isDoubleClick) {
116
        return this.searchField.mouseClicked(evt, isDoubleClick)
×
117
                || super.mouseClicked(evt, isDoubleClick);
×
118
    }
119

120
    @Override
121
    protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) {
122
        // super
123
    }
×
124

125
    @Override
126
    protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) {
127
        super.renderBg(guiGraphics, partialTicks, mouseX, mouseY);
×
128
        this.searchField.render(guiGraphics, mouseX, mouseY, partialTicks);
×
129
    }
×
130

131
    public void setText(String text) {
132
        this.searchField.setValue(text);
×
133
    }
×
134

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