Search in sources :

Example 1 with WidgetPluginConfig

use of gregtech.common.gui.widget.monitor.WidgetPluginConfig in project GregTech by GregTechCEu.

the class MonitorPluginBaseBehavior method createUI.

@Override
public final ModularUI createUI(PlayerInventoryHolder playerInventoryHolder, EntityPlayer entityPlayer) {
    ItemStack itemStack = playerInventoryHolder.getCurrentItem();
    MonitorPluginBaseBehavior behavior = MonitorPluginBaseBehavior.getBehavior(itemStack);
    if (behavior != null) {
        behavior = behavior.createPlugin();
        behavior.readFromNBT(itemStack.getOrCreateSubCompound("monitor_plugin"));
        return ModularUI.builder(GuiTextures.BOXED_BACKGROUND, 260, 210).widget(behavior.customUI(new WidgetPluginConfig().setBackGround(GuiTextures.BACKGROUND), playerInventoryHolder, entityPlayer)).bindCloseListener(this::markAsDirty).build(playerInventoryHolder, entityPlayer);
    }
    return null;
}
Also used : ItemStack(net.minecraft.item.ItemStack) WidgetPluginConfig(gregtech.common.gui.widget.monitor.WidgetPluginConfig)

Example 2 with WidgetPluginConfig

use of gregtech.common.gui.widget.monitor.WidgetPluginConfig in project GregTech by GregTechCEu.

the class TextPluginBehavior method customUI.

@Override
public WidgetPluginConfig customUI(WidgetPluginConfig widgets, IUIHolder holder, EntityPlayer entityPlayer) {
    widgets.setSize(260, 210);
    for (int i = 0; i < texts.length; i++) {
        int finalI = i;
        widgets.addWidget(new TextFieldWidget(25, 25 + i * 10, 100, 10, true, () -> this.texts[finalI], (text) -> setText(finalI, text, this.colors[finalI])).setValidator((data) -> true));
        widgets.addWidget(new WidgetARGB(135, 25 + i * 10, 10, colors[i], color -> setText(finalI, this.texts[finalI], color)));
    }
    return widgets;
}
Also used : NBTTagCompound(net.minecraft.nbt.NBTTagCompound) Arrays(java.util.Arrays) RayTraceResult(net.minecraft.util.math.RayTraceResult) MonitorPluginBaseBehavior(gregtech.api.items.behavior.MonitorPluginBaseBehavior) IUIHolder(gregtech.api.gui.IUIHolder) WidgetARGB(gregtech.common.gui.widget.WidgetARGB) Side(net.minecraftforge.fml.relauncher.Side) RenderUtil(gregtech.client.utils.RenderUtil) EntityPlayer(net.minecraft.entity.player.EntityPlayer) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) GregtechDataCodes(gregtech.api.capability.GregtechDataCodes) TextFieldWidget(gregtech.api.gui.widgets.TextFieldWidget) PacketBuffer(net.minecraft.network.PacketBuffer) WidgetPluginConfig(gregtech.common.gui.widget.monitor.WidgetPluginConfig) WidgetARGB(gregtech.common.gui.widget.WidgetARGB) TextFieldWidget(gregtech.api.gui.widgets.TextFieldWidget)

Example 3 with WidgetPluginConfig

use of gregtech.common.gui.widget.monitor.WidgetPluginConfig in project GregTech by GregTechCEu.

the class MetaTileEntityMonitorScreen method createUI.

@Override
protected ModularUI createUI(EntityPlayer entityPlayer) {
    MultiblockControllerBase controller = this.getController();
    if (controller instanceof MetaTileEntityCentralMonitor && ((MetaTileEntityCentralMonitor) controller).isActive()) {
        int width = 330;
        int height = 260;
        ToggleButtonWidget[] buttons = new ToggleButtonWidget[5];
        buttons[0] = new ToggleButtonWidget(width - 135, 25, 20, 20, GuiTextures.BUTTON_FLUID, () -> this.mode == CoverDigitalInterface.MODE.FLUID, (isPressed) -> {
            if (isPressed)
                setMode(CoverDigitalInterface.MODE.FLUID);
        }).setTooltipText("metaitem.cover.digital.mode.fluid");
        buttons[1] = new ToggleButtonWidget(width - 115, 25, 20, 20, GuiTextures.BUTTON_ITEM, () -> this.mode == CoverDigitalInterface.MODE.ITEM, (isPressed) -> {
            if (isPressed)
                setMode(CoverDigitalInterface.MODE.ITEM);
        }).setTooltipText("metaitem.cover.digital.mode.item");
        buttons[2] = new ToggleButtonWidget(width - 95, 25, 20, 20, GuiTextures.BUTTON_ENERGY, () -> this.mode == CoverDigitalInterface.MODE.ENERGY, (isPressed) -> {
            if (isPressed)
                setMode(CoverDigitalInterface.MODE.ENERGY);
        }).setTooltipText("metaitem.cover.digital.mode.energy");
        buttons[3] = new ToggleButtonWidget(width - 75, 25, 20, 20, GuiTextures.BUTTON_MACHINE, () -> this.mode == CoverDigitalInterface.MODE.MACHINE, (isPressed) -> {
            if (isPressed)
                setMode(CoverDigitalInterface.MODE.MACHINE);
        }).setTooltipText("metaitem.cover.digital.mode.machine");
        buttons[4] = new ToggleButtonWidget(width - 35, 25, 20, 20, GuiTextures.BUTTON_INTERFACE, () -> this.mode == CoverDigitalInterface.MODE.PROXY, (isPressed) -> {
            if (isPressed)
                setMode(CoverDigitalInterface.MODE.PROXY);
        }).setTooltipText("metaitem.cover.digital.mode.proxy");
        List<CoverDigitalInterface> covers = new ArrayList<>();
        ((MetaTileEntityCentralMonitor) controller).getAllCovers().forEach(coverPos -> covers.add(getCoverFromPosSide(coverPos)));
        WidgetPluginConfig pluginWidget = new WidgetPluginConfig();
        WidgetPluginConfig mainGroup = new WidgetPluginConfig().setSize(width, height);
        mainGroup.widget(new LabelWidget(15, 55, "monitor.gui.title.scale", 0xFFFFFFFF)).widget(new ClickButtonWidget(50, 50, 20, 20, "-1", (data) -> setConfig(this.slot, ((float) Math.round((scale - (data.isShiftClick ? 1.0f : 0.1f)) * 10) / 10), this.frameColor))).widget(new ClickButtonWidget(130, 50, 20, 20, "+1", (data) -> setConfig(this.slot, ((float) Math.round((scale + (data.isShiftClick ? 1.0f : 0.1f)) * 10) / 10), this.frameColor))).widget(new ImageWidget(70, 50, 60, 20, GuiTextures.DISPLAY)).widget(new SimpleTextWidget(100, 60, "", 16777215, () -> Float.toString(scale))).widget(new LabelWidget(15, 85, "monitor.gui.title.argb", 0xFFFFFFFF)).widget(new WidgetARGB(50, 80, 20, this.frameColor, (color) -> setConfig(this.slot, this.scale, color))).widget(new LabelWidget(15, 110, "monitor.gui.title.slot", 0xFFFFFFFF)).widget(new ClickButtonWidget(50, 105, 20, 20, "-1", (data) -> setConfig(this.slot - 1, this.scale, this.frameColor))).widget(new ClickButtonWidget(130, 105, 20, 20, "+1", (data) -> setConfig(this.slot + 1, this.scale, this.frameColor))).widget(new ImageWidget(70, 105, 60, 20, GuiTextures.DISPLAY)).widget(new SimpleTextWidget(100, 115, "", 16777215, () -> Integer.toString(slot))).widget(new LabelWidget(15, 135, "monitor.gui.title.plugin", 0xFFFFFFFF)).widget(new SlotWidget(inventory, 0, 50, 130, true, true).setBackgroundTexture(GuiTextures.SLOT).setChangeListener(() -> {
            if (this.getWorld() != null && !this.getWorld().isRemote) {
                MonitorPluginBaseBehavior behavior = MonitorPluginBaseBehavior.getBehavior(inventory.getStackInSlot(0));
                if (behavior == null) {
                    unloadPlugin();
                } else {
                    loadPlugin(behavior);
                }
                writeCustomData(GregtechDataCodes.UPDATE_PLUGIN_ITEM, packetBuffer -> packetBuffer.writeItemStack(inventory.getStackInSlot(0)));
            }
        })).widget(new ClickButtonWidget(80, 130, 40, 20, "monitor.gui.title.config", (data) -> {
            if (plugin != null && mainGroup.isVisible()) {
                plugin.customUI(pluginWidget, this.getHolder(), entityPlayer);
                mainGroup.setVisible(false);
            }
        }) {

            @Override
            protected void triggerButton() {
                super.triggerButton();
                if (plugin != null && mainGroup.isVisible()) {
                    plugin.customUI(pluginWidget, getHolder(), entityPlayer);
                    mainGroup.setVisible(false);
                }
            }
        }).widget(new WidgetCoverList(width - 140, 50, 120, 11, covers, getCoverFromPosSide(this.coverPos), (coverPos) -> {
            if (coverPos == null) {
                this.setMode(null, this.mode);
            } else {
                this.setMode(new BlockPosFace(coverPos.coverHolder.getPos(), coverPos.attachedSide));
            }
        })).widget(buttons[0]).widget(buttons[1]).widget(buttons[2]).widget(buttons[3]).widget(buttons[4]).bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 15, 170);
        return ModularUI.builder(GuiTextures.BOXED_BACKGROUND, width, height).widget(pluginWidget).widget(mainGroup).widget(new WidgetMonitorScreen(330, 0, 150, this)).widget(new LabelWidget(15, 13, "gregtech.machine.monitor_screen.name", 0XFFFFFFFF)).widget(new ClickButtonWidget(15, 25, 40, 20, "monitor.gui.title.back", data -> {
            if (mainGroup.isVisible() && ((MetaTileEntityCentralMonitor) controller).isActive() && controller.isValid()) {
                MetaTileEntityUIFactory.INSTANCE.openUI(controller.getHolder(), (EntityPlayerMP) entityPlayer);
            } else if (!mainGroup.isVisible()) {
                pluginWidget.removePluginWidget();
                mainGroup.setVisible(true);
                if (plugin != null) {
                    plugin.markAsDirty();
                }
            }
        }) {

            @Override
            protected void triggerButton() {
                super.triggerButton();
                if (!mainGroup.isVisible()) {
                    pluginWidget.removePluginWidget();
                    mainGroup.setVisible(true);
                    if (plugin != null) {
                        plugin.markAsDirty();
                    }
                }
            }
        }).bindCloseListener(() -> {
            if (plugin != null) {
                plugin.markAsDirty();
            }
        }).build(this.getHolder(), entityPlayer);
    }
    return null;
}
Also used : net.minecraft.util(net.minecraft.util) MetaTileEntities(gregtech.common.metatileentities.MetaTileEntities) CoverBehavior(gregtech.api.cover.CoverBehavior) CoverDigitalInterface(gregtech.common.covers.CoverDigitalInterface) WidgetMonitorScreen(gregtech.common.gui.widget.monitor.WidgetMonitorScreen) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) TileEntityPipeBase(gregtech.api.pipenet.tile.TileEntityPipeBase) I18n(net.minecraft.client.resources.I18n) gregtech.api.gui.widgets(gregtech.api.gui.widgets) Vec3d(net.minecraft.util.math.Vec3d) Pair(org.apache.commons.lang3.tuple.Pair) Side(net.minecraftforge.fml.relauncher.Side) CuboidRayTraceResult(codechicken.lib.raytracer.CuboidRayTraceResult) MultiblockControllerBase(gregtech.api.metatileentity.multiblock.MultiblockControllerBase) GregtechDataCodes(gregtech.api.capability.GregtechDataCodes) WidgetPluginConfig(gregtech.common.gui.widget.monitor.WidgetPluginConfig) MetaTileEntity(gregtech.api.metatileentity.MetaTileEntity) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) ProxyHolderPluginBehavior(gregtech.api.items.behavior.ProxyHolderPluginBehavior) GlStateManager(net.minecraft.client.renderer.GlStateManager) ICoverable(gregtech.api.cover.ICoverable) GuiTextures(gregtech.api.gui.GuiTextures) Capability(net.minecraftforge.common.capabilities.Capability) GregtechCapabilities(gregtech.api.capability.GregtechCapabilities) ItemStackHandler(net.minecraftforge.items.ItemStackHandler) EntityPlayer(net.minecraft.entity.player.EntityPlayer) CapabilityItemHandler(net.minecraftforge.items.CapabilityItemHandler) ModularUI(gregtech.api.gui.ModularUI) NBTUtil(net.minecraft.nbt.NBTUtil) java.util(java.util) MetaTileEntityUIFactory(gregtech.api.metatileentity.MetaTileEntityUIFactory) ItemStack(net.minecraft.item.ItemStack) RayTraceResult(net.minecraft.util.math.RayTraceResult) MonitorPluginBaseBehavior(gregtech.api.items.behavior.MonitorPluginBaseBehavior) Minecraft(net.minecraft.client.Minecraft) RenderUtil(gregtech.client.utils.RenderUtil) BlockPosFace(gregtech.api.util.BlockPosFace) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) Nonnull(javax.annotation.Nonnull) Nullable(javax.annotation.Nullable) MetaTileEntityHolder(gregtech.api.metatileentity.MetaTileEntityHolder) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) CapabilityFluidHandler(net.minecraftforge.fluids.capability.CapabilityFluidHandler) World(net.minecraft.world.World) BlockPos(net.minecraft.util.math.BlockPos) IOException(java.io.IOException) IBlockState(net.minecraft.block.state.IBlockState) WidgetARGB(gregtech.common.gui.widget.WidgetARGB) WidgetCoverList(gregtech.common.gui.widget.monitor.WidgetCoverList) TileEntity(net.minecraft.tileentity.TileEntity) MetaTileEntityMultiblockPart(gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMultiblockPart) PacketBuffer(net.minecraft.network.PacketBuffer) BlockPosFace(gregtech.api.util.BlockPosFace) WidgetMonitorScreen(gregtech.common.gui.widget.monitor.WidgetMonitorScreen) CoverDigitalInterface(gregtech.common.covers.CoverDigitalInterface) WidgetARGB(gregtech.common.gui.widget.WidgetARGB) WidgetCoverList(gregtech.common.gui.widget.monitor.WidgetCoverList) MultiblockControllerBase(gregtech.api.metatileentity.multiblock.MultiblockControllerBase) MonitorPluginBaseBehavior(gregtech.api.items.behavior.MonitorPluginBaseBehavior) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) WidgetPluginConfig(gregtech.common.gui.widget.monitor.WidgetPluginConfig)

Aggregations

WidgetPluginConfig (gregtech.common.gui.widget.monitor.WidgetPluginConfig)3 GregtechDataCodes (gregtech.api.capability.GregtechDataCodes)2 MonitorPluginBaseBehavior (gregtech.api.items.behavior.MonitorPluginBaseBehavior)2 RenderUtil (gregtech.client.utils.RenderUtil)2 WidgetARGB (gregtech.common.gui.widget.WidgetARGB)2 EntityPlayer (net.minecraft.entity.player.EntityPlayer)2 ItemStack (net.minecraft.item.ItemStack)2 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)2 PacketBuffer (net.minecraft.network.PacketBuffer)2 CuboidRayTraceResult (codechicken.lib.raytracer.CuboidRayTraceResult)1 GregtechCapabilities (gregtech.api.capability.GregtechCapabilities)1 CoverBehavior (gregtech.api.cover.CoverBehavior)1 ICoverable (gregtech.api.cover.ICoverable)1 GuiTextures (gregtech.api.gui.GuiTextures)1 IUIHolder (gregtech.api.gui.IUIHolder)1 ModularUI (gregtech.api.gui.ModularUI)1 gregtech.api.gui.widgets (gregtech.api.gui.widgets)1 TextFieldWidget (gregtech.api.gui.widgets.TextFieldWidget)1 ProxyHolderPluginBehavior (gregtech.api.items.behavior.ProxyHolderPluginBehavior)1 MetaTileEntity (gregtech.api.metatileentity.MetaTileEntity)1