Exposed pattern inventory for Pattern Grid, fixes #1334

This commit is contained in:
Raoul Van den Berge
2017-07-03 14:12:06 +02:00
parent cda87f4119
commit 78004ea039
5 changed files with 32 additions and 8 deletions

View File

@@ -1,5 +1,8 @@
# Refined Storage Changelog
### 1.5.7
- Exposed pattern inventory for Pattern Grid (raoulvdberge)
### 1.5.6
- Updated Forge to stable 2387 (raoulvdberge)
- Fixed bug where players couldn't place regular blocks next to secured networks (raoulvdberge)

View File

@@ -35,6 +35,7 @@ import net.minecraftforge.items.ItemHandlerHelper;
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
import net.minecraftforge.items.wrapper.InvWrapper;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
@@ -87,7 +88,13 @@ public class NetworkNodeGrid extends NetworkNode implements IGrid {
private InventoryCraftResult result = new InventoryCraftResult();
private ItemHandlerBase matrixProcessing = new ItemHandlerBase(9 * 2, new ItemHandlerListenerNetworkNode(this));
private ItemHandlerBase patterns = new ItemHandlerBase(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN));
private ItemHandlerBase patterns = new ItemHandlerBase(2, new ItemHandlerListenerNetworkNode(this), new ItemValidatorBasic(RSItems.PATTERN)) {
@Nonnull
@Override
public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) {
return slot == 0 ? super.insertItem(slot, stack, simulate) : stack;
}
};
private List<Filter> filters = new ArrayList<>();
private List<FilterTab> tabs = new ArrayList<>();
private ItemHandlerFilter filter = new ItemHandlerFilter(filters, tabs, new ItemHandlerListenerNetworkNode(this));

View File

@@ -66,9 +66,9 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable {
ItemStack remainder = network.insertItemTracked(slot, size);
if (remainder == null) {
importItems.extractItemInternal(currentSlot, size, false);
importItems.extractItem(currentSlot, size, false);
} else if (size - remainder.getCount() > 0) {
importItems.extractItemInternal(currentSlot, size - remainder.getCount(), false);
importItems.extractItem(currentSlot, size - remainder.getCount(), false);
currentSlot++;
}

View File

@@ -66,9 +66,4 @@ public class ItemHandlerBase extends ItemStackHandler {
public boolean isEmpty() {
return empty;
}
@Nonnull
public ItemStack extractItemInternal(int slot, int amount, boolean simulate) {
return super.extractItem(slot, amount, simulate);
}
}

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.tile.grid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeGrid;
import com.raoulvdberge.refinedstorage.block.GridType;
import com.raoulvdberge.refinedstorage.container.ContainerGrid;
import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid;
import com.raoulvdberge.refinedstorage.tile.TileNode;
@@ -9,10 +10,14 @@ import com.raoulvdberge.refinedstorage.tile.data.ITileDataProducer;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.client.Minecraft;
import net.minecraft.network.datasync.DataSerializers;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.items.CapabilityItemHandler;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class TileGrid extends TileNode<NetworkNodeGrid> {
public static final TileDataParameter<Integer> VIEW_TYPE = new TileDataParameter<>(DataSerializers.VARINT, 0, new ITileDataProducer<Integer, TileGrid>() {
@@ -197,4 +202,18 @@ public class TileGrid extends TileNode<NetworkNodeGrid> {
public String getNodeId() {
return NetworkNodeGrid.ID;
}
@Override
public boolean hasCapability(@Nonnull Capability<?> capability, @Nullable EnumFacing side) {
return (getNode().getType() == GridType.PATTERN && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) || super.hasCapability(capability, side);
}
@Override
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing side) {
if (getNode().getType() == GridType.PATTERN && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getPatterns());
}
return super.getCapability(capability, side);
}
}