Search in sources :

Example 1 with PhantomSlotWidget

use of gregtech.api.gui.widgets.PhantomSlotWidget in project GregTech by GregTechCEu.

the class MetaTileEntityCreativeChest method createUI.

@Override
protected ModularUI createUI(EntityPlayer entityPlayer) {
    ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 209).bindPlayerInventory(entityPlayer.inventory, 126);
    builder.widget(new PhantomSlotWidget(handler, 0, 36, 6).setClearSlotOnRightClick(true).setBackgroundTexture(GuiTextures.SLOT).setChangeListener(this::markDirty));
    builder.label(7, 9, "gregtech.creative.chest.item");
    builder.widget(new ImageWidget(7, 48, 154, 14, GuiTextures.DISPLAY));
    builder.widget(new TextFieldWidget2(9, 50, 152, 10, () -> String.valueOf(itemsPerCycle), value -> {
        if (!value.isEmpty()) {
            itemsPerCycle = Integer.parseInt(value);
        }
    }).setMaxLength(11).setNumbersOnly(1, Integer.MAX_VALUE));
    builder.label(7, 28, "gregtech.creative.chest.ipc");
    builder.widget(new ImageWidget(7, 85, 154, 14, GuiTextures.DISPLAY));
    builder.widget(new TextFieldWidget2(9, 87, 152, 10, () -> String.valueOf(ticksPerCycle), value -> {
        if (!value.isEmpty()) {
            ticksPerCycle = Integer.parseInt(value);
        }
    }).setMaxLength(11).setNumbersOnly(1, Integer.MAX_VALUE));
    builder.label(7, 65, "gregtech.creative.chest.tpc");
    builder.widget(new CycleButtonWidget(7, 101, 162, 20, () -> active, value -> active = value, "gregtech.creative.activity.off", "gregtech.creative.activity.on"));
    return builder.build(getHolder(), entityPlayer);
}
Also used : IItemHandler(net.minecraftforge.items.IItemHandler) Matrix4(codechicken.lib.vec.Matrix4) Textures(gregtech.client.renderer.texture.Textures) IVertexOperation(codechicken.lib.render.pipeline.IVertexOperation) ArrayUtils(org.apache.commons.lang3.ArrayUtils) Function(java.util.function.Function) ImageWidget(gregtech.api.gui.widgets.ImageWidget) ItemStack(net.minecraft.item.ItemStack) ItemHandlerHelper(net.minecraftforge.items.ItemHandlerHelper) CycleButtonWidget(gregtech.api.gui.widgets.CycleButtonWidget) Pair(org.apache.commons.lang3.tuple.Pair) ColourOperation(gregtech.client.renderer.cclop.ColourOperation) TextFieldWidget2(gregtech.api.gui.widgets.TextFieldWidget2) PhantomSlotWidget(gregtech.api.gui.widgets.PhantomSlotWidget) MetaTileEntityHolder(gregtech.api.metatileentity.MetaTileEntityHolder) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) MetaTileEntity(gregtech.api.metatileentity.MetaTileEntity) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) CCRenderState(codechicken.lib.render.CCRenderState) GuiTextures(gregtech.api.gui.GuiTextures) ItemStackHandler(net.minecraftforge.items.ItemStackHandler) EntityPlayer(net.minecraft.entity.player.EntityPlayer) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) ResourceLocation(net.minecraft.util.ResourceLocation) ModularUI(gregtech.api.gui.ModularUI) TileEntity(net.minecraft.tileentity.TileEntity) GTUtility(gregtech.api.util.GTUtility) PhantomSlotWidget(gregtech.api.gui.widgets.PhantomSlotWidget) ModularUI(gregtech.api.gui.ModularUI) CycleButtonWidget(gregtech.api.gui.widgets.CycleButtonWidget) ImageWidget(gregtech.api.gui.widgets.ImageWidget) TextFieldWidget2(gregtech.api.gui.widgets.TextFieldWidget2)

Example 2 with PhantomSlotWidget

use of gregtech.api.gui.widgets.PhantomSlotWidget in project GregTech by GregTechCEu.

the class WorldProspectorARApp method initApp.

@Override
public AbstractApplication initApp() {
    addWidget(new ImageWidget(10, 10, 313, 212, new ColorRectTexture(TerminalTheme.COLOR_B_2.getColor())));
    addWidget(new LabelWidget(15 + 150 / 2, 232 / 2, "terminal.world_prospector.radius", -1, new Object[] { getMaxRadius() }).setShadow(true).setYCentered(true).setXCentered(true));
    int slotSize = (int) Math.pow(2, getAppTier());
    int x = 250 - slotSize * 12;
    int y = 232 / 2 - 18;
    handlers = new SingleItemStackHandler[slotSize];
    colors = new int[slotSize];
    for (int i = 0; i < slotSize; i++) {
        int index = i;
        Tuple<ItemStack, Integer> stack = getSlotStack(i);
        if (stack == null) {
            handlers[i] = new SingleItemStackHandler(ItemStack.EMPTY);
            colors[i] = 0;
        } else {
            handlers[i] = new SingleItemStackHandler(stack.getFirst());
            colors[i] = stack.getSecond();
        }
        RectButtonWidget buttonWidget = new RectButtonWidget(x + i * 24, y + 18, 18, 18, 1);
        addWidget(new PhantomSlotWidget(handlers[i], 0, x + i * 24, y) {

            @Override
            public boolean mouseClicked(int mouseX, int mouseY, int button) {
                if (handlers[index].getStackInSlot(0).isEmpty() && isMouseOverElement(mouseX, mouseY)) {
                    writeClientAction(-1, buffer -> {
                    });
                    selectReference(index, buttonWidget);
                    return true;
                }
                return super.mouseClicked(mouseX, mouseY, button);
            }

            @Override
            public void handleClientAction(int id, PacketBuffer buffer) {
                if (id == -1) {
                    selectReference(index, buttonWidget);
                } else {
                    super.handleClientAction(id, buffer);
                }
            }
        }.setBackgroundTexture(new ColorRectTexture(0x4fffffff)));
        addWidget(buttonWidget.setHoverText("terminal.world_prospector.color").setColors(0x4fffffff, -1, colors[i]).setClickListener(cd -> TerminalDialogWidget.showColorDialog(getOs(), "terminal.world_prospector.color", res -> {
            if (res != null) {
                buttonWidget.setFill(res | 0xff000000);
                colors[index] = res | 0xff000000;
            }
        }, colors[index]).open()));
    }
    addWidget(new CircleButtonWidget(333 / 2, 200).setClickListener(cd -> openAR()).setHoverText("terminal.ar.open").setColors(0, -1, TerminalTheme.COLOR_B_3.getColor()).setIcon(new ItemStackTexture(MetaItems.CAMERA.getStackForm())));
    return this;
}
Also used : java.util(java.util) IRenderContext(gregtech.api.gui.IRenderContext) Blocks(net.minecraft.init.Blocks) MetaItems(gregtech.common.items.MetaItems) BlockStateMatcher(gregtech.common.terminal.app.worldprospector.matcher.BlockStateMatcher) BufferBuilder(net.minecraft.client.renderer.BufferBuilder) AxisAlignedBB(net.minecraft.util.math.AxisAlignedBB) TerminalTheme(gregtech.api.terminal.os.TerminalTheme) TerminalDialogWidget(gregtech.api.terminal.os.TerminalDialogWidget) RenderWorldLastEvent(net.minecraftforge.client.event.RenderWorldLastEvent) ItemStackTexture(gregtech.api.gui.resources.ItemStackTexture) ImageWidget(gregtech.api.gui.widgets.ImageWidget) DefaultVertexFormats(net.minecraft.client.renderer.vertex.DefaultVertexFormats) ItemStack(net.minecraft.item.ItemStack) ShaderTexture(gregtech.api.gui.resources.ShaderTexture) Block(net.minecraft.block.Block) Vec3d(net.minecraft.util.math.Vec3d) Minecraft(net.minecraft.client.Minecraft) Side(net.minecraftforge.fml.relauncher.Side) RenderBufferHelper(gregtech.client.utils.RenderBufferHelper) GL11(org.lwjgl.opengl.GL11) Shaders(gregtech.client.shader.Shaders) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) PhantomSlotWidget(gregtech.api.gui.widgets.PhantomSlotWidget) IMatcher(gregtech.common.terminal.app.worldprospector.matcher.IMatcher) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) DepthTextureUtil(gregtech.client.utils.DepthTextureUtil) Entity(net.minecraft.entity.Entity) BlockFalling(net.minecraft.block.BlockFalling) World(net.minecraft.world.World) GlStateManager(net.minecraft.client.renderer.GlStateManager) Tuple(net.minecraft.util.Tuple) ColorRectTexture(gregtech.api.gui.resources.ColorRectTexture) BlockPos(net.minecraft.util.math.BlockPos) LabelWidget(gregtech.api.gui.widgets.LabelWidget) ARApplication(gregtech.api.terminal.app.ARApplication) Framebuffer(net.minecraft.client.shader.Framebuffer) AbstractApplication(gregtech.api.terminal.app.AbstractApplication) RectButtonWidget(gregtech.api.terminal.gui.widgets.RectButtonWidget) Tessellator(net.minecraft.client.renderer.Tessellator) SingleItemStackHandler(gregtech.common.inventory.handlers.SingleItemStackHandler) EntityPlayer(net.minecraft.entity.player.EntityPlayer) MathHelper(net.minecraft.util.math.MathHelper) CircleButtonWidget(gregtech.api.terminal.gui.widgets.CircleButtonWidget) ItemBlock(net.minecraft.item.ItemBlock) PacketBuffer(net.minecraft.network.PacketBuffer) ItemStackTexture(gregtech.api.gui.resources.ItemStackTexture) CircleButtonWidget(gregtech.api.terminal.gui.widgets.CircleButtonWidget) ColorRectTexture(gregtech.api.gui.resources.ColorRectTexture) SingleItemStackHandler(gregtech.common.inventory.handlers.SingleItemStackHandler) PhantomSlotWidget(gregtech.api.gui.widgets.PhantomSlotWidget) LabelWidget(gregtech.api.gui.widgets.LabelWidget) ImageWidget(gregtech.api.gui.widgets.ImageWidget) ItemStack(net.minecraft.item.ItemStack) PacketBuffer(net.minecraft.network.PacketBuffer) RectButtonWidget(gregtech.api.terminal.gui.widgets.RectButtonWidget)

Example 3 with PhantomSlotWidget

use of gregtech.api.gui.widgets.PhantomSlotWidget in project GregTech by GregTechCEu.

the class ItemStackConfigurator method addSlot.

private void addSlot(DraggableScrollableWidgetGroup container, SlotListWidget.ItemStackInfo itemStackInfo) {
    WidgetGroup group = new WidgetGroup(0, slots.size() * 20, 116, 20);
    slots.add(itemStackInfo);
    IItemHandlerModifiable handler = new SingleItemStackHandler(1);
    handler.setStackInSlot(0, itemStackInfo.getInstance());
    group.addWidget(new PhantomSlotWidget(handler, 0, 1, 1).setBackgroundTexture(TerminalTheme.COLOR_B_2).setChangeListener(() -> {
        itemStackInfo.update(handler.getStackInSlot(0));
        updateValue();
    }));
    group.addWidget(new RectButtonWidget(20, 0, 20, 20).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_1.getColor(), TerminalTheme.COLOR_B_1.getColor()).setClickListener(data -> {
        itemStackInfo.count = Math.max(0, itemStackInfo.count - (data.isShiftClick ? 10 : 1));
        updateValue();
    }).setIcon(new TextTexture("-1", -1)));
    group.addWidget(new RectButtonWidget(76, 0, 20, 20).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_1.getColor(), TerminalTheme.COLOR_B_1.getColor()).setClickListener(data -> {
        itemStackInfo.count = Math.max(0, itemStackInfo.count + (data.isShiftClick ? 10 : 1));
        updateValue();
    }).setIcon(new TextTexture("+1", -1)));
    group.addWidget(new ImageWidget(40, 0, 36, 20, TerminalTheme.COLOR_B_2));
    group.addWidget(new SimpleTextWidget(58, 10, "", 0xFFFFFF, () -> Integer.toString(itemStackInfo.count), true));
    group.addWidget(new RectButtonWidget(96, 0, 20, 20).setColors(TerminalTheme.COLOR_B_1.getColor(), TerminalTheme.COLOR_1.getColor(), TerminalTheme.COLOR_B_1.getColor()).setClickListener(data -> {
        container.waitToRemoved(group);
        slots.remove(itemStackInfo);
        int index = container.widgets.indexOf(group);
        for (int i = container.widgets.size() - 1; i > index; i--) {
            container.widgets.get(i).addSelfPosition(0, -20);
        }
        updateValue();
    }).setIcon(GuiTextures.ICON_REMOVE));
    container.addWidget(group);
}
Also used : IItemHandlerModifiable(net.minecraftforge.items.IItemHandlerModifiable) PhantomSlotWidget(gregtech.api.gui.widgets.PhantomSlotWidget) WidgetGroup(gregtech.api.gui.widgets.WidgetGroup) DraggableScrollableWidgetGroup(gregtech.api.terminal.gui.widgets.DraggableScrollableWidgetGroup) SingleItemStackHandler(gregtech.common.inventory.handlers.SingleItemStackHandler) TextTexture(gregtech.api.gui.resources.TextTexture) ImageWidget(gregtech.api.gui.widgets.ImageWidget) RectButtonWidget(gregtech.api.terminal.gui.widgets.RectButtonWidget) SimpleTextWidget(gregtech.api.gui.widgets.SimpleTextWidget)

Aggregations

ImageWidget (gregtech.api.gui.widgets.ImageWidget)3 PhantomSlotWidget (gregtech.api.gui.widgets.PhantomSlotWidget)3 RectButtonWidget (gregtech.api.terminal.gui.widgets.RectButtonWidget)2 SingleItemStackHandler (gregtech.common.inventory.handlers.SingleItemStackHandler)2 EntityPlayer (net.minecraft.entity.player.EntityPlayer)2 ItemStack (net.minecraft.item.ItemStack)2 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)2 CCRenderState (codechicken.lib.render.CCRenderState)1 IVertexOperation (codechicken.lib.render.pipeline.IVertexOperation)1 Matrix4 (codechicken.lib.vec.Matrix4)1 GuiTextures (gregtech.api.gui.GuiTextures)1 IRenderContext (gregtech.api.gui.IRenderContext)1 ModularUI (gregtech.api.gui.ModularUI)1 ColorRectTexture (gregtech.api.gui.resources.ColorRectTexture)1 ItemStackTexture (gregtech.api.gui.resources.ItemStackTexture)1 ShaderTexture (gregtech.api.gui.resources.ShaderTexture)1 TextTexture (gregtech.api.gui.resources.TextTexture)1 CycleButtonWidget (gregtech.api.gui.widgets.CycleButtonWidget)1 LabelWidget (gregtech.api.gui.widgets.LabelWidget)1 SimpleTextWidget (gregtech.api.gui.widgets.SimpleTextWidget)1