diff --git a/build.gradle b/build.gradle index 8cf9b66bd..5a20ab9e8 100644 --- a/build.gradle +++ b/build.gradle @@ -51,7 +51,7 @@ dependencies { deobfCompile 'curse.maven:modular-machinery-270790:2761302' // 1.11.1 deobfCompile 'curse.maven:codechicken-lib-1-8-242818:2779848' //ccl deobfCompile 'curse.maven:gregtech-ce-unofficial-557242:3784798' // gt - deobfCompile 'curse.maven:ae2-extended-life-570458:4429430' //pae2 + deobfCompile 'curse.maven:ae2-extended-life-570458:4646658' //pae2 deobfCompile 'curse.maven:dynamistics-383632:3056455' // dy compileOnly 'curse.maven:opencomputers-223008:4630537' //oc runtime 'curse.maven:opencomputers-223008:4630537' //oc diff --git a/src/main/java/com/glodblock/github/client/container/ContainerExtendedFluidPatternTerminal.java b/src/main/java/com/glodblock/github/client/container/ContainerExtendedFluidPatternTerminal.java index 57053dbc3..e192d66da 100644 --- a/src/main/java/com/glodblock/github/client/container/ContainerExtendedFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/client/container/ContainerExtendedFluidPatternTerminal.java @@ -427,7 +427,7 @@ else if (!slot.getStack().isEmpty()) { } @Override - public void acceptPattern(Int2ObjectMap inputs, ItemStack[] outputs, boolean combine) { + public void acceptPattern(Int2ObjectMap inputs, List outputs, boolean combine) { if (part instanceof PartExtendedFluidPatternTerminal) { ((PartExtendedFluidPatternTerminal) part).onChangeCrafting(inputs, outputs, combine); } diff --git a/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternEncoder.java b/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternEncoder.java index b324b23f8..f0c57c072 100644 --- a/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternEncoder.java +++ b/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternEncoder.java @@ -156,7 +156,7 @@ public void doAction(EntityPlayerMP player, InventoryAction action, int slotId, } @Override - public void acceptPattern(Int2ObjectMap inputs, ItemStack[] outputs, boolean combine) { + public void acceptPattern(Int2ObjectMap inputs, List outputs, boolean combine) { AeStackInventory craftingSlot = tile.getCraftingSlots(); AeStackInventory outputSlot = tile.getOutputSlots(); for (int index : inputs.keySet()) { @@ -165,9 +165,9 @@ public void acceptPattern(Int2ObjectMap inputs, ItemStack[] outputs craftingSlot.setStack(index, AEItemStack.fromItemStack(items[0])); } } - int bound = Math.min(outputSlot.getSlotCount(), outputs.length); + int bound = Math.min(outputSlot.getSlotCount(), outputs.size()); for (int index = 0; index < bound; index ++) { - outputSlot.setStack(index, AEItemStack.fromItemStack(outputs[index])); + outputSlot.setStack(index, AEItemStack.fromItemStack(outputs.get(index))); } } diff --git a/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternTerminal.java b/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternTerminal.java index 4c218a72d..04d323ad4 100644 --- a/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/client/container/ContainerFluidPatternTerminal.java @@ -203,7 +203,7 @@ private static IAEItemStack[] collectInventory(Slot[] slots) { } @Override - public void acceptPattern(Int2ObjectMap inputs, ItemStack[] outputs, boolean combine) { + public void acceptPattern(Int2ObjectMap inputs, List outputs, boolean combine) { if (Ae2Reflect.getPart(this) instanceof PartFluidPatternTerminal) { ((PartFluidPatternTerminal) Ae2Reflect.getPart(this)).onChangeCrafting(inputs, outputs, combine); } diff --git a/src/main/java/com/glodblock/github/common/part/PartExtendedFluidPatternTerminal.java b/src/main/java/com/glodblock/github/common/part/PartExtendedFluidPatternTerminal.java index 1af62348e..0f07407e9 100644 --- a/src/main/java/com/glodblock/github/common/part/PartExtendedFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/part/PartExtendedFluidPatternTerminal.java @@ -32,6 +32,7 @@ import net.minecraftforge.items.IItemHandlerModifiable; import javax.annotation.Nonnull; +import java.util.List; public class PartExtendedFluidPatternTerminal extends PartExpandedProcessingPatternTerminal { @@ -125,7 +126,7 @@ public void onChangeInventory(IItemHandler inv, int slot, InvOperation mc, ItemS super.onChangeInventory(inv, slot, mc, removedStack, newStack); } - public void onChangeCrafting(Int2ObjectMap inputs, ItemStack[] outputs, boolean combine) { + public void onChangeCrafting(Int2ObjectMap inputs, List outputs, boolean combine) { IItemHandler crafting = this.getInventoryByName("crafting"); IItemHandler output = this.getInventoryByName("output"); IItemList storageList = this.getInventory(Util.ITEM) == null ? @@ -145,9 +146,9 @@ public void onChangeCrafting(Int2ObjectMap inputs, ItemStack[] outp final ItemStack item = fuzzyFind[x]; ((AppEngInternalInventory) crafting).setStackInSlot(x, item == null ? ItemStack.EMPTY : item); } - bound = Math.min(output.getSlots(), outputs.length); + bound = Math.min(output.getSlots(), outputs.size()); for (int x = 0; x < bound; x++) { - final ItemStack item = outputs[x]; + final ItemStack item = outputs.get(x); ((AppEngInternalInventory) output).setStackInSlot(x, item == null ? ItemStack.EMPTY : item); } } diff --git a/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java b/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java index 8f6c1078e..4c31814ea 100644 --- a/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java +++ b/src/main/java/com/glodblock/github/common/part/PartFluidPatternTerminal.java @@ -35,6 +35,7 @@ import net.minecraftforge.items.IItemHandlerModifiable; import javax.annotation.Nonnull; +import java.util.List; public class PartFluidPatternTerminal extends PartPatternTerminal { @@ -168,7 +169,7 @@ public void putPattern(IAEItemStack[] inputs, IAEItemStack[] outputs) { } } - public void onChangeCrafting(Int2ObjectMap inputs, ItemStack[] outputs, boolean combine) { + public void onChangeCrafting(Int2ObjectMap inputs, List outputs, boolean combine) { IItemHandler crafting = this.getInventoryByName("crafting"); IItemHandler output = this.getInventoryByName("output"); IItemList storageList = this.getInventory(Util.ITEM) == null ? @@ -188,9 +189,9 @@ public void onChangeCrafting(Int2ObjectMap inputs, ItemStack[] outp final ItemStack item = fuzzyFind[x]; ((AppEngInternalInventory) crafting).setStackInSlot(x, item == null ? ItemStack.EMPTY : item); } - bound = Math.min(output.getSlots(), outputs.length); + bound = Math.min(output.getSlots(), outputs.size()); for (int x = 0; x < bound; x++) { - final ItemStack item = outputs[x]; + final ItemStack item = outputs.get(x); ((AppEngInternalInventory) output).setStackInSlot(x, item == null ? ItemStack.EMPTY : item); } } diff --git a/src/main/java/com/glodblock/github/integration/jei/ExtendedFluidPatternTerminalRecipeTransferHandler.java b/src/main/java/com/glodblock/github/integration/jei/ExtendedFluidPatternTerminalRecipeTransferHandler.java index 8d393e665..b4f8cc224 100644 --- a/src/main/java/com/glodblock/github/integration/jei/ExtendedFluidPatternTerminalRecipeTransferHandler.java +++ b/src/main/java/com/glodblock/github/integration/jei/ExtendedFluidPatternTerminalRecipeTransferHandler.java @@ -33,10 +33,7 @@ public IRecipeTransferError transferRecipe(@Nonnull ContainerExtendedFluidPatter } if (doTransfer && container.part instanceof PartExtendedFluidPatternTerminal) { - PartExtendedFluidPatternTerminal tile = (PartExtendedFluidPatternTerminal)container.part; RecipeTransferBuilder transfer = new RecipeTransferBuilder( - tile.getInventoryByName("crafting").getSlots(), - tile.getInventoryByName("output").getSlots(), recipeLayout) .clearEmptySlot(true) .putFluidFirst(container.fluidFirst) diff --git a/src/main/java/com/glodblock/github/integration/jei/FluidPatternEncoderRecipeTransferHandler.java b/src/main/java/com/glodblock/github/integration/jei/FluidPatternEncoderRecipeTransferHandler.java index f4e8e40b3..f15c46029 100644 --- a/src/main/java/com/glodblock/github/integration/jei/FluidPatternEncoderRecipeTransferHandler.java +++ b/src/main/java/com/glodblock/github/integration/jei/FluidPatternEncoderRecipeTransferHandler.java @@ -31,10 +31,7 @@ public IRecipeTransferError transferRecipe(@Nonnull ContainerFluidPatternEncoder return new RecipeTransferErrorTooltip(I18n.format(NameConst.TT_PROCESSING_RECIPE_ONLY)); } if (doTransfer) { - TileFluidPatternEncoder tile = container.getTile(); RecipeTransferBuilder transfer = new RecipeTransferBuilder( - tile.getCraftingSlots().getSlotCount(), - tile.getOutputSlots().getSlotCount(), recipeLayout) .clearEmptySlot(true) .putFluidFirst(false) diff --git a/src/main/java/com/glodblock/github/integration/jei/FluidPatternTerminalRecipeTransferHandler.java b/src/main/java/com/glodblock/github/integration/jei/FluidPatternTerminalRecipeTransferHandler.java index c761bb1f9..dd57dca40 100644 --- a/src/main/java/com/glodblock/github/integration/jei/FluidPatternTerminalRecipeTransferHandler.java +++ b/src/main/java/com/glodblock/github/integration/jei/FluidPatternTerminalRecipeTransferHandler.java @@ -42,10 +42,7 @@ else if (!container.isCraftingMode() && recipeLayout.getRecipeCategory().getUid( } } catch (IOException ignore) { } - PartFluidPatternTerminal tile = (PartFluidPatternTerminal) Ae2Reflect.getPart(container); RecipeTransferBuilder transfer = new RecipeTransferBuilder( - tile.getInventoryByName("crafting").getSlots(), - tile.getInventoryByName("output").getSlots(), recipeLayout) .clearEmptySlot(!craftMode) .putFluidFirst(container.fluidFirst) diff --git a/src/main/java/com/glodblock/github/integration/jei/RecipeTransferBuilder.java b/src/main/java/com/glodblock/github/integration/jei/RecipeTransferBuilder.java index 696294fd0..783440e57 100644 --- a/src/main/java/com/glodblock/github/integration/jei/RecipeTransferBuilder.java +++ b/src/main/java/com/glodblock/github/integration/jei/RecipeTransferBuilder.java @@ -19,8 +19,7 @@ public class RecipeTransferBuilder { private static final int MAX_ITEMS = 16; private final Int2ObjectArrayMap in; - private final int bound; - private final ItemStack[] out; + private final List out; private final IRecipeLayout recipe; private List itemsIn; private List fluidIn; @@ -29,10 +28,9 @@ public class RecipeTransferBuilder { private boolean noNull = true; private boolean fluidFirst = false; - public RecipeTransferBuilder(int maxInput, int maxOutput, IRecipeLayout recipe) { + public RecipeTransferBuilder(IRecipeLayout recipe) { this.in = new Int2ObjectArrayMap<>(); - this.bound = maxInput; - this.out = new ItemStack[maxOutput]; + this.out = new ArrayList<>(); this.recipe = recipe; this.itemsIn = new ArrayList<>(); this.itemOut = new ArrayList<>(); @@ -88,7 +86,7 @@ private void split() { } private void setItemIn(int offset) { - int bound = Math.min(this.bound, this.itemsIn.size() + offset); + int bound = this.itemsIn.size() + offset; for (int index = offset; index < bound; index ++) { int i = index - offset; if (this.itemsIn.get(i) != null && this.itemsIn.get(i).length > 0) { @@ -98,7 +96,7 @@ private void setItemIn(int offset) { } private void setFluidIn(int offset) { - int bound = Math.min(this.bound, this.fluidIn.size() + offset); + int bound = this.fluidIn.size() + offset; for (int index = offset; index < bound; index ++) { int i = index - offset; if (this.fluidIn.get(i) != null) { @@ -108,11 +106,11 @@ private void setFluidIn(int offset) { } private void setOutputs() { - for (int index = 0; index < this.out.length; index ++) { + for (int index = 0; index < this.out.size(); index ++) { if (index < this.itemOut.size()) { - this.out[index] = this.itemOut.get(index); + this.out.add(this.itemOut.get(index)); } else if (index - this.itemOut.size() < this.fluidOut.size()) { - this.out[index] = ItemFluidPacket.newStack(this.fluidOut.get(index - this.itemOut.size())); + this.out.add(ItemFluidPacket.newStack(this.fluidOut.get(index - this.itemOut.size()))); } } } @@ -145,7 +143,7 @@ public RecipeTransferBuilder build() { return this; } - public ItemStack[] getOutput() { + public List getOutput() { return this.out; } diff --git a/src/main/java/com/glodblock/github/interfaces/PatternConsumer.java b/src/main/java/com/glodblock/github/interfaces/PatternConsumer.java index 89fce380a..1838e7421 100644 --- a/src/main/java/com/glodblock/github/interfaces/PatternConsumer.java +++ b/src/main/java/com/glodblock/github/interfaces/PatternConsumer.java @@ -3,8 +3,10 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.item.ItemStack; +import java.util.List; + public interface PatternConsumer { - void acceptPattern(Int2ObjectMap inputs, ItemStack[] outputs, boolean compress); + void acceptPattern(Int2ObjectMap inputs, List outputs, boolean compress); } \ No newline at end of file diff --git a/src/main/java/com/glodblock/github/network/CPacketLoadPattern.java b/src/main/java/com/glodblock/github/network/CPacketLoadPattern.java index af96d47fd..93fcbde48 100644 --- a/src/main/java/com/glodblock/github/network/CPacketLoadPattern.java +++ b/src/main/java/com/glodblock/github/network/CPacketLoadPattern.java @@ -11,17 +11,19 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import scala.actors.threadpool.Arrays; import javax.annotation.Nullable; +import java.util.List; public class CPacketLoadPattern implements IMessage { - private ItemStack[] output; + private List output; private Int2ObjectMap crafting; private boolean compress; private static final int SLOT_SIZE = 16; - public CPacketLoadPattern(Int2ObjectMap crafting, ItemStack[] output, boolean compress) { + public CPacketLoadPattern(Int2ObjectMap crafting, List output, boolean compress) { this.crafting = crafting; this.output = output; this.compress = compress; @@ -38,11 +40,12 @@ public void toBytes(ByteBuf buf) { for (int index : crafting.keySet()) { writeItemArray(msg, crafting.get(index), index + "#"); } - writeItemArray(msg, output, "o"); + writeItemArray(msg, output.toArray(new ItemStack[0]), "o"); Util.writeNBTToBytes(buf, msg); } @Override + @SuppressWarnings("unchecked") public void fromBytes(ByteBuf buf) { crafting = new Int2ObjectArrayMap<>(); compress = buf.readBoolean(); @@ -52,7 +55,7 @@ public void fromBytes(ByteBuf buf) { crafting.put(i, readItemArray(msg, i + "#")); } } - output = readItemArray(msg, "o"); + output = Arrays.asList(readItemArray(msg, "o")); } private void writeItemArray(NBTTagCompound nbt, ItemStack[] itemList, String key) {