You can no longer put a Filter in filter slots to gain additional filter slots

This commit is contained in:
raoulvdberge
2018-05-26 14:14:36 +02:00
parent f7247f7daa
commit 8de9dc8838
4 changed files with 17 additions and 69 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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,18 +44,10 @@ 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)) {
if (!slot.isEmpty() && API.instance().getComparer().isEqual(slot, stack, compare)) {
return false;
}
}
} else if (API.instance().getComparer().isEqual(slot, stack, compare)) {
return false;
}
}
}
return true;
}