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