Merge pull request #20 from asdflj/master

Update and fix some bug
This commit is contained in:
Martin Robertz authored and GitHub committed 2022-10-01 10:49:50 +02:00
commit 63daee5e56
6 files changed
+126 -2

No files matched your search

@@ -48,6 +48,7 @@ public class GuiFluidCraftConfirm extends AEBaseGui {
private GuiButton start;
private GuiButton selectCPU;
private int tooltip = -1;
private ItemStack hoveredStack;
public GuiFluidCraftConfirm(final InventoryPlayer inventoryPlayer, final ITerminalHost te )
{
@@ -202,7 +203,7 @@ public class GuiFluidCraftConfirm extends AEBaseGui {
final List<String> lineList = new LinkedList<String>();
int toolPosX = 0;
int toolPosY = 0;
hoveredStack = null;
final int offY = 23;
for( int z = viewStart; z < Math.min( viewEnd, this.visual.size() ); z++ )
@@ -324,6 +325,7 @@ public class GuiFluidCraftConfirm extends AEBaseGui {
toolPosX = x * ( 1 + sectionLength ) + xo + sectionLength - 8;
toolPosY = y * offY + yo;
hoveredStack = is;
}
this.drawItem( posX, posY, is );
@@ -551,4 +553,7 @@ public class GuiFluidCraftConfirm extends AEBaseGui {
}
}
public ItemStack getHoveredStack() {
return hoveredStack;
}
}
@@ -29,6 +29,9 @@ public class FCClassTransformer implements IClassTransformer {
case "net.p455w0rd.wirelesscraftingterminal.client.gui.GuiCraftConfirm":
tform = GuiCraftingTransformer.INSTANCE;
break;
case "appeng.integration.modules.NEI":
tform = NEITransfermer.INSTANCE;
break;
default:
return code;
}
@@ -9,12 +9,15 @@ import appeng.api.networking.storage.IStorageGrid;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.client.gui.implementations.GuiCraftConfirm;
import appeng.client.gui.implementations.GuiCraftingCPU;
import appeng.crafting.MECraftingInventory;
import appeng.me.MachineSet;
import appeng.me.cluster.implementations.CraftingCPUCluster;
import appeng.parts.misc.PartInterface;
import appeng.tile.misc.TileInterface;
import appeng.util.InventoryAdaptor;
import com.glodblock.github.client.gui.GuiFluidCraftConfirm;
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.common.parts.PartFluidInterface;
@@ -26,6 +29,7 @@ import com.glodblock.github.util.Ae2Reflect;
import com.glodblock.github.util.SetBackedMachineSet;
import com.glodblock.github.util.Util;
import com.google.common.collect.Sets;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@@ -169,4 +173,18 @@ public class CoreModHooks {
Ae2Reflect.markCPUDirty(instance);
}
public static ItemStack getStackUnderMouse(GuiContainer gui, int mousex, int mousey) {
if (gui instanceof GuiFluidCraftConfirm) {
return ((GuiFluidCraftConfirm) gui).getHoveredStack();
}
return null;
}
public static boolean shouldShowTooltip(GuiContainer gui) {
if (gui instanceof GuiFluidCraftConfirm) {
return ((GuiFluidCraftConfirm)gui).getHoveredStack() == null;
}
return true;
}
}
@@ -0,0 +1,93 @@
package com.glodblock.github.coremod.transform;
import com.glodblock.github.coremod.FCClassTransformer;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
public class NEITransfermer extends FCClassTransformer.ClassMapper {
public static final NEITransfermer INSTANCE = new NEITransfermer();
private NEITransfermer() {
// NO-OP
}
@Override
protected ClassVisitor getClassMapper(ClassVisitor downstream) {
return new TransformNEI(Opcodes.ASM5, downstream);
}
private static class TransformNEI extends ClassVisitor {
TransformNEI(int api, ClassVisitor cv) {
super(api, cv);
}
@Override
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
switch (name) {
case "getStackUnderMouse":
return new TransformStackUnderMouse(api, super.visitMethod(access, name, desc, signature, exceptions));
case "shouldShowTooltip":
return new TransformShowTooltip(api, super.visitMethod(access, name, desc, signature, exceptions));
default:
return super.visitMethod(access, name, desc, signature, exceptions);
}
}
}
private static class TransformStackUnderMouse extends MethodVisitor {
TransformStackUnderMouse(int api, MethodVisitor mv) {
super(api, mv);
}
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.ACONST_NULL) {
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitVarInsn(Opcodes.ILOAD, 2);
super.visitVarInsn(Opcodes.ILOAD, 3);
super.visitMethodInsn(Opcodes.INVOKESTATIC,
"com/glodblock/github/coremod/hooker/CoreModHooks",
"getStackUnderMouse",
"(Lnet/minecraft/client/gui/inventory/GuiContainer;II)Lnet/minecraft/item/ItemStack;",
false
);
return;
}
super.visitInsn(opcode);
}
}
private static class TransformShowTooltip extends MethodVisitor {
int const_1 = 0;
TransformShowTooltip(int api, MethodVisitor mv) {
super(api, mv);
}
@Override
public void visitInsn(int opcode) {
if (opcode == Opcodes.ICONST_1 && const_1 == 2) {
super.visitVarInsn(Opcodes.ALOAD, 1);
super.visitMethodInsn(Opcodes.INVOKESTATIC,
"com/glodblock/github/coremod/hooker/CoreModHooks",
"shouldShowTooltip",
"(Lnet/minecraft/client/gui/inventory/GuiContainer;)Z",
false
);
const_1 ++;
return;
}
if (opcode == Opcodes.ICONST_1) {
const_1 ++;
}
super.visitInsn(opcode);
}
}
}
@@ -17,6 +17,7 @@ public class AEFluidInventory implements IAEFluidTank
private final IAEFluidStack[] fluids;
private final IAEFluidInventory handler;
private final int capacity;
public int lastIndex;
public AEFluidInventory( final IAEFluidInventory handler, final int slots, final int capcity )
{
@@ -253,9 +254,10 @@ public class AEFluidInventory implements IAEFluidTank
FluidStack totalDrained = null;
int toDrain = maxDrain;
for( int slot = 0; slot < this.getSlots(); ++slot )
for( int slot = lastIndex; slot < this.getSlots(); ++slot )
{
if (this.getFluidInSlot(slot) == null) {
if(slot == this.getSlots()-1) lastIndex = 0;
continue;
}
@@ -264,6 +266,7 @@ public class AEFluidInventory implements IAEFluidTank
totalDrained = this.drain( slot, toDrain, doDrain );
if( totalDrained != null )
{
lastIndex = slot;
toDrain -= totalDrained.amount;
}
}
@@ -1,5 +1,6 @@
package com.glodblock.github.inventory.gui;
import appeng.client.gui.AEBaseGui;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.util.ResourceLocation;
@@ -39,6 +40,7 @@ public class MouseRegionManager {
if (region.containsMouse(mX, mY)) {
List<String> tooltip = region.handler.getTooltip();
if (tooltip != null) {
((AEBaseGui)gui).drawTooltip(mX,mY,0,String.join("\n",tooltip));
return;
}
}