You can no longer put a Filter in filter slots to gain additional filter slots
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
- Removed MCMultiPart integration (raoulvdberge)
|
||||
- Removed Project E integration (raoulvdberge)
|
||||
- Removed Storage Drawers integration (you can still attach an External Storage to drawers, though) (raoulvdberge)
|
||||
- You can no longer put a Filter in filter slots to gain additional filter slots (raoulvdberge)
|
||||
- Updated Russian translation (kellixon)
|
||||
|
||||
### 1.5.34
|
||||
|
@@ -1,13 +1,11 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemFilter;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -60,14 +58,20 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
ItemStack slot = itemFilters.getStackInSlot(i);
|
||||
|
||||
if (!slot.isEmpty()) {
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotInFilter.isEmpty()) {
|
||||
doExport(handler, slotInFilter);
|
||||
}
|
||||
int stackSize = upgrades.getItemInteractCount();
|
||||
|
||||
ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, true);
|
||||
|
||||
if (took == null) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
network.getCraftingManager().schedule(slot, stackSize, compare);
|
||||
}
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, false);
|
||||
|
||||
if (took != null) {
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
} else {
|
||||
doExport(handler, slot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -104,24 +108,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
}
|
||||
}
|
||||
|
||||
private void doExport(IItemHandler handler, ItemStack slot) {
|
||||
int stackSize = upgrades.getItemInteractCount();
|
||||
|
||||
ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, true);
|
||||
|
||||
if (took == null) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
network.getCraftingManager().schedule(slot, stackSize, compare);
|
||||
}
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, false);
|
||||
|
||||
if (took != null) {
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
@@ -205,14 +191,6 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
markDirty();
|
||||
}
|
||||
|
||||
public ItemHandlerBase getItemFilters() {
|
||||
return itemFilters;
|
||||
}
|
||||
|
||||
public ItemHandlerFluid getFluidFilters() {
|
||||
return fluidFilters;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemHandler getFilterInventory() {
|
||||
return getType() == IType.ITEMS ? itemFilters : fluidFilters;
|
||||
|
@@ -14,14 +14,11 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.NonNullList;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ItemFilter extends ItemBase {
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -30,24 +27,12 @@ public class ItemFilter extends ItemBase {
|
||||
private static final String NBT_NAME = "Name";
|
||||
private static final String NBT_ICON = "Icon";
|
||||
|
||||
private static Map<ItemStack, NonNullList<ItemStack>> FILTER_CACHE = new HashMap<>();
|
||||
|
||||
public ItemFilter() {
|
||||
super("filter");
|
||||
|
||||
setMaxStackSize(1);
|
||||
}
|
||||
|
||||
public static NonNullList<ItemStack> getFilterItemsFromCache(ItemStack stack) {
|
||||
if (!FILTER_CACHE.containsKey(stack)) {
|
||||
ItemHandlerFilterItems items = new ItemHandlerFilterItems(stack);
|
||||
|
||||
FILTER_CACHE.put(stack, items.getFilteredItems());
|
||||
}
|
||||
|
||||
return FILTER_CACHE.get(stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand hand) {
|
||||
ItemStack stack = player.getHeldItem(hand);
|
||||
|
@@ -1,10 +1,8 @@
|
||||
package com.raoulvdberge.refinedstorage.tile.config;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemFilter;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
@@ -35,13 +33,7 @@ public interface IFilterable {
|
||||
if (!slot.isEmpty()) {
|
||||
slots++;
|
||||
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotInFilter.isEmpty() && API.instance().getComparer().isEqual(slotInFilter, stack, compare)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -52,16 +44,8 @@ public interface IFilterable {
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (!slot.isEmpty()) {
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotInFilter.isEmpty() && API.instance().getComparer().isEqual(slotInFilter, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
if (!slot.isEmpty() && API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user