Add new inventory listener system
This commit is contained in:
@@ -15,7 +15,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.ExternalStorageTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
@@ -45,8 +46,8 @@ public class ExternalStorageNetworkNode extends NetworkNode implements IStorageP
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_FLUID_FILTERS = "FluidFilters";
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private int priority = 0;
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
|
||||
@@ -18,7 +18,8 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.PatternItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
@@ -89,40 +90,14 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I
|
||||
private ICraftingRecipe currentRecipe;
|
||||
private CraftingInventory matrix = new CraftingInventory(craftingContainer, 3, 3);
|
||||
private CraftResultInventory result = new CraftResultInventory();
|
||||
private BaseItemHandler processingMatrix = new BaseItemHandler(9 * 2, new NetworkNodeListener(this));
|
||||
private FluidInventory processingMatrixFluids = new FluidInventory(9 * 2, FluidAttributes.BUCKET_VOLUME * 64, new NetworkNodeListener(this));
|
||||
private BaseItemHandler processingMatrix = new BaseItemHandler(9 * 2).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory processingMatrixFluids = new FluidInventory(9 * 2, FluidAttributes.BUCKET_VOLUME * 64).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private boolean reading;
|
||||
|
||||
private Set<ICraftingGridListener> craftingListeners = new HashSet<>();
|
||||
|
||||
private BaseItemHandler patterns = new BaseItemHandler(2, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
ItemStack pattern = getStackInSlot(slot);
|
||||
if (slot == 1 && !pattern.isEmpty()) {
|
||||
boolean isPatternProcessing = PatternItem.isProcessing(pattern);
|
||||
|
||||
if (isPatternProcessing && isProcessingPattern()) {
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
processingMatrix.setStackInSlot(i, PatternItem.getInputSlot(pattern, i));
|
||||
processingMatrixFluids.setFluid(i, PatternItem.getFluidInputSlot(pattern, i));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
processingMatrix.setStackInSlot(9 + i, PatternItem.getOutputSlot(pattern, i));
|
||||
processingMatrixFluids.setFluid(9 + i, PatternItem.getFluidOutputSlot(pattern, i));
|
||||
}
|
||||
} else if (!isPatternProcessing && !isProcessingPattern()) {
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
matrix.setInventorySlotContents(i, PatternItem.getInputSlot(pattern, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private BaseItemHandler patterns = new BaseItemHandler(2) {
|
||||
@Override
|
||||
public int getSlotLimit(int slot) {
|
||||
return slot == 1 ? 1 : super.getSlotLimit(slot);
|
||||
@@ -142,10 +117,36 @@ public class GridNetworkNode extends NetworkNode implements IGridNetworkAware, I
|
||||
|
||||
return stack;
|
||||
}
|
||||
}.addValidator(new ItemValidator(RSItems.PATTERN));
|
||||
}
|
||||
.addValidator(new ItemValidator(RSItems.PATTERN))
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener(((handler, slot, reading) -> {
|
||||
ItemStack pattern = handler.getStackInSlot(slot);
|
||||
|
||||
if (slot == 1 && !pattern.isEmpty()) {
|
||||
boolean isPatternProcessing = PatternItem.isProcessing(pattern);
|
||||
|
||||
if (isPatternProcessing && isProcessingPattern()) {
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
processingMatrix.setStackInSlot(i, PatternItem.getInputSlot(pattern, i));
|
||||
processingMatrixFluids.setFluid(i, PatternItem.getFluidInputSlot(pattern, i));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
processingMatrix.setStackInSlot(9 + i, PatternItem.getOutputSlot(pattern, i));
|
||||
processingMatrixFluids.setFluid(9 + i, PatternItem.getFluidOutputSlot(pattern, i));
|
||||
}
|
||||
} else if (!isPatternProcessing && !isProcessingPattern()) {
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
matrix.setInventorySlotContents(i, PatternItem.getInputSlot(pattern, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
private List<IFilter> filters = new ArrayList<>();
|
||||
private List<IGridTab> tabs = new ArrayList<>();
|
||||
private FilterItemHandler filter = new FilterItemHandler(filters, tabs, new NetworkNodeListener(this));
|
||||
private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private final GridType type;
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.ImporterTile;
|
||||
@@ -35,10 +36,10 @@ public class ImporterNetworkNode extends NetworkNode implements IComparable, IWh
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_FLUID_FILTERS = "FLuidFilters";
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this), UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||
|
||||
@@ -8,7 +8,8 @@ import com.raoulvdberge.refinedstorage.container.slot.filter.FilterSlot;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileConstructor;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -50,10 +51,10 @@ public class NetworkNodeConstructor extends NetworkNode implements IComparable,
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(1, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(1, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(1).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.PatternItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import com.raoulvdberge.refinedstorage.util.WorldUtils;
|
||||
@@ -59,11 +59,15 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
||||
private static final String NBT_LOCKED = "Locked";
|
||||
private static final String NBT_WAS_POWERED = "WasPowered";
|
||||
|
||||
private BaseItemHandler patternsInventory = new BaseItemHandler(9, new NetworkNodeListener(this)) {
|
||||
private BaseItemHandler patternsInventory = new BaseItemHandler(9) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
public int getSlotLimit(int slot) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
.addValidator(new PatternItemValidator(world))
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!reading) {
|
||||
if (!world.isRemote) {
|
||||
invalidate();
|
||||
@@ -73,17 +77,11 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
||||
network.getCraftingManager().rebuild();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotLimit(int slot) {
|
||||
return 1;
|
||||
}
|
||||
}.addValidator(new PatternItemValidator(world));
|
||||
});
|
||||
|
||||
private List<ICraftingPattern> patterns = new ArrayList<>();
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED*/).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
// Used to prevent infinite recursion on getRootContainer() when there's e.g. two crafters facing each other.
|
||||
private boolean visited = false;
|
||||
|
||||
@@ -7,7 +7,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDestructor;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
@@ -51,10 +52,10 @@ public class NetworkNodeDestructor extends NetworkNode implements IComparable, I
|
||||
|
||||
private static final int BASE_SPEED = 20;
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4).addListener(new NetworkNodeInventoryListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_SILK_TOUCH, ItemUpgrade.TYPE_FORTUNE_1, ItemUpgrade.TYPE_FORTUNE_2, ItemUpgrade.TYPE_FORTUNE_3*/);
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int mode = IWhitelistBlacklist.BLACKLIST;
|
||||
|
||||
@@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDetector;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
@@ -37,8 +38,8 @@ public class NetworkNodeDetector extends NetworkNode implements IComparable, ITy
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_FLUID_FILTERS = "FluidFilters";
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(1, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(1, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(1).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
@@ -6,7 +6,8 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -32,10 +33,10 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
private static final String NBT_TYPE = "Type";
|
||||
private static final String NBT_FLUID_FILTERS = "FluidFilters";
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_CRAFTING, ItemUpgrade.TYPE_STACK*/).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
private int type = IType.ITEMS;
|
||||
|
||||
@@ -10,7 +10,8 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.ProxyFluidHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileFluidInterface;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
@@ -55,10 +56,10 @@ public class NetworkNodeFluidInterface extends NetworkNode {
|
||||
|
||||
private ProxyFluidHandler tank = new ProxyFluidHandler(tankIn, tankOut);
|
||||
|
||||
private BaseItemHandler in = new BaseItemHandler(1, new NetworkNodeListener(this)).addValidator(stack -> !StackUtils.getFluid(stack, true).getValue().isEmpty());
|
||||
private FluidInventory out = new FluidInventory(1, TANK_CAPACITY, new NetworkNodeListener(this));
|
||||
private BaseItemHandler in = new BaseItemHandler(1).addListener(new NetworkNodeInventoryListener(this)).addValidator(stack -> !StackUtils.getFluid(stack, true).getValue().isEmpty());
|
||||
private FluidInventory out = new FluidInventory(1, TANK_CAPACITY).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
public NetworkNodeFluidInterface(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.externalstorage.ItemExter
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ProxyItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
@@ -29,14 +29,14 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable {
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
private BaseItemHandler importItems = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler importItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private BaseItemHandler exportFilterItems = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler exportItems = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler exportFilterItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private BaseItemHandler exportItems = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private IItemHandler items = new ProxyItemHandler(importItems, exportItems);
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4).addListener(new NetworkNodeInventoryListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK, ItemUpgrade.TYPE_CRAFTING*/);
|
||||
|
||||
private int compare = IComparer.COMPARE_NBT;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
@@ -19,12 +19,11 @@ import javax.annotation.Nullable;
|
||||
public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "network_transmitter");
|
||||
|
||||
private BaseItemHandler networkCard = new BaseItemHandler(1, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
ItemStack card = getStackInSlot(slot);
|
||||
private BaseItemHandler networkCard = new BaseItemHandler(1)
|
||||
.addValidator(new ItemValidator(RSItems.NETWORK_CARD))
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
ItemStack card = handler.getStackInSlot(slot);
|
||||
|
||||
if (card.isEmpty()) {
|
||||
receiver = null;
|
||||
@@ -36,8 +35,7 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
if (network != null) {
|
||||
network.getNodeGraph().invalidate(Action.PERFORM, network.world(), network.getPosition());
|
||||
}
|
||||
}
|
||||
}.addValidator(new ItemValidator(RSItems.NETWORK_CARD));
|
||||
});
|
||||
|
||||
private BlockPos receiver;
|
||||
private int receiverDimension;
|
||||
@@ -120,9 +118,9 @@ public class NetworkNodeNetworkTransmitter extends NetworkNode {
|
||||
|
||||
// TODO final World dimensionWorld = DimensionManager.getWorld(receiverDimension);
|
||||
|
||||
// if (dimensionWorld != null) {
|
||||
// operator.apply(dimensionWorld, receiver, null);
|
||||
// }
|
||||
// if (dimensionWorld != null) {
|
||||
// operator.apply(dimensionWorld, receiver, null);
|
||||
// }
|
||||
} else {
|
||||
operator.apply(world, receiver, null);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.raoulvdberge.refinedstorage.api.network.security.Permission;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.security.SecurityCard;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.ItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.SecurityCardItem;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@@ -31,11 +31,10 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity
|
||||
private List<ISecurityCard> cards = new ArrayList<>();
|
||||
private ISecurityCard globalCard;
|
||||
|
||||
private BaseItemHandler cardsInv = new BaseItemHandler(9 * 2, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
private BaseItemHandler cardsInv = new BaseItemHandler(9 * 2)
|
||||
.addValidator(new ItemValidator(RSItems.SECURITY_CARD))
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener(((handler, slot, reading) -> {
|
||||
if (!world.isRemote) {
|
||||
invalidate();
|
||||
}
|
||||
@@ -43,9 +42,11 @@ public class NetworkNodeSecurityManager extends NetworkNode implements ISecurity
|
||||
if (network != null) {
|
||||
network.getSecurityManager().invalidate();
|
||||
}
|
||||
}
|
||||
}.addValidator(new ItemValidator(RSItems.SECURITY_CARD));
|
||||
private BaseItemHandler editCard = new BaseItemHandler(1, new NetworkNodeListener(this)).addValidator(new ItemValidator(RSItems.SECURITY_CARD));
|
||||
}));
|
||||
|
||||
private BaseItemHandler editCard = new BaseItemHandler(1)
|
||||
.addValidator(new ItemValidator(RSItems.SECURITY_CARD))
|
||||
.addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
public NetworkNodeSecurityManager(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
@@ -31,14 +31,13 @@ public class NetworkNodeStorageMonitor extends NetworkNode implements IComparabl
|
||||
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
|
||||
private BaseItemHandler itemFilter = new BaseItemHandler(1, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
public void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
};
|
||||
private BaseItemHandler itemFilter = new BaseItemHandler(1)
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
});
|
||||
|
||||
private Map<String, Pair<ItemStack, Long>> deposits = new HashMap<>();
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.network.IWirelessTransmitter;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
@@ -19,7 +19,7 @@ import javax.annotation.Nullable;
|
||||
public class NetworkNodeWirelessTransmitter extends NetworkNode implements IWirelessTransmitter {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "wireless_transmitter");
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO , ItemUpgrade.TYPE_RANGE*/);
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4 /* TODO , ItemUpgrade.TYPE_RANGE*/).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
public NetworkNodeWirelessTransmitter(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
|
||||
@@ -14,7 +14,8 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.DiskDriveTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.*;
|
||||
import com.raoulvdberge.refinedstorage.util.AccessTypeUtils;
|
||||
@@ -66,15 +67,20 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide
|
||||
private int ticksSinceBlockUpdateRequested;
|
||||
private boolean blockUpdateRequested;
|
||||
|
||||
private BaseItemHandler disks = new BaseItemHandler(8, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private IStorageDisk[] itemDisks = new IStorageDisk[8];
|
||||
private IStorageDisk[] fluidDisks = new IStorageDisk[8];
|
||||
|
||||
private BaseItemHandler disks = new BaseItemHandler(8)
|
||||
.addValidator(new StorageDiskItemValidator())
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!world.isRemote) {
|
||||
StackUtils.createStorages(
|
||||
(ServerWorld) world,
|
||||
getStackInSlot(slot),
|
||||
handler.getStackInSlot(slot),
|
||||
slot,
|
||||
itemDisks,
|
||||
fluidDisks,
|
||||
@@ -87,18 +93,11 @@ public class DiskDriveNetworkNode extends NetworkNode implements IStorageProvide
|
||||
network.getFluidStorageCache().invalidate();
|
||||
}
|
||||
|
||||
if (!isReading()) {
|
||||
if (!reading) {
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
}.addValidator(new StorageDiskItemValidator());
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
|
||||
private IStorageDisk[] itemDisks = new IStorageDisk[8];
|
||||
private IStorageDisk[] fluidDisks = new IStorageDisk[8];
|
||||
});
|
||||
|
||||
private AccessType accessType = AccessType.INSERT_EXTRACT;
|
||||
private int priority = 0;
|
||||
|
||||
@@ -13,7 +13,9 @@ import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ProxyItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.UpgradeItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
@@ -28,8 +30,6 @@ import net.minecraft.world.World;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
import net.minecraftforge.fluids.FluidAttributes;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.LogicalSide;
|
||||
import net.minecraftforge.fml.common.thread.EffectiveSide;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
@@ -58,7 +58,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
private IStorageDisk<ItemStack>[] itemDisks = new IStorageDisk[6];
|
||||
private IStorageDisk<FluidStack>[] fluidDisks = new IStorageDisk[6];
|
||||
|
||||
private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, new NetworkNodeListener(this)/* TODO, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK*/) {
|
||||
private UpgradeItemHandler upgrades = (UpgradeItemHandler) new UpgradeItemHandler(4, UpgradeItem.Type.SPEED, UpgradeItem.Type.STACK) {
|
||||
@Override
|
||||
public int getStackInteractCount() {
|
||||
int count = super.getStackInteractCount();
|
||||
@@ -69,17 +69,16 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
|
||||
return count;
|
||||
}
|
||||
};
|
||||
}.addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private BaseItemHandler inputDisks = new BaseItemHandler(3, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO: correct?
|
||||
private BaseItemHandler inputDisks = new BaseItemHandler(3)
|
||||
.addValidator(new StorageDiskItemValidator())
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!world.isRemote) {
|
||||
StackUtils.createStorages(
|
||||
(ServerWorld) world,
|
||||
getStackInSlot(slot),
|
||||
handler.getStackInSlot(slot),
|
||||
slot,
|
||||
itemDisks,
|
||||
fluidDisks,
|
||||
@@ -89,18 +88,16 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
}
|
||||
}.addValidator(new StorageDiskItemValidator());
|
||||
});
|
||||
|
||||
private BaseItemHandler outputDisks = new BaseItemHandler(3, new NetworkNodeListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (EffectiveSide.get() == LogicalSide.SERVER) { // TODO: correct?
|
||||
private BaseItemHandler outputDisks = new BaseItemHandler(3)
|
||||
.addValidator(new StorageDiskItemValidator())
|
||||
.addListener(new NetworkNodeInventoryListener(this))
|
||||
.addListener(((handler, slot, reading) -> {
|
||||
if (!world.isRemote) {
|
||||
StackUtils.createStorages(
|
||||
(ServerWorld) world,
|
||||
getStackInSlot(slot),
|
||||
handler.getStackInSlot(slot),
|
||||
3 + slot,
|
||||
itemDisks,
|
||||
fluidDisks,
|
||||
@@ -110,8 +107,7 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
|
||||
WorldUtils.updateBlock(world, pos);
|
||||
}
|
||||
}
|
||||
}.addValidator(new StorageDiskItemValidator());
|
||||
}));
|
||||
|
||||
private ProxyItemHandler disks = new ProxyItemHandler(inputDisks, outputDisks);
|
||||
|
||||
@@ -119,8 +115,8 @@ public class NetworkNodeDiskManipulator extends NetworkNode implements IComparab
|
||||
super(world, pos);
|
||||
}
|
||||
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler itemFilters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
private FluidInventory fluidFilters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.FluidStorageType;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.FluidStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeFluidInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.FluidStorageTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -49,7 +49,7 @@ public class FluidStorageNetworkNode extends NetworkNode implements IStorageScre
|
||||
private static final String NBT_FILTERS = "Filters";
|
||||
public static final String NBT_ID = "Id";
|
||||
|
||||
private FluidInventory filters = new FluidInventory(9, new NetworkNodeListener(this));
|
||||
private FluidInventory filters = new FluidInventory(9).addListener(new NetworkNodeFluidInventoryListener(this));
|
||||
|
||||
private FluidStorageType type;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.ItemStorageType;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.NetworkNodeInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.tile.StorageTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IAccessType;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -49,7 +49,7 @@ public class StorageNetworkNode extends NetworkNode implements IStorageScreen, I
|
||||
private static final String NBT_MODE = "Mode";
|
||||
public static final String NBT_ID = "Id";
|
||||
|
||||
private BaseItemHandler filters = new BaseItemHandler(9, new NetworkNodeListener(this));
|
||||
private BaseItemHandler filters = new BaseItemHandler(9).addListener(new NetworkNodeInventoryListener(this));
|
||||
|
||||
private final ItemStorageType type;
|
||||
|
||||
|
||||
@@ -134,8 +134,7 @@ public class CrafterManagerContainer extends BaseContainer {
|
||||
if (newContainerData == null) { // We're only resizing, get the previous inventory...
|
||||
dummy = dummyInventories.get(category.getKey());
|
||||
} else {
|
||||
dummyInventories.put(category.getKey(), dummy = new BaseItemHandler(category.getValue(), slot -> {
|
||||
}) {
|
||||
dummyInventories.put(category.getKey(), dummy = new BaseItemHandler(category.getValue()) {
|
||||
@Override
|
||||
public int getSlotLimit(int slot) {
|
||||
return 1;
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.fluid;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.InventoryListener;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class FluidInventory {
|
||||
private static final String NBT_SLOT = "Slot_%d";
|
||||
|
||||
private final List<InventoryListener<FluidInventory>> listeners = new ArrayList<>();
|
||||
|
||||
private FluidStack[] fluids;
|
||||
private int maxAmount;
|
||||
private boolean empty = true;
|
||||
|
||||
@Nullable
|
||||
protected Consumer<Integer> listener;
|
||||
|
||||
public FluidInventory(int size, int maxAmount, @Nullable Consumer<Integer> listener) {
|
||||
public FluidInventory(int size, int maxAmount) {
|
||||
this.fluids = new FluidStack[size];
|
||||
|
||||
for (int i = 0; i < size; ++i) {
|
||||
@@ -25,15 +25,16 @@ public class FluidInventory {
|
||||
}
|
||||
|
||||
this.maxAmount = maxAmount;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public FluidInventory(int size, @Nullable Consumer<Integer> listener) {
|
||||
this(size, Integer.MAX_VALUE, listener);
|
||||
}
|
||||
|
||||
public FluidInventory(int size) {
|
||||
this(size, Integer.MAX_VALUE, null);
|
||||
this(size, Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
public FluidInventory addListener(InventoryListener<FluidInventory> listener) {
|
||||
listeners.add(listener);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public int getSlots() {
|
||||
@@ -54,19 +55,13 @@ public class FluidInventory {
|
||||
}
|
||||
|
||||
public void setFluid(int slot, @Nonnull FluidStack stack) {
|
||||
if (stack == null) {
|
||||
throw new IllegalArgumentException("Stack can't be null");
|
||||
}
|
||||
|
||||
if (stack.getAmount() > maxAmount) {
|
||||
throw new IllegalArgumentException("Fluid size is invalid (given: " + stack.getAmount() + ", max size: " + maxAmount + ")");
|
||||
}
|
||||
|
||||
fluids[slot] = stack;
|
||||
|
||||
if (listener != null) {
|
||||
listener.accept(slot);
|
||||
}
|
||||
listeners.forEach(l -> l.onChanged(this, slot, false));
|
||||
|
||||
updateEmptyState();
|
||||
}
|
||||
|
||||
@@ -8,15 +8,15 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class FluidInventoryFilter extends FluidInventory {
|
||||
public FluidInventoryFilter(ItemStack stack) {
|
||||
super(27, Integer.MAX_VALUE, null);
|
||||
super(27, Integer.MAX_VALUE);
|
||||
|
||||
this.listener = slot -> {
|
||||
this.addListener((handler, slot, reading) -> {
|
||||
if (!stack.hasTag()) {
|
||||
stack.setTag(new CompoundNBT());
|
||||
}
|
||||
|
||||
stack.getTag().put(FilterItem.NBT_FLUID_FILTERS, writeToNbt());
|
||||
};
|
||||
});
|
||||
|
||||
if (stack.hasTag() && stack.getTag().contains(FilterItem.NBT_FLUID_FILTERS)) {
|
||||
readFromNbt(stack.getTag().getCompound(FilterItem.NBT_FLUID_FILTERS));
|
||||
|
||||
@@ -7,15 +7,15 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class FluidInventoryFilterIcon extends FluidInventory {
|
||||
public FluidInventoryFilterIcon(ItemStack stack) {
|
||||
super(1, Integer.MAX_VALUE, null);
|
||||
super(1, Integer.MAX_VALUE);
|
||||
|
||||
this.listener = slot -> {
|
||||
this.addListener((handler, slot, reading) -> {
|
||||
if (!stack.hasTag()) {
|
||||
stack.setTag(new CompoundNBT());
|
||||
}
|
||||
|
||||
FilterItem.setFluidIcon(stack, getFluid(slot));
|
||||
};
|
||||
});
|
||||
|
||||
FluidStack icon = FilterItem.getFluidIcon(stack);
|
||||
if (icon != null) {
|
||||
|
||||
@@ -1,28 +1,24 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.item;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.InventoryListener;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
// TODO Builder system for server and clientside listeners.
|
||||
public class BaseItemHandler extends ItemStackHandler {
|
||||
private final Consumer<Integer> listener;
|
||||
private final List<InventoryListener<BaseItemHandler>> listeners = new ArrayList<>();
|
||||
private final List<Predicate<ItemStack>> validators = new ArrayList<>();
|
||||
|
||||
private boolean empty = true;
|
||||
private boolean reading;
|
||||
|
||||
public BaseItemHandler(int size, @Nullable Consumer<Integer> listener) {
|
||||
public BaseItemHandler(int size) {
|
||||
super(size);
|
||||
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public BaseItemHandler addValidator(Predicate<ItemStack> validator) {
|
||||
@@ -31,6 +27,12 @@ public class BaseItemHandler extends ItemStackHandler {
|
||||
return this;
|
||||
}
|
||||
|
||||
public BaseItemHandler addListener(InventoryListener<BaseItemHandler> listener) {
|
||||
listeners.add(listener);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
|
||||
@@ -51,11 +53,8 @@ public class BaseItemHandler extends ItemStackHandler {
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
if (!reading && listener != null) {
|
||||
listener.accept(slot);
|
||||
}
|
||||
|
||||
this.empty = stacks.stream().allMatch(ItemStack::isEmpty);
|
||||
this.listeners.forEach(l -> l.onChanged(this, slot, reading));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -72,8 +71,4 @@ public class BaseItemHandler extends ItemStackHandler {
|
||||
public void setReading(boolean reading) {
|
||||
this.reading = reading;
|
||||
}
|
||||
|
||||
public boolean isReading() {
|
||||
return reading;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,22 +16,20 @@ import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.LogicalSide;
|
||||
import net.minecraftforge.fml.common.thread.EffectiveSide;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class FilterItemHandler extends BaseItemHandler {
|
||||
private List<IFilter> filters;
|
||||
private List<IGridTab> tabs;
|
||||
|
||||
public FilterItemHandler(List<IFilter> filters, List<IGridTab> tabs, @Nullable Consumer<Integer> listener) {
|
||||
super(4, listener);
|
||||
|
||||
this.addValidator(new ItemValidator(RSItems.FILTER));
|
||||
public FilterItemHandler(List<IFilter> filters, List<IGridTab> tabs) {
|
||||
super(4);
|
||||
|
||||
this.filters = filters;
|
||||
this.tabs = tabs;
|
||||
|
||||
this.addValidator(new ItemValidator(RSItems.FILTER));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,12 +4,9 @@ import com.raoulvdberge.refinedstorage.inventory.item.validator.UpgradeItemValid
|
||||
import com.raoulvdberge.refinedstorage.item.UpgradeItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class UpgradeItemHandler extends BaseItemHandler {
|
||||
public UpgradeItemHandler(int size, @Nullable Consumer<Integer> listener, UpgradeItem.Type... supportedUpgrades) {
|
||||
super(size, listener);
|
||||
public UpgradeItemHandler(int size, UpgradeItem.Type... supportedUpgrades) {
|
||||
super(size);
|
||||
|
||||
for (int i = 0; i < supportedUpgrades.length; ++i) {
|
||||
addValidator(new UpgradeItemValidator(supportedUpgrades[i]));
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
public interface InventoryListener<T> {
|
||||
void onChanged(T handler, int slot, boolean reading);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
|
||||
public class NetworkNodeFluidInventoryListener implements InventoryListener<FluidInventory> {
|
||||
private INetworkNode node;
|
||||
|
||||
public NetworkNodeFluidInventoryListener(INetworkNode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChanged(FluidInventory handler, int slot, boolean reading) {
|
||||
if (!reading) {
|
||||
node.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
|
||||
public class NetworkNodeInventoryListener implements InventoryListener<BaseItemHandler> {
|
||||
private INetworkNode node;
|
||||
|
||||
public NetworkNodeInventoryListener(INetworkNode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChanged(BaseItemHandler handler, int slot, boolean reading) {
|
||||
if (!reading) {
|
||||
node.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class NetworkNodeListener implements Consumer<Integer> {
|
||||
private INetworkNode node;
|
||||
|
||||
public NetworkNodeListener(INetworkNode node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(Integer slot) {
|
||||
node.markDirty();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileInventoryListener implements InventoryListener<BaseItemHandler> {
|
||||
private TileEntity tile;
|
||||
|
||||
public TileInventoryListener(TileEntity tile) {
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChanged(BaseItemHandler handler, int slot, boolean reading) {
|
||||
if (!reading) {
|
||||
tile.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.inventory.listener;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class TileListener implements Consumer<Integer> {
|
||||
private TileEntity tile;
|
||||
|
||||
public TileListener(TileEntity tile) {
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(Integer slot) {
|
||||
tile.markDirty();
|
||||
}
|
||||
}
|
||||
@@ -47,18 +47,14 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
private List<IFilter> filters = new ArrayList<>();
|
||||
private List<IGridTab> tabs = new ArrayList<>();
|
||||
private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs)
|
||||
.addListener(((handler, slot, reading) -> {
|
||||
if (!stack.hasTag()) {
|
||||
stack.setTag(new CompoundNBT());
|
||||
}
|
||||
|
||||
StackUtils.writeItems(this, 0, stack.getTag());
|
||||
}
|
||||
};
|
||||
StackUtils.writeItems(handler, 0, stack.getTag());
|
||||
}));
|
||||
|
||||
public WirelessFluidGrid(ItemStack stack) {
|
||||
/* TODO this.networkDimension = ItemWirelessFluidGrid.getDimensionId(stack);
|
||||
|
||||
@@ -47,18 +47,14 @@ public class WirelessGrid implements IGridNetworkAware {
|
||||
|
||||
private List<IFilter> filters = new ArrayList<>();
|
||||
private List<IGridTab> tabs = new ArrayList<>();
|
||||
private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs)
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!stack.hasTag()) {
|
||||
stack.setTag(new CompoundNBT());
|
||||
}
|
||||
|
||||
StackUtils.writeItems(this, 0, stack.getTag());
|
||||
}
|
||||
};
|
||||
StackUtils.writeItems(handler, 0, stack.getTag());
|
||||
});
|
||||
|
||||
public WirelessGrid(ItemStack stack) {
|
||||
/* TODO this.networkDimension = ItemWirelessGrid.getDimensionId(stack);
|
||||
|
||||
@@ -79,26 +79,21 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
||||
|
||||
private List<IFilter> filters = new ArrayList<>();
|
||||
private List<IGridTab> tabs = new ArrayList<>();
|
||||
private FilterItemHandler filter = new FilterItemHandler(filters, tabs, null) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs)
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (!stack.hasTag()) {
|
||||
stack.setTag(new CompoundNBT());
|
||||
}
|
||||
|
||||
StackUtils.writeItems(this, 0, stack.getTag());
|
||||
}
|
||||
};
|
||||
private BaseItemHandler disk = new BaseItemHandler(1, slot -> {
|
||||
}) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
StackUtils.writeItems(handler, 0, stack.getTag());
|
||||
});
|
||||
|
||||
if (/*TODO FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER*/false) {
|
||||
ItemStack diskStack = getStackInSlot(slot);
|
||||
private BaseItemHandler disk = new BaseItemHandler(1)
|
||||
.addValidator(new StorageDiskItemValidator())
|
||||
.addListener(((handler, slot, reading) -> {
|
||||
if (!player.world.isRemote) {
|
||||
ItemStack diskStack = handler.getStackInSlot(slot);
|
||||
|
||||
if (diskStack.isEmpty()) {
|
||||
storage = null;
|
||||
@@ -131,10 +126,9 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
||||
cache.invalidate();
|
||||
}
|
||||
|
||||
StackUtils.writeItems(this, 4, stack.getTag());
|
||||
StackUtils.writeItems(handler, 4, stack.getTag());
|
||||
}
|
||||
}
|
||||
}.addValidator(new StorageDiskItemValidator());
|
||||
}));
|
||||
|
||||
public PortableGrid(PlayerEntity player, ItemStack stack) {
|
||||
this.player = player;
|
||||
|
||||
@@ -37,7 +37,7 @@ import com.raoulvdberge.refinedstorage.block.enums.PortableGridType;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.BaseItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.FilterItemHandler;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.validator.StorageDiskItemValidator;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.TileListener;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.TileInventoryListener;
|
||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
|
||||
import com.raoulvdberge.refinedstorage.tile.BaseTile;
|
||||
@@ -139,17 +139,16 @@ public class TilePortableGrid extends BaseTile implements IGrid, IPortableGrid,
|
||||
|
||||
private List<IFilter> filters = new ArrayList<>();
|
||||
private List<IGridTab> tabs = new ArrayList<>();
|
||||
private FilterItemHandler filter = new FilterItemHandler(filters, tabs, new TileListener(this));
|
||||
private BaseItemHandler disk = new BaseItemHandler(1, new TileListener(this)) {
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
super.onContentsChanged(slot);
|
||||
|
||||
private FilterItemHandler filter = (FilterItemHandler) new FilterItemHandler(filters, tabs).addListener(new TileInventoryListener(this));
|
||||
private BaseItemHandler disk = new BaseItemHandler(1)
|
||||
.addValidator(new StorageDiskItemValidator())
|
||||
.addListener(new TileInventoryListener(this))
|
||||
.addListener((handler, slot, reading) -> {
|
||||
if (world != null && !world.isRemote) {
|
||||
loadStorage();
|
||||
}
|
||||
}
|
||||
}.addValidator(new StorageDiskItemValidator());
|
||||
});
|
||||
|
||||
@Nullable
|
||||
private IStorageDisk storage;
|
||||
|
||||
Reference in New Issue
Block a user