Skip to content

Commit ad18e83

Browse files
Fix sync tasks taking too long to load inventory,
Fix enderchest not safe-loading items
1 parent 15041b0 commit ad18e83

1 file changed

Lines changed: 32 additions & 2 deletions

File tree

src/main/java/me/danjono/inventoryrollback/gui/menu/EnderChestBackupMenu.java

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.UUID;
44

5+
import com.nuclyon.technicallycoded.inventoryrollback.InventoryRollbackPlus;
56
import org.bukkit.Bukkit;
67
import org.bukkit.entity.Player;
78
import org.bukkit.inventory.Inventory;
@@ -13,6 +14,7 @@
1314
import me.danjono.inventoryrollback.data.PlayerData;
1415
import me.danjono.inventoryrollback.gui.Buttons;
1516
import me.danjono.inventoryrollback.gui.InventoryName;
17+
import org.bukkit.scheduler.BukkitRunnable;
1618

1719
public class EnderChestBackupMenu {
1820

@@ -53,15 +55,43 @@ public void showEnderChestItems() {
5355

5456
//If the backup file is invalid it will return null, we want to catch it here
5557
try {
58+
59+
// Add items, 5 per tick
60+
new BukkitRunnable() {
61+
62+
int invPosition = 0;
63+
int itemPos = 0;
64+
final int max = Math.min(enderchest.length, 27 + 1); // excluded
65+
66+
@Override
67+
public void run() {
68+
for (int i = 0; i < 6; i++) {
69+
// If hit max item position, stop
70+
if (itemPos >= max) {
71+
this.cancel();
72+
return;
73+
}
74+
75+
ItemStack itemStack = enderchest[itemPos];
76+
if (itemStack != null) {
77+
inventory.setItem(invPosition, itemStack);
78+
// Don't change inv position if there was nothing to place
79+
invPosition++;
80+
}
81+
// Move to next item stack
82+
itemPos++;
83+
}
84+
}
85+
}.runTaskTimer(InventoryRollbackPlus.getInstance(), 0, 1);
5686
//Add items
57-
for (int i = 0; i < enderchest.length; i++) {
87+
/*for (int i = 0; i < enderchest.length; i++) {
5888
if (enderchest[item] != null) {
5989
inventory.setItem(position, enderchest[item]);
6090
position++;
6191
}
6292
6393
item++;
64-
}
94+
}*/
6595
} catch (NullPointerException e) {
6696
staff.sendMessage(MessageData.getPluginPrefix() + MessageData.getErrorInventory());
6797
return;

0 commit comments

Comments
 (0)