Search in sources :

Example 6 with WidgetGroup

use of com.lowdragmc.lowdraglib.gui.widget.WidgetGroup in project Multiblocked by Low-Drag-MC.

the class PredicateStates method getConfigWidget.

@Override
public List<WidgetGroup> getConfigWidget(List<WidgetGroup> groups) {
    super.getConfigWidget(groups);
    WidgetGroup group = new WidgetGroup(0, 0, 182, 100);
    groups.add(group);
    DraggableScrollableWidgetGroup container = new DraggableScrollableWidgetGroup(0, 25, 182, 80).setBackground(new ColorRectTexture(0xffaaaaaa));
    group.addWidget(container);
    List<BlockState> blockList = new ArrayList<>(Arrays.asList(states));
    for (BlockState blockState : blockList) {
        addBlockSelectorWidget(blockList, container, blockState);
    }
    group.addWidget(new LabelWidget(0, 6, "multiblocked.gui.label.block_settings"));
    group.addWidget(new ButtonWidget(162, 0, 20, 20, cd -> {
        blockList.add(null);
        addBlockSelectorWidget(blockList, container, null);
    }).setButtonTexture(new ResourceTexture("multiblocked:textures/gui/add.png")).setHoverBorderTexture(1, -1).setHoverTooltips("multiblocked.gui.predicate.states.add"));
    return groups;
}
Also used : BlockState(net.minecraft.block.BlockState) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) LabelWidget(com.lowdragmc.lowdraglib.gui.widget.LabelWidget) ArrayList(java.util.ArrayList) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget)

Example 7 with WidgetGroup

use of com.lowdragmc.lowdraglib.gui.widget.WidgetGroup in project Multiblocked by Low-Drag-MC.

the class IMultiblockedRenderer method createBoolSwitch.

default WidgetGroup createBoolSwitch(int x, int y, String text, String tips, boolean init, Consumer<Boolean> onPressed) {
    WidgetGroup widgetGroup = new WidgetGroup(x, y, 100, 15);
    widgetGroup.addWidget(new SwitchWidget(0, 0, 15, 15, (cd, r) -> onPressed.accept(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, 0xff545757)).setPressed(init).setHoverTooltips(tips));
    widgetGroup.addWidget(new LabelWidget(20, 3, () -> text).setTextColor(-1).setDrop(true));
    return widgetGroup;
}
Also used : ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ColorBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture) LabelWidget(com.lowdragmc.lowdraglib.gui.widget.LabelWidget) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) SwitchWidget(com.lowdragmc.lowdraglib.gui.widget.SwitchWidget)

Example 8 with WidgetGroup

use of com.lowdragmc.lowdraglib.gui.widget.WidgetGroup in project Multiblocked by Low-Drag-MC.

the class GTRenderer method addTextureSelector.

protected void addTextureSelector(int x, int y, int width, int height, String text, WidgetGroup parent, WidgetGroup group, ResourceLocation init, Consumer<ResourceLocation> newTexture) {
    ImageWidget imageWidget;
    if (init != null) {
        imageWidget = new ImageWidget(x, y, width, height, new GuiTextureGroup(new ColorBorderTexture(1, -1), new ResourceTexture(init.getNamespace() + ":textures/" + init.getPath() + ".png")));
    } else {
        imageWidget = new ImageWidget(x, y, width, height, new ColorBorderTexture(1, -1));
    }
    group.addWidget(imageWidget);
    group.addWidget(new ButtonWidget(x, y, width, height, null, cd -> new ResourceTextureWidget(parent, texture -> {
        if (texture != null) {
            imageWidget.setImage(new GuiTextureGroup(new ColorBorderTexture(1, -1), texture));
            newTexture.accept(new ResourceLocation(texture.imageLocation.toString().replace("textures/", "").replace(".png", "")));
        }
    })).setHoverTexture(new ColorRectTexture(0x4faaaaaa)).setHoverTooltips(String.format("select the %s texture", text)));
}
Also used : JsonObject(com.google.gson.JsonObject) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) CustomBakedModel(com.lowdragmc.lowdraglib.client.model.custommodel.CustomBakedModel) IBakedModel(net.minecraft.client.renderer.model.IBakedModel) Random(java.util.Random) Direction(net.minecraft.util.Direction) Supplier(java.util.function.Supplier) BlockModel(net.minecraft.client.renderer.model.BlockModel) Dist(net.minecraftforge.api.distmarker.Dist) Minecraft(net.minecraft.client.Minecraft) Gson(com.google.gson.Gson) IBlockDisplayReader(net.minecraft.world.IBlockDisplayReader) BlockState(net.minecraft.block.BlockState) ModelLoader(net.minecraftforge.client.model.ModelLoader) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) Nonnull(javax.annotation.Nonnull) IMultiblockedRenderer(com.lowdragmc.multiblocked.client.renderer.IMultiblockedRenderer) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) ResourceTextureWidget(com.lowdragmc.multiblocked.api.gui.dialogs.ResourceTextureWidget) EnumMap(java.util.EnumMap) ColorBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture) IPartComponent(com.lowdragmc.multiblocked.api.tile.part.IPartComponent) IModelData(net.minecraftforge.client.model.data.IModelData) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) AtlasTexture(net.minecraft.client.renderer.texture.AtlasTexture) ModelFactory(com.lowdragmc.lowdraglib.client.model.ModelFactory) GuiTextureGroup(com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup) IControllerComponent(com.lowdragmc.multiblocked.api.tile.IControllerComponent) BlockPos(net.minecraft.util.math.BlockPos) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget) BakedQuad(net.minecraft.client.renderer.model.BakedQuad) Consumer(java.util.function.Consumer) List(java.util.List) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ResourceLocation(net.minecraft.util.ResourceLocation) IUnbakedModel(net.minecraft.client.renderer.model.IUnbakedModel) TileEntity(net.minecraft.tileentity.TileEntity) Multiblocked(com.lowdragmc.multiblocked.Multiblocked) Collections(java.util.Collections) ResourceTextureWidget(com.lowdragmc.multiblocked.api.gui.dialogs.ResourceTextureWidget) ColorBorderTexture(com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) ResourceLocation(net.minecraft.util.ResourceLocation) ColorRectTexture(com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget) GuiTextureGroup(com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup)

Example 9 with WidgetGroup

use of com.lowdragmc.lowdraglib.gui.widget.WidgetGroup in project Multiblocked by Low-Drag-MC.

the class GeoComponentRenderer method createConfigurator.

@Override
public Supplier<IMultiblockedRenderer> createConfigurator(WidgetGroup parent, DraggableScrollableWidgetGroup group, IMultiblockedRenderer current) {
    TextFieldWidget tfw = new TextFieldWidget(1, 1, 150, 20, null, null);
    File path = new File(Multiblocked.location, "assets/multiblocked/geo");
    AtomicBoolean isGlobal = new AtomicBoolean(false);
    if (current instanceof GeoComponentRenderer) {
        tfw.setCurrentString(((GeoComponentRenderer) current).modelName);
        isGlobal.set(((GeoComponentRenderer) current).isGlobal);
    }
    group.addWidget(new ButtonWidget(155, 1, 20, 20, cd -> DialogWidget.showFileDialog(parent, "select a geo file", path, true, DialogWidget.suffixFilter(".geo.json"), r -> {
        if (r != null && r.isFile()) {
            tfw.setCurrentString(r.getName().replace(".geo.json", ""));
        }
    })).setButtonTexture(new ResourceTexture("multiblocked:textures/gui/darkened_slot.png"), new TextTexture("F", -1)).setHoverTooltips("multiblocked.gui.tips.file_selector"));
    group.addWidget(tfw);
    group.addWidget(createBoolSwitch(1, 25, "isGlobal", "multiblocked.gui.predicate.geo.0", isGlobal.get(), isGlobal::set));
    return () -> {
        if (tfw.getCurrentString().isEmpty()) {
            return null;
        } else {
            return new GeoComponentRenderer(tfw.getCurrentString(), isGlobal.get());
        }
    };
}
Also used : JSONUtils(net.minecraft.util.JSONUtils) AnimationBuilder(software.bernie.geckolib3.core.builder.AnimationBuilder) JsonObject(com.google.gson.JsonObject) GeoBone(software.bernie.geckolib3.geo.render.built.GeoBone) Random(java.util.Random) Direction(net.minecraft.util.Direction) Dist(net.minecraftforge.api.distmarker.Dist) Gson(com.google.gson.Gson) IBlockDisplayReader(net.minecraft.world.IBlockDisplayReader) AnimationData(software.bernie.geckolib3.core.manager.AnimationData) BlockState(net.minecraft.block.BlockState) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) PlayState(software.bernie.geckolib3.core.PlayState) TextFieldWidget(com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget) IAnimatable(software.bernie.geckolib3.core.IAnimatable) IModelData(net.minecraftforge.client.model.data.IModelData) DraggableScrollableWidgetGroup(com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup) AtlasTexture(net.minecraft.client.renderer.texture.AtlasTexture) Animation(software.bernie.geckolib3.core.builder.Animation) Set(java.util.Set) AnimationFile(software.bernie.geckolib3.file.AnimationFile) Objects(java.util.Objects) IGeoRenderer(software.bernie.geckolib3.renderers.geo.IGeoRenderer) List(java.util.List) Vector3f(net.minecraft.util.math.vector.Vector3f) AnimatedGeoModel(software.bernie.geckolib3.model.AnimatedGeoModel) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) GeoModelProvider(software.bernie.geckolib3.model.provider.GeoModelProvider) RenderUtils(software.bernie.geckolib3.util.RenderUtils) OverlayTexture(net.minecraft.client.renderer.texture.OverlayTexture) OnlyIn(net.minecraftforge.api.distmarker.OnlyIn) AnimationController(software.bernie.geckolib3.core.controller.AnimationController) ItemCameraTransforms(net.minecraft.client.renderer.model.ItemCameraTransforms) IBakedModel(net.minecraft.client.renderer.model.IBakedModel) IRenderTypeBuffer(net.minecraft.client.renderer.IRenderTypeBuffer) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Supplier(java.util.function.Supplier) HashSet(java.util.HashSet) ItemStack(net.minecraft.item.ItemStack) Minecraft(net.minecraft.client.Minecraft) TextureStitchEvent(net.minecraftforge.client.event.TextureStitchEvent) Nonnull(javax.annotation.Nonnull) IMultiblockedRenderer(com.lowdragmc.multiblocked.client.renderer.IMultiblockedRenderer) MatrixStack(com.mojang.blaze3d.matrix.MatrixStack) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) GeoModel(software.bernie.geckolib3.geo.render.built.GeoModel) IVertexBuilder(com.mojang.blaze3d.vertex.IVertexBuilder) RenderType(net.minecraft.client.renderer.RenderType) BlockPos(net.minecraft.util.math.BlockPos) AnimationFactory(software.bernie.geckolib3.core.manager.AnimationFactory) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget) File(java.io.File) DialogWidget(com.lowdragmc.lowdraglib.gui.widget.DialogWidget) IComponent(com.lowdragmc.multiblocked.api.tile.IComponent) BakedQuad(net.minecraft.client.renderer.model.BakedQuad) GeoCube(software.bernie.geckolib3.geo.render.built.GeoCube) ResourceLocation(net.minecraft.util.ResourceLocation) IAnimatableModel(software.bernie.geckolib3.core.IAnimatableModel) GeckoLibCache(software.bernie.geckolib3.resource.GeckoLibCache) AnimationEvent(software.bernie.geckolib3.core.event.predicate.AnimationEvent) TileEntity(net.minecraft.tileentity.TileEntity) Multiblocked(com.lowdragmc.multiblocked.Multiblocked) Collections(java.util.Collections) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) TextTexture(com.lowdragmc.lowdraglib.gui.texture.TextTexture) TextFieldWidget(com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget) AnimationFile(software.bernie.geckolib3.file.AnimationFile) File(java.io.File) ButtonWidget(com.lowdragmc.lowdraglib.gui.widget.ButtonWidget)

Example 10 with WidgetGroup

use of com.lowdragmc.lowdraglib.gui.widget.WidgetGroup in project Multiblocked by Low-Drag-MC.

the class ComponentTileEntity method initTraitUI.

protected void initTraitUI(TabContainer tabContainer, PlayerEntity PlayerEntity) {
    WidgetGroup group = new WidgetGroup(20, 0, 176, 256);
    tabContainer.addTab(new TabButton(0, tabContainer.containerGroup.widgets.size() * 20, 20, 20).setTexture(new ResourceTexture("multiblocked:textures/gui/custom_gui_tab_button.png").getSubTexture(0, 0, 1, 0.5), new ResourceTexture("multiblocked:textures/gui/custom_gui_tab_button.png").getSubTexture(0, 0.5, 1, 0.5)), group);
    group.addWidget(new ImageWidget(0, 0, 176, 256, new ResourceTexture(JSONUtils.getAsString(definition.traits, "background", "multiblocked:textures/gui/custom_gui.png"))));
    if (traits.size() > 0) {
        for (int row = 0; row < 3; row++) {
            for (int col = 0; col < 9; col++) {
                group.addWidget(new SlotWidget(PlayerEntity.inventory, col + (row + 1) * 9, 7 + col * 18, 173 + row * 18).setLocationInfo(true, false));
            }
        }
        for (int slot = 0; slot < 9; slot++) {
            group.addWidget(new SlotWidget(PlayerEntity.inventory, slot, 7 + slot * 18, 231).setLocationInfo(true, true));
        }
    }
    for (CapabilityTrait trait : traits.values()) {
        trait.createUI(this, group, PlayerEntity);
    }
}
Also used : SlotWidget(com.lowdragmc.lowdraglib.gui.widget.SlotWidget) ResourceTexture(com.lowdragmc.lowdraglib.gui.texture.ResourceTexture) TabButton(com.lowdragmc.lowdraglib.gui.widget.TabButton) CapabilityTrait(com.lowdragmc.multiblocked.api.capability.trait.CapabilityTrait) WidgetGroup(com.lowdragmc.lowdraglib.gui.widget.WidgetGroup) ImageWidget(com.lowdragmc.lowdraglib.gui.widget.ImageWidget)

Aggregations

WidgetGroup (com.lowdragmc.lowdraglib.gui.widget.WidgetGroup)17 ResourceTexture (com.lowdragmc.lowdraglib.gui.texture.ResourceTexture)13 LabelWidget (com.lowdragmc.lowdraglib.gui.widget.LabelWidget)11 DraggableScrollableWidgetGroup (com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup)9 ColorRectTexture (com.lowdragmc.lowdraglib.gui.texture.ColorRectTexture)8 ButtonWidget (com.lowdragmc.lowdraglib.gui.widget.ButtonWidget)8 TextFieldWidget (com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget)8 TextTexture (com.lowdragmc.lowdraglib.gui.texture.TextTexture)6 SwitchWidget (com.lowdragmc.lowdraglib.gui.widget.SwitchWidget)6 Collections (java.util.Collections)6 Minecraft (net.minecraft.client.Minecraft)6 ResourceLocation (net.minecraft.util.ResourceLocation)6 JsonObject (com.google.gson.JsonObject)5 ColorBorderTexture (com.lowdragmc.lowdraglib.gui.texture.ColorBorderTexture)5 List (java.util.List)5 Dist (net.minecraftforge.api.distmarker.Dist)5 OnlyIn (net.minecraftforge.api.distmarker.OnlyIn)5 Gson (com.google.gson.Gson)4 ResourceBorderTexture (com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture)4 ImageWidget (com.lowdragmc.lowdraglib.gui.widget.ImageWidget)4