Controller doesn't need its own special package
This commit is contained in:
@@ -7,8 +7,8 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
import refinedstorage.api.network.INetworkNode;
|
||||
import refinedstorage.api.network.INetworkNodeGraph;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.TileNetworkTransmitter;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.api.network.NetworkUtils;
|
||||
import refinedstorage.item.ItemBlockController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -4,8 +4,7 @@ import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import refinedstorage.container.ContainerController;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.controller.ClientNode;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -61,13 +60,13 @@ public class GuiController extends GuiBase {
|
||||
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
|
||||
List<ClientNode> nodes = controller.getClientNodes();
|
||||
List<TileController.ClientNode> nodes = controller.getClientNodes();
|
||||
|
||||
ClientNode nodeHovering = null;
|
||||
TileController.ClientNode nodeHovering = null;
|
||||
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
if (slot < nodes.size()) {
|
||||
ClientNode node = nodes.get(slot);
|
||||
TileController.ClientNode node = nodes.get(slot);
|
||||
|
||||
drawItem(x, y + 5, node.stack);
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.container.*;
|
||||
import refinedstorage.gui.grid.GuiGrid;
|
||||
import refinedstorage.tile.*;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package refinedstorage.integration.ic2;
|
||||
|
||||
import ic2.api.energy.prefab.BasicSink;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
public class IC2EnergyController implements IIC2EnergyController {
|
||||
private BasicSink sink;
|
||||
|
||||
@@ -8,7 +8,7 @@ import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.block.EnumControllerType;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.TileController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import net.minecraftforge.fml.common.Optional;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.integration.ic2.IC2Integration;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -27,7 +27,6 @@ import refinedstorage.gui.GuiHandler;
|
||||
import refinedstorage.item.*;
|
||||
import refinedstorage.network.*;
|
||||
import refinedstorage.tile.*;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package refinedstorage.tile.controller;
|
||||
package refinedstorage.tile;
|
||||
|
||||
import cofh.api.energy.EnergyStorage;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
@@ -47,9 +47,6 @@ import refinedstorage.integration.ic2.IIC2EnergyController;
|
||||
import refinedstorage.item.ItemPattern;
|
||||
import refinedstorage.network.MessageGridDelta;
|
||||
import refinedstorage.network.MessageGridUpdate;
|
||||
import refinedstorage.tile.ISynchronizedContainer;
|
||||
import refinedstorage.tile.TileBase;
|
||||
import refinedstorage.tile.TileCrafter;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.externalstorage.ExternalStorage;
|
||||
@@ -57,8 +54,8 @@ import refinedstorage.tile.externalstorage.ExternalStorage;
|
||||
import java.util.*;
|
||||
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "net.darkhax.tesla.api.ITeslaConsumer", modid = "Tesla"),
|
||||
@Optional.Interface(iface = "net.darkhax.tesla.api.ITeslaHolder", modid = "Tesla")
|
||||
@Optional.Interface(iface = "net.darkhax.tesla.api.ITeslaConsumer", modid = "tesla"),
|
||||
@Optional.Interface(iface = "net.darkhax.tesla.api.ITeslaHolder", modid = "tesla")
|
||||
})
|
||||
public class TileController extends TileBase implements INetworkMaster, IEnergyReceiver, ITeslaHolder, ITeslaConsumer, ISynchronizedContainer, IRedstoneModeConfig {
|
||||
public static final String NBT_ENERGY = "Energy";
|
||||
@@ -66,12 +63,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
|
||||
private static final String NBT_CRAFTING_TASKS = "CraftingTasks";
|
||||
|
||||
private GridHandler gridHandler = new GridHandler(this);
|
||||
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
||||
|
||||
private IGroupedStorage storage = new GroupedStorage(this);
|
||||
|
||||
private Comparator<IStorage> sizeComparator = new Comparator<IStorage>() {
|
||||
private static final Comparator<IStorage> SIZE_COMPARATOR = new Comparator<IStorage>() {
|
||||
@Override
|
||||
public int compare(IStorage left, IStorage right) {
|
||||
if (left.getStored() == right.getStored()) {
|
||||
@@ -82,7 +74,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
};
|
||||
|
||||
private Comparator<IStorage> priorityComparator = new Comparator<IStorage>() {
|
||||
private static final Comparator<IStorage> PRIORITY_COMPARATOR = new Comparator<IStorage>() {
|
||||
@Override
|
||||
public int compare(IStorage left, IStorage right) {
|
||||
if (left.getPriority() == right.getPriority()) {
|
||||
@@ -93,7 +85,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
}
|
||||
};
|
||||
|
||||
private GridHandler gridHandler = new GridHandler(this);
|
||||
private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
||||
|
||||
private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this);
|
||||
private IGroupedStorage storage = new GroupedStorage(this);
|
||||
|
||||
private List<ICraftingPattern> patterns = new ArrayList<ICraftingPattern>();
|
||||
|
||||
@@ -151,8 +147,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
energyEU.update();
|
||||
|
||||
if (canRun()) {
|
||||
Collections.sort(storage.getStorages(), sizeComparator);
|
||||
Collections.sort(storage.getStorages(), priorityComparator);
|
||||
Collections.sort(storage.getStorages(), SIZE_COMPARATOR);
|
||||
Collections.sort(storage.getStorages(), PRIORITY_COMPARATOR);
|
||||
|
||||
for (ICraftingTask taskToCancel : craftingTasksToCancel) {
|
||||
taskToCancel.onCancelled(this);
|
||||
@@ -720,4 +716,30 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
|
||||
return (RefinedStorage.hasTesla() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) || super.hasCapability(capability, facing);
|
||||
}
|
||||
|
||||
public class ClientNode {
|
||||
public ItemStack stack;
|
||||
public int amount;
|
||||
public int energyUsage;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(other instanceof ClientNode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return energyUsage == ((ClientNode) other).energyUsage && CompareUtils.compareStack(stack, ((ClientNode) other).stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = stack.hashCode();
|
||||
result = 31 * result + energyUsage;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
package refinedstorage.tile.controller;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
|
||||
public final class ClientNode {
|
||||
public ItemStack stack;
|
||||
public int amount;
|
||||
public int energyUsage;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(other instanceof ClientNode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return energyUsage == ((ClientNode) other).energyUsage && CompareUtils.compareStack(stack, ((ClientNode) other).stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = stack.hashCode();
|
||||
result = 31 * result + energyUsage;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
package refinedstorage.tile.externalstorage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import powercrystals.minefactoryreloaded.api.IDeepStorageUnit;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class DeepStorageUnitStorage extends ExternalStorage {
|
||||
private TileExternalStorage externalStorage;
|
||||
private IDeepStorageUnit unit;
|
||||
|
||||
public DeepStorageUnitStorage(TileExternalStorage externalStorage, IDeepStorageUnit unit) {
|
||||
this.externalStorage = externalStorage;
|
||||
this.unit = unit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return unit.getMaxStoredCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getItems() {
|
||||
if (unit.getStoredItemType() != null && unit.getStoredItemType().stackSize > 0) {
|
||||
return Collections.singletonList(unit.getStoredItemType().copy());
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(@Nonnull ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack)) {
|
||||
if (unit.getStoredItemType() != null) {
|
||||
if (CompareUtils.compareStackNoQuantity(unit.getStoredItemType(), stack)) {
|
||||
if (getStored() + size > unit.getMaxStoredCount()) {
|
||||
int remainingSpace = getCapacity() - getStored();
|
||||
|
||||
if (remainingSpace <= 0) {
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
if (!simulate) {
|
||||
unit.setStoredItemCount(unit.getStoredItemType().stackSize + remainingSpace);
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
|
||||
} else {
|
||||
if (!simulate) {
|
||||
unit.setStoredItemCount(unit.getStoredItemType().stackSize + size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (getStored() + size > unit.getMaxStoredCount()) {
|
||||
int remainingSpace = getCapacity() - getStored();
|
||||
|
||||
if (remainingSpace <= 0) {
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
if (!simulate) {
|
||||
unit.setStoredItemType(stack.copy(), remainingSpace);
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
|
||||
} else {
|
||||
if (!simulate) {
|
||||
unit.setStoredItemType(stack.copy(), size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(@Nonnull ItemStack stack, int size, int flags) {
|
||||
if (CompareUtils.compareStack(stack, unit.getStoredItemType(), flags)) {
|
||||
if (size > unit.getStoredItemType().stackSize) {
|
||||
size = unit.getStoredItemType().stackSize;
|
||||
}
|
||||
|
||||
ItemStack stored = unit.getStoredItemType();
|
||||
|
||||
unit.setStoredItemCount(stored.stackSize - size);
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stored, size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
return unit.getStoredItemType() != null ? unit.getStoredItemType().stackSize : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
package refinedstorage.tile.externalstorage;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer;
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.IVoidable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class DrawerStorage extends ExternalStorage {
|
||||
private TileExternalStorage externalStorage;
|
||||
private IDrawer drawer;
|
||||
|
||||
public DrawerStorage(TileExternalStorage externalStorage, IDrawer drawer) {
|
||||
this.externalStorage = externalStorage;
|
||||
this.drawer = drawer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return drawer.getMaxCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getItems() {
|
||||
if (!drawer.isEmpty() && drawer.getStoredItemCount() > 0) {
|
||||
return Collections.singletonList(drawer.getStoredItemCopy());
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public boolean isVoidable() {
|
||||
return drawer instanceof IVoidable && ((IVoidable) drawer).isVoid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) {
|
||||
if (!drawer.isEmpty()) {
|
||||
if (getStored() + size > drawer.getMaxCapacity(stack)) {
|
||||
int remainingSpace = getCapacity() - getStored();
|
||||
|
||||
if (remainingSpace <= 0) {
|
||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
if (!simulate) {
|
||||
drawer.setStoredItemCount(drawer.getStoredItemCount() + remainingSpace);
|
||||
}
|
||||
|
||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
|
||||
} else {
|
||||
if (!simulate) {
|
||||
drawer.setStoredItemCount(drawer.getStoredItemCount() + size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
if (getStored() + size > drawer.getMaxCapacity(stack)) {
|
||||
int remainingSpace = getCapacity() - getStored();
|
||||
|
||||
if (remainingSpace <= 0) {
|
||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
if (!simulate) {
|
||||
drawer.setStoredItem(stack, remainingSpace);
|
||||
}
|
||||
|
||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
|
||||
} else {
|
||||
if (!simulate) {
|
||||
drawer.setStoredItem(stack, size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(ItemStack stack, int size, int flags) {
|
||||
if (CompareUtils.compareStack(stack, drawer.getStoredItemPrototype(), flags) && drawer.canItemBeExtracted(stack)) {
|
||||
if (size > drawer.getStoredItemCount()) {
|
||||
size = drawer.getStoredItemCount();
|
||||
}
|
||||
|
||||
ItemStack stored = drawer.getStoredItemPrototype();
|
||||
|
||||
drawer.setStoredItemCount(drawer.getStoredItemCount() - size);
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stored, size);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
return drawer.getStoredItemCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
package refinedstorage.tile.externalstorage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.api.storage.IStorage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class ExternalStorage implements IStorage {
|
||||
private List<ItemStack> cache;
|
||||
|
||||
public abstract int getCapacity();
|
||||
|
||||
public boolean updateCache() {
|
||||
List<ItemStack> items = getItems();
|
||||
|
||||
if (cache == null) {
|
||||
cache = items;
|
||||
} else if (items.size() != cache.size()) {
|
||||
cache = items;
|
||||
|
||||
return true;
|
||||
} else {
|
||||
for (int i = 0; i < items.size(); ++i) {
|
||||
if (!CompareUtils.compareStack(items.get(i), cache.get(i))) {
|
||||
cache = items;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void updateCacheForcefully() {
|
||||
cache = getItems();
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
package refinedstorage.tile.externalstorage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import refinedstorage.api.storage.CompareUtils;
|
||||
import refinedstorage.tile.config.ModeFilter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ItemHandlerStorage extends ExternalStorage {
|
||||
private TileExternalStorage externalStorage;
|
||||
private IItemHandler handler;
|
||||
|
||||
public ItemHandlerStorage(TileExternalStorage externalStorage, IItemHandler handler) {
|
||||
this.externalStorage = externalStorage;
|
||||
this.handler = handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return handler.getSlots() * 64;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getItems() {
|
||||
List<ItemStack> items = new ArrayList<ItemStack>();
|
||||
|
||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
||||
if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) {
|
||||
items.add(handler.getStackInSlot(i).copy());
|
||||
}
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
|
||||
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack)) {
|
||||
return ItemHandlerHelper.insertItem(handler, ItemHandlerHelper.copyStackWithSize(stack, size), simulate);
|
||||
}
|
||||
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack extractItem(ItemStack stack, int size, int flags) {
|
||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
||||
ItemStack slot = handler.getStackInSlot(i);
|
||||
|
||||
if (slot != null && CompareUtils.compareStack(slot, stack, flags)) {
|
||||
size = Math.min(size, slot.stackSize);
|
||||
|
||||
ItemStack took = ItemHandlerHelper.copyStackWithSize(slot, size);
|
||||
|
||||
handler.extractItem(i, size, false);
|
||||
|
||||
return took;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
int size = 0;
|
||||
|
||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
||||
if (handler.getStackInSlot(i) != null) {
|
||||
size += handler.getStackInSlot(i).stackSize;
|
||||
}
|
||||
}
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return externalStorage.getPriority();
|
||||
}
|
||||
}
|
||||
@@ -1,276 +0,0 @@
|
||||
package refinedstorage.tile.externalstorage;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawer;
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.IDrawerGroup;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import powercrystals.minefactoryreloaded.api.IDeepStorageUnit;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.api.network.INetworkMaster;
|
||||
import refinedstorage.api.storage.IStorage;
|
||||
import refinedstorage.api.storage.IStorageProvider;
|
||||
import refinedstorage.container.ContainerStorage;
|
||||
import refinedstorage.inventory.ItemHandlerBasic;
|
||||
import refinedstorage.network.MessagePriorityUpdate;
|
||||
import refinedstorage.tile.IStorageGui;
|
||||
import refinedstorage.tile.TileNode;
|
||||
import refinedstorage.tile.config.ICompareConfig;
|
||||
import refinedstorage.tile.config.IModeConfig;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.ModeConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TileExternalStorage extends TileNode implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig {
|
||||
private static final String NBT_PRIORITY = "Priority";
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
private static final String NBT_MODE = "Mode";
|
||||
|
||||
private ItemHandlerBasic filters = new ItemHandlerBasic(9, this);
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = 0;
|
||||
private int mode = ModeConstants.WHITELIST;
|
||||
|
||||
private int stored;
|
||||
private int capacity;
|
||||
|
||||
private List<ExternalStorage> storages = new ArrayList<ExternalStorage>();
|
||||
private int lastDrawerCount;
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RefinedStorage.INSTANCE.externalStorageUsage + (storages.size() * RefinedStorage.INSTANCE.externalStoragePerStorageUsage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNode() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectionChange(INetworkMaster network, boolean state) {
|
||||
super.onConnectionChange(network, state);
|
||||
|
||||
updateStorage(network);
|
||||
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
if (!worldObj.isRemote && network != null) {
|
||||
if (ticks % (20 * 4) == 0) {
|
||||
boolean shouldRebuild = false;
|
||||
|
||||
for (ExternalStorage storage : storages) {
|
||||
if (storage.updateCache()) {
|
||||
shouldRebuild = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldRebuild) {
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
}
|
||||
|
||||
if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) {
|
||||
lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount();
|
||||
|
||||
updateStorage(network);
|
||||
}
|
||||
}
|
||||
|
||||
super.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeContainerData(ByteBuf buf) {
|
||||
super.writeContainerData(buf);
|
||||
|
||||
buf.writeInt(priority);
|
||||
buf.writeInt(getStored());
|
||||
buf.writeInt(getCapacity());
|
||||
buf.writeInt(compare);
|
||||
buf.writeInt(mode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readContainerData(ByteBuf buf) {
|
||||
super.readContainerData(buf);
|
||||
|
||||
priority = buf.readInt();
|
||||
stored = buf.readInt();
|
||||
capacity = buf.readInt();
|
||||
compare = buf.readInt();
|
||||
mode = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends Container> getContainer() {
|
||||
return ContainerStorage.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
||||
readItems(filters, 0, tag);
|
||||
|
||||
if (tag.hasKey(NBT_PRIORITY)) {
|
||||
priority = tag.getInteger(NBT_PRIORITY);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_COMPARE)) {
|
||||
compare = tag.getInteger(NBT_COMPARE);
|
||||
}
|
||||
|
||||
if (tag.hasKey(NBT_MODE)) {
|
||||
mode = tag.getInteger(NBT_MODE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound write(NBTTagCompound tag) {
|
||||
super.write(tag);
|
||||
|
||||
writeItems(filters, 0, tag);
|
||||
|
||||
tag.setInteger(NBT_PRIORITY, priority);
|
||||
tag.setInteger(NBT_COMPARE, compare);
|
||||
tag.setInteger(NBT_MODE, mode);
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCompare(int compare) {
|
||||
this.compare = compare;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMode(int mode) {
|
||||
this.mode = mode;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return priority;
|
||||
}
|
||||
|
||||
public void setPriority(int priority) {
|
||||
this.priority = priority;
|
||||
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public void updateStorage(INetworkMaster network) {
|
||||
storages.clear();
|
||||
|
||||
TileEntity facing = getFacingTile();
|
||||
|
||||
if (facing instanceof IDrawerGroup) {
|
||||
IDrawerGroup group = (IDrawerGroup) facing;
|
||||
|
||||
for (int i = 0; i < group.getDrawerCount(); ++i) {
|
||||
if (group.isDrawerEnabled(i)) {
|
||||
storages.add(new DrawerStorage(this, group.getDrawer(i)));
|
||||
}
|
||||
}
|
||||
} else if (facing instanceof IDrawer) {
|
||||
storages.add(new DrawerStorage(this, (IDrawer) facing));
|
||||
} else if (facing instanceof IDeepStorageUnit) {
|
||||
storages.add(new DeepStorageUnitStorage(this, (IDeepStorageUnit) facing));
|
||||
} else {
|
||||
IItemHandler handler = getItemHandler(facing, getDirection().getOpposite());
|
||||
|
||||
if (handler != null) {
|
||||
storages.add(new ItemHandlerStorage(this, handler));
|
||||
}
|
||||
}
|
||||
|
||||
network.getStorage().rebuild();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addStorages(List<IStorage> storages) {
|
||||
storages.addAll(this.storages);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTitle() {
|
||||
return "gui.refinedstorage:external_storage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRedstoneModeConfig getRedstoneModeConfig() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ICompareConfig getCompareConfig() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IModeConfig getModeConfig() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
if (!worldObj.isRemote) {
|
||||
int stored = 0;
|
||||
|
||||
for (ExternalStorage storage : storages) {
|
||||
stored += storage.getStored();
|
||||
}
|
||||
|
||||
return stored;
|
||||
}
|
||||
|
||||
return stored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
if (!worldObj.isRemote) {
|
||||
int capacity = 0;
|
||||
|
||||
for (ExternalStorage storage : storages) {
|
||||
capacity += storage.getCapacity();
|
||||
}
|
||||
|
||||
return capacity;
|
||||
}
|
||||
|
||||
return capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPriorityChanged(int priority) {
|
||||
RefinedStorage.INSTANCE.network.sendToServer(new MessagePriorityUpdate(pos, priority));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilters() {
|
||||
return filters;
|
||||
}
|
||||
}
|
||||
@@ -15,8 +15,8 @@ import refinedstorage.inventory.ItemHandlerGridFilterInGrid;
|
||||
import refinedstorage.item.ItemWirelessGrid;
|
||||
import refinedstorage.network.MessageWirelessGridSettingsUpdate;
|
||||
import refinedstorage.tile.TileBase;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
Reference in New Issue
Block a user