Fixed the Fluid filters so that they now work perfectly in the routing system.

This commit is contained in:
WayofTime 2018-04-29 09:57:29 -04:00
parent b20e1ac4d7
commit d29b91a106
4 changed files with 189 additions and 114 deletions

View file

@ -23,10 +23,12 @@ import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider, IVariantProvider {
public static String[] names = {"exact"};
public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider, IVariantProvider
{
public static String[] names = { "exact" };
public ItemFluidRouterFilter() {
public ItemFluidRouterFilter()
{
super();
setUnlocalizedName(BloodMagic.MODID + ".fluidFilter.");
@ -35,13 +37,15 @@ public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider,
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(CreativeTabs creativeTab, NonNullList<ItemStack> list) {
public void getSubItems(CreativeTabs creativeTab, NonNullList<ItemStack> list)
{
if (!isInCreativeTab(creativeTab))
return;
@ -51,35 +55,39 @@ public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider,
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag)
{
tooltip.add(TextHelper.localize("tooltip.bloodmagic.fluidFilter." + names[stack.getItemDamage()]));
super.addInformation(stack, world, tooltip, flag);
}
@Override
public IFluidFilter getInputFluidFilter(ItemStack filterStack, TileEntity tile, IFluidHandler handler) {
public IFluidFilter getInputFluidFilter(ItemStack filterStack, TileEntity tile, IFluidHandler handler)
{
IFluidFilter testFilter;
switch (filterStack.getMetadata()) {
case 0:
testFilter = new RoutingFluidFilter();
break;
switch (filterStack.getMetadata())
{
case 0:
testFilter = new RoutingFluidFilter();
break;
default:
testFilter = new RoutingFluidFilter();
default:
testFilter = new RoutingFluidFilter();
}
List<ItemStack> filteredList = new ArrayList<>();
ItemInventory inv = new ItemInventory(filterStack, 9, "");
for (int i = 0; i < inv.getSizeInventory(); i++) {
for (int i = 0; i < inv.getSizeInventory(); i++)
{
ItemStack stack = inv.getStackInSlot(i);
if (stack == null) {
if (stack.isEmpty())
{
continue;
}
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
filteredList.add(ghostStack);
}
@ -88,27 +96,32 @@ public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider,
}
@Override
public IFluidFilter getOutputFluidFilter(ItemStack filterStack, TileEntity tile, IFluidHandler handler) {
public IFluidFilter getOutputFluidFilter(ItemStack filterStack, TileEntity tile, IFluidHandler handler)
{
IFluidFilter testFilter;
switch (filterStack.getMetadata()) {
case 0:
testFilter = new RoutingFluidFilter();
break;
switch (filterStack.getMetadata())
{
case 0:
testFilter = new RoutingFluidFilter();
break;
default:
testFilter = new RoutingFluidFilter();
default:
testFilter = new RoutingFluidFilter();
}
List<ItemStack> filteredList = new ArrayList<>();
ItemInventory inv = new ItemInventory(filterStack, 9, ""); //TODO: Change to grab the filter from the Item later.
for (int i = 0; i < inv.getSizeInventory(); i++) {
for (int i = 0; i < inv.getSizeInventory(); i++)
{
ItemStack stack = inv.getStackInSlot(i);
if (stack.isEmpty()) {
if (stack.isEmpty())
{
continue;
}
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
if (ghostStack.isEmpty()) {
if (ghostStack.isEmpty())
{
ghostStack.setCount(Integer.MAX_VALUE);
}
@ -120,12 +133,14 @@ public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider,
}
@Override
public void gatherVariants(@Nonnull Int2ObjectMap<String> variants) {
public void gatherVariants(@Nonnull Int2ObjectMap<String> variants)
{
variants.put(0, "type=exact");
}
@Override
public ItemStack getContainedStackForItem(ItemStack filterStack, ItemStack keyStack) {
public ItemStack getContainedStackForItem(ItemStack filterStack, ItemStack keyStack)
{
ItemStack copyStack = keyStack.copy();
GhostItemHelper.setItemGhostAmount(copyStack, 0);
copyStack.setCount(1);

View file

@ -22,10 +22,12 @@ import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
public class ItemRouterFilter extends Item implements IItemFilterProvider, IVariantProvider {
public static String[] names = {"exact", "ignoreNBT", "modItems", "oreDict"};
public class ItemRouterFilter extends Item implements IItemFilterProvider, IVariantProvider
{
public static String[] names = { "exact", "ignoreNBT", "modItems", "oreDict" };
public ItemRouterFilter() {
public ItemRouterFilter()
{
super();
setUnlocalizedName(BloodMagic.MODID + ".itemFilter.");
@ -34,13 +36,15 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari
}
@Override
public String getUnlocalizedName(ItemStack stack) {
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(CreativeTabs creativeTab, NonNullList<ItemStack> list) {
public void getSubItems(CreativeTabs creativeTab, NonNullList<ItemStack> list)
{
if (!isInCreativeTab(creativeTab))
return;
@ -50,39 +54,44 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag) {
public void addInformation(ItemStack stack, World world, List<String> tooltip, ITooltipFlag flag)
{
tooltip.add(TextHelper.localize("tooltip.bloodmagic.itemFilter." + names[stack.getItemDamage()]));
super.addInformation(stack, world, tooltip, flag);
}
@Override
public IItemFilter getInputItemFilter(ItemStack filterStack, TileEntity tile, IItemHandler handler) {
public IItemFilter getInputItemFilter(ItemStack filterStack, TileEntity tile, IItemHandler handler)
{
IItemFilter testFilter = new TestItemFilter();
switch (filterStack.getMetadata()) {
case 0:
testFilter = new TestItemFilter();
break;
case 1:
testFilter = new IgnoreNBTItemFilter();
break;
case 2:
testFilter = new ModIdItemFilter();
break;
case 3:
testFilter = new OreDictItemFilter();
break;
switch (filterStack.getMetadata())
{
case 0:
testFilter = new TestItemFilter();
break;
case 1:
testFilter = new IgnoreNBTItemFilter();
break;
case 2:
testFilter = new ModIdItemFilter();
break;
case 3:
testFilter = new OreDictItemFilter();
break;
default:
testFilter = new DefaultItemFilter();
default:
testFilter = new DefaultItemFilter();
}
List<ItemStack> filteredList = new ArrayList<>();
ItemInventory inv = new ItemInventory(filterStack, 9, "");
for (int i = 0; i < inv.getSizeInventory(); i++) {
for (int i = 0; i < inv.getSizeInventory(); i++)
{
ItemStack stack = inv.getStackInSlot(i);
if (stack == null) {
if (stack.isEmpty())
{
continue;
}
@ -96,37 +105,42 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari
}
@Override
public IItemFilter getOutputItemFilter(ItemStack filterStack, TileEntity tile, IItemHandler handler) {
public IItemFilter getOutputItemFilter(ItemStack filterStack, TileEntity tile, IItemHandler handler)
{
IItemFilter testFilter;
switch (filterStack.getMetadata()) {
case 0:
testFilter = new TestItemFilter();
break;
case 1:
testFilter = new IgnoreNBTItemFilter();
break;
case 2:
testFilter = new ModIdItemFilter();
break;
case 3:
testFilter = new OreDictItemFilter();
break;
switch (filterStack.getMetadata())
{
case 0:
testFilter = new TestItemFilter();
break;
case 1:
testFilter = new IgnoreNBTItemFilter();
break;
case 2:
testFilter = new ModIdItemFilter();
break;
case 3:
testFilter = new OreDictItemFilter();
break;
default:
testFilter = new DefaultItemFilter();
default:
testFilter = new DefaultItemFilter();
}
List<ItemStack> filteredList = new ArrayList<>();
ItemInventory inv = new ItemInventory(filterStack, 9, ""); //TODO: Change to grab the filter from the Item later.
for (int i = 0; i < inv.getSizeInventory(); i++) {
for (int i = 0; i < inv.getSizeInventory(); i++)
{
ItemStack stack = inv.getStackInSlot(i);
if (stack == null) {
if (stack.isEmpty())
{
continue;
}
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
if (ghostStack.isEmpty()) {
if (ghostStack.isEmpty())
{
ghostStack.setCount(Integer.MAX_VALUE);
}
@ -138,7 +152,8 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari
}
@Override
public void gatherVariants(@Nonnull Int2ObjectMap<String> variants) {
public void gatherVariants(@Nonnull Int2ObjectMap<String> variants)
{
variants.put(0, "type=exact");
variants.put(1, "type=ignorenbt");
variants.put(2, "type=moditems");
@ -146,7 +161,8 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari
}
@Override
public ItemStack getContainedStackForItem(ItemStack filterStack, ItemStack keyStack) {
public ItemStack getContainedStackForItem(ItemStack filterStack, ItemStack keyStack)
{
ItemStack copyStack = keyStack.copy();
GhostItemHelper.setItemGhostAmount(copyStack, 0);
copyStack.setCount(1);