geforkt von Mirrors/Paper
[Bleeding] Add iterator() with starting index. Addresses BUKKIT-1246
Dieser Commit ist enthalten in:
Ursprung
7966531113
Commit
cd9779196b
@ -381,6 +381,13 @@ public class CraftInventory implements Inventory {
|
|||||||
return new InventoryIterator(this);
|
return new InventoryIterator(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ListIterator<ItemStack> iterator(int index) {
|
||||||
|
if (index < 0) {
|
||||||
|
index += getSize() + 1; // ie, with -1, previous() will return the last element
|
||||||
|
}
|
||||||
|
return new InventoryIterator(this, index);
|
||||||
|
}
|
||||||
|
|
||||||
public List<HumanEntity> getViewers() {
|
public List<HumanEntity> getViewers() {
|
||||||
return this.inventory.getViewers();
|
return this.inventory.getViewers();
|
||||||
}
|
}
|
||||||
|
@ -8,13 +8,18 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
public class InventoryIterator implements ListIterator<ItemStack> {
|
public class InventoryIterator implements ListIterator<ItemStack> {
|
||||||
private final Inventory inventory;
|
private final Inventory inventory;
|
||||||
private int nextIndex;
|
private int nextIndex;
|
||||||
private boolean lastDirection; // true = forward, false = backward
|
private Boolean lastDirection; // true = forward, false = backward, null = haven't moved yet
|
||||||
|
|
||||||
InventoryIterator(Inventory craftInventory) {
|
InventoryIterator(Inventory craftInventory) {
|
||||||
this.inventory = craftInventory;
|
this.inventory = craftInventory;
|
||||||
this.nextIndex = 0;
|
this.nextIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InventoryIterator(Inventory craftInventory, int index) {
|
||||||
|
this.inventory = craftInventory;
|
||||||
|
this.nextIndex = index;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasNext() {
|
public boolean hasNext() {
|
||||||
return nextIndex < inventory.getSize();
|
return nextIndex < inventory.getSize();
|
||||||
}
|
}
|
||||||
@ -42,6 +47,9 @@ public class InventoryIterator implements ListIterator<ItemStack> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set(ItemStack item) {
|
public void set(ItemStack item) {
|
||||||
|
if (lastDirection == null) {
|
||||||
|
throw new IllegalStateException("No current item!");
|
||||||
|
}
|
||||||
int i = lastDirection ? nextIndex - 1 : nextIndex;
|
int i = lastDirection ? nextIndex - 1 : nextIndex;
|
||||||
inventory.setItem(i, item);
|
inventory.setItem(i, item);
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren