Search in sources :

Example 11 with TextTexture

use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.

the class TemplateBuilderWidget method readInitialData.

@Override
public void readInitialData(PacketBuffer buffer) {
    super.readInitialData(buffer);
    this.addWidget(containers = new DraggableScrollableWidgetGroup(200, 120, 150, 98));
    containers.setClientSideWidget();
    for (int i = buffer.readVarInt(); i > 0; i--) {
        ItemStack itemStack = buffer.readItem();
        int slotIndex = buffer.readVarInt();
        containers.addWidget(new SelectableWidgetGroup(0, containers.widgets.size() * 22, containers.getSize().width, 20).setSelectedTexture(-2, 0xff00aa00).setOnSelected(w -> onSelected(itemStack, slotIndex)).addWidget(new ImageWidget(0, 0, 150, 20, new ColorRectTexture(0x4faaaaaa))).addWidget(new ImageWidget(32, 0, 100, 20, new TextTexture(itemStack.getDisplayName().getString()).setWidth(100).setType(TextTexture.TextType.ROLL))).addWidget(new ImageWidget(4, 2, 18, 18, new ItemStackTexture(itemStack))));
    }
}
Also used : ItemStackTexture(com.lowdragmc.lowdraglib.gui.texture.ItemStackTexture) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) SelectableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) ItemStack(net.minecraft.item.ItemStack) ItemBlueprint(com.lowdragmc.multiblocked.api.item.ItemBlueprint)

Example 12 with TextTexture

use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.

the class ControllerWidget method updateScene.

@OnlyIn(Dist.CLIENT)
private void updateScene(JsonBlockPattern jsonPattern) {
    if (thread != null) {
        thread.interrupt();
        thread = null;
    }
    TrackedDummyWorld world = new TrackedDummyWorld();
    tiles.clear();
    sceneWidget.createScene(world);
    ImageWidget imageWidget;
    sceneWidget.addWidget(imageWidget = new ImageWidget(0, 0, sceneWidget.getSize().width, sceneWidget.getSize().height));
    imageWidget.setVisible(jsonPattern.pattern.length * jsonPattern.pattern[0].length * jsonPattern.pattern[0][0].length() > 1000);
    thread = new Thread(() -> {
        int[] centerOffset = jsonPattern.getCenterOffset();
        String[][] pattern = jsonPattern.pattern;
        Set<BlockPos> posSet = new HashSet<>();
        int offset = Math.max(pattern.length, Math.max(pattern[0].length, pattern[0][0].length()));
        int sum = jsonPattern.pattern.length * jsonPattern.pattern[0].length * jsonPattern.pattern[0][0].length();
        AtomicDouble progress = new AtomicDouble(0);
        imageWidget.setImage(new TextTexture("building scene!").setSupplier(() -> "building scene! " + String.format("%.1f", progress.get()) + "%%").setWidth(sceneWidget.getSize().width));
        int count = 0;
        for (int i = 0; i < pattern.length; i++) {
            for (int j = 0; j < pattern[0].length; j++) {
                for (int k = 0; k < pattern[0][0].length(); k++) {
                    if (Thread.interrupted()) {
                        sceneWidget.waitToRemoved(imageWidget);
                        return;
                    }
                    count++;
                    progress.set(count * 100.0 / sum);
                    char symbol = pattern[i][j].charAt(k);
                    BlockPos pos = jsonPattern.getActualPosOffset(k - centerOffset[2], j - centerOffset[1], i - centerOffset[0], Direction.NORTH).offset(offset, offset, offset);
                    world.addBlock(pos, BlockInfo.fromBlockState(MbdComponents.DummyComponentBlock.defaultBlockState()));
                    DummyComponentTileEntity tileEntity = (DummyComponentTileEntity) world.getBlockEntity(pos);
                    ComponentDefinition definition = null;
                    assert tileEntity != null;
                    boolean disableFormed = false;
                    if (jsonPattern.symbolMap.containsKey(symbol)) {
                        Set<BlockInfo> candidates = new HashSet<>();
                        for (String s : jsonPattern.symbolMap.get(symbol)) {
                            SimplePredicate predicate = jsonPattern.predicates.get(s);
                            if (predicate instanceof PredicateComponent && ((PredicateComponent) predicate).definition != null) {
                                definition = ((PredicateComponent) predicate).definition;
                                disableFormed |= predicate.disableRenderFormed;
                                break;
                            } else if (predicate != null && predicate.candidates != null) {
                                candidates.addAll(Arrays.asList(predicate.candidates.get()));
                                disableFormed |= predicate.disableRenderFormed;
                            }
                        }
                        definition = TemplateBuilderWidget.getComponentDefinition(definition, candidates);
                    }
                    if (definition != null) {
                        tileEntity.setDefinition(definition);
                        if (disableFormed) {
                            definition.formedRenderer = new MBDBlockStateRenderer(Blocks.AIR.defaultBlockState());
                        }
                    }
                    tileEntity.isFormed = isFormed;
                    tileEntity.setLevelAndPosition(world, pos);
                    posSet.add(pos);
                    tiles.add(tileEntity);
                }
            }
        }
        Minecraft.getInstance().execute(() -> {
            sceneWidget.setRenderedCore(posSet, null);
            sceneWidget.waitToRemoved(imageWidget);
        });
        thread = null;
    });
    thread.start();
}
Also used : MBDBlockStateRenderer(com.lowdragmc.multiblocked.client.renderer.impl.MBDBlockStateRenderer) HashSet(java.util.HashSet) Set(java.util.Set) AtomicDouble(com.google.common.util.concurrent.AtomicDouble) TrackedDummyWorld(com.lowdragmc.lowdraglib.utils.TrackedDummyWorld) PredicateComponent(com.lowdragmc.multiblocked.api.pattern.predicates.PredicateComponent) SimplePredicate(com.lowdragmc.multiblocked.api.pattern.predicates.SimplePredicate) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) BlockPos(net.minecraft.util.math.BlockPos) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) DummyComponentTileEntity(com.lowdragmc.multiblocked.api.tile.DummyComponentTileEntity) ComponentDefinition(com.lowdragmc.multiblocked.api.definition.ComponentDefinition) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn)

Example 13 with TextTexture

use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.

the class ControllerScriptWidget method updateList.

private void updateList() {
    jsonList.clearAllWidgets();
    selected = null;
    File path = new File(Multiblocked.location, "definition/controller");
    if (!path.isDirectory()) {
        if (!path.mkdirs()) {
            return;
        }
    }
    for (File file : Optional.ofNullable(path.listFiles()).orElse(new File[0])) {
        if (file.isFile() && file.getName().endsWith(".json")) {
            jsonList.addWidget(new SelectableWidgetGroup(0, 1 + jsonList.widgets.size() * 11, jsonList.getSize().width, 10).setSelectedTexture(-1, -1).setOnSelected(W -> selected = file).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new ColorRectTexture(0xff000000))).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new TextTexture(file.getName().replace(".json", "")).setWidth(jsonList.getSize().width).setType(TextTexture.TextType.ROLL))));
        }
    }
}
Also used : RecipeMap(com.lowdragmc.multiblocked.api.recipe.RecipeMap) JsonObject(com.google.gson.JsonObject) PredicateComponent(com.lowdragmc.multiblocked.api.pattern.predicates.PredicateComponent) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) JsonBlockPattern(com.lowdragmc.multiblocked.api.pattern.JsonBlockPattern) ResourceBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture) TabContainer(com.lowdragmc.lowdraglib.gui.widget.TabContainer) JsonElement(com.google.gson.JsonElement) ClickData(com.lowdragmc.lowdraglib.gui.util.ClickData) TextBoxWidget(com.lowdragmc.lowdraglib.gui.widget.TextBoxWidget) ComponentDefinition(com.lowdragmc.multiblocked.api.definition.ComponentDefinition) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) SelectableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup) Desktop(java.awt.Desktop) MbdComponents(com.lowdragmc.multiblocked.api.registry.MbdComponents) ControllerTileTesterEntity(com.lowdragmc.multiblocked.api.tile.ControllerTileTesterEntity) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) IOException(java.io.IOException) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget) File(java.io.File) PageWidget(com.lowdragmc.multiblocked.api.gui.controller.PageWidget) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ControllerDefinition(com.lowdragmc.multiblocked.api.definition.ControllerDefinition) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ResourceLocation(net.minecraft.util.ResourceLocation) Optional(java.util.Optional) FileUtility(com.lowdragmc.lowdraglib.utils.FileUtility) Multiblocked(com.lowdragmc.multiblocked.Multiblocked) Collections(java.util.Collections) PacketBuffer(net.minecraft.network.PacketBuffer) SelectableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) File(java.io.File)

Example 14 with TextTexture

use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.

the class PartScriptWidget method updateList.

private void updateList() {
    jsonList.clearAllWidgets();
    selected = null;
    File path = new File(Multiblocked.location, "definition/part");
    if (!path.isDirectory()) {
        if (!path.mkdirs()) {
            return;
        }
    }
    for (File file : Optional.ofNullable(path.listFiles()).orElse(new File[0])) {
        if (file.isFile() && file.getName().endsWith(".json")) {
            jsonList.addWidget(new SelectableWidgetGroup(0, 1 + jsonList.widgets.size() * 11, jsonList.getSize().width, 10).setSelectedTexture(-1, -1).setOnSelected(W -> selected = file).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new ColorRectTexture(0xff000000))).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new TextTexture(file.getName().replace(".json", "")).setWidth(jsonList.getSize().width).setType(TextTexture.TextType.ROLL))));
        }
    }
}
Also used : ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) ResourceBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture) TabContainer(com.lowdragmc.lowdraglib.gui.widget.TabContainer) JsonElement(com.google.gson.JsonElement) ClickData(com.lowdragmc.lowdraglib.gui.util.ClickData) TextBoxWidget(com.lowdragmc.lowdraglib.gui.widget.TextBoxWidget) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) SelectableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup) Desktop(java.awt.Desktop) MbdComponents(com.lowdragmc.multiblocked.api.registry.MbdComponents) PartDefinition(com.lowdragmc.multiblocked.api.definition.PartDefinition) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) PartTileTesterEntity(com.lowdragmc.multiblocked.api.tile.part.PartTileTesterEntity) IOException(java.io.IOException) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget) File(java.io.File) PageWidget(com.lowdragmc.multiblocked.api.gui.controller.PageWidget) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ResourceLocation(net.minecraft.util.ResourceLocation) Optional(java.util.Optional) FileUtility(com.lowdragmc.lowdraglib.utils.FileUtility) Multiblocked(com.lowdragmc.multiblocked.Multiblocked) Collections(java.util.Collections) PacketBuffer(net.minecraft.network.PacketBuffer) SelectableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) File(java.io.File)

Example 15 with TextTexture

use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.

the class SimplePredicate method getConfigWidget.

public List<WidgetGroup> getConfigWidget(List<WidgetGroup> groups) {
    WidgetGroup group = new WidgetGroup(0, 0, 300, 90);
    groups.add(group);
    group.setClientSideWidget();
    group.addWidget(new LabelWidget(0, 0, () -> LocalizationUtils.format("multiblocked.gui.label.type") + " " + type).setTextColor(-1).setDrop(true));
    TextFieldWidget min, max, preview, nbt, tooltips;
    group.addWidget(min = new TextFieldWidget(55, 15, 30, 15, () -> minCount + "", s -> {
        minCount = Integer.parseInt(s);
        if (minCount > maxCount) {
            maxCount = minCount;
        }
    }).setNumbersOnly(0, Integer.MAX_VALUE));
    min.setHoverTooltips("multiblocked.gui.tips.min").setVisible(minCount != -1);
    group.addWidget(new SwitchWidget(0, 15, 50, 15, (cd, r) -> {
        min.setVisible(r);
        minCount = r ? 0 : -1;
    }).setPressed(minCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("min (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("min (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.min"));
    group.addWidget(max = new TextFieldWidget(55, 33, 30, 15, () -> maxCount + "", s -> {
        maxCount = Integer.parseInt(s);
        if (minCount > maxCount) {
            minCount = maxCount;
        }
    }).setNumbersOnly(0, Integer.MAX_VALUE));
    max.setHoverTooltips("multiblocked.gui.tips.max").setVisible(maxCount != -1);
    group.addWidget(new SwitchWidget(0, 33, 50, 15, (cd, r) -> {
        max.setVisible(r);
        maxCount = r ? 0 : -1;
    }).setPressed(maxCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("max (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("max (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.max"));
    group.addWidget(preview = (TextFieldWidget) new TextFieldWidget(55, 51, 30, 15, () -> previewCount + "", s -> previewCount = Integer.parseInt(s)).setNumbersOnly(0, Integer.MAX_VALUE).setHoverTooltips("multiblocked.gui.predicate.preview"));
    preview.setHoverTooltips("multiblocked.gui.predicate.jei").setVisible(previewCount != -1);
    group.addWidget(new SwitchWidget(0, 51, 50, 15, (cd, r) -> {
        preview.setVisible(r);
        previewCount = r ? 0 : -1;
    }).setPressed(previewCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("jei (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("jei (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.preview.1"));
    WidgetGroup widgetGroup = new WidgetGroup(0, 70, 100, 15).addWidget(new SwitchWidget(0, 0, 15, 15, (cd, r) -> disableRenderFormed = r).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0, 1, 0.5)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0.5, 1, 0.5)).setHoverTexture(new ColorBorderTexture(1, -1)).setPressed(disableRenderFormed).setHoverTooltips("multiblocked.gui.predicate.disabled")).addWidget(new ImageWidget(2, 2, 11, 11, new ColorBorderTexture(1, -1))).addWidget(new LabelWidget(20, 3, "disableRenderFormed").setTextColor(-1).setDrop(true));
    group.addWidget(widgetGroup);
    group.addWidget(nbt = new TextFieldWidget(155, 15, 100, 15, null, s -> nbtParser = s));
    nbt.setCurrentString(nbtParser == null ? "" : nbtParser).setHoverTooltips("nbt parser").setVisible(nbtParser != null);
    group.addWidget(new SwitchWidget(100, 15, 50, 15, (cd, r) -> {
        nbt.setVisible(r);
        nbtParser = r ? "" : null;
    }).setPressed(nbtParser != null).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("nbt (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("nbt (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.nbt"));
    group.addWidget(tooltips = new TextFieldWidget(155, 33, 100, 15, null, s -> customTips = s));
    tooltips.setCurrentString(customTips != null ? customTips : "").setHoverTooltips("multiblocked.gui.predicate.tips").setVisible(customTips != null);
    group.addWidget(new SwitchWidget(100, 33, 50, 15, (cd, r) -> {
        tooltips.setVisible(r);
        customTips = r ? "" : null;
    }).setPressed(customTips != null).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("tips (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("tips (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.add_tips"));
    group.addWidget(new SelectorWidget(130, 70, 40, 15, Arrays.asList("IN", "OUT", "BOTH", "NULL"), -1).setValue(io == null ? "NULL" : io.name()).setIsUp(true).setOnChanged(io -> this.io = io.equals("NULL") ? null : IO.valueOf(io)).setButtonBackground(ResourceBorderTexture.BUTTON_COMMON).setBackground(new ColorRectTexture(0xff333333)).setHoverTooltips("multiblocked.gui.tips.io"));
    return groups;
}
Also used : JSONUtils(net.minecraft.util.JSONUtils) JsonObject(com.google.gson.JsonObject) Arrays(java.util.Arrays) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) LocalizationUtils(com.lowdragmc.lowdraglib.utils.LocalizationUtils) CompoundNBT(net.minecraft.nbt.CompoundNBT) SinglePredicateError(com.lowdragmc.multiblocked.api.pattern.error.SinglePredicateError) ResourceBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture) Supplier(java.util.function.Supplier) Dist(net.minecraftforge.api.distmarker.Dist) ArrayList(java.util.ArrayList) I18n(net.minecraft.client.resources.I18n) SelectorWidget(com.lowdragmc.lowdraglib.gui.widget.SelectorWidget) ItemStack(net.minecraft.item.ItemStack) BlockInfo(com.lowdragmc.lowdraglib.utils.BlockInfo) Gson(com.google.gson.Gson) LabelWidget(com.lowdragmc.lowdraglib.gui.widget.LabelWidget) IO(com.lowdragmc.multiblocked.api.capability.IO) JsonPrimitive(com.google.gson.JsonPrimitive) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) PatternStringError(com.lowdragmc.multiblocked.api.pattern.error.PatternStringError) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) TextFieldWidget(com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget) TraceabilityPredicate(com.lowdragmc.multiblocked.api.pattern.TraceabilityPredicate) Predicate(java.util.function.Predicate) ColorBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture) SwitchWidget(com.lowdragmc.lowdraglib.gui.widget.SwitchWidget) MultiblockState(com.lowdragmc.multiblocked.api.pattern.MultiblockState) Collectors(java.util.stream.Collectors) Blocks(net.minecraft.block.Blocks) List(java.util.List) LongOpenHashSet(it.unimi.dsi.fastutil.longs.LongOpenHashSet) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) TileEntity(net.minecraft.tileentity.TileEntity) Pattern(java.util.regex.Pattern) Collections(java.util.Collections) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ColorBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture) LabelWidget(com.lowdragmc.lowdraglib.gui.widget.LabelWidget) SelectorWidget(com.lowdragmc.lowdraglib.gui.widget.SelectorWidget) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) TextFieldWidget(com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget) SwitchWidget(com.lowdragmc.lowdraglib.gui.widget.SwitchWidget) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget)

Aggregations

TextTexture (com.lowdragmc.lowdraglib.gui.texture.TextTexture)17 ImageWidget (com.lowdragmc.lowdraglib.gui.widget.ImageWidget)14 ColorRectTexture (com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture)12 ResourceTexture (com.lowdragmc.lowdraglib.gui.texture.ResourceTexture)11 ButtonWidget (com.lowdragmc.lowdraglib.gui.widget.ButtonWidget)11 DraggableScrollableWidgetGroup (com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup)7 File (java.io.File)7 SelectableWidgetGroup (com.lowdragmc.lowdraglib.gui.widget.SelectableWidgetGroup)6 Multiblocked (com.lowdragmc.multiblocked.Multiblocked)6 OnlyIn (net.minecraftforge.api.distmarker.OnlyIn)6 JsonElement (com.google.gson.JsonElement)5 ResourceBorderTexture (com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture)5 TextFieldWidget (com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget)5 WidgetGroup (com.lowdragmc.lowdraglib.gui.widget.WidgetGroup)5 Collections (java.util.Collections)5 List (java.util.List)5 ResourceLocation (net.minecraft.util.ResourceLocation)5 JsonObject (com.google.gson.JsonObject)4 DialogWidget (com.lowdragmc.lowdraglib.gui.widget.DialogWidget)4 FileUtility (com.lowdragmc.lowdraglib.utils.FileUtility)4