Skip to content

Commit

Permalink
add middle button change item
Browse files Browse the repository at this point in the history
  • Loading branch information
GlodBlock committed Aug 22, 2022
1 parent 7f51d43 commit 572e625
Show file tree
Hide file tree
Showing 16 changed files with 389 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import appeng.integration.IntegrationType;
import appeng.util.IConfigManagerHost;
import appeng.util.Platform;
import appeng.util.item.AEItemStack;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.FCBaseMonitorContain;
import com.glodblock.github.network.CPacketInventoryAction;
Expand Down Expand Up @@ -366,6 +367,24 @@ protected void handleMouseClick( final Slot slot, final int slotIdx, final int c
{
final EntityPlayer player = Minecraft.getMinecraft().thePlayer;

if (mouseButton == 3 ){
if (slot instanceof OptionalSlotFake || slot instanceof SlotFakeCraftingMatrix) {
if (slot.getHasStack()) {
IAEItemStack stack = AEItemStack.create(slot.getStack());
((AEBaseContainer) this.inventorySlots).setTargetStack(stack);
int x = 0;
for (int i = 0; i < this.inventorySlots.inventorySlots.size(); i ++) {
if (this.inventorySlots.inventorySlots.get(i).equals(slot)) {
x = i;
break;
}
}
FluidCraft.proxy.netHandler.sendToServer(new CPacketInventoryAction(-1, x, 0, stack));
return;
}
}
}

if( slot instanceof SlotFake)
{
InventoryAction action = ctrlDown == 1 ? InventoryAction.SPLIT_OR_PLACE_SINGLE : InventoryAction.PICKUP_OR_SET_DOWN;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.glodblock.github.client.gui;

import appeng.api.AEApi;
import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IParts;
import appeng.api.storage.ITerminalHost;
import appeng.client.gui.AEBaseGui;
import appeng.client.gui.widgets.GuiNumberBox;
Expand All @@ -14,39 +11,48 @@
import appeng.helpers.Reflected;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.common.parts.PartFluidPatternTerminal;
import com.glodblock.github.common.parts.PartFluidPatternTerminalEx;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.loader.ItemAndBlockHolder;
import com.glodblock.github.network.CPacketCraftRequest;
import com.glodblock.github.network.CPacketSwitchGuis;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;

public class GuiFluidCraftAmount extends AEBaseGui
{
private GuiNumberBox amountToCraft;
private GuiTabButton originalGuiBtn;
protected GuiNumberBox amountToCraft;
protected GuiTabButton originalGuiBtn;

private GuiButton next;
protected GuiButton next;

private GuiButton plus1;
private GuiButton plus10;
private GuiButton plus100;
private GuiButton plus1000;
private GuiButton minus1;
private GuiButton minus10;
private GuiButton minus100;
private GuiButton minus1000;
protected GuiButton plus1;
protected GuiButton plus10;
protected GuiButton plus100;
protected GuiButton plus1000;
protected GuiButton minus1;
protected GuiButton minus10;
protected GuiButton minus100;
protected GuiButton minus1000;

private GuiType originalGui;
protected GuiType originalGui;

@Reflected
public GuiFluidCraftAmount(final InventoryPlayer inventoryPlayer, final ITerminalHost te )
public GuiFluidCraftAmount(final InventoryPlayer inventoryPlayer, final ITerminalHost te)
{
super( new ContainerCraftAmount( inventoryPlayer, te ) );
}

@Reflected
public GuiFluidCraftAmount(Container container)
{
super(container);
}

@Override
@SuppressWarnings("unchecked")
public void initGui()
{
super.initGui();
Expand All @@ -70,14 +76,17 @@ public void initGui()

ItemStack myIcon = null;
final Object target = ( (AEBaseContainer) this.inventorySlots ).getTarget();
final IDefinitions definitions = AEApi.instance().definitions();
final IParts parts = definitions.parts();

if( target instanceof PartFluidPatternTerminal)
{
myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL, 1);
this.originalGui = GuiType.FLUID_PATTERN_TERMINAL;
}
else if( target instanceof PartFluidPatternTerminalEx)
{
myIcon = new ItemStack(ItemAndBlockHolder.FLUID_TERMINAL_EX, 1);
this.originalGui = GuiType.FLUID_PATTERN_TERMINAL_EX;
}

if( this.originalGui != null && myIcon != null )
{
Expand Down Expand Up @@ -204,7 +213,7 @@ protected void actionPerformed( final GuiButton btn )
}
}

private void addQty( final int i )
protected void addQty( final int i )
{
try
{
Expand Down Expand Up @@ -250,8 +259,4 @@ private void addQty( final int i )
}
}

protected String getBackground()
{
return "guis/craftAmt.png";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ boolean isAutoStart()
}

@Override
@SuppressWarnings("unchecked")
public void initGui()
{
super.initGui();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ public boolean drawSlot0(Slot slot) {
if (ItemFluidPacket.getFluidStack(stack) != null && ItemFluidPacket.getFluidStack(stack).amount > 0)
fake.setStackSize(ItemFluidPacket.getFluidStack(stack).amount);
}
else
return true;
stackSizeRenderer.setAeStack(fake);
stackSizeRenderer.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack.getItemStack(), slot.xDisplayPosition, slot.yDisplayPosition);
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@ public boolean drawSlot0(Slot slot) {
if (ItemFluidPacket.getFluidStack(stack) != null && ItemFluidPacket.getFluidStack(stack).amount > 0)
fake.setStackSize(ItemFluidPacket.getFluidStack(stack).amount);
}
else
return true;
stackSizeRenderer.setAeStack(fake);
stackSizeRenderer.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack.getItemStack(), slot.xDisplayPosition, slot.yDisplayPosition);
return false;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.glodblock.github.client.gui;

import appeng.api.storage.ITerminalHost;
import appeng.core.localization.GuiText;
import com.glodblock.github.FluidCraft;
import com.glodblock.github.client.gui.container.ContainerItemAmountChange;
import com.glodblock.github.network.CPacketPatternValueSet;
import com.glodblock.github.network.CPacketSwitchGuis;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;

public class GuiItemAmountChange extends GuiFluidCraftAmount {

public GuiItemAmountChange(final InventoryPlayer inventoryPlayer, final ITerminalHost te)
{
super(new ContainerItemAmountChange(inventoryPlayer, te));
}

@Override
public void initGui()
{
super.initGui();
this.next.displayString = I18n.format("ae2fc.gui.set");
}

@Override
public void drawBG( final int offsetX, final int offsetY, final int mouseX, final int mouseY )
{
super.drawBG(offsetX, offsetY, mouseX, mouseY);
this.next.displayString = I18n.format("ae2fc.gui.set");
}

@Override
protected void actionPerformed( final GuiButton btn ) {
try
{
if( btn == this.originalGuiBtn )
{
FluidCraft.proxy.netHandler.sendToServer( new CPacketSwitchGuis( this.originalGui ) );
}

if( btn == this.next )
{
FluidCraft.proxy.netHandler.sendToServer( new CPacketPatternValueSet(this.originalGui, Integer.parseInt(this.amountToCraft.getText()), ((ContainerItemAmountChange) this.inventorySlots).getValueIndex()));
}
}
catch( final NumberFormatException e )
{
// nope..
this.amountToCraft.setText( "1" );
}

final boolean isPlus = btn == this.plus1 || btn == this.plus10 || btn == this.plus100 || btn == this.plus1000;
final boolean isMinus = btn == this.minus1 || btn == this.minus10 || btn == this.minus100 || btn == this.minus1000;

if( isPlus || isMinus )
{
this.addQty( this.getQty( btn ) );
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.glodblock.github.client.gui.container;

import appeng.api.config.SecurityPermissions;
import appeng.api.storage.ITerminalHost;
import appeng.container.AEBaseContainer;
import appeng.container.guisync.GuiSync;
import appeng.container.slot.SlotInaccessible;
import appeng.tile.inventory.AppEngInternalInventory;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Slot;

public class ContainerItemAmountChange extends AEBaseContainer {

private final Slot patternValue;
@GuiSync(11)
public int valueIndex;

public ContainerItemAmountChange(final InventoryPlayer ip, final ITerminalHost te )
{
super( ip, te );
this.patternValue = new SlotInaccessible( new AppEngInternalInventory( null, 1 ), 0, 34, 53 );
this.addSlotToContainer( patternValue );
}

@Override
public void detectAndSendChanges()
{
super.detectAndSendChanges();
this.verifyPermissions( SecurityPermissions.CRAFT, false );
}

public Slot getPatternValue()
{
return patternValue;
}

public int getValueIndex()
{
return valueIndex;
}

public void setValueIndex( int valueIndex )
{
this.valueIndex = valueIndex;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ public int getColour(Fluid fluid) {
colourCache.put(fluid.getName(), colour);
return colour;
}

if (sprite != null && sprite.getFrameCount() > 0) {
int[][] image = sprite.getFrameTextureData(0);
int r = 0, g = 0, b = 0, count = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidEncodedPattern;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.AEStackInternalInventory;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
Expand All @@ -34,9 +35,9 @@ public class PartFluidPatternTerminal extends FCBasePart {
private static final FCPartsTexture FRONT_DARK_ICON = FCPartsTexture.PartFluidPatternTerminal_Colored;
private static final FCPartsTexture FRONT_COLORED_ICON = FCPartsTexture.PartFluidPatternTerminal_Dark;

private final AppEngInternalInventory crafting = new AppEngInternalInventory( this, 9 );
private final AppEngInternalInventory output = new AppEngInternalInventory( this, 3 );
private final AppEngInternalInventory pattern = new AppEngInternalInventory( this, 2 );
private final AEStackInternalInventory crafting = new AEStackInternalInventory( this, 9 );
private final AEStackInternalInventory output = new AEStackInternalInventory( this, 3 );
private final AEStackInternalInventory pattern = new AEStackInternalInventory( this, 2 );

private boolean craftingMode = true;
private boolean substitute = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.glodblock.github.common.item.ItemFluidDrop;
import com.glodblock.github.common.item.ItemFluidEncodedPattern;
import com.glodblock.github.common.item.ItemFluidPacket;
import com.glodblock.github.inventory.AEStackInternalInventory;
import com.glodblock.github.inventory.InventoryHandler;
import com.glodblock.github.inventory.gui.GuiType;
import com.glodblock.github.util.BlockPos;
Expand All @@ -34,9 +35,9 @@ public class PartFluidPatternTerminalEx extends FCBasePart {
private static final FCPartsTexture FRONT_DARK_ICON = FCPartsTexture.PartFluidPatternTerminal_Colored;
private static final FCPartsTexture FRONT_COLORED_ICON = FCPartsTexture.PartFluidPatternTerminal_Dark;

private final AppEngInternalInventory crafting = new AppEngInternalInventory( this, 16 );
private final AppEngInternalInventory output = new AppEngInternalInventory( this, 4 );
private final AppEngInternalInventory pattern = new AppEngInternalInventory( this, 2 );
private final AEStackInternalInventory crafting = new AEStackInternalInventory( this, 16 );
private final AEStackInternalInventory output = new AEStackInternalInventory( this, 4 );
private final AEStackInternalInventory pattern = new AEStackInternalInventory( this, 2 );

private boolean substitute = false;
private boolean combine = false;
Expand Down
Loading

0 comments on commit 572e625

Please sign in to comment.