diff --git a/src/main/java/com/refinedmods/refinedstorage/api/util/IFilter.java b/src/main/java/com/refinedmods/refinedstorage/api/util/IFilter.java index 5fd25109f..2dfec766a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/api/util/IFilter.java +++ b/src/main/java/com/refinedmods/refinedstorage/api/util/IFilter.java @@ -3,14 +3,14 @@ package com.refinedmods.refinedstorage.api.util; /** * A filter. */ -public interface IFilter { +public interface IFilter { int MODE_WHITELIST = 0; int MODE_BLACKLIST = 1; /** * @return the stack being filtered */ - T getStack(); + Object getStack(); /** * @return the compare flags, see {@link IComparer} diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/FluidFilter.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/FluidFilter.java index 41cb95124..7b0478e7c 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/FluidFilter.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/FluidFilter.java @@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.apiimpl.util; import com.refinedmods.refinedstorage.api.util.IFilter; import net.minecraftforge.fluids.FluidStack; -public class FluidFilter implements IFilter { +public class FluidFilter implements IFilter { private final FluidStack stack; private final int compare; private final int mode; @@ -17,7 +17,7 @@ public class FluidFilter implements IFilter { } @Override - public FluidStack getStack() { + public Object getStack() { return stack; } diff --git a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/ItemFilter.java b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/ItemFilter.java index 578b85650..f7f28ade6 100644 --- a/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/ItemFilter.java +++ b/src/main/java/com/refinedmods/refinedstorage/apiimpl/util/ItemFilter.java @@ -3,7 +3,7 @@ package com.refinedmods.refinedstorage.apiimpl.util; import com.refinedmods.refinedstorage.api.util.IFilter; import net.minecraft.item.ItemStack; -public class ItemFilter implements IFilter { +public class ItemFilter implements IFilter { private final ItemStack stack; private final int compare; private final int mode; @@ -17,7 +17,7 @@ public class ItemFilter implements IFilter { } @Override - public ItemStack getStack() { + public Object getStack() { return stack; } diff --git a/src/main/java/com/refinedmods/refinedstorage/container/FilterContainer.java b/src/main/java/com/refinedmods/refinedstorage/container/FilterContainer.java index 9dd600526..ff871e837 100644 --- a/src/main/java/com/refinedmods/refinedstorage/container/FilterContainer.java +++ b/src/main/java/com/refinedmods/refinedstorage/container/FilterContainer.java @@ -3,33 +3,33 @@ package com.refinedmods.refinedstorage.container; import com.refinedmods.refinedstorage.RSContainers; import com.refinedmods.refinedstorage.container.slot.filter.FilterSlot; import com.refinedmods.refinedstorage.container.slot.filter.FluidFilterSlot; -import com.refinedmods.refinedstorage.inventory.fluid.FilterFluidInventory; -import com.refinedmods.refinedstorage.inventory.fluid.FilterIconFluidInventory; +import com.refinedmods.refinedstorage.inventory.fluid.ConfiguredFluidsInFilterItemHandler; +import com.refinedmods.refinedstorage.inventory.fluid.ConfiguredIconInFluidFilterItemHandler; import com.refinedmods.refinedstorage.inventory.fluid.FluidInventory; -import com.refinedmods.refinedstorage.inventory.item.FilterIconItemHandler; -import com.refinedmods.refinedstorage.inventory.item.FilterItemsItemHandler; +import com.refinedmods.refinedstorage.inventory.item.ConfiguredIconInFilterItemHandler; +import com.refinedmods.refinedstorage.inventory.item.ConfiguredItemsInFilterItemHandler; import com.refinedmods.refinedstorage.item.FilterItem; import com.refinedmods.refinedstorage.tile.config.IType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; public class FilterContainer extends BaseContainer { - private final ItemStack stack; + private final ItemStack filterItem; - public FilterContainer(PlayerEntity player, ItemStack stack, int windowId) { + public FilterContainer(PlayerEntity player, ItemStack filterItem, int windowId) { super(RSContainers.FILTER, null, player, windowId); - this.stack = stack; + this.filterItem = filterItem; int y = 20; int x = 8; - FilterItemsItemHandler filter = new FilterItemsItemHandler(stack); - FluidInventory fluidFilter = new FilterFluidInventory(stack); + ConfiguredItemsInFilterItemHandler filter = new ConfiguredItemsInFilterItemHandler(filterItem); + FluidInventory fluidFilter = new ConfiguredFluidsInFilterItemHandler(filterItem); for (int i = 0; i < 27; ++i) { - addSlot(new FilterSlot(filter, i, x, y).setEnableHandler(() -> FilterItem.getType(stack) == IType.ITEMS)); - addSlot(new FluidFilterSlot(fluidFilter, i, x, y).setEnableHandler(() -> FilterItem.getType(stack) == IType.FLUIDS)); + addSlot(new FilterSlot(filter, i, x, y).setEnableHandler(() -> FilterItem.getType(filterItem) == IType.ITEMS)); + addSlot(new FluidFilterSlot(fluidFilter, i, x, y).setEnableHandler(() -> FilterItem.getType(filterItem) == IType.FLUIDS)); if ((i + 1) % 9 == 0) { x = 8; @@ -39,16 +39,16 @@ public class FilterContainer extends BaseContainer { } } - addSlot(new FilterSlot(new FilterIconItemHandler(stack), 0, 8, 117).setEnableHandler(() -> FilterItem.getType(stack) == IType.ITEMS)); - addSlot(new FluidFilterSlot(new FilterIconFluidInventory(stack), 0, 8, 117).setEnableHandler(() -> FilterItem.getType(stack) == IType.FLUIDS)); + addSlot(new FilterSlot(new ConfiguredIconInFilterItemHandler(filterItem), 0, 8, 117).setEnableHandler(() -> FilterItem.getType(filterItem) == IType.ITEMS)); + addSlot(new FluidFilterSlot(new ConfiguredIconInFluidFilterItemHandler(filterItem), 0, 8, 117).setEnableHandler(() -> FilterItem.getType(filterItem) == IType.FLUIDS)); addPlayerInventory(8, 149); - transferManager.addFilterTransfer(player.inventory, filter, fluidFilter, () -> FilterItem.getType(stack)); + transferManager.addFilterTransfer(player.inventory, filter, fluidFilter, () -> FilterItem.getType(filterItem)); } - public ItemStack getStack() { - return stack; + public ItemStack getFilterItem() { + return filterItem; } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterFluidInventory.java b/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredFluidsInFilterItemHandler.java similarity index 83% rename from src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterFluidInventory.java rename to src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredFluidsInFilterItemHandler.java index cd29b0d04..6b5c9020e 100644 --- a/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterFluidInventory.java +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredFluidsInFilterItemHandler.java @@ -6,8 +6,8 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.NonNullList; import net.minecraftforge.fluids.FluidStack; -public class FilterFluidInventory extends FluidInventory { - public FilterFluidInventory(ItemStack stack) { +public class ConfiguredFluidsInFilterItemHandler extends FluidInventory { + public ConfiguredFluidsInFilterItemHandler(ItemStack stack) { super(27, Integer.MAX_VALUE); this.addListener((handler, slot, reading) -> { @@ -23,7 +23,7 @@ public class FilterFluidInventory extends FluidInventory { } } - public NonNullList getFilteredFluids() { + public NonNullList getConfiguredFluids() { NonNullList list = NonNullList.create(); for (FluidStack fluid : this.getFluids()) { diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterIconFluidInventory.java b/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredIconInFluidFilterItemHandler.java similarity index 81% rename from src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterIconFluidInventory.java rename to src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredIconInFluidFilterItemHandler.java index f68f88dd1..c5e86573a 100644 --- a/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/FilterIconFluidInventory.java +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/fluid/ConfiguredIconInFluidFilterItemHandler.java @@ -5,8 +5,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraftforge.fluids.FluidStack; -public class FilterIconFluidInventory extends FluidInventory { - public FilterIconFluidInventory(ItemStack stack) { +public class ConfiguredIconInFluidFilterItemHandler extends FluidInventory { + public ConfiguredIconInFluidFilterItemHandler(ItemStack stack) { super(1, Integer.MAX_VALUE); this.addListener((handler, slot, reading) -> { diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredIconInFilterItemHandler.java b/src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredIconInFilterItemHandler.java new file mode 100644 index 000000000..3a5ba7693 --- /dev/null +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredIconInFilterItemHandler.java @@ -0,0 +1,24 @@ +package com.refinedmods.refinedstorage.inventory.item; + +import com.refinedmods.refinedstorage.item.FilterItem; +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.ItemStackHandler; + +public class ConfiguredIconInFilterItemHandler extends ItemStackHandler { + private final ItemStack filterItem; + + public ConfiguredIconInFilterItemHandler(ItemStack filterItem) { + super(1); + + this.filterItem = filterItem; + + setStackInSlot(0, FilterItem.getIcon(filterItem)); + } + + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + FilterItem.setIcon(filterItem, getStackInSlot(0)); + } +} diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemsItemHandler.java b/src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredItemsInFilterItemHandler.java similarity index 79% rename from src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemsItemHandler.java rename to src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredItemsInFilterItemHandler.java index 7a659b577..e6f7da646 100644 --- a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemsItemHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/item/ConfiguredItemsInFilterItemHandler.java @@ -6,10 +6,10 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.NonNullList; import net.minecraftforge.items.ItemStackHandler; -public class FilterItemsItemHandler extends ItemStackHandler { +public class ConfiguredItemsInFilterItemHandler extends ItemStackHandler { private final ItemStack stack; - public FilterItemsItemHandler(ItemStack stack) { + public ConfiguredItemsInFilterItemHandler(ItemStack stack) { super(27); this.stack = stack; @@ -30,7 +30,7 @@ public class FilterItemsItemHandler extends ItemStackHandler { StackUtils.writeItems(this, 0, stack.getTag()); } - public NonNullList getFilteredItems() { + public NonNullList getConfiguredItems() { return stacks; } } diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterIconItemHandler.java b/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterIconItemHandler.java deleted file mode 100644 index 3f5299460..000000000 --- a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterIconItemHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.refinedmods.refinedstorage.inventory.item; - -import com.refinedmods.refinedstorage.item.FilterItem; -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.ItemStackHandler; - -public class FilterIconItemHandler extends ItemStackHandler { - private final ItemStack stack; - - public FilterIconItemHandler(ItemStack stack) { - super(1); - - this.stack = stack; - - setStackInSlot(0, FilterItem.getIcon(stack)); - } - - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - - FilterItem.setIcon(stack, getStackInSlot(0)); - } -} diff --git a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemHandler.java b/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemHandler.java index c324b1ac5..b59cce4bd 100644 --- a/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/inventory/item/FilterItemHandler.java @@ -6,7 +6,7 @@ import com.refinedmods.refinedstorage.api.util.IFilter; import com.refinedmods.refinedstorage.apiimpl.network.grid.GridTab; import com.refinedmods.refinedstorage.apiimpl.util.FluidFilter; import com.refinedmods.refinedstorage.apiimpl.util.ItemFilter; -import com.refinedmods.refinedstorage.inventory.fluid.FilterFluidInventory; +import com.refinedmods.refinedstorage.inventory.fluid.ConfiguredFluidsInFilterItemHandler; import com.refinedmods.refinedstorage.inventory.item.validator.ItemValidator; import com.refinedmods.refinedstorage.item.FilterItem; import com.refinedmods.refinedstorage.screen.BaseScreen; @@ -40,10 +40,9 @@ public class FilterItemHandler extends BaseItemHandler { tabs.clear(); for (int i = 0; i < getSlots(); ++i) { - ItemStack filter = getStackInSlot(i); - - if (!filter.isEmpty()) { - addFilter(filter); + ItemStack filterItem = getStackInSlot(i); + if (!filterItem.isEmpty()) { + handleFilterItem(filterItem); } } @@ -52,36 +51,31 @@ public class FilterItemHandler extends BaseItemHandler { } } - private void addFilter(ItemStack filter) { - int compare = FilterItem.getCompare(filter); - int mode = FilterItem.getMode(filter); - boolean modFilter = FilterItem.isModFilter(filter); + private void handleFilterItem(ItemStack filterItem) { + ItemStack icon = FilterItem.getIcon(filterItem); + FluidStack fluidIcon = FilterItem.getFluidIcon(filterItem); + int compare = FilterItem.getCompare(filterItem); + int mode = FilterItem.getMode(filterItem); + boolean modFilter = FilterItem.isModFilter(filterItem); - List filters = new ArrayList<>(); + List foundFilters = new ArrayList<>(); - FilterItemsItemHandler items = new FilterItemsItemHandler(filter); - - for (ItemStack stack : items.getFilteredItems()) { + for (ItemStack stack : new ConfiguredItemsInFilterItemHandler(filterItem).getConfiguredItems()) { if (stack.getItem() == RSItems.FILTER.get()) { - addFilter(stack); + handleFilterItem(stack); } else if (!stack.isEmpty()) { - filters.add(new ItemFilter(stack, compare, mode, modFilter)); + foundFilters.add(new ItemFilter(stack, compare, mode, modFilter)); } } - FilterFluidInventory fluids = new FilterFluidInventory(filter); - - for (FluidStack stack : fluids.getFilteredFluids()) { - filters.add(new FluidFilter(stack, compare, mode, modFilter)); + for (FluidStack stack : new ConfiguredFluidsInFilterItemHandler(filterItem).getConfiguredFluids()) { + foundFilters.add(new FluidFilter(stack, compare, mode, modFilter)); } - ItemStack icon = FilterItem.getIcon(filter); - FluidStack fluidIcon = FilterItem.getFluidIcon(filter); - if (icon.isEmpty() && fluidIcon.isEmpty()) { - this.filters.addAll(filters); + filters.addAll(foundFilters); } else { - tabs.add(new GridTab(filters, FilterItem.getName(filter), icon, fluidIcon)); + tabs.add(new GridTab(foundFilters, FilterItem.getName(filterItem), icon, fluidIcon)); } } } diff --git a/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java b/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java index 49df50716..e352d6d23 100644 --- a/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java +++ b/src/main/java/com/refinedmods/refinedstorage/item/FilterItem.java @@ -5,8 +5,8 @@ import com.refinedmods.refinedstorage.RSItems; import com.refinedmods.refinedstorage.api.util.IComparer; import com.refinedmods.refinedstorage.api.util.IFilter; import com.refinedmods.refinedstorage.container.FilterContainer; -import com.refinedmods.refinedstorage.inventory.fluid.FilterFluidInventory; -import com.refinedmods.refinedstorage.inventory.item.FilterItemsItemHandler; +import com.refinedmods.refinedstorage.inventory.fluid.ConfiguredFluidsInFilterItemHandler; +import com.refinedmods.refinedstorage.inventory.item.ConfiguredItemsInFilterItemHandler; import com.refinedmods.refinedstorage.render.Styles; import com.refinedmods.refinedstorage.tile.config.IType; import com.refinedmods.refinedstorage.util.RenderUtils; @@ -82,13 +82,8 @@ public class FilterItem extends Item { tooltip.add(new TranslationTextComponent("gui.refinedstorage.filter.mod_filter").setStyle(Styles.BLUE)); } - FilterItemsItemHandler items = new FilterItemsItemHandler(stack); - - RenderUtils.addCombinedItemsToTooltip(tooltip, false, items.getFilteredItems()); - - FilterFluidInventory fluids = new FilterFluidInventory(stack); - - RenderUtils.addCombinedFluidsToTooltip(tooltip, false, fluids.getFilteredFluids()); + RenderUtils.addCombinedItemsToTooltip(tooltip, false, new ConfiguredItemsInFilterItemHandler(stack).getConfiguredItems()); + RenderUtils.addCombinedFluidsToTooltip(tooltip, false, new ConfiguredFluidsInFilterItemHandler(stack).getConfiguredFluids()); } @Override diff --git a/src/main/java/com/refinedmods/refinedstorage/network/FilterUpdateMessage.java b/src/main/java/com/refinedmods/refinedstorage/network/FilterUpdateMessage.java index bb51b2ee4..efbd3ee10 100644 --- a/src/main/java/com/refinedmods/refinedstorage/network/FilterUpdateMessage.java +++ b/src/main/java/com/refinedmods/refinedstorage/network/FilterUpdateMessage.java @@ -47,11 +47,11 @@ public class FilterUpdateMessage { if (player != null && player.openContainer instanceof FilterContainer) { ctx.get().enqueueWork(() -> { - FilterItem.setCompare(((FilterContainer) player.openContainer).getStack(), message.compare); - FilterItem.setMode(((FilterContainer) player.openContainer).getStack(), message.mode); - FilterItem.setModFilter(((FilterContainer) player.openContainer).getStack(), message.modFilter); - FilterItem.setName(((FilterContainer) player.openContainer).getStack(), message.name); - FilterItem.setType(((FilterContainer) player.openContainer).getStack(), message.type); + FilterItem.setCompare(((FilterContainer) player.openContainer).getFilterItem(), message.compare); + FilterItem.setMode(((FilterContainer) player.openContainer).getFilterItem(), message.mode); + FilterItem.setModFilter(((FilterContainer) player.openContainer).getFilterItem(), message.modFilter); + FilterItem.setName(((FilterContainer) player.openContainer).getFilterItem(), message.name); + FilterItem.setType(((FilterContainer) player.openContainer).getFilterItem(), message.type); }); } diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java index 226027e0c..950adfc71 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/FilterScreen.java @@ -36,13 +36,13 @@ public class FilterScreen extends BaseScreen { public FilterScreen(FilterContainer container, PlayerInventory inventory, ITextComponent title) { super(container, 176, 231, inventory, title); - this.stack = container.getStack(); + this.stack = container.getFilterItem(); - this.compare = FilterItem.getCompare(container.getStack()); - this.mode = FilterItem.getMode(container.getStack()); - this.modFilter = FilterItem.isModFilter(container.getStack()); - this.name = FilterItem.getName(container.getStack()); - this.type = FilterItem.getType(container.getStack()); + this.compare = FilterItem.getCompare(container.getFilterItem()); + this.mode = FilterItem.getMode(container.getFilterItem()); + this.modFilter = FilterItem.isModFilter(container.getFilterItem()); + this.name = FilterItem.getName(container.getFilterItem()); + this.type = FilterItem.getType(container.getFilterItem()); } @Override