Add docs for IGroupedStorage

This commit is contained in:
Raoul Van den Berge
2016-06-29 16:02:24 +02:00
parent 9789796781
commit e4b4abd45d
12 changed files with 105 additions and 70 deletions

View File

@@ -7,7 +7,7 @@ import net.minecraft.util.math.BlockPos;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.storage.CompareFlags;
import refinedstorage.api.storage.IItemList;
import refinedstorage.api.storage.IGroupedStorage;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -60,9 +60,9 @@ public interface INetworkMaster {
IWirelessGridHandler getWirelessGridHandler();
/**
* @return A {@link IItemList} containing all network items.
* @return The {@link IGroupedStorage} of this network
*/
IItemList getItems();
IGroupedStorage getStorage();
/**
* @return The crafting tasks in this network, do NOT modify this list
@@ -123,12 +123,12 @@ public interface INetworkMaster {
/**
* Sends to all clients in a grid a packet with all the items in this network.
*/
void updateItemsWithClient();
void updateStorageWithClient();
/**
* Sends a player a packet with all the items in this network.
*/
void updateItemsWithClient(EntityPlayerMP player);
void updateStorageWithClient(EntityPlayerMP player);
/**
* Pushes an item to this network.

View File

@@ -0,0 +1,53 @@
package refinedstorage.api.storage;
import net.minecraft.item.ItemStack;
import refinedstorage.api.network.INetworkMaster;
import java.util.Collection;
import java.util.List;
/**
* This holds all items from all the connected storages from a {@link INetworkMaster}.
*/
public interface IGroupedStorage {
/**
* Rebuilds the storages and items for a network. Typically called when a {@link IStorageProvider} is
* added or removed from the network.
*
* @param master The network
*/
void rebuild(INetworkMaster master);
/**
* @return A list of {@link IStorage} connected to this network
*/
List<IStorage> getStorages();
/**
* Adds an item to the network. Will merge it with another item if it already exists.
*
* @param stack The stack to add, do NOT modify
*/
void add(ItemStack stack);
/**
* Removes a item from the network.
*
* @param stack The item to remove, do NOT modify
*/
void remove(ItemStack stack);
/**
* Gets an item from the network, does not decrement its count.
*
* @param stack The stack to find
* @param flags The flags to compare on, see {@link CompareFlags}
* @return The stack, do NOT modify
*/
ItemStack get(ItemStack stack, int flags);
/**
* @return All stacks in this storage network
*/
Collection<ItemStack> getStacks();
}

View File

@@ -1,20 +0,0 @@
package refinedstorage.api.storage;
import net.minecraft.item.ItemStack;
import refinedstorage.api.network.INetworkMaster;
import java.util.List;
public interface IItemList {
void rebuild(INetworkMaster master);
List<IStorage> getStorages();
void add(ItemStack stack);
void remove(ItemStack stack);
ItemStack get(ItemStack stack, int flags);
List<ItemStack> getStacks();
}

View File

@@ -7,7 +7,7 @@ import java.util.List;
*/
public interface IStorageProvider {
/**
* Adds the storages.
* Adds the storages that this storage provides.
*
* @param storages The previously added storages
*/

View File

@@ -57,7 +57,7 @@ public class WirelessGridHandler implements IWirelessGridHandler {
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, player.worldObj, RefinedStorageUtils.getIdFromHand(hand), 0, 0);
network.updateItemsWithClient((EntityPlayerMP) player);
network.updateStorageWithClient((EntityPlayerMP) player);
drainEnergy(player, ItemWirelessGrid.USAGE_OPEN);

View File

@@ -1,19 +1,23 @@
package refinedstorage.apiimpl.storage;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkSlave;
import refinedstorage.api.storage.IItemList;
import refinedstorage.api.storage.IGroupedStorage;
import refinedstorage.api.storage.IStorage;
import refinedstorage.api.storage.IStorageProvider;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ItemList implements IItemList {
public class GroupedStorage implements IGroupedStorage {
private List<IStorage> storages = new ArrayList<IStorage>();
private List<ItemStack> stacks = new ArrayList<ItemStack>();
private Multimap<Item, ItemStack> stacks = ArrayListMultimap.create();
@Override
public void rebuild(INetworkMaster master) {
@@ -41,7 +45,7 @@ public class ItemList implements IItemList {
@Override
public void add(ItemStack stack) {
for (ItemStack otherStack : stacks) {
for (ItemStack otherStack : stacks.get(stack.getItem())) {
if (RefinedStorageUtils.compareStackNoQuantity(otherStack, stack)) {
otherStack.stackSize += stack.stackSize;
@@ -49,17 +53,17 @@ public class ItemList implements IItemList {
}
}
stacks.add(stack.copy());
stacks.put(stack.getItem(), stack.copy());
}
@Override
public void remove(ItemStack stack) {
for (ItemStack otherStack : stacks) {
for (ItemStack otherStack : stacks.get(stack.getItem())) {
if (RefinedStorageUtils.compareStackNoQuantity(otherStack, stack)) {
otherStack.stackSize -= stack.stackSize;
if (otherStack.stackSize == 0) {
stacks.remove(otherStack);
stacks.remove(otherStack.getItem(), otherStack);
}
return;
@@ -69,7 +73,7 @@ public class ItemList implements IItemList {
@Override
public ItemStack get(ItemStack stack, int flags) {
for (ItemStack otherStack : stacks) {
for (ItemStack otherStack : stacks.get(stack.getItem())) {
if (RefinedStorageUtils.compareStack(otherStack, stack, flags)) {
return otherStack;
}
@@ -79,7 +83,7 @@ public class ItemList implements IItemList {
}
@Override
public List<ItemStack> getStacks() {
return stacks;
public Collection<ItemStack> getStacks() {
return stacks.values();
}
}

View File

@@ -41,9 +41,9 @@ public class MessageGridItems implements IMessage, IMessageHandler<MessageGridIt
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(network.getItems().getStacks().size());
buf.writeInt(network.getStorage().getStacks().size());
for (ItemStack item : network.getItems().getStacks()) {
for (ItemStack item : network.getStorage().getStacks()) {
buf.writeInt(item.stackSize);
ByteBufUtils.writeItemStack(buf, item);
}

View File

@@ -53,7 +53,7 @@ public class TileDetector extends TileSlave implements ICompareConfig {
boolean wasPowered = powered;
if (slot != null) {
ItemStack stack = network.getItems().get(slot, compare);
ItemStack stack = network.getStorage().get(slot, compare);
if (stack != null) {
switch (mode) {

View File

@@ -65,7 +65,7 @@ public class TileDiskDrive extends TileSlave implements IStorageProvider, IStora
}
if (isConnected()) {
network.getItems().rebuild(network);
network.getStorage().rebuild(network);
}
}
}

View File

@@ -171,7 +171,7 @@ public abstract class TileSlave extends TileBase implements INetworkSlave, ISync
this.redstoneMode = mode;
if (this instanceof IStorageProvider && isConnected()) {
network.getItems().rebuild(network);
network.getStorage().rebuild(network);
}
}

View File

@@ -25,7 +25,7 @@ import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.INetworkSlave;
import refinedstorage.api.network.IWirelessGridHandler;
import refinedstorage.api.storage.CompareFlags;
import refinedstorage.api.storage.IItemList;
import refinedstorage.api.storage.IGroupedStorage;
import refinedstorage.api.storage.IStorage;
import refinedstorage.api.storage.IStorageProvider;
import refinedstorage.apiimpl.autocrafting.BasicCraftingTask;
@@ -33,7 +33,7 @@ import refinedstorage.apiimpl.autocrafting.CraftingPattern;
import refinedstorage.apiimpl.autocrafting.ProcessingCraftingTask;
import refinedstorage.apiimpl.network.GridHandler;
import refinedstorage.apiimpl.network.WirelessGridHandler;
import refinedstorage.apiimpl.storage.ItemList;
import refinedstorage.apiimpl.storage.GroupedStorage;
import refinedstorage.block.BlockController;
import refinedstorage.block.EnumControllerType;
import refinedstorage.container.ContainerController;
@@ -58,8 +58,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private GridHandler gridHandler = new GridHandler(this);
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
private IItemList items = new ItemList();
private boolean rebuildItemList;
private IGroupedStorage storage = new GroupedStorage();
private boolean rebuildStorage;
private List<INetworkSlave> slaves = new ArrayList<INetworkSlave>();
private List<INetworkSlave> slavesToAdd = new ArrayList<INetworkSlave>();
@@ -131,13 +131,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slaves.removeAll(slavesToRemove);
slavesToRemove.clear();
if (rebuildItemList) {
System.out.println("Rebuilding item list");
items.rebuild(this);
if (rebuildStorage) {
storage.rebuild(this);
rebuildItemList = false;
rebuildStorage = false;
updateItemsWithClient();
updateStorageWithClient();
}
if (canRun()) {
@@ -229,7 +228,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slavesToAdd.add(slave);
if (slave instanceof IStorageProvider) {
rebuildItemList = true;
rebuildStorage = true;
}
}
@@ -238,7 +237,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
slavesToRemove.add(slave);
if (slave instanceof IStorageProvider) {
rebuildItemList = true;
rebuildStorage = true;
}
}
@@ -265,9 +264,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
disconnectSlaves();
}
@Override
public IItemList getItems() {
return items;
public IGroupedStorage getStorage() {
return storage;
}
@Override
@@ -342,7 +340,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
int score = 0;
for (ItemStack input : patterns.get(i).getInputs()) {
ItemStack stored = items.get(input, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
ItemStack stored = storage.get(input, CompareFlags.COMPARE_DAMAGE | CompareFlags.COMPARE_NBT);
score += stored != null ? stored.stackSize : 0;
}
@@ -388,7 +386,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
wirelessGridHandler.setRange(range);
Collections.sort(items.getStorages(), new Comparator<IStorage>() {
Collections.sort(storage.getStorages(), new Comparator<IStorage>() {
@Override
public int compare(IStorage left, IStorage right) {
int leftStored = left.getStored();
@@ -402,7 +400,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
}
});
Collections.sort(items.getStorages(), new Comparator<IStorage>() {
Collections.sort(storage.getStorages(), new Comparator<IStorage>() {
@Override
public int compare(IStorage left, IStorage right) {
if (left.getPriority() == right.getPriority()) {
@@ -415,22 +413,22 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
}
@Override
public void updateItemsWithClient() {
public void updateStorageWithClient() {
for (EntityPlayer player : worldObj.playerEntities) {
if (player.openContainer.getClass() == ContainerGrid.class && pos.equals(((ContainerGrid) player.openContainer).getGrid().getNetworkPosition())) {
updateItemsWithClient((EntityPlayerMP) player);
updateStorageWithClient((EntityPlayerMP) player);
}
}
}
@Override
public void updateItemsWithClient(EntityPlayerMP player) {
public void updateStorageWithClient(EntityPlayerMP player) {
RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player);
}
@Override
public ItemStack push(ItemStack stack, int size, boolean simulate) {
if (stack == null || stack.getItem() == null || items.getStorages().isEmpty()) {
if (stack == null || stack.getItem() == null || storage.getStorages().isEmpty()) {
return ItemHandlerHelper.copyStackWithSize(stack, size);
}
@@ -438,7 +436,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
ItemStack remainder = stack;
for (IStorage storage : items.getStorages()) {
for (IStorage storage : this.storage.getStorages()) {
remainder = storage.push(remainder, size, simulate);
if (remainder == null) {
@@ -461,9 +459,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
}
}
items.add(ItemHandlerHelper.copyStackWithSize(stack, sizePushed));
storage.add(ItemHandlerHelper.copyStackWithSize(stack, sizePushed));
updateItemsWithClient();
updateStorageWithClient();
}
return remainder;
@@ -476,7 +474,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
ItemStack newStack = null;
for (IStorage storage : items.getStorages()) {
for (IStorage storage : this.storage.getStorages()) {
ItemStack took = storage.take(stack, requested - received, flags);
if (took != null) {
@@ -495,9 +493,9 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
}
if (newStack != null) {
items.remove(newStack);
storage.remove(newStack);
updateItemsWithClient();
updateStorageWithClient();
}
return newStack;

View File

@@ -112,7 +112,7 @@ public class TileGrid extends TileSlave implements IGrid {
public void onGridOpened(EntityPlayer player) {
if (isConnected()) {
network.updateItemsWithClient((EntityPlayerMP) player);
network.updateStorageWithClient((EntityPlayerMP) player);
}
}