Added routing filters as well as recipes and temp textures.
This commit is contained in:
parent
76dceb3534
commit
815faa2ced
|
@ -8,7 +8,7 @@ import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.tile.routing.TileOutputRoutingNode;
|
import WayofTime.bloodmagic.tile.routing.TileInputRoutingNode;
|
||||||
|
|
||||||
public class BlockInputRoutingNode extends BlockRoutingNode
|
public class BlockInputRoutingNode extends BlockRoutingNode
|
||||||
{
|
{
|
||||||
|
@ -28,18 +28,18 @@ public class BlockInputRoutingNode extends BlockRoutingNode
|
||||||
@Override
|
@Override
|
||||||
public TileEntity createNewTileEntity(World worldIn, int meta)
|
public TileEntity createNewTileEntity(World worldIn, int meta)
|
||||||
{
|
{
|
||||||
return new TileOutputRoutingNode();
|
return new TileInputRoutingNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//TODO: Combine BlockOutputRoutingNode and BlockInputRoutingNode so they have the same superclass
|
//TODO: Combine BlockInputRoutingNode and BlockInputRoutingNode so they have the same superclass
|
||||||
public void breakBlock(World world, BlockPos pos, IBlockState state)
|
public void breakBlock(World world, BlockPos pos, IBlockState state)
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if (tile instanceof TileOutputRoutingNode)
|
if (tile instanceof TileInputRoutingNode)
|
||||||
{
|
{
|
||||||
((TileOutputRoutingNode) tile).removeAllConnections();
|
((TileInputRoutingNode) tile).removeAllConnections();
|
||||||
((TileOutputRoutingNode) tile).dropItems();
|
((TileInputRoutingNode) tile).dropItems();
|
||||||
}
|
}
|
||||||
super.breakBlock(world, pos, state);
|
super.breakBlock(world, pos, state);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class BlockInputRoutingNode extends BlockRoutingNode
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
|
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ)
|
||||||
{
|
{
|
||||||
if (world.getTileEntity(pos) instanceof TileOutputRoutingNode)
|
if (world.getTileEntity(pos) instanceof TileInputRoutingNode)
|
||||||
{
|
{
|
||||||
player.openGui(BloodMagic.instance, Constants.Gui.ROUTING_NODE_GUI, world, pos.getX(), pos.getY(), pos.getZ());
|
player.openGui(BloodMagic.instance, Constants.Gui.ROUTING_NODE_GUI, world, pos.getX(), pos.getY(), pos.getZ());
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package WayofTime.bloodmagic.item.routing;
|
||||||
|
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import WayofTime.bloodmagic.routing.IItemFilter;
|
||||||
|
|
||||||
|
public interface IItemFilterProvider
|
||||||
|
{
|
||||||
|
public IItemFilter getInputItemFilter(ItemStack stack, IInventory inventory, EnumFacing syphonDirection);
|
||||||
|
|
||||||
|
public IItemFilter getOutputItemFilter(ItemStack stack, IInventory inventory, EnumFacing syphonDirection);
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
package WayofTime.bloodmagic.item.routing;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
|
import WayofTime.bloodmagic.item.inventory.ItemInventory;
|
||||||
|
import WayofTime.bloodmagic.routing.IItemFilter;
|
||||||
|
import WayofTime.bloodmagic.routing.TestItemFilter;
|
||||||
|
import WayofTime.bloodmagic.util.GhostItemHelper;
|
||||||
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
public class ItemRouterFilter extends Item implements IItemFilterProvider
|
||||||
|
{
|
||||||
|
public static String[] names = { "exact" };
|
||||||
|
|
||||||
|
public ItemRouterFilter()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
|
||||||
|
setUnlocalizedName(Constants.Mod.MODID + ".itemFilter.");
|
||||||
|
setHasSubtypes(true);
|
||||||
|
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnlocalizedName(ItemStack stack)
|
||||||
|
{
|
||||||
|
return super.getUnlocalizedName(stack) + names[stack.getItemDamage()];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void getSubItems(Item id, CreativeTabs creativeTab, List<ItemStack> list)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < names.length; i++)
|
||||||
|
list.add(new ItemStack(id, 1, i));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced)
|
||||||
|
{
|
||||||
|
tooltip.add(TextHelper.localize("tooltip.BloodMagic.itemFilter." + names[stack.getItemDamage()]));
|
||||||
|
|
||||||
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemFilter getInputItemFilter(ItemStack filterStack, IInventory inventory, EnumFacing syphonDirection)
|
||||||
|
{
|
||||||
|
IItemFilter testFilter = new TestItemFilter();
|
||||||
|
List<ItemStack> filteredList = new LinkedList<ItemStack>();
|
||||||
|
ItemInventory inv = new ItemInventory(filterStack, 9, "");
|
||||||
|
for (int i = 0; i < inv.getSizeInventory(); i++)
|
||||||
|
{
|
||||||
|
ItemStack stack = inv.getStackInSlot(i);
|
||||||
|
if (stack == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
|
||||||
|
if (ghostStack.stackSize == 0)
|
||||||
|
{
|
||||||
|
ghostStack.stackSize = Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
filteredList.add(ghostStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
testFilter.initializeFilter(filteredList, inventory, syphonDirection, false);
|
||||||
|
return testFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemFilter getOutputItemFilter(ItemStack filterStack, IInventory inventory, EnumFacing syphonDirection)
|
||||||
|
{
|
||||||
|
IItemFilter testFilter = new TestItemFilter();
|
||||||
|
List<ItemStack> filteredList = new LinkedList<ItemStack>();
|
||||||
|
ItemInventory inv = new ItemInventory(filterStack, 9, ""); //TODO: Change to grab the filter from the Item later.
|
||||||
|
for (int i = 0; i < inv.getSizeInventory(); i++)
|
||||||
|
{
|
||||||
|
ItemStack stack = inv.getStackInSlot(i);
|
||||||
|
if (stack == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
|
||||||
|
if (ghostStack.stackSize == 0)
|
||||||
|
{
|
||||||
|
ghostStack.stackSize = Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
filteredList.add(ghostStack);
|
||||||
|
}
|
||||||
|
|
||||||
|
testFilter.initializeFilter(filteredList, inventory, syphonDirection, true);
|
||||||
|
return testFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -33,6 +33,7 @@ import WayofTime.bloodmagic.item.armour.ItemSentientArmour;
|
||||||
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
||||||
import WayofTime.bloodmagic.item.gear.ItemPackSelfSacrifice;
|
import WayofTime.bloodmagic.item.gear.ItemPackSelfSacrifice;
|
||||||
import WayofTime.bloodmagic.item.routing.ItemNodeRouter;
|
import WayofTime.bloodmagic.item.routing.ItemNodeRouter;
|
||||||
|
import WayofTime.bloodmagic.item.routing.ItemRouterFilter;
|
||||||
import WayofTime.bloodmagic.item.sigil.ItemSigilAir;
|
import WayofTime.bloodmagic.item.sigil.ItemSigilAir;
|
||||||
import WayofTime.bloodmagic.item.sigil.ItemSigilBloodLight;
|
import WayofTime.bloodmagic.item.sigil.ItemSigilBloodLight;
|
||||||
import WayofTime.bloodmagic.item.sigil.ItemSigilCompression;
|
import WayofTime.bloodmagic.item.sigil.ItemSigilCompression;
|
||||||
|
@ -133,6 +134,7 @@ public class ModItems
|
||||||
public static Item sentientArmourGem;
|
public static Item sentientArmourGem;
|
||||||
|
|
||||||
public static Item nodeRouter;
|
public static Item nodeRouter;
|
||||||
|
public static Item baseItemFilter;
|
||||||
|
|
||||||
public static Item.ToolMaterial boundToolMaterial = EnumHelper.addToolMaterial("BoundToolMaterial", 4, 0, 10, 8, 50);
|
public static Item.ToolMaterial boundToolMaterial = EnumHelper.addToolMaterial("BoundToolMaterial", 4, 0, 10, 8, 50);
|
||||||
public static Item.ToolMaterial soulToolMaterial = EnumHelper.addToolMaterial("SoulToolMaterial", 4, 520, 7, 8, 50);
|
public static Item.ToolMaterial soulToolMaterial = EnumHelper.addToolMaterial("SoulToolMaterial", 4, 520, 7, 8, 50);
|
||||||
|
@ -220,6 +222,7 @@ public class ModItems
|
||||||
sentientArmourGem = registerItem(new ItemSentientArmourGem());
|
sentientArmourGem = registerItem(new ItemSentientArmourGem());
|
||||||
|
|
||||||
nodeRouter = registerItem(new ItemNodeRouter());
|
nodeRouter = registerItem(new ItemNodeRouter());
|
||||||
|
baseItemFilter = registerItem(new ItemRouterFilter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void initRenders()
|
public static void initRenders()
|
||||||
|
@ -306,6 +309,8 @@ public class ModItems
|
||||||
renderHelper.itemRender(itemComponent, i);
|
renderHelper.itemRender(itemComponent, i);
|
||||||
for (int i = 0; i < ItemTelepositionFocus.names.length; i++)
|
for (int i = 0; i < ItemTelepositionFocus.names.length; i++)
|
||||||
renderHelper.itemRender(telepositionFocus, i);
|
renderHelper.itemRender(telepositionFocus, i);
|
||||||
|
for (int i = 0; i < ItemRouterFilter.names.length; i++)
|
||||||
|
renderHelper.itemRender(baseItemFilter, i);
|
||||||
|
|
||||||
renderHelper.itemRender(bloodShard, 0);
|
renderHelper.itemRender(bloodShard, 0);
|
||||||
renderHelper.itemRender(bloodShard, 1);
|
renderHelper.itemRender(bloodShard, 1);
|
||||||
|
@ -341,6 +346,8 @@ public class ModItems
|
||||||
|
|
||||||
renderHelper.itemRender(sentientArmourGem, 0, "ItemSentientArmourGem0");
|
renderHelper.itemRender(sentientArmourGem, 0, "ItemSentientArmourGem0");
|
||||||
renderHelper.itemRender(sentientArmourGem, 1, "ItemSentientArmourGem1");
|
renderHelper.itemRender(sentientArmourGem, 1, "ItemSentientArmourGem1");
|
||||||
|
|
||||||
|
renderHelper.itemRender(nodeRouter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Item registerItem(Item item, String name)
|
private static Item registerItem(Item item, String name)
|
||||||
|
|
|
@ -157,7 +157,7 @@ public class ModRecipes
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.sentientSword), 0, 0, new ItemStack(ModItems.soulGem), new ItemStack(Items.iron_sword));
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.sentientSword), 0, 0, new ItemStack(ModItems.soulGem), new ItemStack(Items.iron_sword));
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.sentientBow), 70, 0, new ItemStack(Items.bow), new ItemStack(ModItems.soulGem, 1, 1), Items.string, Items.string);
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.sentientBow), 70, 0, new ItemStack(Items.bow), new ItemStack(ModItems.soulGem, 1, 1), Items.string, Items.string);
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.arcaneAshes), 0, 0, "dustRedstone", "dyeWhite", new ItemStack(Items.gunpowder), Items.coal);
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.arcaneAshes), 0, 0, "dustRedstone", "dyeWhite", new ItemStack(Items.gunpowder), Items.coal);
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER), 10, 3, "sugar", new ItemStack(Items.water_bucket), new ItemStack(Items.water_bucket));
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER), 10, 3, new ItemStack(Items.sugar), new ItemStack(Items.water_bucket), new ItemStack(Items.water_bucket));
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), 32, 10, Items.lava_bucket, "dustRedstone", "cobblestone", "blockCoal");
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), 32, 10, Items.lava_bucket, "dustRedstone", "cobblestone", "blockCoal");
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_VOID), 64, 10, Items.bucket, Items.string, Items.string, Items.gunpowder);
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_VOID), 64, 10, Items.bucket, Items.string, Items.string, Items.gunpowder);
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), 128, 20, "treeSapling", "treeSapling", Items.reeds, Items.sugar);
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), 128, 20, "treeSapling", "treeSapling", Items.reeds, Items.sugar);
|
||||||
|
@ -167,5 +167,12 @@ public class ModRecipes
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), 300, 30, ModItems.sigilWater, ModItems.sigilAir, ModItems.sigilLava, Blocks.obsidian);
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), 300, 30, ModItems.sigilWater, ModItems.sigilAir, ModItems.sigilLava, Blocks.obsidian);
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), 500, 50, ModBlocks.teleposer, Items.water_bucket, Items.lava_bucket, Items.blaze_rod);
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), 500, 50, ModBlocks.teleposer, Items.water_bucket, Items.lava_bucket, Items.blaze_rod);
|
||||||
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.gunpowder);
|
TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.gunpowder);
|
||||||
|
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.baseItemFilter), 400, 10, new ItemStack(Blocks.glass), new ItemStack(Blocks.cobblestone), new ItemStack(ModItems.slate));
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModItems.nodeRouter), 400, 5, Items.stick, new ItemStack(ModItems.slate, 1, 1), "gemLapis", "gemLapis");
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModBlocks.itemRoutingNode), 400, 5, "dustGlowstone", "dustRedstone", "blockGlass", "stone");
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModBlocks.outputRoutingNode), 400, 25, "dustGlowstone", "dustRedstone", "ingotIron", new ItemStack(ModBlocks.itemRoutingNode));
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModBlocks.inputRoutingNode), 400, 25, "dustGlowstone", "dustRedstone", "ingotGold", new ItemStack(ModBlocks.itemRoutingNode));
|
||||||
|
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(ModBlocks.masterRoutingNode), 400, 200, "blockIron", "gemDiamond", new ItemStack(ModItems.slate, 1, 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import WayofTime.bloodmagic.item.inventory.ItemInventory;
|
import WayofTime.bloodmagic.item.inventory.ItemInventory;
|
||||||
|
import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
|
||||||
import WayofTime.bloodmagic.util.GhostItemHelper;
|
import WayofTime.bloodmagic.util.GhostItemHelper;
|
||||||
import WayofTime.bloodmagic.util.Utils;
|
import WayofTime.bloodmagic.util.Utils;
|
||||||
|
|
||||||
|
@ -169,7 +170,7 @@ public class ContainerItemRoutingNode extends Container
|
||||||
} else if (index > 0)
|
} else if (index > 0)
|
||||||
{
|
{
|
||||||
// return null;
|
// return null;
|
||||||
if (true) // Change to check item is a filter
|
if (itemstack1.getItem() instanceof IItemFilterProvider) // Change to check item is a filter
|
||||||
{
|
{
|
||||||
if (!this.mergeItemStack(itemstack1, 0, 1, false))
|
if (!this.mergeItemStack(itemstack1, 0, 1, false))
|
||||||
{
|
{
|
||||||
|
@ -219,7 +220,7 @@ public class ContainerItemRoutingNode extends Container
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValid(ItemStack itemStack)
|
public boolean isItemValid(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
return true; //TODO: Create a new Item that holds the filter.
|
return itemStack.getItem() instanceof IItemFilterProvider; //TODO: Create a new Item that holds the filter.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
package WayofTime.bloodmagic.tile.routing;
|
package WayofTime.bloodmagic.tile.routing;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import WayofTime.bloodmagic.item.inventory.ItemInventory;
|
import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
|
||||||
import WayofTime.bloodmagic.routing.IInputItemRoutingNode;
|
import WayofTime.bloodmagic.routing.IInputItemRoutingNode;
|
||||||
import WayofTime.bloodmagic.routing.IItemFilter;
|
import WayofTime.bloodmagic.routing.IItemFilter;
|
||||||
import WayofTime.bloodmagic.routing.TestItemFilter;
|
|
||||||
import WayofTime.bloodmagic.util.GhostItemHelper;
|
|
||||||
|
|
||||||
public class TileInputRoutingNode extends TileFilteredRoutingNode implements IInputItemRoutingNode
|
public class TileInputRoutingNode extends TileFilteredRoutingNode implements IInputItemRoutingNode
|
||||||
{
|
{
|
||||||
|
@ -31,37 +26,17 @@ public class TileInputRoutingNode extends TileFilteredRoutingNode implements IIn
|
||||||
{
|
{
|
||||||
ItemStack filterStack = this.getFilterStack(side);
|
ItemStack filterStack = this.getFilterStack(side);
|
||||||
|
|
||||||
if (filterStack == null)
|
if (filterStack == null || !(filterStack.getItem() instanceof IItemFilterProvider))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IItemFilterProvider filter = (IItemFilterProvider) filterStack.getItem();
|
||||||
|
|
||||||
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
||||||
if (tile instanceof IInventory)
|
if (tile instanceof IInventory)
|
||||||
{
|
{
|
||||||
IItemFilter testFilter = new TestItemFilter();
|
return filter.getInputItemFilter(filterStack, (IInventory) tile, side.getOpposite());
|
||||||
List<ItemStack> filteredList = new LinkedList<ItemStack>();
|
|
||||||
ItemInventory inv = new ItemInventory(filterStack, 9, ""); //TODO: Change to grab the filter from the Item later.
|
|
||||||
for (int i = 0; i < inv.getSizeInventory(); i++)
|
|
||||||
{
|
|
||||||
ItemStack stack = inv.getStackInSlot(i);
|
|
||||||
if (stack == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack ghostResult = GhostItemHelper.getStackFromGhost(stack);
|
|
||||||
// if (ghostResult.stackSize == 0)
|
|
||||||
// {
|
|
||||||
// ghostResult.stackSize = Int.MaxValue();
|
|
||||||
// }
|
|
||||||
|
|
||||||
filteredList.add(ghostResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
testFilter.initializeFilter(filteredList, (IInventory) tile, side.getOpposite(), false);
|
|
||||||
|
|
||||||
return testFilter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
package WayofTime.bloodmagic.tile.routing;
|
package WayofTime.bloodmagic.tile.routing;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import WayofTime.bloodmagic.item.inventory.ItemInventory;
|
import WayofTime.bloodmagic.item.routing.IItemFilterProvider;
|
||||||
import WayofTime.bloodmagic.routing.IItemFilter;
|
import WayofTime.bloodmagic.routing.IItemFilter;
|
||||||
import WayofTime.bloodmagic.routing.IOutputItemRoutingNode;
|
import WayofTime.bloodmagic.routing.IOutputItemRoutingNode;
|
||||||
import WayofTime.bloodmagic.routing.TestItemFilter;
|
|
||||||
import WayofTime.bloodmagic.util.GhostItemHelper;
|
|
||||||
|
|
||||||
public class TileOutputRoutingNode extends TileFilteredRoutingNode implements IOutputItemRoutingNode
|
public class TileOutputRoutingNode extends TileFilteredRoutingNode implements IOutputItemRoutingNode
|
||||||
{
|
{
|
||||||
|
@ -31,37 +26,17 @@ public class TileOutputRoutingNode extends TileFilteredRoutingNode implements IO
|
||||||
{
|
{
|
||||||
ItemStack filterStack = this.getFilterStack(side);
|
ItemStack filterStack = this.getFilterStack(side);
|
||||||
|
|
||||||
if (filterStack == null)
|
if (filterStack == null || !(filterStack.getItem() instanceof IItemFilterProvider))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IItemFilterProvider filter = (IItemFilterProvider) filterStack.getItem();
|
||||||
|
|
||||||
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
TileEntity tile = worldObj.getTileEntity(pos.offset(side));
|
||||||
if (tile instanceof IInventory)
|
if (tile instanceof IInventory)
|
||||||
{
|
{
|
||||||
IItemFilter testFilter = new TestItemFilter();
|
return filter.getOutputItemFilter(filterStack, (IInventory) tile, side.getOpposite());
|
||||||
List<ItemStack> filteredList = new LinkedList<ItemStack>();
|
|
||||||
ItemInventory inv = new ItemInventory(filterStack, 9, ""); //TODO: Change to grab the filter from the Item later.
|
|
||||||
for (int i = 0; i < inv.getSizeInventory(); i++)
|
|
||||||
{
|
|
||||||
ItemStack stack = inv.getStackInSlot(i);
|
|
||||||
if (stack == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack ghostStack = GhostItemHelper.getStackFromGhost(stack);
|
|
||||||
if (ghostStack.stackSize == 0)
|
|
||||||
{
|
|
||||||
ghostStack.stackSize = Integer.MAX_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
filteredList.add(ghostStack);
|
|
||||||
}
|
|
||||||
|
|
||||||
testFilter.initializeFilter(filteredList, (IInventory) tile, side.getOpposite(), true);
|
|
||||||
|
|
||||||
return testFilter;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -120,6 +120,9 @@ item.BloodMagic.soulGem.grand.name=Grand Tartaric Gem
|
||||||
item.BloodMagic.soulSnare.base.name=Rudimentary Snare
|
item.BloodMagic.soulSnare.base.name=Rudimentary Snare
|
||||||
item.BloodMagic.sentientBow.name=Sentient Bow
|
item.BloodMagic.sentientBow.name=Sentient Bow
|
||||||
|
|
||||||
|
item.BloodMagic.nodeRouter.name=Node Router
|
||||||
|
item.BloodMagic.itemFilter.exact.name=Precise Item Filter
|
||||||
|
|
||||||
# Blocks
|
# Blocks
|
||||||
tile.BloodMagic.fluid.lifeEssence.name=Life Essence
|
tile.BloodMagic.fluid.lifeEssence.name=Life Essence
|
||||||
|
|
||||||
|
@ -159,6 +162,11 @@ tile.BloodMagic.phantomBlock.name=Phantom Block
|
||||||
tile.BloodMagic.teleposer.name=Teleposer
|
tile.BloodMagic.teleposer.name=Teleposer
|
||||||
tile.BloodMagic.soulForge.name=Hellfire Forge
|
tile.BloodMagic.soulForge.name=Hellfire Forge
|
||||||
|
|
||||||
|
tile.BloodMagic.masterRouting.name=Master Routing Node
|
||||||
|
tile.BloodMagic.outputRouting.name=Output Routing Node
|
||||||
|
tile.BloodMagic.inputRouting.name=Input Routing Node
|
||||||
|
tile.BloodMagic.itemRouting.name=Routing Node
|
||||||
|
|
||||||
# Tooltips
|
# Tooltips
|
||||||
tooltip.BloodMagic.orb.desc=Stores raw Life Essence
|
tooltip.BloodMagic.orb.desc=Stores raw Life Essence
|
||||||
tooltip.BloodMagic.orb.owner=Added by: %s
|
tooltip.BloodMagic.orb.owner=Added by: %s
|
||||||
|
@ -254,6 +262,8 @@ tooltip.BloodMagic.soulGem.greater=A gem used to contain a greater amount of wil
|
||||||
tooltip.BloodMagic.soulGem.grand=A gem used to contain a large amount of will
|
tooltip.BloodMagic.soulGem.grand=A gem used to contain a large amount of will
|
||||||
tooltip.BloodMagic.soulSnare.desc=Throw at a monster and then kill them to obtain their demonic will
|
tooltip.BloodMagic.soulSnare.desc=Throw at a monster and then kill them to obtain their demonic will
|
||||||
|
|
||||||
|
tooltip.BloodMagic.itemFilter.exact=Will make sure the items match precisely.
|
||||||
|
|
||||||
# Ritual
|
# Ritual
|
||||||
ritual.BloodMagic.testRitual=Test Ritual
|
ritual.BloodMagic.testRitual=Test Ritual
|
||||||
ritual.BloodMagic.waterRitual=Ritual of the Full Spring
|
ritual.BloodMagic.waterRitual=Ritual of the Full Spring
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"parent":"bloodmagic:item/ItemModelBase",
|
||||||
|
"textures": {
|
||||||
|
"layer0":"bloodmagic:items/NodeRouter"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent":"bloodmagic:item/ItemModelBase",
|
||||||
|
"textures": {
|
||||||
|
"layer0":"bloodmagic:items/ItemRouterFilterExact"
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 336 B |
Binary file not shown.
After Width: | Height: | Size: 221 B |
Loading…
Reference in a new issue