Move IStorageProviders into capability

This commit is contained in:
Raoul Van den Berge
2016-06-05 14:10:26 +02:00
parent a96dd80b24
commit a48d0d8a06
11 changed files with 84 additions and 20 deletions

View File

@@ -0,0 +1,10 @@
package refinedstorage.api;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import refinedstorage.api.storage.IStorageProvider;
public final class RefinedStorageCapabilities {
@CapabilityInject(IStorageProvider.class)
public static final Capability<IStorageProvider> STORAGE_PROVIDER_CAPABILITY = null;
}

View File

@@ -7,7 +7,7 @@ import net.minecraft.item.ItemStack;
*/
public interface ISoldererRecipe {
/**
* @param row The solderer row (between 1 - 3)
* @param row The solderer row (between 0 - 2)
* @return A stack for the given row, can be null for an empty row
*/
ItemStack getRow(int row);

View File

@@ -3,8 +3,8 @@ package refinedstorage.api.solderer;
import net.minecraft.item.ItemStack;
/**
* A solderer recipe with basic behaviour
* Implement {@link refinedstorage.api.solderer.ISoldererRecipe} for custom behaviour
* A solderer recipe with basic behaviour.
* Implement {@link ISoldererRecipe} for custom behaviour.
*/
public class SoldererRecipeBasic implements ISoldererRecipe {
private int duration;
@@ -12,8 +12,8 @@ public class SoldererRecipeBasic implements ISoldererRecipe {
private ItemStack[] rows;
/**
* @param result The result that this recipe gives back
* @param duration The duration of this recipe
* @param result The result
* @param duration The duration in ticks
* @param rows The rows of this recipe, has to be 3 rows (null for an empty row)
*/
public SoldererRecipeBasic(ItemStack result, int duration, ItemStack... rows) {

View File

@@ -30,7 +30,7 @@ public class SoldererRegistry {
}
/**
* @param items The item handler, where slots 0 - 2 are the row slots
* @param items An item handler, where slots 0 - 2 are the row slots
* @return The recipe
*/
public static ISoldererRecipe getRecipe(IItemHandler items) {

View File

@@ -0,0 +1,15 @@
package refinedstorage.api.storage;
import refinedstorage.storage.IStorage;
import java.util.List;
/**
* Should be implement as a capability on tile entities.
*/
public interface IStorageProvider {
/**
* @param storages A list containing previously added storages
*/
void provide(List<IStorage> storages);
}

View File

@@ -1,7 +0,0 @@
package refinedstorage.storage;
import java.util.List;
public interface IStorageProvider {
void provide(List<IStorage> storages);
}

View File

@@ -18,6 +18,7 @@ public abstract class NBTStorage implements IStorage {
public static final String NBT_ITEM_QUANTITY = "Quantity";
public static final String NBT_ITEM_DAMAGE = "Damage";
public static final String NBT_ITEM_NBT = "NBT";
public static final String NBT_CAPS = "Caps";
private NBTTagCompound tag;
private int capacity;

View File

@@ -11,12 +11,17 @@ import net.minecraftforge.items.IItemHandler;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageItems;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.RefinedStorageCapabilities;
import refinedstorage.api.storage.IStorageProvider;
import refinedstorage.block.EnumStorageType;
import refinedstorage.container.ContainerDiskDrive;
import refinedstorage.inventory.BasicItemHandler;
import refinedstorage.inventory.BasicItemValidator;
import refinedstorage.network.MessagePriorityUpdate;
import refinedstorage.storage.*;
import refinedstorage.storage.DiskStorage;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageGui;
import refinedstorage.storage.NBTStorage;
import refinedstorage.tile.config.ICompareConfig;
import refinedstorage.tile.config.IModeConfig;
import refinedstorage.tile.config.IRedstoneModeConfig;
@@ -257,6 +262,8 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
return (T) disks;
} else if (capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY) {
return (T) this;
}
return super.getCapability(capability, facing);
@@ -264,6 +271,6 @@ public class TileDiskDrive extends TileMachine implements IStorageProvider, ISto
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || super.hasCapability(capability, facing);
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY || capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY || super.hasCapability(capability, facing);
}
}

View File

@@ -4,17 +4,20 @@ import io.netty.buffer.ByteBuf;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper;
import powercrystals.minefactoryreloaded.api.IDeepStorageUnit;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.RefinedStorageCapabilities;
import refinedstorage.api.storage.IStorageProvider;
import refinedstorage.container.ContainerStorage;
import refinedstorage.inventory.BasicItemHandler;
import refinedstorage.network.MessagePriorityUpdate;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageGui;
import refinedstorage.storage.IStorageProvider;
import refinedstorage.tile.config.*;
import java.util.List;
@@ -323,4 +326,18 @@ public class TileExternalStorage extends TileMachine implements IStorageProvider
public IItemHandler getFilters() {
return filters;
}
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY) {
return (T) this;
}
return super.getCapability(capability, facing);
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY || super.hasCapability(capability, facing);
}
}

View File

@@ -3,16 +3,23 @@ package refinedstorage.tile;
import io.netty.buffer.ByteBuf;
import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.IItemHandler;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.RefinedStorageCapabilities;
import refinedstorage.api.storage.IStorageProvider;
import refinedstorage.block.BlockStorage;
import refinedstorage.block.EnumStorageType;
import refinedstorage.container.ContainerStorage;
import refinedstorage.inventory.BasicItemHandler;
import refinedstorage.network.MessagePriorityUpdate;
import refinedstorage.storage.*;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageGui;
import refinedstorage.storage.NBTStorage;
import refinedstorage.storage.StorageBlockStorage;
import refinedstorage.tile.config.ICompareConfig;
import refinedstorage.tile.config.IModeConfig;
import refinedstorage.tile.config.IRedstoneModeConfig;
@@ -217,4 +224,18 @@ public class TileStorage extends TileMachine implements IStorageProvider, IStora
public int getCapacity() {
return getType().getCapacity();
}
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY) {
return (T) this;
}
return super.getCapability(capability, facing);
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return capability == RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY || super.hasCapability(capability, facing);
}
}

View File

@@ -16,6 +16,7 @@ import net.minecraftforge.fml.common.network.ByteBufUtils;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageUtils;
import refinedstorage.api.RefinedStorageCapabilities;
import refinedstorage.autocrafting.CraftingPattern;
import refinedstorage.autocrafting.task.BasicCraftingTask;
import refinedstorage.autocrafting.task.ICraftingTask;
@@ -27,7 +28,6 @@ import refinedstorage.container.ContainerGrid;
import refinedstorage.item.ItemPattern;
import refinedstorage.network.MessageGridItems;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageProvider;
import refinedstorage.tile.*;
import refinedstorage.tile.config.IRedstoneModeConfig;
import refinedstorage.tile.config.RedstoneMode;
@@ -259,8 +259,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
this.wirelessGridRange += ((TileWirelessTransmitter) machine).getRange();
}
if (machine instanceof IStorageProvider) {
((IStorageProvider) machine).provide(storages);
if (machine.hasCapability(RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY, EnumFacing.DOWN)) {
machine.getCapability(RefinedStorageCapabilities.STORAGE_PROVIDER_CAPABILITY, EnumFacing.DOWN).provide(storages);
}
if (machine instanceof TileCrafter) {