This commit is contained in:
Raoul Van den Berge
2016-07-02 20:51:57 +02:00
parent 0abd9cf779
commit 949af208cb
3 changed files with 34 additions and 53 deletions

View File

@@ -16,11 +16,6 @@ public interface IGroupedStorage {
*/ */
void rebuild(); void rebuild();
/**
* @return If this storage is currently rebuilding
*/
boolean isRebuilding();
/** /**
* Adds an item to the network. Will merge it with another item if it already exists. * Adds an item to the network. Will merge it with another item if it already exists.
* *

View File

@@ -20,7 +20,6 @@ public class GroupedStorage implements IGroupedStorage {
private INetworkMaster network; private INetworkMaster network;
private List<IStorage> storages = new ArrayList<IStorage>(); private List<IStorage> storages = new ArrayList<IStorage>();
private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create(); private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create();
private boolean rebuilding;
public GroupedStorage(INetworkMaster network) { public GroupedStorage(INetworkMaster network) {
this.network = network; this.network = network;
@@ -28,8 +27,6 @@ public class GroupedStorage implements IGroupedStorage {
@Override @Override
public void rebuild() { public void rebuild() {
this.rebuilding = true;
storages.clear(); storages.clear();
for (INetworkSlave slave : network.getSlaves()) { for (INetworkSlave slave : network.getSlaves()) {
@@ -54,16 +51,9 @@ public class GroupedStorage implements IGroupedStorage {
} }
} }
this.rebuilding = false;
network.sendStorageToClient(); network.sendStorageToClient();
} }
@Override
public boolean isRebuilding() {
return rebuilding;
}
@Override @Override
public void add(ItemStack stack) { public void add(ItemStack stack) {
for (ItemStack otherStack : stacks.get(stack.getItem())) { for (ItemStack otherStack : stacks.get(stack.getItem())) {

View File

@@ -56,9 +56,33 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private GridHandler gridHandler = new GridHandler(this); private GridHandler gridHandler = new GridHandler(this);
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
private List<IStorage> storages = new ArrayList<IStorage>();
private IGroupedStorage storage = new GroupedStorage(this); private IGroupedStorage storage = new GroupedStorage(this);
private Comparator<IStorage> sizeComparator = new Comparator<IStorage>() {
@Override
public int compare(IStorage left, IStorage right) {
int leftStored = left.getStored();
int rightStored = right.getStored();
if (leftStored == rightStored) {
return 0;
}
return (leftStored > rightStored) ? -1 : 1;
}
};
private Comparator<IStorage> priorityComparator = new Comparator<IStorage>() {
@Override
public int compare(IStorage left, IStorage right) {
if (left.getPriority() == right.getPriority()) {
return 0;
}
return (left.getPriority() > right.getPriority()) ? -1 : 1;
}
};
private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>(); private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>();
private List<INetworkSlave> slavesToAdd = new ArrayList<INetworkSlave>(); private List<INetworkSlave> slavesToAdd = new ArrayList<INetworkSlave>();
private List<INetworkSlave> slavesToRemove = new ArrayList<INetworkSlave>(); private List<INetworkSlave> slavesToRemove = new ArrayList<INetworkSlave>();
@@ -123,32 +147,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slavesToRemove.clear(); slavesToRemove.clear();
if (canRun()) { if (canRun()) {
if (ticks % 20 == 0) { Collections.sort(storage.getStorages(), sizeComparator);
Collections.sort(storages, new Comparator<IStorage>() { Collections.sort(storage.getStorages(), priorityComparator);
@Override
public int compare(IStorage left, IStorage right) {
int leftStored = left.getStored();
int rightStored = right.getStored();
if (leftStored == rightStored) {
return 0;
}
return (leftStored > rightStored) ? -1 : 1;
}
});
Collections.sort(storages, new Comparator<IStorage>() {
@Override
public int compare(IStorage left, IStorage right) {
if (left.getPriority() == right.getPriority()) {
return 0;
}
return (left.getPriority() > right.getPriority()) ? -1 : 1;
}
});
}
for (ICraftingTask taskToCancel : craftingTasksToCancel) { for (ICraftingTask taskToCancel : craftingTasksToCancel) {
taskToCancel.onCancelled(this); taskToCancel.onCancelled(this);
@@ -380,20 +380,16 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public void sendStorageToClient() { public void sendStorageToClient() {
if (!storage.isRebuilding()) { for (EntityPlayer player : worldObj.playerEntities) {
for (EntityPlayer player : worldObj.playerEntities) { if (isWatchingGrid(player)) {
if (isWatchingGrid(player)) { sendStorageToClient((EntityPlayerMP) player);
sendStorageToClient((EntityPlayerMP) player);
}
} }
} }
} }
@Override @Override
public void sendStorageToClient(EntityPlayerMP player) { public void sendStorageToClient(EntityPlayerMP player) {
if (!storage.isRebuilding()) { RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
}
} }
private boolean isWatchingGrid(EntityPlayer player) { private boolean isWatchingGrid(EntityPlayer player) {
@@ -402,7 +398,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public ItemStack push(ItemStack stack, int size, boolean simulate) { public ItemStack push(ItemStack stack, int size, boolean simulate) {
if (stack == null || stack.getItem() == null || storages.isEmpty()) { if (stack == null || stack.getItem() == null || storage.getStorages().isEmpty()) {
return ItemHandlerHelper.copyStackWithSize(stack, size); return ItemHandlerHelper.copyStackWithSize(stack, size);
} }
@@ -410,7 +406,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
ItemStack remainder = stack; ItemStack remainder = stack;
for (IStorage storage : storages) { for (IStorage storage : this.storage.getStorages()) {
remainder = storage.push(remainder, size, simulate); remainder = storage.push(remainder, size, simulate);
if (remainder == null) { if (remainder == null) {
@@ -446,7 +442,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
ItemStack newStack = null; ItemStack newStack = null;
for (IStorage storage : storages) { for (IStorage storage : this.storage.getStorages()) {
ItemStack took = storage.take(stack, requested - received, flags); ItemStack took = storage.take(stack, requested - received, flags);
if (took != null) { if (took != null) {