Skip to content

Commit 8810dc3

Browse files
committed
优化样板终端Slot的显示实现
现在在AE GUI中打开JEI会在JEI中显示可合成的物品 重构部分逻辑
1 parent ba96b1c commit 8810dc3

34 files changed

+399
-388
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ show_testing_output = false
1616

1717
# Mod Information
1818
# HIGHLY RECOMMEND complying with SemVer for mod_version: https://semver.org/
19-
mod_version = 1.7.7
19+
mod_version = 1.7.8
2020
root_package = com.circulation
2121
mod_id = random_complement
2222
mod_name = RandomComplement
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.circulation.random_complement.client;
2+
3+
import appeng.api.storage.data.IAEItemStack;
4+
5+
import java.util.Collection;
6+
import java.util.Set;
7+
8+
public interface RCAECraftablesGui {
9+
10+
Set<IAEItemStack> r$getCpuCache();
11+
12+
void r$addCpuCache(Collection<IAEItemStack> list);
13+
14+
Set<IAEItemStack> r$getCraftablesCache();
15+
16+
default void r$addCraftablesCache(Collection<IAEItemStack> list) {
17+
18+
}
19+
}

src/main/java/com/circulation/random_complement/client/RCSlotFakeCraftingMatrix.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public RCSlotFakeCraftingMatrix(IItemHandler inv, int idx, int x, int y) {
1111
super(inv, idx, x, y);
1212
}
1313

14-
public boolean isSlotEnabled() {
14+
public boolean shouldDisplay() {
1515
return visible;
1616
}
1717
}

src/main/java/com/circulation/random_complement/client/RCSlotPatternOutputs.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,7 @@ public RCSlotPatternOutputs(IItemHandler inv, IOptionalSlotHost containerBus, in
1212
super(inv, containerBus, idx, x, y, offX, offY, groupNum);
1313
}
1414

15-
public boolean isSlotEnabled() {
16-
return visible;
17-
}
18-
1915
public boolean shouldDisplay() {
20-
if (super.isSlotEnabled()) {
21-
return visible;
22-
}
23-
return false;
16+
return visible;
2417
}
2518
}

src/main/java/com/circulation/random_complement/common/interfaces/SpecialLogic.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/main/java/com/circulation/random_complement/common/network/KeyBindingHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import appeng.util.Platform;
2222
import appeng.util.item.AEItemStack;
2323
import baubles.api.BaublesApi;
24-
import com.circulation.random_complement.common.handler.MEHandler;
2524
import com.circulation.random_complement.common.interfaces.Packet;
2625
import com.circulation.random_complement.common.interfaces.RCAEBaseContainer;
2726
import com.circulation.random_complement.common.interfaces.RCCraftingGridCache;
27+
import com.circulation.random_complement.common.util.MEHandler;
2828
import com.glodblock.github.common.item.ItemWirelessFluidPatternTerminal;
2929
import com.glodblock.github.common.part.PartExtendedFluidPatternTerminal;
3030
import com.glodblock.github.common.part.PartFluidPatternTerminal;

src/main/java/com/circulation/random_complement/common/network/RCPacketMEInventoryUpdate.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
import appeng.core.sync.AppEngPacket;
66
import appeng.core.sync.network.INetworkInfo;
77
import appeng.util.item.AEItemStack;
8-
import com.circulation.random_complement.common.handler.MEHandler;
9-
import com.circulation.random_complement.common.interfaces.SpecialLogic;
8+
import com.circulation.random_complement.client.RCAECraftablesGui;
9+
import com.circulation.random_complement.common.util.MEHandler;
1010
import io.netty.buffer.ByteBuf;
1111
import io.netty.buffer.Unpooled;
1212
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
1313
import lombok.Getter;
1414
import net.minecraft.client.Minecraft;
15-
import net.minecraft.client.gui.GuiScreen;
1615
import net.minecraft.entity.player.EntityPlayer;
1716
import net.minecraftforge.fml.common.Optional;
1817
import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
@@ -144,9 +143,8 @@ public void clientPacketData(INetworkInfo network, AppEngPacket packet, EntityPl
144143
if (id != 0) {
145144
switch (id) {
146145
case 1 -> {
147-
GuiScreen screen = Minecraft.getMinecraft().currentScreen;
148-
if (screen instanceof SpecialLogic gui) {
149-
gui.r$setList(this.list);
146+
if (Minecraft.getMinecraft().currentScreen instanceof RCAECraftablesGui gui) {
147+
gui.r$addCpuCache(this.list);
150148
}
151149
}
152150
case 2 -> MEHandler.getCraftableCacheS().addAll(this.list);
@@ -160,9 +158,8 @@ public void clientPacketData(INetworkInfo network, AppEngPacket packet, EntityPl
160158
public void ae2fcClientPacketData() {
161159
switch (id) {
162160
case 3 -> {
163-
GuiScreen screen = Minecraft.getMinecraft().currentScreen;
164-
if (screen instanceof SpecialLogic gui) {
165-
gui.r$addAllList(this.list);
161+
if (Minecraft.getMinecraft().currentScreen instanceof RCAECraftablesGui gui) {
162+
gui.r$addCraftablesCache(this.list);
166163
}
167164
}
168165
}
@@ -172,9 +169,8 @@ public void ae2fcClientPacketData() {
172169
public void tcClientPacketData() {
173170
switch (id) {
174171
case 4 -> {
175-
GuiScreen guiS = Minecraft.getMinecraft().currentScreen;
176-
if (guiS instanceof SpecialLogic gui) {
177-
gui.r$addAllList(this.list);
172+
if (Minecraft.getMinecraft().currentScreen instanceof RCAECraftablesGui gui) {
173+
gui.r$addCpuCache(this.list);
178174
}
179175
}
180176
case 5 -> MEHandler.getCraftableCacheS().addAll(this.list);

src/main/java/com/circulation/random_complement/common/network/WirelessPickBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import appeng.util.Platform;
1616
import appeng.util.item.AEItemStack;
1717
import baubles.api.BaublesApi;
18-
import com.circulation.random_complement.common.handler.MEHandler;
1918
import com.circulation.random_complement.common.interfaces.Packet;
19+
import com.circulation.random_complement.common.util.MEHandler;
2020
import io.netty.buffer.ByteBuf;
2121
import net.minecraft.entity.player.EntityPlayer;
2222
import net.minecraft.entity.player.EntityPlayerMP;

src/main/java/com/circulation/random_complement/common/handler/MEHandler.java renamed to src/main/java/com/circulation/random_complement/common/util/MEHandler.java

Lines changed: 93 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.circulation.random_complement.common.handler;
1+
package com.circulation.random_complement.common.util;
22

33
import appeng.api.AEApi;
44
import appeng.api.features.ILocatable;
@@ -16,9 +16,15 @@
1616
import com.circulation.random_complement.RandomComplement;
1717
import com.circulation.random_complement.client.buttonsetting.PatternTermAutoFillPattern;
1818
import 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;
1924
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
2025
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
2126
import lombok.Getter;
27+
import mekanism.api.gas.GasStack;
2228
import net.minecraft.client.Minecraft;
2329
import net.minecraft.client.renderer.BufferBuilder;
2430
import net.minecraft.client.renderer.GlStateManager;
@@ -30,6 +36,7 @@
3036
import net.minecraft.inventory.Slot;
3137
import net.minecraft.item.ItemStack;
3238
import net.minecraft.util.ResourceLocation;
39+
import net.minecraftforge.fluids.FluidStack;
3340
import net.minecraftforge.fml.common.Loader;
3441
import net.minecraftforge.fml.common.Optional;
3542
import 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
}

src/main/java/com/circulation/random_complement/mixin/ae2/MixinPacketCraftRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import appeng.util.Platform;
1010
import baubles.api.BaublesApi;
1111
import com.circulation.random_complement.RandomComplement;
12-
import com.circulation.random_complement.common.handler.MEHandler;
1312
import com.circulation.random_complement.common.interfaces.RCAEBaseContainer;
1413
import com.circulation.random_complement.common.network.ContainerRollBACK;
14+
import com.circulation.random_complement.common.util.MEHandler;
1515
import com.llamalad7.mixinextras.sugar.Local;
1616
import net.minecraft.entity.player.EntityPlayer;
1717
import net.minecraft.entity.player.EntityPlayerMP;

0 commit comments

Comments
 (0)