aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2022-11-26 01:56:28 +0900
committerGitHub <noreply@github.com>2022-11-25 17:56:28 +0100
commitcd2ba914a6b5b980ff56347455fcf43a9e3eea3b (patch)
tree9dfba22762592ee292edd9a6c2eb6e4c3d9c6e96 /src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc
parent921527ce3cc5f92b067f180295fa55dae718461f (diff)
downloadGT5-Unofficial-cd2ba914a6b5b980ff56347455fcf43a9e3eea3b.tar.gz
GT5-Unofficial-cd2ba914a6b5b980ff56347455fcf43a9e3eea3b.tar.bz2
GT5-Unofficial-cd2ba914a6b5b980ff56347455fcf43a9e3eea3b.zip
Rewrite GUIs with ModularUI (#440)
* Update GT * NEI migration & cleanup Deprecate GTPP_Recipe_Map_Internal#sMappingsEx and delegate to GT_Recipe_Map#sMappings instead Remove recipe modification check * Boiler * Programmed Circuit & Super Bus * Lower the number of fluid slots for multi mixer NEI * Solar Generator * Crop Manager * Bronze Workbench & Advanced Workbench * Turbine Housing & Rotor Assembly * Iron Plated Blast Furnace * Player Safe * Advanced Muffler Hatch * spotlessApply * Auto Workbench * Breaker, Control Core, RTG Hatch, Steam Bus, some cleanup * Fix crash when removing Breaker * Data Orb Repository * Charging/Discharging Bus * Pollution Scrubber * Storage Crate, Shelf, TieredChest They're just broken in the first place, don't blame me * cleanup * Steam Condenser It's broken in the first place, never blame me! * Catalyst Housing, Ball Housing * Fluid Tank, generators, custom hatches, cleanup * Computer Cube MKII Many things are broken in the first place, I swear * Inventory Manager * Migrate multiblock dehydrator recipemap to ModularUI * Overflow cover * Redstone Circuit Block * Multiblock * cleanup * Update GT
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/GT_TileEntity_ComputerCube.java516
1 files changed, 494 insertions, 22 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/GT_TileEntity_ComputerCube.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/GT_TileEntity_ComputerCube.java
index 4a24de7c5a..6aec31dc1b 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/GT_TileEntity_ComputerCube.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/misc/GT_TileEntity_ComputerCube.java
@@ -4,10 +4,24 @@ import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.util.GT_Recipe.GT_Recipe_Map.sScannerFakeRecipes;
import Ic2ExpReactorPlanner.SimulationData;
+import com.gtnewhorizons.modularui.api.ModularUITextures;
+import com.gtnewhorizons.modularui.api.forge.IItemHandlerModifiable;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.internal.wrapper.BaseSlot;
+import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
+import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
+import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
+import com.gtnewhorizons.modularui.common.widget.ProgressBar;
+import com.gtnewhorizons.modularui.common.widget.SlotWidget;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
import cpw.mods.fml.common.FMLCommonHandler;
import gregtech.api.GregTech_API;
import gregtech.api.enums.*;
+import gregtech.api.gui.modularui.GT_UIInfos;
+import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.modularui.IAddGregtechLogo;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
@@ -17,24 +31,27 @@ import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.common.items.behaviors.Behaviour_DataOrb;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.math.MathUtils;
-import gtPlusPlus.xmod.gregtech.api.gui.computer.GT_Container_ComputerCube;
-import gtPlusPlus.xmod.gregtech.api.gui.computer.GT_GUIContainer_ComputerCube;
+import gtPlusPlus.xmod.gregtech.api.gui.GTPP_UITextures;
+import gtPlusPlus.xmod.gregtech.api.gui.widget.DataStickSlotWidget;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import gtPlusPlus.xmod.gregtech.common.computer.GT_Computercube_Description;
import gtPlusPlus.xmod.gregtech.common.computer.GT_Computercube_Simulator;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Items;
+import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
-public class GT_TileEntity_ComputerCube extends GT_MetaTileEntity_BasicTank {
+public class GT_TileEntity_ComputerCube extends GT_MetaTileEntity_BasicTank implements IAddGregtechLogo {
public static int MODE_MAIN = 0;
public static int MODE_REACTOR_PLANNER = 1;
@@ -92,20 +109,6 @@ public class GT_TileEntity_ComputerCube extends GT_MetaTileEntity_BasicTank {
}
@Override
- public Object getServerGUI(
- final int aID, final InventoryPlayer aPlayerInventory, final IGregTechTileEntity aBaseMetaTileEntity) {
- Logger.INFO("CC-Sever ID: " + aID);
- return new GT_Container_ComputerCube(aPlayerInventory, aBaseMetaTileEntity, mMode);
- }
-
- @Override
- public Object getClientGUI(
- final int aID, final InventoryPlayer aPlayerInventory, final IGregTechTileEntity aBaseMetaTileEntity) {
- Logger.INFO("CC-Client ID: " + aID);
- return new GT_GUIContainer_ComputerCube(aPlayerInventory, aBaseMetaTileEntity, mMode);
- }
-
- @Override
public String[] getDescription() {
return new String[] {
this.mDescription,
@@ -119,10 +122,7 @@ public class GT_TileEntity_ComputerCube extends GT_MetaTileEntity_BasicTank {
@Override
public boolean onRightclick(final IGregTechTileEntity aBaseMetaTileEntity, final EntityPlayer aPlayer) {
- if (aBaseMetaTileEntity.isClientSide()) {
- return true;
- }
- aBaseMetaTileEntity.openGUI(aPlayer, mMode);
+ GT_UIInfos.openGTTileEntityUI(aBaseMetaTileEntity, aPlayer);
return true;
}
@@ -1089,4 +1089,476 @@ public class GT_TileEntity_ComputerCube extends GT_MetaTileEntity_BasicTank {
private ItemStack getSpecialSlot() {
return this.mInventory[54];
}
+
+ @Override
+ public boolean useModularUI() {
+ return true;
+ }
+
+ @Override
+ public void addGregTechLogo(ModularWindow.Builder builder) {}
+
+ @Override
+ public int getGUIWidth() {
+ return mMode == 5 ? 226 : 176;
+ }
+
+ @Override
+ public boolean doesBindPlayerInventory() {
+ return mMode != 1 && mMode != 5;
+ }
+
+ @Override
+ public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) {
+ switch (mMode) {
+ case 0:
+ addPage0(builder);
+ break;
+ case 1:
+ addPage1(builder);
+ break;
+ case 2:
+ addPage2(builder);
+ break;
+ case 3:
+ addPage3(builder);
+ break;
+ case 4:
+ addPage4(builder);
+ break;
+ case 5:
+ addPage5(builder);
+ break;
+ case 6:
+ addPage6(builder);
+ break;
+ }
+
+ builder.widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> {
+ if (clickData.mouseButton == 0) {
+ switchModeForward();
+ } else if (clickData.mouseButton == 1) {
+ switchModeBackward();
+ }
+ if (!widget.isClient()) {
+ GT_UIInfos.openGTTileEntityUI(
+ getBaseMetaTileEntity(), widget.getContext().getPlayer());
+ }
+ })
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_COMPUTER_MODE)
+ .setPos(156 + (mMode == 5 ? 50 : 0), 4)
+ .setSize(16, 16));
+ }
+
+ private void addPage0(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GTPP_UITextures.PICTURE_COMPUTER_TOP)
+ .setPos(32, 4)
+ .setSize(112, 76))
+ .widget(new ProgressBar()
+ .setProgress(() -> (float) getBaseMetaTileEntity().getStoredEU()
+ / getBaseMetaTileEntity().getEUCapacity())
+ .setTexture(GTPP_UITextures.PROGRESSBAR_COMPUTER_ENERGY, 96)
+ .setDirection(ProgressBar.Direction.RIGHT)
+ .setPos(44, 8)
+ .setSize(96, 5))
+ .widget(new TextWidget("Solaris 1.7.10")
+ .setDefaultColor(Utils.rgbtoHexValue(100, 190, 255))
+ .setPos(56, 70));
+ }
+
+ private void addPage1(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(4, 103)
+ .setSize(150, 59))
+ .widget(new DrawableWidget()
+ .setDrawable(ModularUITextures.ITEM_SLOT)
+ .setPos(4, 4)
+ .setSize(146, 98))
+ .widget(new DrawableWidget()
+ .setDrawable(GTPP_UITextures.PICTURE_V202)
+ .setPos(155, 103)
+ .setSize(17, 5))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> saveNuclearReactor())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_SAVE)
+ .setPos(156, 54)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> loadNuclearReactor())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_LOAD)
+ .setPos(156, 70)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchNuclearReactor())
+ .setBackground(
+ GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_NUCLEAR_SWITCH)
+ .setPos(156, 86)
+ .setSize(16, 16));
+ SlotWidget displaySlot = new NuclearSlotWidget(inventoryHandler, 54, null);
+ for (int i = 0; i < 9 * 6; i++) {
+ builder.widget(new NuclearSlotWidget(inventoryHandler, i, displaySlot.getMcSlot())
+ .setBackground(GT_UITextures.TRANSPARENT)
+ .setPos(5 + (i % 9) * 16, 5 + (i / 9) * 16));
+ }
+ builder.widget(displaySlot
+ .setBackground(getGUITextureSet().getItemSlot(), GTPP_UITextures.OVERLAY_SLOT_ARROW_4)
+ .setPos(152, 27));
+ builder.widget(new TextWidget("Reactorstats:")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 108))
+ .widget(TextWidget.dynamicString(() -> GT_Utility.formatNumbers(mEU) + "EU at " + mEUOut + "EU/t")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 120))
+ .widget(TextWidget.dynamicString(() -> "HEM: " + (mHEM / 10000.0F))
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 128))
+ .widget(TextWidget.dynamicString(() ->
+ GT_Utility.formatNumbers(mHeat) + "/" + GT_Utility.formatNumbers(mMaxHeat) + "Heat")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 136))
+ .widget(TextWidget.dynamicString(() -> "Explosionpower: " + (mExplosionStrength / 100.0F))
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 144))
+ .widget(TextWidget.dynamicString(() -> "Runtime: " + ((mProgress > 0) ? (mProgress / 20) : 0) + "secs")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 152));
+ }
+
+ private void addPage2(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(48, 4)
+ .setSize(81, 67));
+ builder.widget(new DataStickSlotWidget(inventoryHandler, 54).setPos(7, 27))
+ .widget(new SlotWidget(inventoryHandler, 55)
+ .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_MICROSCOPE)
+ .setPos(25, 27))
+ .widget(new SlotWidget(inventoryHandler, 56)
+ .setAccess(true, false)
+ .setPos(133, 27))
+ .widget(new SlotWidget(inventoryHandler, 57)
+ .setAccess(true, false)
+ .setPos(151, 27));
+ builder.widget(new TextWidget("Scanner")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> mProgress == 0)
+ .setPos(51, 7))
+ .widget(new TextWidget("Can be used to")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> mProgress == 0)
+ .setPos(51, 24))
+ .widget(new TextWidget("scan things")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> mProgress == 0)
+ .setPos(51, 32))
+ .widget(new TextWidget("Currently")
+ .setDefaultColor(Utils.rgbtoHexValue(200, 20, 20))
+ .setEnabled(widget -> mProgress == 0)
+ .setPos(51, 48))
+ .widget(new TextWidget("Disabled")
+ .setDefaultColor(Utils.rgbtoHexValue(200, 20, 20))
+ .setEnabled(widget -> mProgress == 0)
+ .setPos(51, 56))
+ .widget(new TextWidget("Progress:")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> mProgress != 0)
+ .setPos(51, 24))
+ .widget(TextWidget.dynamicString(() -> MathUtils.findPercentage(
+ mProgress, getBaseMetaTileEntity().getMaxProgress())
+ + " %")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setEnabled(widget -> mProgress != 0)
+ .setPos(51, 32))
+ .widget(new FakeSyncWidget.IntegerSyncer(() -> mProgress, val -> mProgress = val));
+ }
+
+ private void addPage3(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(4, 4)
+ .setSize(86, 41))
+ .widget(new DrawableWidget()
+ .setDrawable(GTPP_UITextures.PICTURE_ARROWS_SEPARATE)
+ .setPos(110, 23)
+ .setSize(40, 40))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchCentrifugePageBackward())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_LEFT)
+ .setPos(88, 65)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchCentrifugePageForward())
+ .setBackground(
+ GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_RIGHT)
+ .setPos(104, 65)
+ .setSize(16, 16))
+ .widget(SlotWidget.phantom(inventoryHandler, 59)
+ .disableInteraction()
+ .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_CENTRIFUGE)
+ .setPos(121, 34))
+ .widget(SlotWidget.phantom(inventoryHandler, 60)
+ .disableInteraction()
+ .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_CANISTER)
+ .setPos(91, 4))
+ .widget(SlotWidget.phantom(inventoryHandler, 61)
+ .disableInteraction()
+ .setPos(121, 4))
+ .widget(SlotWidget.phantom(inventoryHandler, 62)
+ .disableInteraction()
+ .setPos(151, 34))
+ .widget(SlotWidget.phantom(inventoryHandler, 63)
+ .disableInteraction()
+ .setPos(121, 64))
+ .widget(SlotWidget.phantom(inventoryHandler, 64)
+ .disableInteraction()
+ .setPos(91, 34))
+ .widget(new TextWidget("Centrifuge")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 7))
+ .widget(TextWidget.dynamicString(() ->
+ "Recipe: " + (mMaxHeat + 1) + "/" + GT_Recipe_Map.sCentrifugeRecipes.mRecipeList.size())
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 23))
+ .widget(TextWidget.dynamicString(() -> "EU: " + GT_Utility.formatNumbers(mEU))
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 31));
+ }
+
+ private void addPage4(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(4, 4)
+ .setSize(116, 61))
+ .widget(new DrawableWidget()
+ .setDrawable(GTPP_UITextures.PICTURE_ARROWS_FUSION)
+ .setPos(121, 23)
+ .setSize(29, 40))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchFusionPageBackward())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_LEFT)
+ .setPos(88, 65)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchFusionPageForward())
+ .setBackground(
+ GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_RIGHT)
+ .setPos(104, 65)
+ .setSize(16, 16))
+ .widget(SlotWidget.phantom(inventoryHandler, 59)
+ .disableInteraction()
+ .setPos(121, 4))
+ .widget(SlotWidget.phantom(inventoryHandler, 60)
+ .disableInteraction()
+ .setPos(121, 64))
+ .widget(SlotWidget.phantom(inventoryHandler, 61)
+ .disableInteraction()
+ .setPos(151, 34))
+ .widget(new TextWidget("Fusionreactor")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 7))
+ .widget(TextWidget.dynamicString(() -> "Recipe: " + (mMaxHeat + 1) + "/"
+ + GT_TileEntity_ComputerCube.sFusionReactorRecipes.size())
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 15))
+ .widget(TextWidget.dynamicString(() -> "Start: " + GT_Utility.formatNumbers(mEU) + "EU")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 23))
+ .widget(TextWidget.dynamicString(() -> "EU/t: " + GT_Utility.formatNumbers(mEUOut))
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 31))
+ .widget(TextWidget.dynamicString(() -> GT_Utility.formatNumbers(mHeat) + " Ticks")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 39))
+ .widget(TextWidget.dynamicString(() -> GT_TileEntity_ComputerCube.sFusionReactorRecipes
+ .get(mMaxHeat)
+ .mFluidOutputs[0]
+ .getLocalizedName())
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 55))
+ .widget(TextWidget.dynamicString(() -> mEUOut < 0
+ ? "IN: " + GT_Utility.formatNumbers(-mEUOut * mHeat) + "EU"
+ : "OUT: " + GT_Utility.formatNumbers(mEUOut * mHeat) + "EU")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 47));
+ }
+
+ private void addPage5(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(4, 4)
+ .setSize(200, 141))
+ .widget(new DrawableWidget()
+ .setDrawable(() -> mExplosionStrength != 0 ? GTPP_UITextures.PICTURE_COMPUTER_GRID : null)
+ .setPos(152, 6)
+ .setSize(50, 50))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchDescriptionPageBackward())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_LEFT)
+ .setPos(190, 146)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchDescriptionPageForward())
+ .setBackground(
+ GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_RIGHT)
+ .setPos(206, 146)
+ .setSize(16, 16));
+ for (int i = 0; i < 5; i++) {
+ builder.widget(SlotWidget.phantom(inventoryHandler, i + 59)
+ .disableInteraction()
+ .setPos(205, 37 + i * 18));
+ }
+ for (int i = 0; i < 9; i++) {
+ builder.widget(SlotWidget.phantom(inventoryHandler, i + 64)
+ .disableInteraction()
+ .setBackground(GT_UITextures.TRANSPARENT)
+ .setPos(152 + (i % 3) * 16, 6 + (i / 3) * 16));
+ }
+ int descriptionMaxLines = GT_Computercube_Description.sDescriptions.stream()
+ .sorted((d1, d2) -> d2.mDescription.length - d1.mDescription.length)
+ .collect(Collectors.toList())
+ .get(0)
+ .mDescription
+ .length;
+ for (int i = 0; i < descriptionMaxLines; i++) {
+ final int index = i;
+ builder.widget(TextWidget.dynamicString(() -> {
+ if (mMaxHeat >= 0 && mMaxHeat < GT_Computercube_Description.sDescriptions.size()) {
+ String[] descriptions =
+ GT_Computercube_Description.sDescriptions.get(mMaxHeat).mDescription;
+ if (index < descriptions.length) {
+ return descriptions[index];
+ }
+ }
+ return "";
+ })
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 7 + index * 8));
+ }
+ }
+
+ private void addPage6(ModularWindow.Builder builder) {
+ builder.widget(new DrawableWidget()
+ .setDrawable(GT_UITextures.PICTURE_SCREEN_BLACK)
+ .setPos(4, 4)
+ .setSize(86, 41))
+ .widget(new DrawableWidget()
+ .setDrawable(GTPP_UITextures.PICTURE_ARROWS_SEPARATE)
+ .setPos(110, 23)
+ .setSize(40, 40))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchElectrolyzerPageBackward())
+ .setBackground(GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_LEFT)
+ .setPos(88, 65)
+ .setSize(16, 16))
+ .widget(new ButtonWidget()
+ .setOnClick((clickData, widget) -> switchElectrolyzerPageForward())
+ .setBackground(
+ GTPP_UITextures.BUTTON_STANDARD_16x16, GTPP_UITextures.OVERLAY_BUTTON_ARROW_RIGHT)
+ .setPos(104, 65)
+ .setSize(16, 16))
+ .widget(SlotWidget.phantom(inventoryHandler, 59)
+ .disableInteraction()
+ .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_CHARGER)
+ .setPos(121, 34))
+ .widget(SlotWidget.phantom(inventoryHandler, 60)
+ .disableInteraction()
+ .setBackground(getGUITextureSet().getItemSlot(), GT_UITextures.OVERLAY_SLOT_CANISTER)
+ .setPos(91, 4))
+ .widget(SlotWidget.phantom(inventoryHandler, 61)
+ .disableInteraction()
+ .setPos(121, 4))
+ .widget(SlotWidget.phantom(inventoryHandler, 62)
+ .disableInteraction()
+ .setPos(151, 34))
+ .widget(SlotWidget.phantom(inventoryHandler, 63)
+ .disableInteraction()
+ .setPos(121, 64))
+ .widget(SlotWidget.phantom(inventoryHandler, 64)
+ .disableInteraction()
+ .setPos(91, 34))
+ .widget(new TextWidget("Electrolyzer")
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 7))
+ .widget(TextWidget.dynamicString(() -> "Recipe: " + (mMaxHeat + 1) + "/"
+ + GT_Recipe_Map.sElectrolyzerRecipes.mRecipeList.size())
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 23))
+ .widget(TextWidget.dynamicString(() -> "EU: " + GT_Utility.formatNumbers(mEU))
+ .setDefaultColor(COLOR_TEXT_WHITE.get())
+ .setPos(7, 31));
+ }
+
+ private class NuclearSlotWidget extends SlotWidget {
+
+ private final Slot displaySlot;
+
+ public NuclearSlotWidget(IItemHandlerModifiable handler, int index, Slot displaySlot) {
+ super(BaseSlot.phantom(handler, index));
+ if (displaySlot != null) {
+ this.displaySlot = displaySlot;
+ } else {
+ this.displaySlot = getMcSlot();
+ }
+ }
+
+ @Override
+ protected void phantomClick(ClickData clickData, ItemStack cursorStack) {
+ final int aSlotIndex = getMcSlot().getSlotIndex() + 4;
+ final Slot tSlot = getMcSlot();
+ final ItemStack tStack = tSlot.getStack();
+ if (clickData.shift) {
+ tSlot.putStack(null);
+ getSimulator().slotClick(aSlotIndex, null);
+ return;
+ }
+ if (clickData.mouseButton == 1) {
+ tSlot.putStack(null);
+ }
+ if (clickData.mouseButton == 0) {
+ if (tStack == null) {
+ if (displaySlot.getStack() != null && aSlotIndex != 58) {
+ tSlot.putStack(displaySlot.getStack().copy());
+ getSimulator()
+ .slotClick(
+ aSlotIndex,
+ new GT_ItemStack(displaySlot.getStack().copy()));
+ } else {
+ tSlot.putStack(new ItemStack(GT_TileEntity_ComputerCube.sReactorList.get(0).mItem, 1));
+ getSimulator().slotClick(aSlotIndex, GT_TileEntity_ComputerCube.sReactorList.get(0));
+ }
+ return;
+ }
+ for (int i = 1; i < GT_TileEntity_ComputerCube.sReactorList.size(); i++) {
+ if (GT_TileEntity_ComputerCube.sReactorList.get(i - 1).mItem == tStack.getItem()) {
+ tSlot.putStack(new ItemStack(GT_TileEntity_ComputerCube.sReactorList.get(i).mItem, 1, 0));
+ getSimulator().slotClick(aSlotIndex, GT_TileEntity_ComputerCube.sReactorList.get(i));
+ /*if (tSlot.getStack() != null && tSlot.getStack().getItem() == GT_ModHandler.getIC2Item("reactorIsotopeCell", 1).getItem()) {
+ tSlot.getStack().setItemDamage(tSlot.getStack().getMaxDamage() - 1);
+ }*/
+ return;
+ }
+ }
+ tSlot.putStack(null);
+ getSimulator().slotClick(aSlotIndex, null);
+ return;
+ }
+ if (tStack == null) return;
+ if (tStack.stackSize < tStack.getMaxStackSize()) {
+ tStack.stackSize++;
+ return;
+ }
+ tStack.stackSize = 1;
+ }
+
+ @Override
+ protected void handleDragAndDropServer(ClickData clickData, ItemStack draggedStack) {}
+
+ @Override
+ public List<String> getExtraTooltip() {
+ return Collections.emptyList();
+ }
+ }
}