Update Storage Drawers API, #1346
This commit is contained in:
@@ -1,22 +1,10 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.config.IUserConfig;
|
||||
import com.jaquadro.minecraft.storagedrawers.api.registry.IRecipeHandlerRegistry;
|
||||
import com.jaquadro.minecraft.storagedrawers.api.registry.IRenderRegistry;
|
||||
import com.jaquadro.minecraft.storagedrawers.api.registry.IWailaRegistry;
|
||||
|
||||
public interface IStorageDrawersApi {
|
||||
/**
|
||||
* Recipe handlers are used to make custom recipes compatible with compacting drawers.
|
||||
*/
|
||||
IRecipeHandlerRegistry recipeHandlerRegistry();
|
||||
|
||||
IRenderRegistry renderRegistry();
|
||||
|
||||
IWailaRegistry wailaRegistry();
|
||||
|
||||
/**
|
||||
* User-managed configuration for the Storage Drawers mod.
|
||||
*/
|
||||
IUserConfig userConfig();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package com.jaquadro.minecraft.storagedrawers.api;
|
||||
public class StorageDrawersApi {
|
||||
private static IStorageDrawersApi instance;
|
||||
|
||||
public static final String VERSION = "1.10.2-1.3.0";
|
||||
public static final String VERSION = "2.0.0";
|
||||
|
||||
/**
|
||||
* API entry point.
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.capabilities;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.NonNullList;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public interface IItemRepository {
|
||||
/**
|
||||
* Gets a list of all items in the inventory. The same item may appear multiple times with varying counts.
|
||||
*
|
||||
* @return A list of zero or more items in the inventory.
|
||||
*/
|
||||
@Nonnull
|
||||
NonNullList<ItemRecord> getAllItems();
|
||||
|
||||
/**
|
||||
* Inserts an ItemStack into the inventory and returns the remainder.
|
||||
*
|
||||
* @param stack ItemStack to insert.
|
||||
* @param simulate If true, the insertion is only simulated
|
||||
* @return The remaining ItemStack that was not inserted. If the entire stack was accepted, returns
|
||||
* ItemStack.EMPTY instead.
|
||||
*/
|
||||
@Nonnull
|
||||
ItemStack insertItem(@Nonnull ItemStack stack, boolean simulate);
|
||||
|
||||
/**
|
||||
* Tries to extract the given ItemStack from the inventory. The returned value will be a matching ItemStack
|
||||
* with a stack size equal to or less than amount, or the empty ItemStack if the item could not be found at all.
|
||||
* The returned stack size may exceed the itemstack's getMaxStackSize() value.
|
||||
*
|
||||
* @param stack The item to extract. The stack size is ignored.
|
||||
* @param amount Amount to extract (may be greater than the stacks max limit)
|
||||
* @param simulate If true, the extraction is only simulated
|
||||
* @return ItemStack extracted from the inventory, or ItemStack.EMPTY if nothing could be extracted.
|
||||
*/
|
||||
@Nonnull
|
||||
ItemStack extractItem(@Nonnull ItemStack stack, int amount, boolean simulate);
|
||||
|
||||
/**
|
||||
* An item record representing an item and the amount stored.
|
||||
* <p>
|
||||
* The ItemStack held by itemPrototype always reports a stack size of 1.
|
||||
* IT IS IMPORTANT THAT YOU NEVER MODIFY itemPrototype.
|
||||
*/
|
||||
class ItemRecord {
|
||||
@Nonnull
|
||||
public final ItemStack itemPrototype;
|
||||
public final int count;
|
||||
|
||||
public ItemRecord(@Nonnull ItemStack itemPrototype, int count) {
|
||||
this.itemPrototype = itemPrototype;
|
||||
this.count = count;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.config;
|
||||
|
||||
public interface IAddonConfig {
|
||||
/**
|
||||
* Gets whether the user has configured a preference for addon packs to hide their blocks and items from Vanilla
|
||||
* creative tabs.
|
||||
*/
|
||||
boolean showAddonItemsNEI();
|
||||
|
||||
/**
|
||||
* Gets whether the user has configured a preference for addon packs to hide their blocks and items from NEI.
|
||||
*/
|
||||
boolean showAddonItemsVanilla();
|
||||
|
||||
/**
|
||||
* Gets whether the user has configured a preference for addon packs to provide their blocks and items through
|
||||
* their own vanilla tab.
|
||||
*/
|
||||
boolean addonItemsUseSeparateTab();
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.config;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.pack.BlockConfiguration;
|
||||
|
||||
public interface IBlockConfig {
|
||||
String getBlockConfigName(BlockConfiguration blockConfig);
|
||||
|
||||
boolean isBlockEnabled(String blockConfigName);
|
||||
|
||||
int getBlockRecipeOutput(String blockConfigName);
|
||||
|
||||
int getBaseCapacity(String blockConfigName);
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.config;
|
||||
|
||||
public interface IIntegrationConfig {
|
||||
boolean isRefinedRelocationEnabled();
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.config;
|
||||
|
||||
/**
|
||||
* The main hub for user-managed mod configuration.
|
||||
*/
|
||||
public interface IUserConfig {
|
||||
/**
|
||||
* Configuration options related to third party addon packs for Storage Drawers.
|
||||
*/
|
||||
@Deprecated
|
||||
IAddonConfig addonConfig();
|
||||
|
||||
/**
|
||||
* Configuration options related to individual blocks.
|
||||
*/
|
||||
IBlockConfig blockConfig();
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
@API(owner = "StorageDrawersAPI", provides = "StorageDrawersAPI|config", apiVersion = StorageDrawersApi.VERSION)
|
||||
package com.jaquadro.minecraft.storagedrawers.api.config;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.StorageDrawersApi;
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.pack;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.EnumBasicDrawer;
|
||||
|
||||
public enum BlockConfiguration {
|
||||
BasicFull1(BlockType.Drawers, EnumBasicDrawer.FULL1),
|
||||
BasicFull2(BlockType.Drawers, EnumBasicDrawer.FULL2),
|
||||
BasicFull4(BlockType.Drawers, EnumBasicDrawer.FULL4),
|
||||
BasicHalf2(BlockType.Drawers, EnumBasicDrawer.HALF2),
|
||||
BasicHalf4(BlockType.Drawers, EnumBasicDrawer.HALF4),
|
||||
Trim(BlockType.Trim, null);
|
||||
|
||||
private final BlockType type;
|
||||
private final EnumBasicDrawer drawer;
|
||||
|
||||
BlockConfiguration(BlockType type, EnumBasicDrawer drawer) {
|
||||
this.type = type;
|
||||
this.drawer = drawer;
|
||||
}
|
||||
|
||||
public BlockType getBlockType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getDrawerCount() {
|
||||
return (drawer != null) ? drawer.getDrawerCount() : 0;
|
||||
}
|
||||
|
||||
public boolean isHalfDepth() {
|
||||
return (drawer != null) && drawer.isHalfDepth();
|
||||
}
|
||||
|
||||
public static BlockConfiguration by(BlockType type, EnumBasicDrawer drawer) {
|
||||
for (BlockConfiguration config : values()) {
|
||||
if (config.type == type && config.drawer == drawer)
|
||||
return config;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.pack;
|
||||
|
||||
public enum BlockType {
|
||||
Drawers,
|
||||
Trim
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.pack;
|
||||
|
||||
public enum TextureType {
|
||||
Front1,
|
||||
Front2,
|
||||
Front4,
|
||||
Side,
|
||||
SideVSplit,
|
||||
SideHSplit,
|
||||
TrimBorder,
|
||||
TrimBlock
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
@API(owner = "StorageDrawersAPI", provides = "StorageDrawersAPI|pack", apiVersion = StorageDrawersApi.VERSION)
|
||||
package com.jaquadro.minecraft.storagedrawers.api.pack;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.StorageDrawersApi;
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.registry;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
/**
|
||||
* Ingredient handlers are used to get ItemStacks from ingredients in custom IRecipe implementations. If you have
|
||||
* registered an IRecipeHandler that returns lists of objects that aren't ItemStacks, then you will need to
|
||||
* implement an ingredient handler for those objects.
|
||||
*/
|
||||
public interface IIngredientHandler {
|
||||
/**
|
||||
* Gets an ItemStack from an object that represents an ingredient in an IRecipe.
|
||||
*
|
||||
* @param object An ingredient object.
|
||||
* @return An ItemStack for the given ingredient.
|
||||
*/
|
||||
@Nonnull
|
||||
ItemStack getItemStack(Object object);
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.registry;
|
||||
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Recipe handlers are used by compacting drawers to find more-compressed forms of blocks and items. If your recipe
|
||||
* to craft compressed items is a custom IRecipe implementation, you will need to register a handler for it.
|
||||
*/
|
||||
public interface IRecipeHandler {
|
||||
/**
|
||||
* Get the recipe ingredient list as an array of objects (usually used for shaped recipes).
|
||||
* If your array does not contain ItemStack objects, you will need to register an {@link IIngredientHandler} to
|
||||
* get an ItemStack from them.
|
||||
*
|
||||
* If you would prefer to return a List, return null in this method and implement {@link #getInputAsList}.
|
||||
*
|
||||
* @param recipe An instance of a custom {@link IRecipe}.
|
||||
* @return An array of ItemStacks or objects with a registered {@link IIngredientHandler}.
|
||||
*/
|
||||
Object[] getInputAsArray(IRecipe recipe);
|
||||
|
||||
/**
|
||||
* Get the recipe ingredient list as a list of objects (usually used for shapeless recipes).
|
||||
* If your list does not contain ItemStack objects, you will need to register an {@link IIngredientHandler} to
|
||||
* get an ItemStack from them.
|
||||
*
|
||||
* If you would prefer to return an array, return null in this method and implement {@link #getInputAsArray}.
|
||||
*
|
||||
* @param recipe An instance of a custom {@link IRecipe}.
|
||||
* @return A list of ItemStacks or objects with a registered {@link IIngredientHandler}.
|
||||
*/
|
||||
List getInputAsList(IRecipe recipe);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.registry;
|
||||
|
||||
public interface IRecipeHandlerRegistry {
|
||||
void registerRecipeHandler(Class clazz, IRecipeHandler handler);
|
||||
|
||||
void registerIngredientHandler(Class clazz, IIngredientHandler handler);
|
||||
|
||||
IRecipeHandler getRecipeHandler(Class clazz);
|
||||
|
||||
IIngredientHandler getIngredientHandler(Class clazz);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
public enum BlockType {
|
||||
Drawers,
|
||||
Trim
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public class Drawers {
|
||||
public static final IDrawer DISABLED = new DisabledDrawer();
|
||||
public static final IFractionalDrawer DISABLED_FRACTIONAL = new DisabledFractionalDrawer();
|
||||
|
||||
private static class DisabledDrawer implements IDrawer {
|
||||
@Nonnull
|
||||
@Override
|
||||
public ItemStack getStoredItemPrototype() {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public IDrawer setStoredItem(@Nonnull ItemStack itemPrototype) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStoredItemCount() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStoredItemCount(int amount) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxCapacity(@Nonnull ItemStack itemPrototype) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRemainingCapacity() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canItemBeStored(@Nonnull ItemStack itemPrototype) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canItemBeExtracted(@Nonnull ItemStack itemPrototype) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static class DisabledFractionalDrawer extends DisabledDrawer implements IFractionalDrawer {
|
||||
@Override
|
||||
public int getConversionRate() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStoredItemRemainder() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSmallestUnit() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
public class EmptyDrawerAttributes implements IDrawerAttributes {
|
||||
public EmptyDrawerAttributes() {
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
@@ -13,14 +12,28 @@ public interface IDrawer {
|
||||
@Nonnull
|
||||
ItemStack getStoredItemPrototype();
|
||||
|
||||
/**
|
||||
* Sets the type of the stored item and initializes it to 0. Any existing item will be replaced.
|
||||
*
|
||||
* @param itemPrototype An ItemStack representing the type, metadata, and tags of the item to store.
|
||||
* @return The IDrawer actually set with the prototype. Some drawer groups can redirect a set operation to another member.
|
||||
*/
|
||||
@Nonnull
|
||||
IDrawer setStoredItem(@Nonnull ItemStack itemPrototype);
|
||||
|
||||
/**
|
||||
* Sets the type of the stored item and initializes it to the given amount. Any existing item will be replaced.
|
||||
*
|
||||
* @param itemPrototype An ItemStack representing the type, metadata, and tags of the item to store.
|
||||
* @param amount The amount to initialize the stored item count to.
|
||||
* @param amount The amount of items stored in this drawer.
|
||||
* @return The IDrawer actually set with the prototype. Some drawer groups can redirect a set operation to another member.
|
||||
*/
|
||||
IDrawer setStoredItem(@Nonnull ItemStack itemPrototype, int amount);
|
||||
@Nonnull
|
||||
default IDrawer setStoredItem(@Nonnull ItemStack itemPrototype, int amount) {
|
||||
IDrawer drawer = setStoredItem(itemPrototype);
|
||||
drawer.setStoredItemCount(amount);
|
||||
return drawer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the number of items stored in this drawer.
|
||||
@@ -35,34 +48,68 @@ public interface IDrawer {
|
||||
*/
|
||||
void setStoredItemCount(int amount);
|
||||
|
||||
/**
|
||||
* Adds or removes a given amount from the number of items stored in this drawer.
|
||||
*
|
||||
* @param amount The amount to add (positive) or subtract (negative).
|
||||
* @return 0 if the full adjustment was committed, or a positive value representing the remainder if the full
|
||||
* amount couldn't be added or subtracted.
|
||||
*/
|
||||
default int adjustStoredItemCount(int amount) {
|
||||
if (amount > 0) {
|
||||
int insert = Math.min(amount, getRemainingCapacity());
|
||||
setStoredItemCount(getStoredItemCount() + insert);
|
||||
return amount - insert;
|
||||
} else if (amount < 0) {
|
||||
int stored = getStoredItemCount();
|
||||
int destroy = Math.min(Math.abs(amount), getStoredItemCount());
|
||||
setStoredItemCount(stored - destroy);
|
||||
return amount + destroy;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum number of items that can be stored in this drawer.
|
||||
* This value will vary depending on the max stack size of the stored item type.
|
||||
*/
|
||||
int getMaxCapacity();
|
||||
default int getMaxCapacity() {
|
||||
return getMaxCapacity(getStoredItemPrototype());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the maximum number of items that could be stored in this drawer if it held the given item.
|
||||
*
|
||||
* @param itemPrototype The item type to query.
|
||||
* @param itemPrototype The item type to query. Pass the empty stack to get the max capacity for an empty slot.
|
||||
*/
|
||||
int getMaxCapacity(@Nonnull ItemStack itemPrototype);
|
||||
|
||||
/**
|
||||
* Gets the maxmimum number of items that could be stored in this drawer for a standard item stack size
|
||||
* of 64.
|
||||
*/
|
||||
int getDefaultMaxCapacity();
|
||||
|
||||
/**
|
||||
* Gets the number of items that could still be added to this drawer before it is full.
|
||||
*/
|
||||
int getRemainingCapacity();
|
||||
|
||||
/**
|
||||
* Gets the max stack size of the item type stored in this drawer. Convenience method.
|
||||
* Gets the number of additional items that would be accepted by this drawer.
|
||||
*
|
||||
* Because a drawer may be able to handle items in excess of its full capacity, this value may be larger than
|
||||
* the result of getRemainingCapacity().
|
||||
*/
|
||||
int getStoredItemStackSize();
|
||||
default int getAcceptingRemainingCapacity() {
|
||||
return getRemainingCapacity();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the max stack size of the item type stored in this drawer.
|
||||
*/
|
||||
default int getStoredItemStackSize() {
|
||||
@Nonnull ItemStack protoStack = getStoredItemPrototype();
|
||||
if (protoStack.isEmpty())
|
||||
return 0;
|
||||
|
||||
return protoStack.getItem().getItemStackLimit(protoStack);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not an item of the given type and data can be stored in this drawer.
|
||||
@@ -92,27 +139,7 @@ public interface IDrawer {
|
||||
*/
|
||||
boolean isEmpty();
|
||||
|
||||
/**
|
||||
* Gets auxiliary data that has been associated with this drawer.
|
||||
*
|
||||
* @param key The key used to identify the data.
|
||||
* @return An opaque object that was previously stored.
|
||||
*/
|
||||
Object getExtendedData(String key);
|
||||
|
||||
/**
|
||||
* Stores auxiliary data with this drawer, mainly for use in integration.
|
||||
* @param key The key to identify the data with.
|
||||
* @param data The data to store.
|
||||
*/
|
||||
void setExtendedData(String key, Object data);
|
||||
|
||||
/**
|
||||
* Called when a component attribute of a drawer (such as lock or void) changes state.
|
||||
*/
|
||||
void attributeChanged();
|
||||
|
||||
void writeToNBT(NBTTagCompound tag);
|
||||
|
||||
void readFromNBT(NBTTagCompound tag);
|
||||
default boolean isEnabled() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute;
|
||||
|
||||
public interface IDrawerAttributes {
|
||||
/**
|
||||
* Gets whether or not the lock state can be changed for the given lock attribute.
|
||||
* If this method returns false, isItemLocked may still return true.
|
||||
*/
|
||||
default boolean canItemLock(LockAttribute attr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not a drawer or group is locked for the given lock attribute.
|
||||
*/
|
||||
default boolean isItemLocked(LockAttribute attr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the drawer has the concealed attribute.
|
||||
* The shrouded attribute instructs the drawer to not render its item label.
|
||||
*/
|
||||
default boolean isConcealed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the drawer has the sealed attribute.
|
||||
* A sealed drawer cannot be interacted with, and when broken will retain all of its items and upgrades.
|
||||
*/
|
||||
default boolean isSealed() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the drawer has the quantified attribute.
|
||||
* The quantified attribute instructs the drawer to render its numerical quantity.
|
||||
*/
|
||||
default boolean isShowingQuantity() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the drawer has a voiding attribute.
|
||||
*/
|
||||
default boolean isVoid() {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean isUnlimitedStorage() {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean isUnlimitedVending() {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean isDictConvertible() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import com.jaquadro.minecraft.storagedrawers.api.storage.attribute.LockAttribute;
|
||||
|
||||
public interface IDrawerAttributesModifiable extends IDrawerAttributes {
|
||||
/**
|
||||
* Sets whether or not the drawer is currently concealed.
|
||||
*
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
default boolean setIsConcealed(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the lock state of a drawer or group for the given lock attribute.
|
||||
* If canItemLock returns false, this is a no-op.
|
||||
*
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
default boolean setItemLocked(LockAttribute attr, boolean isLocked) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether or not the drawer is currently quantified.
|
||||
*
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
default boolean setIsShowingQuantity(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether or not the drawer is currently sealed.
|
||||
*
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
default boolean setIsSealed(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean setIsVoid(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean setIsUnlimitedStorage(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean setIsUnlimitedVending(boolean state) {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean setIsDictConvertible(boolean state) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,13 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
public interface IDrawerGroup {
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public interface IDrawerGroup extends ICapabilityProvider {
|
||||
/**
|
||||
* Gets the number of drawers contained within this group.
|
||||
*/
|
||||
@@ -9,17 +16,23 @@ public interface IDrawerGroup {
|
||||
/**
|
||||
* Gets the drawer at the given slot within this group.
|
||||
*/
|
||||
@Nonnull
|
||||
IDrawer getDrawer(int slot);
|
||||
|
||||
/**
|
||||
* Gets the drawer at the given slot within this group only if it is enabled.
|
||||
* Gets the list of available drawer slots in priority order.
|
||||
*/
|
||||
IDrawer getDrawerIfEnabled(int slot);
|
||||
@Nonnull
|
||||
int[] getAccessibleDrawerSlots();
|
||||
|
||||
/**
|
||||
* Gets whether the drawer in the given slot is usable.
|
||||
*/
|
||||
boolean isDrawerEnabled(int slot);
|
||||
@Override
|
||||
default boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing facing) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean markDirtyIfNeeded();
|
||||
@Nullable
|
||||
@Override
|
||||
default <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public interface IDrawerGroupInteractive extends IDrawerGroup {
|
||||
@Nonnull
|
||||
ItemStack takeItemsFromSlot(int slot, int count);
|
||||
|
||||
int putItemsIntoSlot(int slot, @Nonnull ItemStack stack, int count);
|
||||
|
||||
int interactPutCurrentItemIntoSlot(int slot, EntityPlayer player);
|
||||
|
||||
int interactPutCurrentInventoryIntoSlot(int slot, EntityPlayer player);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
|
||||
public interface IPriorityGroup {
|
||||
/**
|
||||
* Gets the list of available drawer slots in priority order.
|
||||
*/
|
||||
int[] getAccessibleDrawerSlots();
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
public interface ISmartGroup {
|
||||
/**
|
||||
* Gets a lazy enumeration of all slots that will accept at least one item of the given stack, ordered by
|
||||
* insertion preference.
|
||||
*/
|
||||
Iterable<Integer> enumerateDrawersForInsertion(@Nonnull ItemStack stack, boolean strict);
|
||||
|
||||
/**
|
||||
* Gets a lazy enumeration of all slots that will provide at least one item of the given stack, ordered by
|
||||
* extraction preference.
|
||||
*/
|
||||
Iterable<Integer> enumerateDrawersForExtraction(@Nonnull ItemStack stack, boolean strict);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage.attribute;
|
||||
|
||||
public interface IItemLockable {
|
||||
/**
|
||||
* Gets whether or not a drawer or group is locked for the given lock attribute.
|
||||
*/
|
||||
boolean isItemLocked(LockAttribute attr);
|
||||
|
||||
/**
|
||||
* Gets whether or not the lock state can be changed for the given lock attribute.
|
||||
* If this method returns false, isItemLocked may still return true.
|
||||
*/
|
||||
boolean canItemLock(LockAttribute attr);
|
||||
|
||||
/**
|
||||
* Sets the lock state of a drawer or group for the given lock attribute.
|
||||
* If canItemLock returns false, this is a no-op.
|
||||
*/
|
||||
void setItemLocked(LockAttribute attr, boolean isLocked);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage.attribute;
|
||||
|
||||
public interface IQuantifiable {
|
||||
/**
|
||||
* Gets whether or not the drawer has the quantified attribute.
|
||||
* The quantified attribute instructs the drawer to render its numerical quantity.
|
||||
*/
|
||||
boolean isShowingQuantity();
|
||||
|
||||
/**
|
||||
* Sets whether or not the drawer is currently quantified.
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
boolean setIsShowingQuantity(boolean state);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage.attribute;
|
||||
|
||||
public interface IShroudable {
|
||||
/**
|
||||
* Gets whether or not the drawer has the shrouded attribute.
|
||||
* The shrouded attribute instructs the drawer to not render its item label.
|
||||
*/
|
||||
boolean isShrouded();
|
||||
|
||||
/**
|
||||
* Sets whether or not the drawer is currently shrouded.
|
||||
* @return false if the operation is not supported, true otherwise.
|
||||
*/
|
||||
boolean setIsShrouded(boolean state);
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.jaquadro.minecraft.storagedrawers.api.storage.attribute;
|
||||
|
||||
@Deprecated
|
||||
public interface IVoidable {
|
||||
/**
|
||||
* Gets whether or not the drawer has a voiding attribute.
|
||||
*/
|
||||
@Deprecated
|
||||
boolean isVoid();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user