Add JEI transfer autocompletion for fluids in Pattern Grid.
This commit is contained in:
@@ -17,6 +17,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.InventoryCrafting;
|
import net.minecraft.inventory.InventoryCrafting;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -54,6 +55,9 @@ public class RecipeTransferHandlerGrid implements IRecipeTransferHandler {
|
|||||||
List<ItemStack> inputs = new LinkedList<>();
|
List<ItemStack> inputs = new LinkedList<>();
|
||||||
List<ItemStack> outputs = new LinkedList<>();
|
List<ItemStack> outputs = new LinkedList<>();
|
||||||
|
|
||||||
|
List<FluidStack> fluidInputs = new LinkedList<>();
|
||||||
|
List<FluidStack> fluidOutputs = new LinkedList<>();
|
||||||
|
|
||||||
for (IGuiIngredient<ItemStack> guiIngredient : recipeLayout.getItemStacks().getGuiIngredients().values()) {
|
for (IGuiIngredient<ItemStack> guiIngredient : recipeLayout.getItemStacks().getGuiIngredients().values()) {
|
||||||
if (guiIngredient != null && guiIngredient.getDisplayedIngredient() != null) {
|
if (guiIngredient != null && guiIngredient.getDisplayedIngredient() != null) {
|
||||||
ItemStack ingredient = guiIngredient.getDisplayedIngredient().copy();
|
ItemStack ingredient = guiIngredient.getDisplayedIngredient().copy();
|
||||||
@@ -66,7 +70,19 @@ public class RecipeTransferHandlerGrid implements IRecipeTransferHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RS.INSTANCE.network.sendToServer(new MessageGridProcessingTransfer(inputs, outputs));
|
for (IGuiIngredient<FluidStack> guiIngredient : recipeLayout.getFluidStacks().getGuiIngredients().values()) {
|
||||||
|
if (guiIngredient != null && guiIngredient.getDisplayedIngredient() != null) {
|
||||||
|
FluidStack ingredient = guiIngredient.getDisplayedIngredient().copy();
|
||||||
|
|
||||||
|
if (guiIngredient.isInput()) {
|
||||||
|
fluidInputs.add(ingredient);
|
||||||
|
} else {
|
||||||
|
fluidOutputs.add(ingredient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RS.INSTANCE.network.sendToServer(new MessageGridProcessingTransfer(inputs, outputs, fluidInputs, fluidOutputs));
|
||||||
} else {
|
} else {
|
||||||
RS.INSTANCE.network.sendToServer(new MessageGridTransfer(recipeLayout.getItemStacks().getGuiIngredients(), container.inventorySlots.stream().filter(s -> s.inventory instanceof InventoryCrafting).collect(Collectors.toList())));
|
RS.INSTANCE.network.sendToServer(new MessageGridTransfer(recipeLayout.getItemStacks().getGuiIngredients(), container.inventorySlots.stream().filter(s -> s.inventory instanceof InventoryCrafting).collect(Collectors.toList())));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,16 @@ import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
|||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
|
||||||
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
|
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
|
||||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||||
|
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.fluids.Fluid;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||||
|
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -18,12 +24,17 @@ public class MessageGridProcessingTransfer extends MessageHandlerPlayerToServer<
|
|||||||
private Collection<ItemStack> inputs;
|
private Collection<ItemStack> inputs;
|
||||||
private Collection<ItemStack> outputs;
|
private Collection<ItemStack> outputs;
|
||||||
|
|
||||||
|
private Collection<FluidStack> fluidInputs;
|
||||||
|
private Collection<FluidStack> fluidOutputs;
|
||||||
|
|
||||||
public MessageGridProcessingTransfer() {
|
public MessageGridProcessingTransfer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public MessageGridProcessingTransfer(Collection<ItemStack> inputs, Collection<ItemStack> outputs) {
|
public MessageGridProcessingTransfer(Collection<ItemStack> inputs, Collection<ItemStack> outputs, Collection<FluidStack> fluidInputs, Collection<FluidStack> fluidOutputs) {
|
||||||
this.inputs = inputs;
|
this.inputs = inputs;
|
||||||
this.outputs = outputs;
|
this.outputs = outputs;
|
||||||
|
this.fluidInputs = fluidInputs;
|
||||||
|
this.fluidOutputs = fluidOutputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -43,6 +54,26 @@ public class MessageGridProcessingTransfer extends MessageHandlerPlayerToServer<
|
|||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
this.outputs.add(StackUtils.readItemStack(buf));
|
this.outputs.add(StackUtils.readItemStack(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size = buf.readInt();
|
||||||
|
|
||||||
|
this.fluidInputs = new ArrayList<>(size);
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
buf.readInt();
|
||||||
|
|
||||||
|
this.fluidInputs.add(StackUtils.readFluidStack(buf));
|
||||||
|
}
|
||||||
|
|
||||||
|
size = buf.readInt();
|
||||||
|
|
||||||
|
this.fluidOutputs = new ArrayList<>(size);
|
||||||
|
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
buf.readInt();
|
||||||
|
|
||||||
|
this.fluidOutputs.add(StackUtils.readFluidStack(buf));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -58,6 +89,18 @@ public class MessageGridProcessingTransfer extends MessageHandlerPlayerToServer<
|
|||||||
for (ItemStack stack : outputs) {
|
for (ItemStack stack : outputs) {
|
||||||
StackUtils.writeItemStack(buf, stack);
|
StackUtils.writeItemStack(buf, stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf.writeInt(fluidInputs.size());
|
||||||
|
|
||||||
|
for (FluidStack stack : fluidInputs) {
|
||||||
|
StackUtils.writeFluidStack(buf, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.writeInt(fluidOutputs.size());
|
||||||
|
|
||||||
|
for (FluidStack stack : fluidOutputs) {
|
||||||
|
StackUtils.writeFluidStack(buf, stack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -67,11 +110,16 @@ public class MessageGridProcessingTransfer extends MessageHandlerPlayerToServer<
|
|||||||
|
|
||||||
if (grid.getGridType() == GridType.PATTERN) {
|
if (grid.getGridType() == GridType.PATTERN) {
|
||||||
ItemHandlerBase handler = ((NetworkNodeGrid) grid).getProcessingMatrix();
|
ItemHandlerBase handler = ((NetworkNodeGrid) grid).getProcessingMatrix();
|
||||||
|
ItemHandlerFluid handlerFluid = ((NetworkNodeGrid) grid).getMatrixProcessingFluids();
|
||||||
|
|
||||||
clearInputsAndOutputs(handler);
|
clearInputsAndOutputs(handler);
|
||||||
|
clearInputsAndOutputs(handlerFluid);
|
||||||
|
|
||||||
setInputs(handler, message.inputs);
|
setInputs(handler, message.inputs);
|
||||||
setOutputs(handler, message.outputs);
|
setOutputs(handler, message.outputs);
|
||||||
|
|
||||||
|
setFluidInputs(handlerFluid, message.fluidInputs);
|
||||||
|
setFluidOutputs(handlerFluid, message.fluidOutputs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -101,4 +149,37 @@ public class MessageGridProcessingTransfer extends MessageHandlerPlayerToServer<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setFluidInputs(ItemHandlerBase handler, Collection<FluidStack> stacks) {
|
||||||
|
setFluidSlots(handler, stacks, 0, 9);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setFluidOutputs(ItemHandlerBase handler, Collection<FluidStack> stacks) {
|
||||||
|
setFluidSlots(handler, stacks, 9, 18);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setFluidSlots(ItemHandlerBase handler, Collection<FluidStack> stacks, int begin, int end) {
|
||||||
|
for (FluidStack stack : stacks) {
|
||||||
|
if (!StackUtils.hasFluidBucket(stack) || stack.amount > Fluid.BUCKET_VOLUME) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack filledContainer = new ItemStack(Items.BUCKET);
|
||||||
|
|
||||||
|
IFluidHandlerItem fluidHandler = filledContainer.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null);
|
||||||
|
|
||||||
|
fluidHandler.fill(StackUtils.copy(stack, Fluid.BUCKET_VOLUME), true);
|
||||||
|
|
||||||
|
filledContainer = fluidHandler.getContainer();
|
||||||
|
filledContainer.setCount(stack.amount);
|
||||||
|
|
||||||
|
handler.setStackInSlot(begin, filledContainer);
|
||||||
|
|
||||||
|
begin++;
|
||||||
|
|
||||||
|
if (begin >= end) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user