mirror of
https://github.com/songoda/EpicHoppers.git
synced 2024-09-19 03:21:21 +02:00
Update changed cells only
This commit is contained in:
parent
e3bfa587e7
commit
e927aa69cb
@ -6,6 +6,7 @@ import java.util.Map;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
@ -32,7 +33,17 @@ public class StorageContainerCache {
|
||||
inventoryCache.entrySet().stream()
|
||||
.filter(e -> e.getValue().dirty)
|
||||
.forEach(e -> {
|
||||
((InventoryHolder) e.getKey().getState()).getInventory().setContents(e.getValue().cachedInventory);
|
||||
// setContents makes a copy of every item whether it's needed or not
|
||||
//((InventoryHolder) e.getKey().getState()).getInventory().setContents(e.getValue().cachedInventory);
|
||||
// so let's only update what needs to be updated.
|
||||
final ItemStack[] cachedInventory = e.getValue().cachedInventory;
|
||||
final boolean[] cacheChanged = e.getValue().cacheChanged;
|
||||
Inventory inventory = ((InventoryHolder) e.getKey().getState()).getInventory();//.setContents();
|
||||
for (int i = 0; i < cachedInventory.length; i++) {
|
||||
if (cacheChanged[i]) {
|
||||
inventory.setItem(i, cachedInventory[i]);
|
||||
}
|
||||
}
|
||||
Methods.updateAdjacentComparators(e.getKey().getLocation());
|
||||
});
|
||||
inventoryCache.clear();
|
||||
|
Loading…
Reference in New Issue
Block a user