Added multiple router filters and made sure that they are able to work properly. Textures and localization completed. Added a recipe for a consumable "frame" - more of these gating materials to be added.
This commit is contained in:
parent
6c91865c5e
commit
b8079bb509
19 changed files with 202 additions and 7 deletions
|
@ -37,6 +37,7 @@ public class DefaultItemFilter implements IItemFilter
|
|||
* initialized as an output filter. If false, it should be
|
||||
* initialized as an input filter.
|
||||
*/
|
||||
@Override
|
||||
public void initializeFilter(List<ItemStack> filteredList, IInventory inventory, EnumFacing side, boolean isFilterOutput)
|
||||
{
|
||||
accessedInventory = inventory;
|
||||
|
@ -53,6 +54,7 @@ public class DefaultItemFilter implements IItemFilter
|
|||
* @return - The remainder of the stack after it has been absorbed into the
|
||||
* inventory.
|
||||
*/
|
||||
@Override
|
||||
public ItemStack transferStackThroughOutputFilter(ItemStack inputStack)
|
||||
{
|
||||
int allowedAmount = inputStack.stackSize; //This is done to make the migration to a maximum amount transfered a lot easier
|
||||
|
@ -77,6 +79,7 @@ public class DefaultItemFilter implements IItemFilter
|
|||
* This method is only called on an input filter to transfer ItemStacks from
|
||||
* the input inventory to the output inventory.
|
||||
*/
|
||||
@Override
|
||||
public void transferThroughInputFilter(IItemFilter outputFilter, int maxTransfer)
|
||||
{
|
||||
boolean[] canAccessSlot = new boolean[accessedInventory.getSizeInventory()];
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package WayofTime.bloodmagic.routing;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class IgnoreNBTItemFilter extends TestItemFilter
|
||||
{
|
||||
@Override
|
||||
public boolean doesStackMatchFilter(ItemStack testStack)
|
||||
{
|
||||
for (ItemStack filterStack : requestList)
|
||||
{
|
||||
if (doStacksMatch(filterStack, testStack))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doStacksMatch(ItemStack filterStack, ItemStack testStack)
|
||||
{
|
||||
return filterStack != null && testStack != null && filterStack.getItem() == testStack.getItem() && filterStack.getMetadata() == testStack.getMetadata();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package WayofTime.bloodmagic.routing;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.common.registry.GameData;
|
||||
|
||||
public class ModIdItemFilter extends TestItemFilter
|
||||
{
|
||||
@Override
|
||||
public boolean doStacksMatch(ItemStack filterStack, ItemStack testStack)
|
||||
{
|
||||
if (filterStack != null && testStack != null && filterStack.getItem() != null && testStack.getItem() != null)
|
||||
{
|
||||
String keyId = getModID(filterStack.getItem());
|
||||
String checkedId = getModID(testStack.getItem());
|
||||
return keyId.equals(checkedId);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getModID(Item itm)
|
||||
{
|
||||
ResourceLocation resource = GameData.getItemRegistry().getNameForObject(itm);
|
||||
return resource.getResourceDomain();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package WayofTime.bloodmagic.routing;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class OreDictItemFilter extends TestItemFilter
|
||||
{
|
||||
@Override
|
||||
public boolean doesStackMatchFilter(ItemStack testStack)
|
||||
{
|
||||
for (ItemStack filterStack : requestList)
|
||||
{
|
||||
if (doStacksMatch(filterStack, testStack))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doStacksMatch(ItemStack filterStack, ItemStack testStack)
|
||||
{
|
||||
int[] filterIds = OreDictionary.getOreIDs(filterStack);
|
||||
int[] testIds = OreDictionary.getOreIDs(testStack);
|
||||
|
||||
if (filterIds.length <= 0 || testIds.length <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int filterId : filterIds)
|
||||
{
|
||||
for (int testId : testIds)
|
||||
{
|
||||
if (filterId == testId)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -25,9 +25,9 @@ public class TestItemFilter implements IItemFilter
|
|||
* inserted in the inventory to finish its request. For the case of an input
|
||||
* filter, it keeps track of how many can be removed.
|
||||
*/
|
||||
private List<ItemStack> requestList;
|
||||
private IInventory accessedInventory;
|
||||
private EnumFacing accessedSide;
|
||||
protected List<ItemStack> requestList;
|
||||
protected IInventory accessedInventory;
|
||||
protected EnumFacing accessedSide;
|
||||
|
||||
/**
|
||||
* Initializes the filter so that it knows what it wants to fulfill.
|
||||
|
@ -45,6 +45,7 @@ public class TestItemFilter implements IItemFilter
|
|||
* initialized as an output filter. If false, it should be
|
||||
* initialized as an input filter.
|
||||
*/
|
||||
@Override
|
||||
public void initializeFilter(List<ItemStack> filteredList, IInventory inventory, EnumFacing side, boolean isFilterOutput)
|
||||
{
|
||||
this.accessedInventory = inventory;
|
||||
|
@ -166,6 +167,7 @@ public class TestItemFilter implements IItemFilter
|
|||
* @return - The remainder of the stack after it has been absorbed into the
|
||||
* inventory.
|
||||
*/
|
||||
@Override
|
||||
public ItemStack transferStackThroughOutputFilter(ItemStack inputStack)
|
||||
{
|
||||
int allowedAmount = 0;
|
||||
|
@ -212,6 +214,7 @@ public class TestItemFilter implements IItemFilter
|
|||
* This method is only called on an input filter to transfer ItemStacks from
|
||||
* the input inventory to the output inventory.
|
||||
*/
|
||||
@Override
|
||||
public void transferThroughInputFilter(IItemFilter outputFilter, int maxTransfer)
|
||||
{
|
||||
boolean[] canAccessSlot = new boolean[accessedInventory.getSizeInventory()];
|
||||
|
@ -290,6 +293,7 @@ public class TestItemFilter implements IItemFilter
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesStackMatchFilter(ItemStack testStack)
|
||||
{
|
||||
for (ItemStack filterStack : requestList)
|
||||
|
@ -303,6 +307,7 @@ public class TestItemFilter implements IItemFilter
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doStacksMatch(ItemStack filterStack, ItemStack testStack)
|
||||
{
|
||||
return Utils.canCombine(filterStack, testStack);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue