mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-10-26 14:24:23 +00:00
fix my horrible shit code
This commit is contained in:
1 parent
b2aee3cb7b
commit
72667593f1
10 files changed
+156
-123
No files matched your search
@@ -12,6 +12,7 @@ import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.client.gui.container.FCBasePartContainer;
|
||||
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import com.glodblock.github.util.ModAndClassUtil;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
@@ -41,7 +42,7 @@ public class GuiBaseFluidPatternTerminal extends GuiFCBaseMonitor {
|
||||
{
|
||||
super( inventoryPlayer, te, new FCBasePartContainer( inventoryPlayer, te ) );
|
||||
this.container = (FCBasePartContainer) this.inventorySlots;
|
||||
Ae2Reflect.setReservedSpace(this, 81);
|
||||
Ae2ReflectClient.setReservedSpace(this, 81);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,7 +135,7 @@ public class GuiBaseFluidPatternTerminal extends GuiFCBaseMonitor {
|
||||
}
|
||||
|
||||
super.drawFG( offsetX, offsetY, mouseX, mouseY );
|
||||
this.fontRendererObj.drawString( GuiText.PatternTerminal.getLocal(), 8, this.ySize - 96 + 2 - Ae2Reflect.getReservedSpace(this), 4210752 );
|
||||
this.fontRendererObj.drawString( GuiText.PatternTerminal.getLocal(), 8, this.ySize - 96 + 2 - Ae2ReflectClient.getReservedSpace(this), 4210752 );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.client.gui.container.FCBasePartContainerEx;
|
||||
import com.glodblock.github.network.CPacketFluidPatternTermBtns;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import com.glodblock.github.util.ModAndClassUtil;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
@@ -36,7 +37,7 @@ public class GuiBaseFluidPatternTerminalEx extends GuiFCBaseMonitor {
|
||||
{
|
||||
super( inventoryPlayer, te, new FCBasePartContainerEx( inventoryPlayer, te ) );
|
||||
this.container = (FCBasePartContainerEx) this.inventorySlots;
|
||||
Ae2Reflect.setReservedSpace(this, 81);
|
||||
Ae2ReflectClient.setReservedSpace(this, 81);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,7 +109,7 @@ public class GuiBaseFluidPatternTerminalEx extends GuiFCBaseMonitor {
|
||||
}
|
||||
|
||||
super.drawFG( offsetX, offsetY, mouseX, mouseY );
|
||||
this.fontRendererObj.drawString( GuiText.PatternTerminal.getLocal(), 8, this.ySize - 96 + 2 - Ae2Reflect.getReservedSpace(this), 4210752 );
|
||||
this.fontRendererObj.drawString( GuiText.PatternTerminal.getLocal(), 8, this.ySize - 96 + 2 - Ae2ReflectClient.getReservedSpace(this), 4210752 );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.glodblock.github.common.parts.PartFluidPatternTerminal;
|
||||
import com.glodblock.github.common.parts.PartFluidPatternTerminalEx;
|
||||
import com.glodblock.github.network.CPacketInventoryAction;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import com.glodblock.github.util.ModAndClassUtil;
|
||||
import com.glodblock.github.util.NameConst;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -387,7 +388,7 @@ public class GuiFCBaseMonitor extends AEBaseMEGui implements ISortSource, IConfi
|
||||
{
|
||||
final InventoryAction action = ctrlDown == 1 ? InventoryAction.SPLIT_OR_PLACE_SINGLE : InventoryAction.PICKUP_OR_SET_DOWN;
|
||||
|
||||
if( Ae2Reflect.getDragClick(this).size() > 1 )
|
||||
if( Ae2ReflectClient.getDragClick(this).size() > 1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -448,7 +449,7 @@ public class GuiFCBaseMonitor extends AEBaseMEGui implements ISortSource, IConfi
|
||||
stack = ( (SlotME) slot ).getAEStack();
|
||||
}
|
||||
|
||||
int slotNum = Ae2Reflect.getInventorySlots(this).size();
|
||||
int slotNum = Ae2ReflectClient.getInventorySlots(this).size();
|
||||
|
||||
if( !( slot instanceof SlotME ) && slot != null )
|
||||
{
|
||||
@@ -464,7 +465,7 @@ public class GuiFCBaseMonitor extends AEBaseMEGui implements ISortSource, IConfi
|
||||
|
||||
if( slot instanceof SlotDisconnected)
|
||||
{
|
||||
if( Ae2Reflect.getDragClick(this).size() > 1 )
|
||||
if( Ae2ReflectClient.getDragClick(this).size() > 1 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -555,12 +556,12 @@ public class GuiFCBaseMonitor extends AEBaseMEGui implements ISortSource, IConfi
|
||||
|
||||
if (action == InventoryAction.AUTO_CRAFT) {
|
||||
((AEBaseContainer) this.inventorySlots).setTargetStack( stack );
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketInventoryAction(action, Ae2Reflect.getInventorySlots(this).size(), 0, stack));
|
||||
FluidCraft.proxy.netHandler.sendToServer(new CPacketInventoryAction(action, Ae2ReflectClient.getInventorySlots(this).size(), 0, stack));
|
||||
}
|
||||
else if( action != null )
|
||||
{
|
||||
( (AEBaseContainer) this.inventorySlots ).setTargetStack( stack );
|
||||
final PacketInventoryAction p = new PacketInventoryAction( action, Ae2Reflect.getInventorySlots(this).size(), 0 );
|
||||
final PacketInventoryAction p = new PacketInventoryAction( action, Ae2ReflectClient.getInventorySlots(this).size(), 0 );
|
||||
NetworkHandler.instance.sendToServer( p );
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.glodblock.github.inventory.slot.SlotFluid;
|
||||
import com.glodblock.github.inventory.slot.SlotSingleItem;
|
||||
import com.glodblock.github.network.CPacketEncodePattern;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import com.glodblock.github.util.NameConst;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@@ -33,7 +34,7 @@ public class GuiFluidPatternEncoder extends AEBaseGui {
|
||||
|
||||
private final ContainerFluidPatternEncoder cont;
|
||||
private final MouseRegionManager mouseRegions = new MouseRegionManager(this);
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2Reflect.getStackSizeRenderer(this);
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2ReflectClient.getStackSizeRenderer(this);
|
||||
|
||||
public GuiFluidPatternEncoder(InventoryPlayer ipl, TileFluidPatternEncoder tile) {
|
||||
super(new ContainerFluidPatternEncoder(ipl, tile));
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.glodblock.github.inventory.InventoryHandler;
|
||||
import com.glodblock.github.inventory.gui.GuiType;
|
||||
import com.glodblock.github.inventory.slot.SlotSingleItem;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
@@ -19,20 +20,20 @@ import net.minecraft.inventory.Slot;
|
||||
public class GuiFluidPatternTerminal extends GuiBaseFluidPatternTerminal {
|
||||
|
||||
private GuiTabButton craftingStatusBtn;
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2Reflect.getStackSizeRenderer(this);
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2ReflectClient.getStackSizeRenderer(this);
|
||||
|
||||
public GuiFluidPatternTerminal(InventoryPlayer inventoryPlayer, ITerminalHost te) {
|
||||
super(inventoryPlayer, te);
|
||||
ContainerFluidPatternTerminal container = new ContainerFluidPatternTerminal(inventoryPlayer, te);
|
||||
container.setGui(this);
|
||||
this.inventorySlots = container;
|
||||
Ae2Reflect.setGuiContainer(this, container);
|
||||
Ae2ReflectClient.setGuiContainer(this, container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
craftingStatusBtn = Ae2Reflect.getCraftingStatusButton(this);
|
||||
craftingStatusBtn = Ae2ReflectClient.getCraftingStatusButton(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-3
@@ -9,6 +9,7 @@ import com.glodblock.github.inventory.InventoryHandler;
|
||||
import com.glodblock.github.inventory.gui.GuiType;
|
||||
import com.glodblock.github.loader.ItemAndBlockHolder;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -26,11 +27,11 @@ public class GuiFluidPatternTerminalCraftingStatus extends GuiCraftingStatus {
|
||||
@Override
|
||||
public void initGui() {
|
||||
if (host instanceof PartFluidPatternTerminal)
|
||||
Ae2Reflect.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL, 1));
|
||||
Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL, 1));
|
||||
else if (host instanceof PartFluidPatternTerminalEx)
|
||||
Ae2Reflect.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1));
|
||||
Ae2ReflectClient.rewriteIcon(this, new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1));
|
||||
super.initGui();
|
||||
originalGuiBtn = Ae2Reflect.getOriginalGuiButton(this);
|
||||
originalGuiBtn = Ae2ReflectClient.getOriginalGuiButton(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.glodblock.github.inventory.InventoryHandler;
|
||||
import com.glodblock.github.inventory.gui.GuiType;
|
||||
import com.glodblock.github.inventory.slot.SlotSingleItem;
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
@@ -19,7 +20,7 @@ import net.minecraft.inventory.Slot;
|
||||
public class GuiFluidPatternTerminalEx extends GuiBaseFluidPatternTerminalEx {
|
||||
|
||||
private GuiTabButton craftingStatusBtn;
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2Reflect.getStackSizeRenderer(this);
|
||||
private final AppEngRenderItem stackSizeRenderer = Ae2ReflectClient.getStackSizeRenderer(this);
|
||||
|
||||
public GuiFluidPatternTerminalEx(InventoryPlayer inventoryPlayer, ITerminalHost te) {
|
||||
super(inventoryPlayer, te);
|
||||
@@ -34,7 +35,7 @@ public class GuiFluidPatternTerminalEx extends GuiBaseFluidPatternTerminalEx {
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
craftingStatusBtn = Ae2Reflect.getCraftingStatusButton(this);
|
||||
craftingStatusBtn = Ae2ReflectClient.getCraftingStatusButton(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.glodblock.github.inventory.gui;
|
||||
|
||||
import com.glodblock.github.util.Ae2Reflect;
|
||||
import com.glodblock.github.util.Ae2ReflectClient;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@@ -22,8 +23,8 @@ public class MouseRegionManager {
|
||||
}
|
||||
|
||||
public boolean onClick(int mX, int mY, int button) {
|
||||
mX -= Ae2Reflect.getGuiLeft(gui);
|
||||
mY -= Ae2Reflect.getGuiTop(gui);
|
||||
mX -= Ae2ReflectClient.getGuiLeft(gui);
|
||||
mY -= Ae2ReflectClient.getGuiTop(gui);
|
||||
for (Region region : regions) {
|
||||
if (region.containsMouse(mX, mY) && region.handler.onClick(button)) {
|
||||
gui.mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F));
|
||||
@@ -34,8 +35,8 @@ public class MouseRegionManager {
|
||||
}
|
||||
|
||||
public void render(int mX, int mY) {
|
||||
mX -= Ae2Reflect.getGuiLeft(gui);
|
||||
mY -= Ae2Reflect.getGuiTop(gui);
|
||||
mX -= Ae2ReflectClient.getGuiLeft(gui);
|
||||
mY -= Ae2ReflectClient.getGuiTop(gui);
|
||||
for (Region region : regions) {
|
||||
if (region.containsMouse(mX, mY)) {
|
||||
List<String> tooltip = region.handler.getTooltip();
|
||||
|
||||
@@ -32,6 +32,10 @@ public class Ae2Reflect {
|
||||
private static final Field fInventory_width;
|
||||
private static final Field fAEPass_internal;
|
||||
private static final Field fAEInv_partitionList;
|
||||
private static final Field fCPU_cpu;
|
||||
private static final Field fCPU_myName;
|
||||
private static final Field fCPU_processors;
|
||||
private static final Field fCPU_size;
|
||||
private static final Method mItemSlot_setExtractable;
|
||||
|
||||
static {
|
||||
@@ -40,6 +44,10 @@ public class Ae2Reflect {
|
||||
fInventory_width = reflectField(InventoryCrafting.class, "inventoryWidth", "field_70464_b", "b");
|
||||
fAEPass_internal = reflectField(MEPassThrough.class, "internal");
|
||||
fAEInv_partitionList = reflectField(MEInventoryHandler.class, "myPartitionList");
|
||||
fCPU_cpu = Ae2Reflect.reflectField(CraftingCPURecord.class, "cpu");
|
||||
fCPU_myName = Ae2Reflect.reflectField(CraftingCPURecord.class, "myName");
|
||||
fCPU_processors = Ae2Reflect.reflectField(CraftingCPURecord.class, "processors");
|
||||
fCPU_size = Ae2Reflect.reflectField(CraftingCPURecord.class, "size");
|
||||
mItemSlot_setExtractable = reflectMethod(ItemSlot.class, "setExtractable", boolean.class);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to initialize AE2 reflection hacks!", e);
|
||||
@@ -108,65 +116,6 @@ public class Ae2Reflect {
|
||||
}
|
||||
}
|
||||
|
||||
private static final Field fAEBaseGui_stackSizeRenderer;
|
||||
private static final Field fGuiCraftingStatus_originalGuiBtn;
|
||||
private static final Field fGuiPatternTerm_container;
|
||||
private static final Field fGuiCPUStatus_icon;
|
||||
private static final Field fGuiMEMonitorable_monitorableContainer;
|
||||
private static final Field fGuiMEMonitorable_configSrc;
|
||||
private static final Field fGuiMEMonitorable_craftingStatusBtn;
|
||||
private static final Field fGuiContainer_guiLeft;
|
||||
private static final Field fGuiContainer_guiTop;
|
||||
private static final Field fCPU_cpu;
|
||||
private static final Field fCPU_myName;
|
||||
private static final Field fCPU_processors;
|
||||
private static final Field fCPU_size;
|
||||
private static final Field fGui_drag;
|
||||
private static final Method mGuiPatternTerm_inventorySlots;
|
||||
private static final Method mGuiPatternTerm_reservedSpace;
|
||||
private static final Method mGuiPatternTerm_reservedSpaceSetter;
|
||||
|
||||
static {
|
||||
try {
|
||||
fAEBaseGui_stackSizeRenderer = Ae2Reflect.reflectField(AEBaseGui.class, "aeRenderItem");
|
||||
fGuiCraftingStatus_originalGuiBtn = Ae2Reflect.reflectField(GuiCraftingStatus.class, "originalGuiBtn");
|
||||
fGuiPatternTerm_container = Ae2Reflect.reflectField(GuiBaseFluidPatternTerminal.class, "container");
|
||||
fGuiMEMonitorable_monitorableContainer = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "monitorableContainer");
|
||||
fGuiMEMonitorable_configSrc = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "configSrc");
|
||||
fGuiMEMonitorable_craftingStatusBtn = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "craftingStatusBtn");
|
||||
fGuiCPUStatus_icon = Ae2Reflect.reflectField(GuiCraftingStatus.class, "myIcon");
|
||||
fGuiContainer_guiLeft = Ae2Reflect.reflectField(GuiContainer.class, "guiLeft", "field_147003_i", "i");
|
||||
fGuiContainer_guiTop = Ae2Reflect.reflectField(GuiContainer.class, "guiTop", "field_147009_r", "r");
|
||||
fCPU_cpu = Ae2Reflect.reflectField(CraftingCPURecord.class, "cpu");
|
||||
fCPU_myName = Ae2Reflect.reflectField(CraftingCPURecord.class, "myName");
|
||||
fCPU_processors = Ae2Reflect.reflectField(CraftingCPURecord.class, "processors");
|
||||
fCPU_size = Ae2Reflect.reflectField(CraftingCPURecord.class, "size");
|
||||
fGui_drag = Ae2Reflect.reflectField(AEBaseGui.class, "drag_click");
|
||||
mGuiPatternTerm_inventorySlots = Ae2Reflect.reflectMethod(AEBaseGui.class, "getInventorySlots");
|
||||
mGuiPatternTerm_reservedSpace = Ae2Reflect.reflectMethod(GuiFCBaseMonitor.class, "getReservedSpace");
|
||||
mGuiPatternTerm_reservedSpaceSetter = Ae2Reflect.reflectMethod(GuiFCBaseMonitor.class, "setReservedSpace", int.class);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to initialize AE2 reflection hacks!", e);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static List<Slot> getInventorySlots(AEBaseGui gui) {
|
||||
try {
|
||||
return (List<Slot>) mGuiPatternTerm_inventorySlots.invoke(gui);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_inventorySlots, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void rewriteIcon(GuiCraftingStatus gui, ItemStack icon) {
|
||||
Ae2Reflect.writeField(gui, fGuiCPUStatus_icon, icon);
|
||||
}
|
||||
|
||||
public static Set<Slot> getDragClick(AEBaseGui gui) {
|
||||
return Ae2Reflect.readField(gui, fGui_drag);
|
||||
}
|
||||
|
||||
public static ICraftingCPU getCPU(CraftingCPURecord cpu) {
|
||||
return Ae2Reflect.readField(cpu, fCPU_cpu);
|
||||
}
|
||||
@@ -183,46 +132,4 @@ public class Ae2Reflect {
|
||||
return Ae2Reflect.readField(cpu, fCPU_size);
|
||||
}
|
||||
|
||||
public static int getGuiLeft(GuiContainer gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiContainer_guiLeft);
|
||||
}
|
||||
|
||||
public static int getGuiTop(GuiContainer gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiContainer_guiTop);
|
||||
}
|
||||
|
||||
public static void setReservedSpace(GuiFCBaseMonitor gui, int size) {
|
||||
try {
|
||||
mGuiPatternTerm_reservedSpaceSetter.invoke(gui, size);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_reservedSpaceSetter, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getReservedSpace(GuiFCBaseMonitor gui) {
|
||||
try {
|
||||
return (int) mGuiPatternTerm_reservedSpace.invoke(gui);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_reservedSpace, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static AppEngRenderItem getStackSizeRenderer(AEBaseGui gui) {
|
||||
return Ae2Reflect.readField(gui, fAEBaseGui_stackSizeRenderer);
|
||||
}
|
||||
|
||||
public static GuiTabButton getOriginalGuiButton(GuiCraftingStatus gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiCraftingStatus_originalGuiBtn);
|
||||
}
|
||||
|
||||
public static void setGuiContainer(GuiBaseFluidPatternTerminal instance, ContainerFluidPatternTerminal container) {
|
||||
Ae2Reflect.writeField(instance, fGuiPatternTerm_container, container);
|
||||
Ae2Reflect.writeField(instance, fGuiMEMonitorable_monitorableContainer, container);
|
||||
Ae2Reflect.writeField(instance, fGuiMEMonitorable_configSrc, container.getConfigManager());
|
||||
}
|
||||
|
||||
public static GuiTabButton getCraftingStatusButton(GuiFCBaseMonitor gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiMEMonitorable_craftingStatusBtn);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.glodblock.github.util;
|
||||
|
||||
import appeng.client.gui.AEBaseGui;
|
||||
import appeng.client.gui.implementations.GuiCraftingStatus;
|
||||
import appeng.client.gui.widgets.GuiTabButton;
|
||||
import appeng.client.render.AppEngRenderItem;
|
||||
import com.glodblock.github.client.gui.GuiBaseFluidPatternTerminal;
|
||||
import com.glodblock.github.client.gui.GuiFCBaseMonitor;
|
||||
import com.glodblock.github.client.gui.container.ContainerFluidPatternTerminal;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class Ae2ReflectClient {
|
||||
|
||||
private static final Field fAEBaseGui_stackSizeRenderer;
|
||||
private static final Field fGuiCraftingStatus_originalGuiBtn;
|
||||
private static final Field fGuiPatternTerm_container;
|
||||
private static final Field fGuiCPUStatus_icon;
|
||||
private static final Field fGuiMEMonitorable_monitorableContainer;
|
||||
private static final Field fGuiMEMonitorable_configSrc;
|
||||
private static final Field fGuiMEMonitorable_craftingStatusBtn;
|
||||
private static final Field fGuiContainer_guiLeft;
|
||||
private static final Field fGuiContainer_guiTop;
|
||||
private static final Field fGui_drag;
|
||||
private static final Method mGuiPatternTerm_inventorySlots;
|
||||
private static final Method mGuiPatternTerm_reservedSpace;
|
||||
private static final Method mGuiPatternTerm_reservedSpaceSetter;
|
||||
|
||||
|
||||
static {
|
||||
try {
|
||||
fAEBaseGui_stackSizeRenderer = Ae2Reflect.reflectField(AEBaseGui.class, "aeRenderItem");
|
||||
fGuiCraftingStatus_originalGuiBtn = Ae2Reflect.reflectField(GuiCraftingStatus.class, "originalGuiBtn");
|
||||
fGuiPatternTerm_container = Ae2Reflect.reflectField(GuiBaseFluidPatternTerminal.class, "container");
|
||||
fGuiMEMonitorable_monitorableContainer = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "monitorableContainer");
|
||||
fGuiMEMonitorable_configSrc = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "configSrc");
|
||||
fGuiMEMonitorable_craftingStatusBtn = Ae2Reflect.reflectField(GuiFCBaseMonitor.class, "craftingStatusBtn");
|
||||
fGuiCPUStatus_icon = Ae2Reflect.reflectField(GuiCraftingStatus.class, "myIcon");
|
||||
fGuiContainer_guiLeft = Ae2Reflect.reflectField(GuiContainer.class, "guiLeft", "field_147003_i", "i");
|
||||
fGuiContainer_guiTop = Ae2Reflect.reflectField(GuiContainer.class, "guiTop", "field_147009_r", "r");
|
||||
fGui_drag = Ae2Reflect.reflectField(AEBaseGui.class, "drag_click");
|
||||
mGuiPatternTerm_inventorySlots = Ae2Reflect.reflectMethod(AEBaseGui.class, "getInventorySlots");
|
||||
mGuiPatternTerm_reservedSpace = Ae2Reflect.reflectMethod(GuiFCBaseMonitor.class, "getReservedSpace");
|
||||
mGuiPatternTerm_reservedSpaceSetter = Ae2Reflect.reflectMethod(GuiFCBaseMonitor.class, "setReservedSpace", int.class);
|
||||
} catch (NoSuchFieldException | NoSuchMethodException e) {
|
||||
throw new IllegalStateException("Failed to initialize AE2 reflection hacks!", e);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static List<Slot> getInventorySlots(AEBaseGui gui) {
|
||||
try {
|
||||
return (List<Slot>) mGuiPatternTerm_inventorySlots.invoke(gui);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_inventorySlots, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void rewriteIcon(GuiCraftingStatus gui, ItemStack icon) {
|
||||
Ae2Reflect.writeField(gui, fGuiCPUStatus_icon, icon);
|
||||
}
|
||||
|
||||
public static Set<Slot> getDragClick(AEBaseGui gui) {
|
||||
return Ae2Reflect.readField(gui, fGui_drag);
|
||||
}
|
||||
|
||||
public static int getGuiLeft(GuiContainer gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiContainer_guiLeft);
|
||||
}
|
||||
|
||||
public static int getGuiTop(GuiContainer gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiContainer_guiTop);
|
||||
}
|
||||
|
||||
public static void setReservedSpace(GuiFCBaseMonitor gui, int size) {
|
||||
try {
|
||||
mGuiPatternTerm_reservedSpaceSetter.invoke(gui, size);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_reservedSpaceSetter, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static int getReservedSpace(GuiFCBaseMonitor gui) {
|
||||
try {
|
||||
return (int) mGuiPatternTerm_reservedSpace.invoke(gui);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalStateException("Failed to invoke method: " + mGuiPatternTerm_reservedSpace, e);
|
||||
}
|
||||
}
|
||||
|
||||
public static AppEngRenderItem getStackSizeRenderer(AEBaseGui gui) {
|
||||
return Ae2Reflect.readField(gui, fAEBaseGui_stackSizeRenderer);
|
||||
}
|
||||
|
||||
public static GuiTabButton getOriginalGuiButton(GuiCraftingStatus gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiCraftingStatus_originalGuiBtn);
|
||||
}
|
||||
|
||||
public static void setGuiContainer(GuiBaseFluidPatternTerminal instance, ContainerFluidPatternTerminal container) {
|
||||
Ae2Reflect.writeField(instance, fGuiPatternTerm_container, container);
|
||||
Ae2Reflect.writeField(instance, fGuiMEMonitorable_monitorableContainer, container);
|
||||
Ae2Reflect.writeField(instance, fGuiMEMonitorable_configSrc, container.getConfigManager());
|
||||
}
|
||||
|
||||
public static GuiTabButton getCraftingStatusButton(GuiFCBaseMonitor gui) {
|
||||
return Ae2Reflect.readField(gui, fGuiMEMonitorable_craftingStatusBtn);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user