1- package com .circulation .random_complement .common .handler ;
1+ package com .circulation .random_complement .common .util ;
22
33import appeng .api .AEApi ;
44import appeng .api .features .ILocatable ;
1616import com .circulation .random_complement .RandomComplement ;
1717import com .circulation .random_complement .client .buttonsetting .PatternTermAutoFillPattern ;
1818import com .circulation .random_complement .common .interfaces .PatternTermConfigs ;
19+ import com .glodblock .github .common .item .ItemFluidPacket ;
20+ import com .glodblock .github .common .item .ItemGasPacket ;
21+ import com .glodblock .github .common .item .fake .FakeFluids ;
22+ import com .glodblock .github .common .item .fake .FakeItemRegister ;
23+ import com .glodblock .github .integration .mek .FakeGases ;
1924import it .unimi .dsi .fastutil .objects .Object2ObjectOpenHashMap ;
2025import it .unimi .dsi .fastutil .objects .ObjectOpenHashSet ;
2126import lombok .Getter ;
27+ import mekanism .api .gas .GasStack ;
2228import net .minecraft .client .Minecraft ;
2329import net .minecraft .client .renderer .BufferBuilder ;
2430import net .minecraft .client .renderer .GlStateManager ;
3036import net .minecraft .inventory .Slot ;
3137import net .minecraft .item .ItemStack ;
3238import net .minecraft .util .ResourceLocation ;
39+ import net .minecraftforge .fluids .FluidStack ;
3340import net .minecraftforge .fml .common .Loader ;
3441import net .minecraftforge .fml .common .Optional ;
3542import net .minecraftforge .fml .relauncher .Side ;
@@ -45,6 +52,8 @@ public class MEHandler {
4552 @ Getter
4653 private static final Set <IAEItemStack > craftableCacheS = new ObjectOpenHashSet <>();
4754 private static final Map <Integer , ResourceLocation > textures = new Object2ObjectOpenHashMap <>();
55+ public static final boolean loadAE2FC = Loader .isModLoaded ("ae2fc" );
56+ public static final boolean loadMEKEng = Loader .isModLoaded ("mekeng" );
4857
4958 static {
5059 textures .put (0 , new ResourceLocation (RandomComplement .MOD_ID + ":textures/gui/pinned0.png" ));
@@ -57,36 +66,26 @@ public class MEHandler {
5766 textures .put (6 , new ResourceLocation (RandomComplement .MOD_ID + ":textures/gui/pinned4.png" ));
5867 }
5968
69+ @ SideOnly (Side .CLIENT )
70+ public static void drawXYPluses (List <XYPair > slots ) {
71+ drawPlusesPre ();
72+ Tessellator tessellator = Tessellator .getInstance ();
73+ BufferBuilder buffer = tessellator .getBuffer ();
74+ for (var slot : slots ) {
75+ drawPluses (slot .x (), slot .y (), tessellator , buffer );
76+ }
77+ drawPlusesPost ();
78+ }
79+
6080 @ SideOnly (Side .CLIENT )
6181 public static void drawSlotPluses (List <Slot > slots ) {
62- RenderHelper . disableStandardItemLighting ();
82+ drawPlusesPre ();
6383 Tessellator tessellator = Tessellator .getInstance ();
6484 BufferBuilder buffer = tessellator .getBuffer ();
65- GlStateManager .pushMatrix ();
66- GlStateManager .disableTexture2D ();
67- GlStateManager .enableBlend ();
68- GlStateManager .blendFunc (GL11 .GL_SRC_ALPHA , GL11 .GL_ONE_MINUS_SRC_ALPHA );
69- GlStateManager .color (1.0F , 1.0F , 1.0F , 1.0F );
7085 for (var slot : slots ) {
71- int x = slot .xPos ;
72- int y = slot .yPos ;
73- float startX = x + 0.5f ;
74- float startY = y + 0.25f ;
75- float endX = startX + 3f ;
76- float endY = startY + 3f ;
77-
78- buffer .begin (GL11 .GL_LINES , DefaultVertexFormats .POSITION );
79- buffer .pos (startX , startY + 1.5f , 0 ).endVertex ();
80- buffer .pos (endX , startY + 1.5f , 0 ).endVertex ();
81- buffer .pos (startX + 1.5f , startY , 0 ).endVertex ();
82- buffer .pos (startX + 1.5f , endY , 0 ).endVertex ();
83- tessellator .draw ();
86+ drawPluses (slot .xPos , slot .yPos , tessellator , buffer );
8487 }
85- GlStateManager .enableTexture2D ();
86- GlStateManager .disableBlend ();
87- GlStateManager .popMatrix ();
88- RenderHelper .enableGUIStandardItemLighting ();
89- slots .clear ();
88+ drawPlusesPost ();
9089 }
9190
9291 /*
@@ -194,4 +193,73 @@ public static WirelessTerminalGuiObject getTerminalGuiObject(ItemStack item, Ent
194193 public static void bindTexture (Minecraft mc , int craftingSlotTextureIndex ) {
195194 mc .getTextureManager ().bindTexture (textures .get (craftingSlotTextureIndex ));
196195 }
196+
197+ @ Optional .Method (modid = "appliedenergistics2" )
198+ public static IAEItemStack packItem (Object obj ) {
199+ if (obj instanceof ItemStack i ) {
200+ if (loadAE2FC && i .getItem () instanceof ItemFluidPacket ) {
201+ return AEItemStack .fromItemStack (FakeFluids .packFluid2Drops (FakeItemRegister .getStack (i )));
202+ } else if (loadMEKEng && i .getItem () instanceof ItemGasPacket ) {
203+ return AEItemStack .fromItemStack (FakeGases .packGas2Drops (FakeItemRegister .getStack (i )));
204+ } else {
205+ return AEItemStack .fromItemStack (i );
206+ }
207+ } else if (loadAE2FC ) {
208+ return packAE2FCItem (obj );
209+ }
210+ return null ;
211+ }
212+
213+ @ Optional .Method (modid = "ae2fc" )
214+ private static IAEItemStack packAE2FCItem (Object obj ) {
215+ if (obj instanceof FluidStack i ) {
216+ return FakeFluids .packFluid2AEDrops (i );
217+ } else if (loadMEKEng ) {
218+ return packMEKEngItem (obj );
219+ }
220+ return null ;
221+ }
222+
223+ @ Optional .Method (modid = "mekeng" )
224+ private static IAEItemStack packMEKEngItem (Object obj ) {
225+ if (obj instanceof GasStack i ) {
226+ return FakeGases .packGas2AEDrops (i );
227+ }
228+ return null ;
229+ }
230+
231+ @ SideOnly (Side .CLIENT )
232+ private static void drawPlusesPre () {
233+ RenderHelper .disableStandardItemLighting ();
234+ GlStateManager .pushMatrix ();
235+ GlStateManager .disableTexture2D ();
236+ GlStateManager .enableBlend ();
237+ GlStateManager .blendFunc (GL11 .GL_SRC_ALPHA , GL11 .GL_ONE_MINUS_SRC_ALPHA );
238+ GlStateManager .color (1 , 1 , 0 , 1 );
239+ }
240+
241+ @ SideOnly (Side .CLIENT )
242+ private static void drawPluses (int x , int y , Tessellator tessellator , BufferBuilder buffer ) {
243+ float startX = x + 0.5f ;
244+ float startY = y + 0.25f ;
245+ float endX = startX + 3f ;
246+ float endY = startY + 3f ;
247+ float z = 1000 ;
248+
249+ buffer .begin (GL11 .GL_LINES , DefaultVertexFormats .POSITION );
250+ buffer .pos (startX , startY + 1.5f , z ).endVertex ();
251+ buffer .pos (endX , startY + 1.5f , z ).endVertex ();
252+ buffer .pos (startX + 1.5f , startY , z ).endVertex ();
253+ buffer .pos (startX + 1.5f , endY , z ).endVertex ();
254+ tessellator .draw ();
255+ }
256+
257+ @ SideOnly (Side .CLIENT )
258+ private static void drawPlusesPost () {
259+ GlStateManager .color (1 , 1 , 1 , 1 );
260+ GlStateManager .enableTexture2D ();
261+ GlStateManager .disableBlend ();
262+ GlStateManager .popMatrix ();
263+ RenderHelper .enableGUIStandardItemLighting ();
264+ }
197265}
0 commit comments