Fixed #440 - Filter NPE

This commit is contained in:
Calclavia 2014-03-14 17:37:28 +08:00
parent ae0012882f
commit e4d704637a
4 changed files with 49 additions and 6 deletions

View file

@ -9,6 +9,7 @@ import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
@ -67,10 +68,13 @@ public class TileFilter extends TileFilterable implements IFilterable
/** /**
* Toggle item filter render * Toggle item filter render
*/ */
List<ItemStack> filteredStacks = ItemImprint.getFilterList(getFilter()); if (getFilter() != null)
{
List<ItemStack> filteredStacks = ItemImprint.getFilterList(getFilter());
if (filteredStacks.size() > 0) if (filteredStacks.size() > 0)
renderIndex = (renderIndex + 1) % filteredStacks.size(); renderIndex = (renderIndex + 1) % filteredStacks.size();
}
/** /**
* Fluid filters * Fluid filters
@ -154,12 +158,18 @@ public class TileFilter extends TileFilterable implements IFilterable
RenderItemOverlayTile.renderItemOnSides(TileFilter.this, renderStack, position.x, position.y, position.z); RenderItemOverlayTile.renderItemOnSides(TileFilter.this, renderStack, position.x, position.y, position.z);
} }
} }
return false; return false;
} }
}; };
} }
@Override
public boolean shouldSideBeRendered(IBlockAccess access, int x, int y, int z, int side)
{
return access.getBlockId(x, y, z) == block.blockID ? false : super.shouldSideBeRendered(access, x, y, z, side);
}
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {

View file

@ -3,7 +3,7 @@ dir.mcp=${dir.development}forge/mcp
version.minecraft=1.6.4 version.minecraft=1.6.4
version.forge=9.11.1.964 version.forge=9.11.1.964
version.universalelectricity=3.1.+ version.universalelectricity=3.1.+
version.calclaviacore=1.1.+ version.calclaviacore=1.2.+
version.cclib=1.0.0.61 version.cclib=1.0.0.61
version.cccore=0.9.0.9 version.cccore=0.9.0.9
version.fmp=1.0.0.244 version.fmp=1.0.0.244

View file

@ -19,7 +19,7 @@ public class MultipartMechanical implements IPartFactory
MultiPartRegistry.registerParts(this, PART_TYPES); MultiPartRegistry.registerParts(this, PART_TYPES);
MultipartGenerator.registerPassThroughInterface("resonantinduction.core.grid.fluid.IPressureNodeProvider"); MultipartGenerator.registerPassThroughInterface("resonantinduction.core.grid.fluid.IPressureNodeProvider");
// TODO: Move to UE // TODO: Move to UE
MultipartGenerator.registerTrait("calclavia.lib.grid.INodeProvider", "calclavia.lib.grid.TraitNodeProvider"); MultipartGenerator.registerTrait("calclavia.lib.grid.INodeProvider", "resonantinduction.core.grid.TraitNodeProvider");
} }
@Override @Override

View file

@ -0,0 +1,33 @@
package resonantinduction.core.grid;
import java.util.HashSet;
import java.util.Set;
import net.minecraftforge.common.ForgeDirection;
import calclavia.lib.grid.INode;
import calclavia.lib.grid.INodeProvider;
import codechicken.multipart.PartMap;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;
//TODO: Move to UE 3.2
public class TraitNodeProvider extends TileMultipart implements INodeProvider
{
@Override
public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{
TMultiPart part = this.partMap(from.ordinal());
if (part == null)
{
part = partMap(PartMap.CENTER.ordinal());
}
if (part instanceof INodeProvider)
{
return ((INodeProvider) part).getNode(nodeType, from);
}
return null;
}
}