mirror of
https://github.com/GTNewHorizons/AE2FluidCraft-Rework.git
synced 2026-11-11 15:57:55 +00:00
Merge pull request #29 from asdflj/dev
fluid terminal support long fluid amount
This commit is contained in:
5 files changed
+41
-27
No files matched your search
@@ -5,7 +5,6 @@ import appeng.api.storage.data.IAEFluidStack;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.client.me.SlotME;
|
||||
import appeng.client.render.AppEngRenderItem;
|
||||
import appeng.util.item.AEItemStack;
|
||||
import com.glodblock.github.FluidCraft;
|
||||
import com.glodblock.github.client.gui.container.ContainerFluidTerminal;
|
||||
import com.glodblock.github.client.gui.container.FCBaseFluidMonitorContain;
|
||||
@@ -48,13 +47,11 @@ public class GuiFluidTerminal extends GuiBaseFluidTerminal {
|
||||
|
||||
public boolean drawSlot0(Slot slot) {
|
||||
if (slot instanceof SlotME) {
|
||||
AEItemStack stack = AEItemStack.create(slot.getStack());
|
||||
IAEItemStack stack = ((SlotME) slot).getAEStack();
|
||||
if (stack == null) return true;
|
||||
FluidStack fluidStack = ItemFluidDrop.getFluidStack(slot.getStack());
|
||||
this.drawWidget(slot.xDisplayPosition, slot.yDisplayPosition, fluidStack.getFluid());
|
||||
IAEItemStack fake = stack.copy();
|
||||
fake.setStackSize(fluidStack.amount);
|
||||
stackSizeRenderer.setAeStack(fake);
|
||||
stackSizeRenderer.setAeStack(stack);
|
||||
stackSizeRenderer.renderItemOverlayIntoGUI(fontRendererObj, mc.getTextureManager(), stack.getItemStack(), slot.xDisplayPosition, slot.yDisplayPosition);
|
||||
return false;
|
||||
}
|
||||
|
||||
+6
-7
@@ -50,7 +50,6 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidContainerItem;
|
||||
import org.apache.commons.lang3.tuple.MutablePair;
|
||||
|
||||
@@ -382,13 +381,13 @@ public class FCBaseFluidMonitorContain extends AEBaseContainer implements IConfi
|
||||
}
|
||||
} else if (!Util.FluidUtil.isEmpty(fluidContainer)) {
|
||||
// add fluid to ae network
|
||||
FluidStack fluidStack = Util.getFluidFromItem(fluidContainer);
|
||||
final AEFluidStack aeFluidStack = AEFluidStack.create(fluidStack);
|
||||
AEFluidStack fluidStack = Util.getAEFluidFromItem(fluidContainer);
|
||||
final IAEFluidStack aeFluidStack = fluidStack.copy();
|
||||
// simulate result is incorrect. so I'm using other solution and ec2 both mod have same issues
|
||||
final IAEFluidStack notInserted = this.host.getFluidInventory().injectItems(aeFluidStack, Actionable.MODULATE, this.getActionSource());
|
||||
MutablePair<Integer, ItemStack> drainStack = Util.FluidUtil.drainStack(out.copy(), aeFluidStack.getFluidStack());
|
||||
if (notInserted != null && notInserted.getStackSize() > 0) {
|
||||
if (fluidStack.amount == notInserted.getStackSize()) continue;
|
||||
if (fluidStack.getStackSize() == notInserted.getStackSize()) continue;
|
||||
aeFluidStack.decStackSize(notInserted.getStackSize());
|
||||
|
||||
if (drainStack.left > aeFluidStack.getStackSize() && FluidContainerRegistry.isContainer(drainStack.right)) {
|
||||
@@ -398,11 +397,11 @@ public class FCBaseFluidMonitorContain extends AEBaseContainer implements IConfi
|
||||
}
|
||||
|
||||
this.dropItem(drainStack.right, (int) (aeFluidStack.getStackSize() / drainStack.left)); // drop empty item
|
||||
out.stackSize = ((int) (notInserted.getStackSize()) / drainStack.left);
|
||||
out.stackSize = (int) (notInserted.getStackSize() / drainStack.left);
|
||||
if (drainStack.right.getItem() instanceof IFluidContainerItem) {
|
||||
if (notInserted.getStackSize() % drainStack.left > 0) {
|
||||
fluidStack.amount = (int) (notInserted.getStackSize() % drainStack.left);
|
||||
((IFluidContainerItem) drainStack.right.getItem()).fill(drainStack.right, fluidStack, true);
|
||||
fluidStack.setStackSize((notInserted.getStackSize() % drainStack.left));
|
||||
((IFluidContainerItem) drainStack.right.getItem()).fill(drainStack.right, fluidStack.getFluidStack(), true);
|
||||
this.dropItem(drainStack.right, 1);
|
||||
}
|
||||
} else if (FluidContainerRegistry.isContainer(drainStack.right)) {
|
||||
|
||||
@@ -91,6 +91,7 @@ public class FluidRepo extends ItemRepo {
|
||||
public void postUpdate(final IAEItemStack is) {
|
||||
IAEFluidStack fluid = ItemFluidDrop.getAeFluidStack(is);
|
||||
IAEItemStack i = AEItemStack.create(is.getItemStack().setStackDisplayName(fluid.getFluid().getLocalizedName()));
|
||||
i.setStackSize(is.getStackSize());
|
||||
final IAEItemStack st = this.list.findPrecise(i);
|
||||
if (st != null) {
|
||||
st.reset();
|
||||
|
||||
@@ -11,7 +11,6 @@ import appeng.api.storage.data.IAEFluidStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
import appeng.util.Platform;
|
||||
import appeng.util.item.AEFluidStack;
|
||||
import com.glodblock.github.util.Util;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -346,8 +345,6 @@ public class FluidCellInventory implements IFluidCellInventory {
|
||||
return input;
|
||||
}
|
||||
|
||||
final FluidStack sharedFluidStack = input.getFluidStack();
|
||||
|
||||
final IAEFluidStack l = this.getCellItems().findPrecise( input );
|
||||
|
||||
if( l != null )
|
||||
@@ -393,21 +390,20 @@ public class FluidCellInventory implements IFluidCellInventory {
|
||||
{
|
||||
if( input.getStackSize() > remainingItemCount )
|
||||
{
|
||||
final FluidStack toReturn = Util.cloneFluidStack(sharedFluidStack);
|
||||
toReturn.amount = (int) (sharedFluidStack.amount - remainingItemCount);
|
||||
final IAEFluidStack toReturn = input.copy();
|
||||
toReturn.decStackSize(remainingItemCount);
|
||||
|
||||
if( mode == Actionable.MODULATE )
|
||||
{
|
||||
final FluidStack toWrite = Util.cloneFluidStack( sharedFluidStack );
|
||||
toWrite.amount = (int) remainingItemCount;
|
||||
if (mode == Actionable.MODULATE) {
|
||||
IAEFluidStack toWrite = input.copy();
|
||||
toWrite.setStackSize(remainingItemCount);
|
||||
|
||||
this.cellItems.add( AEFluidStack.create( toWrite ) );
|
||||
this.updateFluidCount( toWrite.amount );
|
||||
this.cellItems.add(toWrite);
|
||||
this.updateFluidCount(toWrite.getStackSize());
|
||||
|
||||
this.saveChanges();
|
||||
}
|
||||
|
||||
return AEFluidStack.create( toReturn );
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
if( mode == Actionable.MODULATE )
|
||||
@@ -431,7 +427,7 @@ public class FluidCellInventory implements IFluidCellInventory {
|
||||
return null;
|
||||
}
|
||||
|
||||
final long size = Math.min( Integer.MAX_VALUE, request.getStackSize() );
|
||||
final long size = request.getStackSize();
|
||||
|
||||
IAEFluidStack results = null;
|
||||
|
||||
|
||||
@@ -76,8 +76,7 @@ public final class Util {
|
||||
return player == null || permission == null || securityGrid == null || securityGrid.hasPermission(player, permission);
|
||||
}
|
||||
|
||||
public static ItemStack copyStackWithSize(ItemStack itemStack, int size)
|
||||
{
|
||||
public static ItemStack copyStackWithSize(ItemStack itemStack, int size) {
|
||||
if (size == 0 || itemStack == null)
|
||||
return null;
|
||||
ItemStack copy = itemStack.copy();
|
||||
@@ -85,6 +84,28 @@ public final class Util {
|
||||
return copy;
|
||||
}
|
||||
|
||||
public static AEFluidStack getAEFluidFromItem(ItemStack stack) {
|
||||
if (stack != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack))) {
|
||||
if (stack.getItem() instanceof IFluidContainerItem) {
|
||||
FluidStack fluid = ((IFluidContainerItem) stack.getItem()).getFluid(stack);
|
||||
if (fluid != null) {
|
||||
AEFluidStack fluid0 = AEFluidStack.create(fluid.copy());
|
||||
fluid0.setStackSize(fluid0.getStackSize() * stack.stackSize);
|
||||
return fluid0;
|
||||
}
|
||||
}
|
||||
if (FluidContainerRegistry.isContainer(stack)) {
|
||||
FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(stack);
|
||||
if (fluid != null) {
|
||||
AEFluidStack fluid0 = AEFluidStack.create(fluid.copy());
|
||||
fluid0.setStackSize(fluid0.getStackSize() * stack.stackSize);
|
||||
return fluid0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static FluidStack getFluidFromItem(ItemStack stack) {
|
||||
if (stack != null && (stack.getItem() instanceof IFluidContainerItem || FluidContainerRegistry.isContainer(stack))) {
|
||||
if (stack.getItem() instanceof IFluidContainerItem) {
|
||||
|
||||
Reference in new issue
Block a user