Abstract stuff into stuff
This commit is contained in:
@@ -10,7 +10,7 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageGui;
|
import refinedstorage.RefinedStorageGui;
|
||||||
import refinedstorage.tile.TileExternalStorage;
|
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
|
|
||||||
public class BlockExternalStorage extends BlockMachine {
|
public class BlockExternalStorage extends BlockMachine {
|
||||||
public BlockExternalStorage() {
|
public BlockExternalStorage() {
|
||||||
|
@@ -6,8 +6,8 @@ import net.minecraft.tileentity.TileEntity;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||||
import refinedstorage.tile.TileDiskDrive;
|
import refinedstorage.tile.TileDiskDrive;
|
||||||
import refinedstorage.tile.TileExternalStorage;
|
|
||||||
import refinedstorage.tile.TileStorage;
|
import refinedstorage.tile.TileStorage;
|
||||||
|
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
|
|
||||||
public class MessagePriorityUpdate extends MessageHandlerPlayerToServer<MessagePriorityUpdate> implements IMessage {
|
public class MessagePriorityUpdate extends MessageHandlerPlayerToServer<MessagePriorityUpdate> implements IMessage {
|
||||||
private int x;
|
private int x;
|
||||||
|
@@ -32,6 +32,7 @@ import refinedstorage.solderer.SoldererRecipeStorage;
|
|||||||
import refinedstorage.solderer.SoldererRecipeUpgrade;
|
import refinedstorage.solderer.SoldererRecipeUpgrade;
|
||||||
import refinedstorage.tile.*;
|
import refinedstorage.tile.*;
|
||||||
import refinedstorage.tile.controller.TileController;
|
import refinedstorage.tile.controller.TileController;
|
||||||
|
import refinedstorage.tile.externalstorage.TileExternalStorage;
|
||||||
import refinedstorage.tile.grid.TileGrid;
|
import refinedstorage.tile.grid.TileGrid;
|
||||||
|
|
||||||
import static refinedstorage.RefinedStorage.ID;
|
import static refinedstorage.RefinedStorage.ID;
|
||||||
|
7
src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java
Executable file
7
src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
package refinedstorage.tile.externalstorage;
|
||||||
|
|
||||||
|
import refinedstorage.api.storage.IStorage;
|
||||||
|
|
||||||
|
public abstract class ExternalStorage implements IStorage {
|
||||||
|
public abstract int getCapacity();
|
||||||
|
}
|
79
src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java
Executable file
79
src/main/java/refinedstorage/tile/externalstorage/ItemHandlerStorage.java
Executable file
@@ -0,0 +1,79 @@
|
|||||||
|
package refinedstorage.tile.externalstorage;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
|
import refinedstorage.RefinedStorageUtils;
|
||||||
|
import refinedstorage.tile.config.ModeFilter;
|
||||||
|
|
||||||
|
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 void addItems(List<ItemStack> items) {
|
||||||
|
for (int i = 0; i < handler.getSlots(); ++i) {
|
||||||
|
if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) {
|
||||||
|
items.add(handler.getStackInSlot(i).copy());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack push(ItemStack stack, boolean simulate) {
|
||||||
|
if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack)) {
|
||||||
|
return ItemHandlerHelper.insertItem(handler, stack, simulate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack take(ItemStack stack, int size, int flags) {
|
||||||
|
for (int i = 0; i < handler.getSlots(); ++i) {
|
||||||
|
ItemStack slot = handler.getStackInSlot(i);
|
||||||
|
|
||||||
|
if (slot != null && RefinedStorageUtils.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,13 +1,11 @@
|
|||||||
package refinedstorage.tile;
|
package refinedstorage.tile.externalstorage;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.ItemHandlerHelper;
|
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
import refinedstorage.api.RefinedStorageCapabilities;
|
import refinedstorage.api.RefinedStorageCapabilities;
|
||||||
@@ -16,11 +14,16 @@ import refinedstorage.api.storage.IStorageProvider;
|
|||||||
import refinedstorage.container.ContainerStorage;
|
import refinedstorage.container.ContainerStorage;
|
||||||
import refinedstorage.inventory.BasicItemHandler;
|
import refinedstorage.inventory.BasicItemHandler;
|
||||||
import refinedstorage.network.MessagePriorityUpdate;
|
import refinedstorage.network.MessagePriorityUpdate;
|
||||||
import refinedstorage.tile.config.*;
|
import refinedstorage.tile.IStorageGui;
|
||||||
|
import refinedstorage.tile.TileMachine;
|
||||||
|
import refinedstorage.tile.config.ICompareConfig;
|
||||||
|
import refinedstorage.tile.config.IModeConfig;
|
||||||
|
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||||
|
import refinedstorage.tile.config.ModeConstants;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorage, IStorageGui, ICompareConfig, IModeConfig {
|
public class TileExternalStorage extends TileMachine implements IStorageProvider, IStorageGui, ICompareConfig, IModeConfig {
|
||||||
public static final String NBT_PRIORITY = "Priority";
|
public static final String NBT_PRIORITY = "Priority";
|
||||||
public static final String NBT_COMPARE = "Compare";
|
public static final String NBT_COMPARE = "Compare";
|
||||||
public static final String NBT_MODE = "Mode";
|
public static final String NBT_MODE = "Mode";
|
||||||
@@ -31,7 +34,10 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
|
|||||||
private int compare = 0;
|
private int compare = 0;
|
||||||
private int mode = ModeConstants.WHITELIST;
|
private int mode = ModeConstants.WHITELIST;
|
||||||
|
|
||||||
private int stored = 0;
|
private ExternalStorage storage;
|
||||||
|
|
||||||
|
private int stored;
|
||||||
|
private int capacity;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getEnergyUsage() {
|
public int getEnergyUsage() {
|
||||||
@@ -40,69 +46,22 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateMachine() {
|
public void updateMachine() {
|
||||||
}
|
IItemHandler handler = RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite());
|
||||||
|
|
||||||
@Override
|
if (handler == null) {
|
||||||
public void addItems(List<ItemStack> items) {
|
storage = null;
|
||||||
IItemHandler handler = getItemHandler();
|
} else if (storage == null) {
|
||||||
|
storage = new ItemHandlerStorage(this, handler);
|
||||||
if (handler != null) {
|
|
||||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
|
||||||
if (handler.getStackInSlot(i) != null && handler.getStackInSlot(i).getItem() != null) {
|
|
||||||
items.add(handler.getStackInSlot(i).copy());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack push(ItemStack stack, boolean simulate) {
|
|
||||||
if (ModeFilter.respectsMode(filters, this, compare, stack)) {
|
|
||||||
IItemHandler handler = getItemHandler();
|
|
||||||
|
|
||||||
if (handler != null) {
|
|
||||||
return ItemHandlerHelper.insertItem(handler, stack, simulate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack take(ItemStack stack, int size, int flags) {
|
|
||||||
IItemHandler handler = getItemHandler();
|
|
||||||
|
|
||||||
if (handler != null) {
|
|
||||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
|
||||||
ItemStack slot = handler.getStackInSlot(i);
|
|
||||||
|
|
||||||
if (slot != null && RefinedStorageUtils.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;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IItemHandler getItemHandler() {
|
|
||||||
return RefinedStorageUtils.getItemHandler(getFacingTile(), getDirection().getOpposite());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeContainerData(ByteBuf buf) {
|
public void writeContainerData(ByteBuf buf) {
|
||||||
super.writeContainerData(buf);
|
super.writeContainerData(buf);
|
||||||
|
|
||||||
buf.writeInt(priority);
|
buf.writeInt(priority);
|
||||||
|
|
||||||
buf.writeInt(getStored());
|
buf.writeInt(getStored());
|
||||||
|
buf.writeInt(getCapacity());
|
||||||
buf.writeInt(compare);
|
buf.writeInt(compare);
|
||||||
buf.writeInt(mode);
|
buf.writeInt(mode);
|
||||||
}
|
}
|
||||||
@@ -113,6 +72,7 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
|
|||||||
|
|
||||||
priority = buf.readInt();
|
priority = buf.readInt();
|
||||||
stored = buf.readInt();
|
stored = buf.readInt();
|
||||||
|
capacity = buf.readInt();
|
||||||
compare = buf.readInt();
|
compare = buf.readInt();
|
||||||
mode = buf.readInt();
|
mode = buf.readInt();
|
||||||
}
|
}
|
||||||
@@ -191,7 +151,9 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void provide(List<IStorage> storages) {
|
public void provide(List<IStorage> storages) {
|
||||||
storages.add(this);
|
if (storage != null) {
|
||||||
|
storages.add(storage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -216,36 +178,12 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getStored() {
|
public int getStored() {
|
||||||
if (worldObj.isRemote) {
|
return worldObj.isRemote ? stored : (storage != null ? storage.getStored() : 0);
|
||||||
return stored;
|
|
||||||
}
|
|
||||||
|
|
||||||
IItemHandler handler = getItemHandler();
|
|
||||||
|
|
||||||
if (handler != null) {
|
|
||||||
int size = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < handler.getSlots(); ++i) {
|
|
||||||
if (handler.getStackInSlot(i) != null) {
|
|
||||||
size += handler.getStackInSlot(i).stackSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return size;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCapacity() {
|
public int getCapacity() {
|
||||||
IItemHandler handler = getItemHandler();
|
return worldObj.isRemote ? capacity : (storage != null ? storage.getCapacity() : 0);
|
||||||
|
|
||||||
if (handler != null) {
|
|
||||||
return handler.getSlots() * 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
Reference in New Issue
Block a user