Fix lag due to excessive saving
This commit is contained in:
@@ -530,12 +530,12 @@ public class NetworkMaster {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!simulate) {
|
int sizePushed = remainder != null ? (orginalSize - remainder.stackSize) : orginalSize;
|
||||||
|
|
||||||
|
if (!simulate && sizePushed > 0) {
|
||||||
syncItems();
|
syncItems();
|
||||||
syncItemsWithClients();
|
syncItemsWithClients();
|
||||||
|
|
||||||
int sizePushed = remainder != null ? (orginalSize - remainder.stackSize) : orginalSize;
|
|
||||||
|
|
||||||
for (int i = 0; i < sizePushed; ++i) {
|
for (int i = 0; i < sizePushed; ++i) {
|
||||||
if (!craftingTasks.empty()) {
|
if (!craftingTasks.empty()) {
|
||||||
ICraftingTask top = craftingTasks.peek();
|
ICraftingTask top = craftingTasks.peek();
|
||||||
|
@@ -11,6 +11,7 @@ import refinedstorage.RefinedStorageUtils;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.FutureTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A implementation of {@link IStorage} that stores storage items in NBT.
|
* A implementation of {@link IStorage} that stores storage items in NBT.
|
||||||
@@ -202,8 +203,6 @@ public abstract class NBTStorage implements IStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void onStorageChanged() {
|
public void onStorageChanged() {
|
||||||
writeToNBT();
|
|
||||||
|
|
||||||
if (tile != null) {
|
if (tile != null) {
|
||||||
tile.markDirty();
|
tile.markDirty();
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@ import refinedstorage.RefinedStorageUtils;
|
|||||||
import refinedstorage.api.network.NetworkMaster;
|
import refinedstorage.api.network.NetworkMaster;
|
||||||
|
|
||||||
public class CraftingTaskScheduler {
|
public class CraftingTaskScheduler {
|
||||||
public static String NBT_SCHEDULED = "CraftingTaskScheduled";
|
public static final String NBT_SCHEDULED = "CraftingTaskScheduled";
|
||||||
|
|
||||||
private ItemStack scheduledItem;
|
private ItemStack scheduledItem;
|
||||||
|
|
||||||
|
@@ -83,13 +83,17 @@ public class BlockStorage extends BlockSlave {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
|
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
|
||||||
|
TileStorage storage = (TileStorage) world.getTileEntity(pos);
|
||||||
|
|
||||||
|
if (storage.getStorage() != null) {
|
||||||
|
storage.getStorage().writeToNBT();
|
||||||
|
}
|
||||||
|
|
||||||
List<ItemStack> drops = new ArrayList<ItemStack>();
|
List<ItemStack> drops = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
ItemStack stack = new ItemStack(RefinedStorageBlocks.STORAGE, 1, RefinedStorageBlocks.STORAGE.getMetaFromState(state));
|
ItemStack stack = new ItemStack(RefinedStorageBlocks.STORAGE, 1, RefinedStorageBlocks.STORAGE.getMetaFromState(state));
|
||||||
|
stack.setTagCompound(new NBTTagCompound());
|
||||||
NBTTagCompound tag = new NBTTagCompound();
|
stack.getTagCompound().setTag(TileStorage.NBT_STORAGE, storage.getStorageTag());
|
||||||
tag.setTag(TileStorage.NBT_STORAGE, ((TileStorage) world.getTileEntity(pos)).getStorageTag());
|
|
||||||
stack.setTagCompound(tag);
|
|
||||||
|
|
||||||
drops.add(stack);
|
drops.add(stack);
|
||||||
|
|
||||||
|
@@ -73,6 +73,7 @@ public class GuiGrid extends GuiBase {
|
|||||||
super(container, 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 256 : 208);
|
super(container, 193, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 256 : 208);
|
||||||
|
|
||||||
setScrollbar(new Scrollbar(174, 20, 12, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 70 : 88));
|
setScrollbar(new Scrollbar(174, 20, 12, (grid.getType() == EnumGridType.CRAFTING || grid.getType() == EnumGridType.PATTERN) ? 70 : 88));
|
||||||
|
getScrollbar().setCanScroll(false);
|
||||||
|
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.grid = grid;
|
this.grid = grid;
|
||||||
|
@@ -62,6 +62,15 @@ public class TileDiskDrive extends TileSlave implements IStorageProvider, IStora
|
|||||||
storages[slot] = new Storage(disk);
|
storages[slot] = new Storage(disk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack extractItem(int slot, int amount, boolean simulate) {
|
||||||
|
if (storages[slot] != null) {
|
||||||
|
storages[slot].writeToNBT();
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.extractItem(slot, amount, simulate);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
private BasicItemHandler filters = new BasicItemHandler(9, this);
|
private BasicItemHandler filters = new BasicItemHandler(9, this);
|
||||||
|
|
||||||
@@ -121,6 +130,12 @@ public class TileDiskDrive extends TileSlave implements IStorageProvider, IStora
|
|||||||
public NBTTagCompound write(NBTTagCompound tag) {
|
public NBTTagCompound write(NBTTagCompound tag) {
|
||||||
super.write(tag);
|
super.write(tag);
|
||||||
|
|
||||||
|
for (int i = 0; i < disks.getSlots(); ++i) {
|
||||||
|
if (storages[i] != null) {
|
||||||
|
storages[i].writeToNBT();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RefinedStorageUtils.writeItems(disks, 0, tag);
|
RefinedStorageUtils.writeItems(disks, 0, tag);
|
||||||
RefinedStorageUtils.writeItems(filters, 1, tag);
|
RefinedStorageUtils.writeItems(filters, 1, tag);
|
||||||
|
|
||||||
|
@@ -43,13 +43,13 @@ public class TileExporter extends TileSlave implements ICompareConfig {
|
|||||||
public void updateSlave() {
|
public void updateSlave() {
|
||||||
IItemHandler handler = RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite());
|
IItemHandler handler = RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite());
|
||||||
|
|
||||||
|
int size = RefinedStorageUtils.hasUpgrade(upgrades, ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||||
|
|
||||||
if (handler != null && ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) {
|
if (handler != null && ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) {
|
||||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||||
ItemStack slot = filters.getStackInSlot(i);
|
ItemStack slot = filters.getStackInSlot(i);
|
||||||
|
|
||||||
if (slot != null) {
|
if (slot != null) {
|
||||||
int size = RefinedStorageUtils.hasUpgrade(upgrades, ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
|
||||||
|
|
||||||
ItemStack took = network.take(slot, size, compare);
|
ItemStack took = network.take(slot, size, compare);
|
||||||
|
|
||||||
if (took != null) {
|
if (took != null) {
|
||||||
|
@@ -115,6 +115,11 @@ public class TileStorage extends TileSlave implements IStorageProvider, IStorage
|
|||||||
RefinedStorageUtils.writeItems(filters, 0, tag);
|
RefinedStorageUtils.writeItems(filters, 0, tag);
|
||||||
|
|
||||||
tag.setInteger(NBT_PRIORITY, priority);
|
tag.setInteger(NBT_PRIORITY, priority);
|
||||||
|
|
||||||
|
if (storage != null) {
|
||||||
|
storage.writeToNBT();
|
||||||
|
}
|
||||||
|
|
||||||
tag.setTag(NBT_STORAGE, storageTag);
|
tag.setTag(NBT_STORAGE, storageTag);
|
||||||
tag.setInteger(NBT_COMPARE, compare);
|
tag.setInteger(NBT_COMPARE, compare);
|
||||||
tag.setInteger(NBT_MODE, mode);
|
tag.setInteger(NBT_MODE, mode);
|
||||||
@@ -217,6 +222,10 @@ public class TileStorage extends TileSlave implements IStorageProvider, IStorage
|
|||||||
this.storageTag = storageTag;
|
this.storageTag = storageTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NBTStorage getStorage() {
|
||||||
|
return storage;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getPriority() {
|
public int getPriority() {
|
||||||
return priority;
|
return priority;
|
||||||
|
Reference in New Issue
Block a user