11package github .kasuminova .mmce .client .gui ;
22
3+ import appeng .client .gui .widgets .GuiCustomSlot ;
4+ import appeng .fluids .client .gui .widgets .GuiFluidTank ;
5+ import github .kasuminova .mmce .client .gui .slot .GuiFullCapFluidTank ;
6+ import github .kasuminova .mmce .client .gui .widget .Button ;
37import github .kasuminova .mmce .client .gui .widget .Button4State ;
48import github .kasuminova .mmce .client .gui .widget .Button5State ;
59import github .kasuminova .mmce .client .gui .widget .MultiLineLabel ;
1216import github .kasuminova .mmce .common .tile .MEPatternProvider ;
1317import github .kasuminova .mmce .common .util .InfItemFluidHandler ;
1418import hellfirepvp .modularmachinery .ModularMachinery ;
19+ import hellfirepvp .modularmachinery .common .base .Mods ;
1520import net .minecraft .client .renderer .GlStateManager ;
1621import net .minecraft .client .resources .I18n ;
1722import net .minecraft .entity .player .EntityPlayer ;
23+ import net .minecraft .item .ItemStack ;
1824import net .minecraft .util .ResourceLocation ;
25+ import net .minecraftforge .fluids .FluidStack ;
26+ import net .minecraftforge .fml .common .ObfuscationReflectionHelper ;
1927
28+ import java .io .IOException ;
2029import java .util .ArrayList ;
2130import java .util .Collections ;
2231import java .util .List ;
@@ -60,10 +69,16 @@ public GuiMEPatternProvider(final MEPatternProvider owner, final EntityPlayer pl
6069 .setMargin (0 )
6170 .setAbsXY (7 , 101 )
6271 );
72+ this .widgetController .addWidget (
73+ new MultiLineLabel (Collections .singletonList (I18n .format ("gui.mepatternprovider.single_inv" )))
74+ .setAutoWrap (false )
75+ .setMargin (0 )
76+ .setAbsXY (180 , 158 )
77+ );
6378
6479 // Init StackList...
6580 stackList .setMaxStackPerRow (3 );
66- stackList .setWidthHeight (69 , 162 );
81+ stackList .setWidthHeight (69 , 126 );
6782 stackList .setAbsXY (180 , 27 );
6883
6984 // Init ReturnItems...
@@ -109,24 +124,72 @@ public GuiMEPatternProvider(final MEPatternProvider owner, final EntityPlayer pl
109124 })
110125 .setWidthHeight (16 , 16 );
111126
127+ // Init Single Inv Tip Button...
128+ Button singleInvTip = new Button ();
129+ singleInvTip
130+ .setTextureLocation (GuiMEPatternProvider .GUI_TEXTURE )
131+ .setTextureXY (230 , 214 )
132+ .setHoveredTextureXY (230 + 11 , 214 )
133+ .setTooltipFunction ((btn ) -> {
134+ List <String > tooltips = new ArrayList <>();
135+ tooltips .add (I18n .format ("gui.mepatternprovider.single_inv.desc" ));
136+ return tooltips ;
137+ })
138+ .setWidthHeight (9 , 11 )
139+ .setAbsXY (240 , 157 );
140+
112141 // Init Widget Containers...
113- Row buttons = new Row ();
114- buttons .addWidgets (returnItems .setMarginRight (2 ), toggleBlockingMode ).setAbsXY (215 , 7 );
142+ Row stackListButtons = new Row ();
143+ stackListButtons .addWidgets (returnItems .setMarginRight (2 ), toggleBlockingMode ).setAbsXY (215 , 7 );
115144
116145 this .widgetController .addWidget (stackList );
117- this .widgetController .addWidget (buttons );
146+ this .widgetController .addWidget (stackListButtons );
147+ this .widgetController .addWidget (singleInvTip );
118148
119149 // Update state...
120150 updateGUIState ();
121151 }
122152
153+ @ Override
154+ public void initGui () {
155+ super .initGui ();
156+
157+ final GuiFullCapFluidTank guiTank = new GuiFullCapFluidTank (owner .getSubFluidHandler (),
158+ 0 , 0 , 232 , 172 , 16 , 16
159+ );
160+
161+ // AE2 Unofficial Extended Life Check
162+ if (Mods .AE2EL .isPresent ()) {
163+ this .guiSlots .add (guiTank );
164+ } else {
165+ // Default AE2
166+ ObfuscationReflectionHelper .setPrivateValue (GuiCustomSlot .class , guiTank , getGuiLeft (), "x" );
167+ ObfuscationReflectionHelper .setPrivateValue (GuiCustomSlot .class , guiTank , getGuiTop (), "y" );
168+ List <Object > buttonList = (List ) this .buttonList ;
169+ buttonList .add (guiTank );
170+ }
171+ }
172+
173+ @ Override
174+ protected void mouseClicked (int xCoord , int yCoord , int btn ) throws IOException {
175+ for (GuiCustomSlot slot : this .guiSlots ) {
176+ if (slot instanceof GuiFluidTank ) {
177+ if (this .isPointInRegion (slot .xPos (), slot .yPos (), slot .getWidth (), slot .getHeight (), xCoord , yCoord ) && slot .canClick (this .mc .player )) {
178+ slot .slotClicked (this .mc .player .inventory .getItemStack (), btn );
179+ return ;
180+ }
181+ }
182+ }
183+ super .mouseClicked (xCoord , yCoord , btn );
184+ }
185+
123186 @ Override
124187 public void drawBG (final int offsetX , final int offsetY , final int mouseX , final int mouseY ) {
125188 GlStateManager .color (1.0F , 1.0F , 1.0F , 1.0F );
126189 this .mc .getTextureManager ().bindTexture (GUI_TEXTURE );
127190 this .drawTexturedModalRect (guiLeft , guiTop , 0 , 0 , xSize , ySize );
128191 GlStateManager .color (1.0F , 1.0F , 1.0F , 1.0F );
129-
192+
130193 super .drawBG (offsetX , offsetY , mouseX , mouseY );
131194 }
132195
@@ -140,4 +203,8 @@ public void updateGUIState() {
140203 toggleBlockingMode .setClicked (owner .isBlockingMode ());
141204 }
142205
206+ public void setStackList (final List <ItemStack > itemStackList , final List <FluidStack > fluidStackList ) {
207+ stackList .setStackList (itemStackList , fluidStackList );
208+ }
209+
143210}
0 commit comments