Skip to content

Commit be830f4

Browse files
committed
Fix not being able to add items when a single drive fills on types.
1 parent 021bb0e commit be830f4

File tree

4 files changed

+24
-11
lines changed

4 files changed

+24
-11
lines changed

dependency-reduced-pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>net.seanomik</groupId>
55
<artifactId>energeticstorage</artifactId>
66
<name>EnergeticStorage</name>
7-
<version>0.7.2-SNAPSHOT</version>
7+
<version>0.7.3-SNAPSHOT</version>
88
<build>
99
<defaultGoal>clean package</defaultGoal>
1010
<resources>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>net.seanomik</groupId>
88
<artifactId>energeticstorage</artifactId>
9-
<version>0.7.2-SNAPSHOT</version>
9+
<version>0.7.3-SNAPSHOT</version>
1010
<packaging>jar</packaging>
1111

1212
<name>EnergeticStorage</name>

src/main/java/net/seanomik/energeticstorage/objects/ESDrive.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,28 @@ public ESDrive clone() {
123123
}
124124
}
125125

126-
public boolean isAvailable(ItemStack item) {
127-
return (Utils.isItemValid(item)) ? getFilledTypes() < Reference.MAX_DRIVE_TYPES && getFilledSpace() < size : getFilledSpace() < size;
126+
public boolean canAddItem(ItemStack item) {
127+
if (Utils.isItemValid(item)) {
128+
// If the item is valid, we're full on types, we have the item in the drive, and we're not full on space, return true.
129+
// else always just cascase down and check if we have space.
130+
if (Utils.containsSimilarItem(new ArrayList<>(items.keySet()), item, true)) {
131+
return getFilledSpace() < size;
132+
} else {
133+
if (getFilledTypes() < Reference.MAX_DRIVE_TYPES) {
134+
return getFilledSpace() < size;
135+
}
136+
137+
return false;
138+
}
139+
} else {
140+
return getFilledSpace() < size;
141+
}
128142
}
129143

130144
public boolean addItem(ItemStack item) {
131145
item = item.clone();
132146

133-
if (isAvailable(item)) {
147+
if (canAddItem(item)) {
134148
// The item is contained, then update the amount.
135149
if (Utils.containsSimilarItem(new ArrayList<>(items.keySet()), item, true)) {
136150
int amount = (int) items.values().toArray()[Utils.indexOfSimilarItem(new ArrayList<>(items.keySet()), item)] + item.getAmount();

src/main/java/net/seanomik/energeticstorage/objects/ESSystem.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package net.seanomik.energeticstorage.objects;
22

33
import net.seanomik.energeticstorage.utils.Utils;
4-
import org.bukkit.Bukkit;
54
import org.bukkit.Location;
65
import org.bukkit.configuration.serialization.ConfigurationSerializable;
76
import org.bukkit.entity.Player;
87
import org.bukkit.inventory.ItemStack;
9-
import org.bukkit.inventory.meta.ItemMeta;
108
import org.jetbrains.annotations.NotNull;
119

12-
import java.io.Serializable;
1310
import java.util.*;
1411

1512
public class ESSystem implements Cloneable, ConfigurationSerializable {
@@ -144,7 +141,7 @@ public boolean equals(Object other) {
144141

145142
public ESDrive getNextAvailableDrive() {
146143
for (ESDrive drive : esDrives) {
147-
if (drive.isAvailable(null)) {
144+
if (drive.canAddItem(null)) {
148145
return drive;
149146
}
150147
}
@@ -155,7 +152,9 @@ public ESDrive getNextAvailableDrive() {
155152
public ESDrive findItemInAvailableDrive(ItemStack item) {
156153
for (ESDrive drive : esDrives) {
157154
for (ItemStack itemStack : drive.getItems().keySet()) {
158-
if (item.isSimilar(itemStack) && drive.isAvailable(item)) {
155+
// We don't need to check if we can add the item since if its
156+
// added, then i
157+
if (item.isSimilar(itemStack) && drive.canAddItem(null)) {
159158
return drive;
160159
}
161160
}
@@ -185,7 +184,7 @@ public Map<ItemStack, Integer> getAllItems() {
185184
public boolean addItem(ItemStack item) {
186185
ESDrive drive = findItemInAvailableDrive(item);
187186

188-
// If we failed to find the item in the next available drive, then find another drive.
187+
// If we failed to find the item in the next available drive, then find another drive to add it to.
189188
if (drive == null) {
190189
drive = getNextAvailableDrive();
191190

0 commit comments

Comments
 (0)