Skip to content

Commit feba26e

Browse files
authored
Fix return value of ExprInventoryInfo (#7998)
1 parent 5cd50c7 commit feba26e

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

src/main/java/ch/njol/skript/expressions/ExprInventoryInfo.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package ch.njol.skript.expressions;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
5-
6-
import org.bukkit.entity.Player;
7-
import org.bukkit.event.Event;
8-
import org.bukkit.inventory.Inventory;
9-
import org.bukkit.inventory.InventoryHolder;
10-
import org.jetbrains.annotations.Nullable;
11-
123
import ch.njol.skript.Skript;
134
import ch.njol.skript.doc.Description;
145
import ch.njol.skript.doc.Examples;
@@ -19,6 +10,16 @@
1910
import ch.njol.skript.lang.SkriptParser.ParseResult;
2011
import ch.njol.skript.lang.util.SimpleExpression;
2112
import ch.njol.util.Kleenean;
13+
import org.bukkit.entity.HumanEntity;
14+
import org.bukkit.entity.Player;
15+
import org.bukkit.event.Event;
16+
import org.bukkit.inventory.Inventory;
17+
import org.bukkit.inventory.InventoryHolder;
18+
import org.jetbrains.annotations.Nullable;
19+
20+
import java.lang.reflect.Array;
21+
import java.util.ArrayList;
22+
import java.util.List;
2223

2324
@Name("Inventory Holder/Viewers/Rows/Slots")
2425
@Description({"Gets the amount of rows/slots, viewers and holder of an inventory.",
@@ -50,41 +51,42 @@ public boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelaye
5051
}
5152

5253
@Override
53-
protected Object[] get(Event e) {
54-
Inventory[] inventories = this.inventories.getArray(e);
55-
List<Object> objects = new ArrayList<>();
54+
protected Object[] get(Event event) {
55+
Inventory[] inventories = this.inventories.getArray(event);
5656
switch (type) {
5757
case HOLDER:
58+
List<InventoryHolder> holders = new ArrayList<>();
5859
for (Inventory inventory : inventories) {
5960
InventoryHolder holder = inventory.getHolder();
6061
if (holder != null)
61-
objects.add(holder);
62+
holders.add(holder);
6263
}
63-
break;
64+
return holders.toArray(new InventoryHolder[0]);
6465
case ROWS:
66+
List<Number> rows = new ArrayList<>();
6567
for (Inventory inventory : inventories) {
6668
int size = inventory.getSize();
6769
if (size < 9) // Hoppers have a size of 5, we don't want to return 0
68-
objects.add(1);
70+
rows.add(1);
6971
else
70-
objects.add(size / 9);
72+
rows.add(size / 9);
7173
}
72-
break;
74+
return rows.toArray(new Number[0]);
7375
case SLOTS:
76+
List<Number> sizes = new ArrayList<>();
7477
for (Inventory inventory : inventories) {
75-
objects.add(inventory.getSize());
78+
sizes.add(inventory.getSize());
7679
}
77-
break;
80+
return sizes.toArray(new Number[0]);
7881
case VIEWERS:
82+
List<HumanEntity> viewers = new ArrayList<>();
7983
for (Inventory inventory : inventories) {
80-
objects.addAll(inventory.getViewers());
84+
viewers.addAll(inventory.getViewers());
8185
}
82-
break;
86+
return viewers.stream().filter(viewer -> viewer instanceof Player).toArray(Player[]::new);
8387
default:
84-
return new Object[0];
88+
return (Object[]) Array.newInstance(getReturnType(), 0);
8589
}
86-
return objects.toArray(new Object[0]);
87-
8890
}
8991

9092
@Override

0 commit comments

Comments
 (0)