Move IStorageProviders into capability
This commit is contained in:
10
src/main/java/refinedstorage/api/RefinedStorageCapabilities.java
Executable file
10
src/main/java/refinedstorage/api/RefinedStorageCapabilities.java
Executable 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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
15
src/main/java/refinedstorage/api/storage/IStorageProvider.java
Executable file
15
src/main/java/refinedstorage/api/storage/IStorageProvider.java
Executable 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);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package refinedstorage.storage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IStorageProvider {
|
||||
void provide(List<IStorage> storages);
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user