Globalized ability to invert filter

Globalized colored float text depending on inversion
This commit is contained in:
Brian Ricketts 2012-12-29 15:50:20 -06:00
parent 800684f553
commit 3842d4a81e
25 changed files with 191 additions and 169 deletions

View file

@ -9,7 +9,7 @@ import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.filter.ContainerImprinter; import assemblyline.common.machine.imprinter.ContainerImprinter;
public class GuiImprinter extends GuiContainer public class GuiImprinter extends GuiContainer
{ {

View file

@ -17,7 +17,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderDetector extends RenderFilterable public class RenderDetector extends RenderImprintable
{ {
@Override @Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8) public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)

View file

@ -1,50 +0,0 @@
package assemblyline.client.render;
import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import universalelectricity.core.vector.Vector3;
import assemblyline.common.machine.filter.ItemImprinter;
import assemblyline.common.machine.filter.TileEntityFilterable;
/**
* @author Briman0094
*/
public abstract class RenderFilterable extends TileEntitySpecialRenderer
{
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
{
if (tileEntity instanceof TileEntityFilterable)
{
TileEntityFilterable tileFilterable = (TileEntityFilterable) tileEntity;
ItemStack filter = tileFilterable.getFilter();
if (filter != null)
{
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
MovingObjectPosition objectPosition = player.rayTrace(5, 1);
if (objectPosition != null)
{
if (objectPosition.blockX == tileFilterable.xCoord && objectPosition.blockY == tileFilterable.yCoord && objectPosition.blockZ == tileFilterable.zCoord)
{
ArrayList<ItemStack> filters = ItemImprinter.getFilters(filter);
for (int i = 0; i < filters.size(); i++)
{
RenderHelper.renderFloatingText(filters.get(i).getTooltip(player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips).get(0).toString(), (float) x + 0.5f, ((float) y + (i * 0.25f)) - 1f, (float) z + 0.5f);
}
}
}
}
}
}
}

View file

@ -13,10 +13,15 @@ import org.lwjgl.opengl.GL11;
*/ */
public class RenderHelper public class RenderHelper
{ {
public static void renderFloatingText(String text, float x, float y, float z)
{
renderFloatingText(text, x, y, z, 0xFFFFFF);
}
/** /**
* Renders a floating text in a specific position. * Renders a floating text in a specific position.
*/ */
public static void renderFloatingText(String text, float x, float y, float z) public static void renderFloatingText(String text, float x, float y, float z, int color)
{ {
RenderManager renderManager = RenderManager.instance; RenderManager renderManager = RenderManager.instance;
FontRenderer fontRenderer = renderManager.getFontRenderer(); FontRenderer fontRenderer = renderManager.getFontRenderer();
@ -45,10 +50,10 @@ public class RenderHelper
tessellator.addVertex((double) (stringMiddle + 1), (double) (-1 + yOffset), 0.0D); tessellator.addVertex((double) (stringMiddle + 1), (double) (-1 + yOffset), 0.0D);
tessellator.draw(); tessellator.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_TEXTURE_2D);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, 553648127); fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color);
GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true); GL11.glDepthMask(true);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, -1); fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color);
GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

View file

@ -0,0 +1,60 @@
package assemblyline.client.render;
import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import universalelectricity.core.vector.Vector3;
import assemblyline.common.machine.imprinter.ItemImprinter;
import assemblyline.common.machine.imprinter.TileEntityImprintable;
/**
* @author Briman0094
*/
public abstract class RenderImprintable extends TileEntitySpecialRenderer
{
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
{
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityImprintable)
{
TileEntityImprintable tileFilterable = (TileEntityImprintable) tileEntity;
ItemStack filter = tileFilterable.getFilter();
if (filter != null)
{
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
MovingObjectPosition objectPosition = player.rayTrace(8, 1);
if (objectPosition != null)
{
if (objectPosition.blockX == tileFilterable.xCoord && objectPosition.blockY == tileFilterable.yCoord && objectPosition.blockZ == tileFilterable.zCoord)
{
ArrayList<ItemStack> filters = ItemImprinter.getFilters(filter);
for (int i = 0; i < filters.size(); i++)
{
if (((TileEntityImprintable) tileEntity).isInverted())
{
RenderHelper.renderFloatingText(filters.get(i).getTooltip(player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips).get(0).toString(), (float) x + 0.5f, ((float) y + (i * 0.25f)) - 1f, (float) z + 0.5f, 0xFF8888);
}
else
{
RenderHelper.renderFloatingText(filters.get(i).getTooltip(player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips).get(0).toString(), (float) x + 0.5f, ((float) y + (i * 0.25f)) - 1f, (float) z + 0.5f, 0x88FF88);
}
}
}
}
}
}
}
}
}

View file

@ -9,7 +9,7 @@ import assemblyline.client.model.ModelManipulator;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityManipulator;
public class RenderManipulator extends RenderFilterable public class RenderManipulator extends RenderImprintable
{ {
private ModelManipulator model = new ModelManipulator(); private ModelManipulator model = new ModelManipulator();

View file

@ -8,7 +8,7 @@ import assemblyline.client.model.ModelRejector;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
public class RenderRejector extends RenderFilterable public class RenderRejector extends RenderImprintable
{ {
private ModelRejector model = new ModelRejector(); private ModelRejector model = new ModelRejector();

View file

@ -19,8 +19,8 @@ import assemblyline.common.block.ItemBlockCrate;
import assemblyline.common.machine.BlockManipulator; import assemblyline.common.machine.BlockManipulator;
import assemblyline.common.machine.belt.BlockConveyorBelt; import assemblyline.common.machine.belt.BlockConveyorBelt;
import assemblyline.common.machine.detector.BlockDetector; import assemblyline.common.machine.detector.BlockDetector;
import assemblyline.common.machine.filter.BlockImprinter; import assemblyline.common.machine.imprinter.BlockImprinter;
import assemblyline.common.machine.filter.ItemImprinter; import assemblyline.common.machine.imprinter.ItemImprinter;
import assemblyline.common.machine.machine.BlockRejector; import assemblyline.common.machine.machine.BlockRejector;
import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;

View file

@ -9,7 +9,7 @@ import assemblyline.common.machine.TileEntityManipulator;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.belt.TileEntityConveyorBelt;
import assemblyline.common.machine.detector.TileEntityDetector; import assemblyline.common.machine.detector.TileEntityDetector;
import assemblyline.common.machine.filter.ContainerImprinter; import assemblyline.common.machine.imprinter.ContainerImprinter;
import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;

View file

@ -7,7 +7,7 @@ import net.minecraft.world.World;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.UETab; import universalelectricity.prefab.UETab;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.machine.filter.BlockFilterable; import assemblyline.common.machine.imprinter.BlockImprintable;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -17,7 +17,7 @@ import cpw.mods.fml.relauncher.SideOnly;
* @author Calclavia * @author Calclavia
* *
*/ */
public class BlockManipulator extends BlockFilterable public class BlockManipulator extends BlockImprintable
{ {
public BlockManipulator(int id) public BlockManipulator(int id)
{ {

View file

@ -24,13 +24,13 @@ import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.implement.IRedstoneReceptor; import universalelectricity.prefab.implement.IRedstoneReceptor;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.api.IManipulator; import assemblyline.api.IManipulator;
import assemblyline.common.machine.filter.TileEntityFilterable; import assemblyline.common.machine.imprinter.TileEntityImprintable;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.PacketDispatcher;
public class TileEntityManipulator extends TileEntityFilterable implements IRedstoneReceptor, IManipulator public class TileEntityManipulator extends TileEntityImprintable implements IRedstoneReceptor, IManipulator
{ {
public boolean selfPulse = false; public boolean selfPulse = false;

View file

@ -14,8 +14,8 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.machine.filter.ItemImprinter; import assemblyline.common.machine.imprinter.ItemImprinter;
import assemblyline.common.machine.filter.TileEntityFilterable; import assemblyline.common.machine.imprinter.TileEntityImprintable;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -25,7 +25,7 @@ import cpw.mods.fml.relauncher.Side;
* @author Darkguardsman * @author Darkguardsman
* *
*/ */
public class TileEntityRejector extends TileEntityFilterable public class TileEntityRejector extends TileEntityImprintable
{ {
/** /**
* should the piston fire, or be extended * should the piston fire, or be extended

View file

@ -8,12 +8,12 @@ import net.minecraftforge.common.ForgeDirection;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.UETab; import universalelectricity.prefab.UETab;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.filter.BlockFilterable; import assemblyline.common.machine.imprinter.BlockImprintable;
/** /**
* @author Briman0094 * @author Briman0094
*/ */
public class BlockDetector extends BlockFilterable public class BlockDetector extends BlockImprintable
{ {
public BlockDetector(int blockID, int texture) public BlockDetector(int blockID, int texture)
{ {
@ -53,23 +53,6 @@ public class BlockDetector extends BlockFilterable
return this.blockIndexInTexture; return this.blockIndexInTexture;
} }
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityDetector)
{
((TileEntityDetector) tileEntity).toggleInversion();
world.markBlockForRenderUpdate(x, y, z);
}
}
return true;
}
@Override @Override
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
{ {

View file

@ -10,13 +10,12 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.network.PacketManager;
import assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
import assemblyline.common.machine.filter.ItemImprinter; import assemblyline.common.machine.imprinter.ItemImprinter;
import assemblyline.common.machine.filter.TileEntityFilterable; import assemblyline.common.machine.imprinter.TileEntityImprintable;
public class TileEntityDetector extends TileEntityFilterable public class TileEntityDetector extends TileEntityImprintable
{ {
private boolean powering = false; private boolean powering = false;
private boolean isInverted = false;
@Override @Override
public void updateEntity() public void updateEntity()
@ -40,9 +39,9 @@ public class TileEntityDetector extends TileEntityFilterable
EntityItem e = (EntityItem) entities.get(i); EntityItem e = (EntityItem) entities.get(i);
ItemStack itemStack = e.func_92014_d(); ItemStack itemStack = e.func_92014_d();
boolean found = this.isFiltering(itemStack); powerCheck = this.isFiltering(itemStack);
if (this.isInverted) /*if (this.isInverted)
{ {
if (!found) if (!found)
{ {
@ -57,7 +56,7 @@ public class TileEntityDetector extends TileEntityFilterable
{ {
powerCheck = true; powerCheck = true;
break; break;
} }*/
} }
} }
else else
@ -96,32 +95,11 @@ public class TileEntityDetector extends TileEntityFilterable
super.invalidate(); super.invalidate();
} }
public boolean isInverted()
{
return this.isInverted;
}
public void setInversion(boolean inverted)
{
this.isInverted = inverted;
if (this.worldObj.isRemote)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
}
public void toggleInversion()
{
this.setInversion(!this.isInverted);
}
@Override @Override
public void readFromNBT(NBTTagCompound tag) public void readFromNBT(NBTTagCompound tag)
{ {
super.readFromNBT(tag); super.readFromNBT(tag);
this.isInverted = tag.getBoolean("isInverted");
this.powering = tag.getBoolean("powering"); this.powering = tag.getBoolean("powering");
} }
@ -130,7 +108,6 @@ public class TileEntityDetector extends TileEntityFilterable
{ {
super.writeToNBT(tag); super.writeToNBT(tag);
tag.setBoolean("isInverted", this.isInverted);
tag.setBoolean("powering", this.powering); tag.setBoolean("powering", this.powering);
} }

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@ -12,15 +12,16 @@ import net.minecraft.world.World;
import universalelectricity.prefab.BlockMachine; import universalelectricity.prefab.BlockMachine;
import universalelectricity.prefab.implement.IRedstoneReceptor; import universalelectricity.prefab.implement.IRedstoneReceptor;
import assemblyline.api.IFilterable; import assemblyline.api.IFilterable;
import assemblyline.common.machine.detector.TileEntityDetector;
/** /**
* Extend this block class if a filter is allowed to be placed inside of this block. * Extend this block class if a filter is allowed to be placed inside of this block.
* *
* @author Calclavia * @author Calclavia
*/ */
public abstract class BlockFilterable extends BlockMachine public abstract class BlockImprintable extends BlockMachine
{ {
public BlockFilterable(String name, int id, Material material, CreativeTabs creativeTab) public BlockImprintable(String name, int id, Material material, CreativeTabs creativeTab)
{ {
super(name, id, material, creativeTab); super(name, id, material, creativeTab);
} }
@ -70,6 +71,23 @@ public abstract class BlockFilterable extends BlockMachine
return false; return false;
} }
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (tileEntity != null)
{
if (tileEntity instanceof TileEntityImprintable)
{
((TileEntityImprintable) tileEntity).toggleInversion();
world.markBlockForRenderUpdate(x, y, z);
}
}
return true;
}
@Override @Override
public boolean onSneakMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) public boolean onSneakMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
{ {

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import java.util.ArrayList; import java.util.ArrayList;
@ -32,13 +32,13 @@ public class ContainerImprinter extends Container implements IInventory, ISlotWa
this.inventoryPlayer = inventoryPlayer; this.inventoryPlayer = inventoryPlayer;
// Paper Input // Paper Input
this.addSlotToContainer(new SlotFilter(this, 0, 42, 24)); this.addSlotToContainer(new SlotImprint(this, 0, 42, 24));
// Item Stamp // Item Stamp
this.addSlotToContainer(new Slot(this, 1, 78, 24)); this.addSlotToContainer(new Slot(this, 1, 78, 24));
// Output Filter // Output Filter
this.addSlotToContainer(new SlotFilterResult(this, 2, 136, 24)); this.addSlotToContainer(new SlotImprintResult(this, 2, 136, 24));
// Crafting Slot // Crafting Slot
this.addSlotToContainer(new SlotFilter(this, 3, 78, 53)); this.addSlotToContainer(new SlotImprint(this, 3, 78, 53));
this.addSlotToContainer(new SlotCraftingResult(this, this, 4, 136, 53)); this.addSlotToContainer(new SlotCraftingResult(this, this, 4, 136, 53));
int var3; int var3;

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
public interface ISlotWatcher public interface ISlotWatcher
{ {

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;

View file

@ -1,14 +1,14 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.inventory.IInventory; 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 assemblyline.common.AssemblyLine; import assemblyline.common.AssemblyLine;
public class SlotFilter extends Slot public class SlotImprint extends Slot
{ {
public SlotFilter(IInventory par1iInventory, int par2, int par3, int par4) public SlotImprint(IInventory par1iInventory, int par2, int par3, int par4)
{ {
super(par1iInventory, par2, par3, par4); super(par1iInventory, par2, par3, par4);
} }

View file

@ -1,14 +1,14 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; 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;
public class SlotFilterResult extends Slot public class SlotImprintResult extends Slot
{ {
public SlotFilterResult(IInventory par1iInventory, int par2, int par3, int par4) public SlotImprintResult(IInventory par1iInventory, int par2, int par3, int par4)
{ {
super(par1iInventory, par2, par3, par4); super(par1iInventory, par2, par3, par4);
} }

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
@ -23,9 +23,13 @@ import assemblyline.common.machine.TileEntityAssemblyNetwork;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork implements IRotatable, IFilterable, IPacketReceiver, IInventory import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
public abstract class TileEntityImprintable extends TileEntityAssemblyNetwork implements IRotatable, IFilterable, IPacketReceiver, IInventory
{ {
private ItemStack filterItem; private ItemStack filterItem;
private boolean inverted;
/** /**
* Looks through the things in the filter and finds out which item is being filtered. * Looks through the things in the filter and finds out which item is being filtered.
@ -44,13 +48,13 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
{ {
if (checkStacks.get(i) != null) if (checkStacks.get(i) != null)
{ {
if (checkStacks.get(i).isItemEqual(itemStack)) { return true; } if (checkStacks.get(i).isItemEqual(itemStack)) { return !inverted; }
} }
} }
} }
} }
return false; return inverted;
} }
@Override @Override
@ -147,8 +151,12 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
public void setFilter(ItemStack filter) public void setFilter(ItemStack filter)
{ {
this.setInventorySlotContents(0, filter); this.setInventorySlotContents(0, filter);
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket()); PacketManager.sendPacketToClients(this.getDescriptionPacket());
} }
}
@Override @Override
public ItemStack getFilter() public ItemStack getFilter()
@ -156,6 +164,25 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
return this.getStackInSlot(0); return this.getStackInSlot(0);
} }
public void setInverted(boolean inverted)
{
this.inverted = inverted;
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
{
PacketManager.sendPacketToClients(this.getDescriptionPacket());
}
}
public boolean isInverted()
{
return this.inverted;
}
public void toggleInversion()
{
setInverted(!isInverted());
}
@Override @Override
public ForgeDirection getDirection() public ForgeDirection getDirection()
{ {
@ -225,6 +252,7 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
if (getFilter() != null) if (getFilter() != null)
getFilter().writeToNBT(filter); getFilter().writeToNBT(filter);
nbt.setTag("filter", filter); nbt.setTag("filter", filter);
nbt.setBoolean("inverted", inverted);
} }
@Override @Override
@ -232,6 +260,7 @@ public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork imp
{ {
super.readFromNBT(nbt); super.readFromNBT(nbt);
inverted = nbt.getBoolean("inverted");
NBTTagCompound filter = nbt.getCompoundTag("filter"); NBTTagCompound filter = nbt.getCompoundTag("filter");
setInventorySlotContents(0, ItemStack.loadItemStackFromNBT(filter)); setInventorySlotContents(0, ItemStack.loadItemStackFromNBT(filter));
} }

View file

@ -1,4 +1,4 @@
package assemblyline.common.machine.filter; package assemblyline.common.machine.imprinter;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;

View file

@ -6,11 +6,11 @@ import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.UETab; import universalelectricity.prefab.UETab;
import assemblyline.client.render.BlockRenderingHandler; import assemblyline.client.render.BlockRenderingHandler;
import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.TileEntityRejector;
import assemblyline.common.machine.filter.BlockFilterable; import assemblyline.common.machine.imprinter.BlockImprintable;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
public class BlockRejector extends BlockFilterable public class BlockRejector extends BlockImprintable
{ {
public BlockRejector(int id) public BlockRejector(int id)
{ {