aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/tileentities/automation
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2021-07-31 13:15:33 +0200
committerGitHub <noreply@github.com>2021-07-31 13:15:33 +0200
commit550343a732972184bc488451ae639c620988c972 (patch)
treed09c635665eab2a87d6c02cbfe074c212602b82f /src/main/java/gregtech/common/tileentities/automation
parent21d12f02a40be714442864d72c5060bf60c7525a (diff)
parent2e47483ecf90b8bb6e12aaa8849980bde597a1d4 (diff)
downloadGT5-Unofficial-550343a732972184bc488451ae639c620988c972.tar.gz
GT5-Unofficial-550343a732972184bc488451ae639c620988c972.tar.bz2
GT5-Unofficial-550343a732972184bc488451ae639c620988c972.zip
Merge pull request #614 from D-Cysteine/fix-iteration-slots
Fix iteration over invalid slots
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/automation')
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ChestBuffer.java6
-rw-r--r--src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java4
2 files changed, 7 insertions, 3 deletions
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ChestBuffer.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ChestBuffer.java
index 3830cd3497..9da0eace39 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ChestBuffer.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ChestBuffer.java
@@ -125,9 +125,11 @@ public class GT_MetaTileEntity_ChestBuffer extends GT_MetaTileEntity_Buffer {
protected void fillStacksIntoFirstSlots() {
sortStacks();
// Merge small stacks together
- for (int i = 0; i < this.mInventory.length-1;) {
+ // The last slot of mInventory is invalid, so we need to avoid iterating over it.
+ // Thus all max indices are reduced by 1 here.
+ for (int i = 0; i < this.mInventory.length - 2;) {
//GT_FML_LOGGER.info( (this.mInventory[i] == null) ? "Slot empty " + i : "Slot " + i + " holds " + this.mInventory[i].getDisplayName());
- for (int j = i + 1; j < this.mInventory.length; j++) {
+ for (int j = i + 1; j < this.mInventory.length - 1; j++) {
if ((this.mInventory[j] != null) && ((GT_Utility.areStacksEqual(this.mInventory[i], this.mInventory[j])))) {
GT_Utility.moveStackFromSlotAToSlotB(getBaseMetaTileEntity(), getBaseMetaTileEntity(), j, i, (byte) 64, (byte) 1, (byte) 64, (byte) 1);
//GT_FML_LOGGER.info( "Moving slot " + j + " into slot " + i );
diff --git a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
index d3b124b79f..3cf5adff99 100644
--- a/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
+++ b/src/main/java/gregtech/common/tileentities/automation/GT_MetaTileEntity_ItemDistributor.java
@@ -51,7 +51,9 @@ public class GT_MetaTileEntity_ItemDistributor extends GT_MetaTileEntity_Buffer
@Override
protected void fillStacksIntoFirstSlots() {
- for (int i = 0; i < this.mInventory.length - 1; i++) {
+ // The last slot of mInventory is invalid, so we need to avoid iterating over it.
+ // Thus all max indices are reduced by 1 here.
+ for (int i = 0; i < this.mInventory.length - 2; i++) {
for (int j = i + 1; j < this.mInventory.length - 1; j++) {
if ((this.mInventory[j] != null)
&& ((this.mInventory[i] == null) || (GT_Utility.areStacksEqual(this.mInventory[i], this.mInventory[j])))) {