Major GUI work!

This commit is contained in:
Aidan C. Brady 2013-10-26 13:25:51 -04:00
parent c730fab1eb
commit 3a9a518188
18 changed files with 636 additions and 59 deletions

View file

@ -17,8 +17,10 @@ import mekanism.client.gui.GuiEnergyCube;
import mekanism.client.gui.GuiEnrichmentChamber; import mekanism.client.gui.GuiEnrichmentChamber;
import mekanism.client.gui.GuiFactory; import mekanism.client.gui.GuiFactory;
import mekanism.client.gui.GuiGasTank; import mekanism.client.gui.GuiGasTank;
import mekanism.client.gui.GuiItemStackFilter;
import mekanism.client.gui.GuiLogisticalSorter; import mekanism.client.gui.GuiLogisticalSorter;
import mekanism.client.gui.GuiMetallurgicInfuser; import mekanism.client.gui.GuiMetallurgicInfuser;
import mekanism.client.gui.GuiOreDictFilter;
import mekanism.client.gui.GuiOsmiumCompressor; import mekanism.client.gui.GuiOsmiumCompressor;
import mekanism.client.gui.GuiPasswordEnter; import mekanism.client.gui.GuiPasswordEnter;
import mekanism.client.gui.GuiPasswordModify; import mekanism.client.gui.GuiPasswordModify;
@ -352,6 +354,10 @@ public class ClientProxy extends CommonProxy
return new GuiRobitRepair(player.inventory, world, x); return new GuiRobitRepair(player.inventory, world, x);
case 26: case 26:
return new GuiLogisticalSorter(player, (TileEntityLogisticalSorter)tileEntity); return new GuiLogisticalSorter(player, (TileEntityLogisticalSorter)tileEntity);
case 27:
return new GuiItemStackFilter(player, (TileEntityLogisticalSorter)tileEntity);
case 28:
return new GuiOreDictFilter(player, (TileEntityLogisticalSorter)tileEntity);
} }
return null; return null;

View file

@ -1,5 +1,185 @@
package mekanism.client.gui; package mekanism.client.gui;
public class GuiItemStackFilter { import mekanism.api.EnumColor;
import mekanism.api.Object3D;
import mekanism.client.render.MekanismRenderer;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.inventory.container.ContainerFilter;
import mekanism.common.network.PacketLogisticalSorterGui;
import mekanism.common.network.PacketRobit;
import mekanism.common.network.PacketRobit.RobitPacketType;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
import mekanism.common.transporter.ItemStackFilter;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mekanism.common.util.TransporterUtils;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
public class GuiItemStackFilter extends GuiMekanism
{
public TileEntityLogisticalSorter tileEntity;
public ItemStackFilter filter = new ItemStackFilter();
public String status = EnumColor.DARK_GREEN + "All OK";
public GuiItemStackFilter(EntityPlayer player, TileEntityLogisticalSorter tentity)
{
super(new ContainerFilter(player.inventory));
tileEntity = tentity;
filter.color = TransporterUtils.colors.get(0);
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
public void initGui()
{
super.initGui();
int guiWidth = (width - xSize) / 2;
int guiHeight = (height - ySize) / 2;
buttonList.clear();
buttonList.add(new GuiButton(0, guiWidth + 58, guiHeight + 63, 60, 18, "Save"));
}
@Override
protected void actionPerformed(GuiButton guibutton)
{
super.actionPerformed(guibutton);
if(guibutton.id == 0)
{
//PacketFilterUpdate TODO
}
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
fontRenderer.drawString("Edit ItemStack Filter", 43, 6, 0x404040);
fontRenderer.drawString("Status: " + status, 35, 20, 0x00CD00);
fontRenderer.drawString("ItemStack Details:", 35, 32, 0x00CD00);
if(filter.itemType != null)
{
fontRenderer.drawString("ID: " + filter.itemType.itemID + ", meta: " + filter.itemType.getItemDamage(), 35, 41, 0x00CD00);
}
if(filter.itemType != null)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
itemRenderer.renderItemIntoGUI(fontRenderer, mc.getTextureManager(), filter.itemType, 12, 19);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
GL11.glPushMatrix();
GL11.glColor4f(1, 1, 1, 1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(filter.color));
itemRenderer.renderIcon(12, 45, MekanismRenderer.getColorIcon(filter.color), 16, 16);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 45 && yAxis <= 61)
{
drawCreativeTabHoveringText(filter.color.getName(), xAxis, yAxis);
}
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY)
{
super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY);
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiItemStackFilter.png"));
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int guiWidth = (width - xSize) / 2;
int guiHeight = (height - ySize) / 2;
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
if(xAxis >= 5 && xAxis <= 16 && yAxis >= 5 && yAxis <= 16)
{
drawTexturedModalRect(guiWidth + 5, guiHeight + 5, 176, 0, 11, 11);
}
else {
drawTexturedModalRect(guiWidth + 5, guiHeight + 5, 176, 11, 11, 11);
}
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 19 && yAxis <= 35)
{
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
int x = guiWidth + 12;
int y = guiHeight + 19;
drawGradientRect(x, y, x + 16, y + 16, -2130706433, -2130706433);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glPopMatrix();
}
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int button)
{
super.mouseClicked(mouseX, mouseY, button);
if(button == 0)
{
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
if(xAxis >= 5 && xAxis <= 16 && yAxis >= 5 && yAxis <= 16)
{
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(Object3D.get(tileEntity), 0));
mc.thePlayer.openGui(Mekanism.instance, 26, mc.theWorld, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
}
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 19 && yAxis <= 35)
{
ItemStack stack = mc.thePlayer.inventory.getItemStack();
if(stack != null)
{
filter.itemType = stack.copy();
filter.itemType.stackSize = 1;
}
}
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 45 && yAxis <= 61)
{
filter.color = TransporterUtils.increment(filter.color);
}
}
}
} }

View file

@ -1,6 +1,11 @@
package mekanism.client.gui; package mekanism.client.gui;
import mekanism.api.Object3D;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.inventory.container.ContainerNull; import mekanism.common.inventory.container.ContainerNull;
import mekanism.common.network.PacketLogisticalSorterGui;
import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalSorter;
import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.util.MekanismUtils.ResourceType;
@ -50,11 +55,13 @@ public class GuiLogisticalSorter extends GuiMekanism
if(guibutton.id == 0) if(guibutton.id == 0)
{ {
PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(Object3D.get(tileEntity), 1));
mc.thePlayer.openGui(Mekanism.instance, 27, mc.theWorld, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
} }
else if(guibutton.id == 1) else if(guibutton.id == 1)
{ {
PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(Object3D.get(tileEntity), 2));
mc.thePlayer.openGui(Mekanism.instance, 28, mc.theWorld, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
} }
} }

View file

@ -1,9 +1,206 @@
package mekanism.client.gui; package mekanism.client.gui;
import mekanism.common.tileentity.TileEntityLogisticalTransporter; import java.util.List;
import net.minecraft.client.gui.GuiScreen;
public class GuiOreDictFilter extends GuiScreen import mekanism.api.EnumColor;
import mekanism.api.Object3D;
import mekanism.client.render.MekanismRenderer;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.PacketHandler.Transmission;
import mekanism.common.inventory.container.ContainerFilter;
import mekanism.common.network.PacketLogisticalSorterGui;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
import mekanism.common.transporter.OreDictFilter;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mekanism.common.util.TransporterUtils;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
public class GuiOreDictFilter extends GuiMekanism
{ {
public TileEntityLogisticalTransporter tileEntity; public TileEntityLogisticalSorter tileEntity;
public OreDictFilter filter = new OreDictFilter();
private GuiTextField oreDictText;
public int stackSwitch = 0;
public int stackIndex = 0;
public List<ItemStack> iterStacks;
public String status = EnumColor.DARK_GREEN + "All OK";
public GuiOreDictFilter(EntityPlayer player, TileEntityLogisticalSorter tentity)
{
super(new ContainerFilter(player.inventory));
tileEntity = tentity;
filter.color = TransporterUtils.colors.get(0);
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
public void initGui()
{
super.initGui();
int guiWidth = (width - xSize) / 2;
int guiHeight = (height - ySize) / 2;
buttonList.clear();
buttonList.add(new GuiButton(0, guiWidth + 58, guiHeight + 63, 60, 18, "Save"));
oreDictText = new GuiTextField(fontRenderer, guiWidth + 35, guiHeight + 48, 95, 12);
oreDictText.setMaxStringLength(12);
oreDictText.setFocused(true);
}
@Override
public void keyTyped(char c, int i)
{
if(i == mc.gameSettings.keyBindInventory.keyCode)
{
return;
}
super.keyTyped(c, i);
if(Character.isLetter(c) || Character.isDigit(c) || c == '*')
{
oreDictText.textboxKeyTyped(c, i);
}
}
@Override
protected void actionPerformed(GuiButton guibutton)
{
super.actionPerformed(guibutton);
if(guibutton.id == 0)
{
//PacketFilterUpdate TODO
}
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
fontRenderer.drawString("Edit OreDict Filter", 43, 6, 0x404040);
fontRenderer.drawString("Status: " + status, 35, 20, 0x00CD00);
fontRenderer.drawString("Key: " + filter.oreDictName, 35, 32, 0x00CD00);
/*if(filter.itemType != null)
{
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_LIGHTING);
itemRenderer.renderItemIntoGUI(fontRenderer, mc.getTextureManager(), filter.itemType, 12, 19);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}*/
GL11.glPushMatrix();
GL11.glColor4f(1, 1, 1, 1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(filter.color));
itemRenderer.renderIcon(12, 45, MekanismRenderer.getColorIcon(filter.color), 16, 16);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 45 && yAxis <= 61)
{
drawCreativeTabHoveringText(filter.color.getName(), xAxis, yAxis);
}
super.drawGuiContainerForegroundLayer(mouseX, mouseY);
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTick, int mouseX, int mouseY)
{
super.drawGuiContainerBackgroundLayer(partialTick, mouseX, mouseY);
mc.renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.GUI, "GuiOreDictFilter.png"));
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int guiWidth = (width - xSize) / 2;
int guiHeight = (height - ySize) / 2;
drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
if(xAxis >= 5 && xAxis <= 16 && yAxis >= 5 && yAxis <= 16)
{
drawTexturedModalRect(guiWidth + 5, guiHeight + 5, 176, 0, 11, 11);
}
else {
drawTexturedModalRect(guiWidth + 5, guiHeight + 5, 176, 11, 11, 11);
}
if(xAxis >= 131 && xAxis <= 143 && yAxis >= 48 && yAxis <= 60)
{
drawTexturedModalRect(guiWidth + 131, guiHeight + 48, 176 + 11, 0, 12, 12);
}
else {
drawTexturedModalRect(guiWidth + 131, guiHeight + 48, 176 + 11, 12, 12, 12);
}
oreDictText.drawTextBox();
}
@Override
public void updateScreen()
{
super.updateScreen();
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int button)
{
super.mouseClicked(mouseX, mouseY, button);
if(button == 0)
{
int xAxis = (mouseX - (width - xSize) / 2);
int yAxis = (mouseY - (height - ySize) / 2);
if(xAxis >= 5 && xAxis <= 16 && yAxis >= 5 && yAxis <= 16)
{
mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
PacketHandler.sendPacket(Transmission.SERVER, new PacketLogisticalSorterGui().setParams(Object3D.get(tileEntity), 0));
mc.thePlayer.openGui(Mekanism.instance, 26, mc.theWorld, tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
}
if(xAxis >= 12 && xAxis <= 28 && yAxis >= 45 && yAxis <= 61)
{
filter.color = TransporterUtils.increment(filter.color);
}
}
}
private void setOreDictKey()
{
}
} }

View file

@ -3,9 +3,11 @@ package mekanism.client.render;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import mekanism.api.EnumColor;
import mekanism.common.ISpecialBounds; import mekanism.common.ISpecialBounds;
import mekanism.common.ObfuscatedNames; import mekanism.common.ObfuscatedNames;
import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GLAllocation; import net.minecraft.client.renderer.GLAllocation;
@ -34,6 +36,8 @@ public class MekanismRenderer
{ {
private static RenderBlocks renderBlocks = new RenderBlocks(); private static RenderBlocks renderBlocks = new RenderBlocks();
public static Icon[] colors = new Icon[256];
private static float lightmapLastX; private static float lightmapLastX;
private static float lightmapLastY; private static float lightmapLastY;
private static boolean optifineBreak = false; private static boolean optifineBreak = false;
@ -148,6 +152,21 @@ public class MekanismRenderer
} }
} }
public static ResourceLocation getColorResource(EnumColor color)
{
return MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "Overlay" + color.friendlyName.replace(" ", "") + ".png");
}
public static Icon getColorIcon(EnumColor color)
{
if(colors[color.ordinal()] == null)
{
colors[color.ordinal()] = getTextureMap(0).registerIcon("mekanism:Overlay" + color.getName());
}
return colors[color.ordinal()];
}
public static void glowOn() public static void glowOn()
{ {
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);

View file

@ -34,39 +34,10 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderConfigurableMachine extends TileEntitySpecialRenderer public class RenderConfigurableMachine extends TileEntitySpecialRenderer
{ {
private static Icon[] coloredOverlays;
private Minecraft mc = FMLClientHandler.instance().getClient(); private Minecraft mc = FMLClientHandler.instance().getClient();
private HashMap<ForgeDirection, HashMap<EnumColor, DisplayInteger>> cachedOverlays = new HashMap<ForgeDirection, HashMap<EnumColor, DisplayInteger>>(); private HashMap<ForgeDirection, HashMap<EnumColor, DisplayInteger>> cachedOverlays = new HashMap<ForgeDirection, HashMap<EnumColor, DisplayInteger>>();
public RenderConfigurableMachine()
{
if(coloredOverlays == null)
{
coloredOverlays = new Icon[16];
TextureMap registrar = MekanismRenderer.getTextureMap(0);
coloredOverlays[0] = registrar.registerIcon("mekanism:OverlayBlack");
coloredOverlays[1] = registrar.registerIcon("mekanism:OverlayDarkBlue");
coloredOverlays[2] = registrar.registerIcon("mekanism:OverlayDarkGreen");
coloredOverlays[3] = registrar.registerIcon("mekanism:OverlayDarkAqua");
coloredOverlays[4] = registrar.registerIcon("mekanism:OverlayDarkRed");
coloredOverlays[5] = registrar.registerIcon("mekanism:OverlayPurple");
coloredOverlays[6] = registrar.registerIcon("mekanism:OverlayOrange");
coloredOverlays[7] = registrar.registerIcon("mekanism:OverlayGrey");
coloredOverlays[8] = registrar.registerIcon("mekanism:OverlayDarkGrey");
coloredOverlays[9] = registrar.registerIcon("mekanism:OverlayIndigo");
coloredOverlays[10] = registrar.registerIcon("mekanism:OverlayBrightGreen");
coloredOverlays[11] = registrar.registerIcon("mekanism:OverlayAqua");
coloredOverlays[12] = registrar.registerIcon("mekanism:OverlayRed");
coloredOverlays[13] = registrar.registerIcon("mekanism:OverlayPink");
coloredOverlays[14] = registrar.registerIcon("mekanism:OverlayYellow");
coloredOverlays[15] = registrar.registerIcon("mekanism:OverlayWhite");
}
}
@Override @Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick)
{ {
@ -133,7 +104,7 @@ public class RenderConfigurableMachine extends TileEntitySpecialRenderer
Model3D toReturn = new Model3D(); Model3D toReturn = new Model3D();
toReturn.baseBlock = Block.stone; toReturn.baseBlock = Block.stone;
toReturn.setTexture(coloredOverlays[color.ordinal()]); toReturn.setTexture(MekanismRenderer.getColorIcon(color));
DisplayInteger display = new DisplayInteger(); DisplayInteger display = new DisplayInteger();

View file

@ -0,0 +1,56 @@
package mekanism.common;
import java.util.ArrayList;
import java.util.Iterator;
public class HashList<T> implements Iterable<T>
{
private ArrayList<T> list = new ArrayList<T>();
public boolean contains(T obj)
{
return list.contains(obj);
}
public void clear()
{
list.clear();
}
public T get(int index)
{
return list.get(index);
}
public void add(T obj)
{
if(!list.contains(obj))
{
list.add(obj);
}
}
public void add(int index, T obj)
{
if(!list.contains(obj))
{
list.add(index, obj);
}
}
public int indexOf(T obj)
{
return list.indexOf(obj);
}
public int size()
{
return list.size();
}
@Override
public Iterator iterator()
{
return list.iterator();
}
}

View file

@ -59,6 +59,7 @@ import mekanism.common.network.PacketDataRequest;
import mekanism.common.network.PacketDigitUpdate; import mekanism.common.network.PacketDigitUpdate;
import mekanism.common.network.PacketElectricBowState; import mekanism.common.network.PacketElectricBowState;
import mekanism.common.network.PacketElectricChest; import mekanism.common.network.PacketElectricChest;
import mekanism.common.network.PacketFilterUpdate;
import mekanism.common.network.PacketLogisticalSorterGui; import mekanism.common.network.PacketLogisticalSorterGui;
import mekanism.common.network.PacketPortableTeleport; import mekanism.common.network.PacketPortableTeleport;
import mekanism.common.network.PacketPortalFX; import mekanism.common.network.PacketPortalFX;
@ -1138,6 +1139,7 @@ public class Mekanism
PacketHandler.registerPacket(PacketRedstoneControl.class); PacketHandler.registerPacket(PacketRedstoneControl.class);
PacketHandler.registerPacket(PacketWalkieTalkieState.class); PacketHandler.registerPacket(PacketWalkieTalkieState.class);
PacketHandler.registerPacket(PacketLogisticalSorterGui.class); PacketHandler.registerPacket(PacketLogisticalSorterGui.class);
PacketHandler.registerPacket(PacketFilterUpdate.class);
//Donators //Donators
donators.add("mrgreaper"); donators.add("mrgreaper");

View file

@ -0,0 +1,66 @@
package mekanism.common.network;
import java.io.DataOutputStream;
import mekanism.api.Object3D;
import mekanism.common.Mekanism;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler;
public class PacketFilterUpdate implements IMekanismPacket
{
public Object3D object3D;
public int type;
@Override
public String getName()
{
return "FilterUpdate";
}
@Override
public IMekanismPacket setParams(Object... data)
{
object3D = (Object3D)data[0];
type = (Integer)data[1];
return this;
}
@Override
public void read(ByteArrayDataInput dataStream, EntityPlayer player, World world) throws Exception
{
int x = dataStream.readInt();
int y = dataStream.readInt();
int z = dataStream.readInt();
int id = dataStream.readInt();
int type = dataStream.readInt();
World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id);
if(worldServer != null && worldServer.getBlockTileEntity(x, y, z) instanceof TileEntityLogisticalSorter)
{
player.openGui(Mekanism.instance, 26+type, worldServer, x, y, z);
}
}
@Override
public void write(DataOutputStream dataStream) throws Exception
{
dataStream.writeInt(object3D.xCoord);
dataStream.writeInt(object3D.yCoord);
dataStream.writeInt(object3D.zCoord);
dataStream.writeInt(object3D.dimensionId);
dataStream.writeInt(type);
}
}

View file

@ -3,10 +3,9 @@ package mekanism.common.network;
import java.io.DataOutputStream; import java.io.DataOutputStream;
import mekanism.api.Object3D; import mekanism.api.Object3D;
import mekanism.common.ITileNetwork;
import mekanism.common.Mekanism; import mekanism.common.Mekanism;
import mekanism.common.tileentity.TileEntityLogisticalSorter;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
@ -47,18 +46,9 @@ public class PacketLogisticalSorterGui implements IMekanismPacket
World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id); World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(id);
if(worldServer != null && worldServer.getBlockTileEntity(x, y, z) instanceof ITileNetwork) if(worldServer != null && worldServer.getBlockTileEntity(x, y, z) instanceof TileEntityLogisticalSorter)
{ {
TileEntity tileEntity = worldServer.getBlockTileEntity(x, y, z); player.openGui(Mekanism.instance, 26+type, worldServer, x, y, z);
if(type == 0)
{
player.openGui(Mekanism.instance, 27, worldServer, x, y, z);
}
else if(type == 1)
{
player.openGui(Mekanism.instance, 28, worldServer, x, y, z);
}
} }
} }

View file

@ -31,6 +31,8 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench
/** A timer used to send packets to clients. */ /** A timer used to send packets to clients. */
public int packetTick; public int packetTick;
public boolean doAutoSync = true;
public Set<ITileComponent> components = new HashSet<ITileComponent>(); public Set<ITileComponent> components = new HashSet<ITileComponent>();
@Override @Override
@ -45,7 +47,7 @@ public abstract class TileEntityBasicBlock extends TileEntity implements IWrench
if(!worldObj.isRemote) if(!worldObj.isRemote)
{ {
if(playersUsing.size() > 0) if(doAutoSync && playersUsing.size() > 0)
{ {
PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D); PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D);
} }

View file

@ -1,11 +1,10 @@
package mekanism.common.tileentity; package mekanism.common.tileentity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import mekanism.api.EnumColor; import mekanism.api.EnumColor;
import mekanism.api.Object3D; import mekanism.api.Object3D;
import mekanism.common.HashList;
import mekanism.common.IActiveState; import mekanism.common.IActiveState;
import mekanism.common.IRedstoneControl; import mekanism.common.IRedstoneControl;
import mekanism.common.PacketHandler; import mekanism.common.PacketHandler;
@ -27,7 +26,7 @@ import com.google.common.io.ByteArrayDataInput;
public class TileEntityLogisticalSorter extends TileEntityElectricBlock implements IRedstoneControl, IActiveState public class TileEntityLogisticalSorter extends TileEntityElectricBlock implements IRedstoneControl, IActiveState
{ {
public Set<TransporterFilter> filters = new HashSet<TransporterFilter>(); public HashList<TransporterFilter> filters = new HashList<TransporterFilter>();
public RedstoneControl controlType = RedstoneControl.DISABLED; public RedstoneControl controlType = RedstoneControl.DISABLED;
@ -43,6 +42,7 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen
{ {
super("LogisticalSorter", MachineType.LOGISTICAL_SORTER.baseEnergy); super("LogisticalSorter", MachineType.LOGISTICAL_SORTER.baseEnergy);
inventory = new ItemStack[1]; inventory = new ItemStack[1];
doAutoSync = false;
} }
@Override @Override
@ -201,6 +201,14 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen
return new int[] {0}; return new int[] {0};
} }
@Override
public void openChest()
{
if(!worldObj.isRemote)
{
PacketHandler.sendPacket(Transmission.CLIENTS_RANGE, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), Object3D.get(this), 50D);
}
}
@Override @Override
public RedstoneControl getControlType() public RedstoneControl getControlType()

View file

@ -16,7 +16,40 @@ public class OreDictFilter extends TransporterFilter
@Override @Override
public boolean canFilter(ItemStack itemStack) public boolean canFilter(ItemStack itemStack)
{ {
return MekanismUtils.oreDictCheck(itemStack, oreDictName); String oreKey = MekanismUtils.getOreDictName(itemStack);
if(oreKey == null)
{
return false;
}
if(oreDictName.equals(oreKey))
{
return true;
}
else if(oreDictName.endsWith("*") && !oreDictName.startsWith("*"))
{
if(oreKey.startsWith(oreDictName.substring(0, oreDictName.length()-1)))
{
return true;
}
}
else if(oreDictName.startsWith("*") && !oreDictName.endsWith("*"))
{
if(oreKey.endsWith(oreDictName.substring(1)))
{
return true;
}
}
else if(oreDictName.startsWith("*") && oreDictName.endsWith("*"))
{
if(oreKey.contains(oreDictName.substring(1, oreDictName.length()-1)))
{
return true;
}
}
return false;
} }
@Override @Override

View file

@ -1,7 +1,5 @@
package mekanism.common.util; package mekanism.common.util;
import ic2.api.Direction;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@ -10,7 +8,9 @@ import java.lang.reflect.Method;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map;
import mekanism.api.EnumColor; import mekanism.api.EnumColor;
import mekanism.api.IConfigurable; import mekanism.api.IConfigurable;
@ -36,7 +36,6 @@ import mekanism.common.network.PacketElectricChest.ElectricChestPacketType;
import mekanism.common.tileentity.TileEntityBoundingBlock; import mekanism.common.tileentity.TileEntityBoundingBlock;
import mekanism.common.tileentity.TileEntityDynamicTank; import mekanism.common.tileentity.TileEntityDynamicTank;
import mekanism.common.tileentity.TileEntityElectricChest; import mekanism.common.tileentity.TileEntityElectricChest;
import mekanism.common.tileentity.TileEntityLogisticalTransporter;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
@ -453,6 +452,37 @@ public final class MekanismUtils
return hasResource; return hasResource;
} }
public static String getOreDictName(ItemStack check)
{
HashMap<Integer, ArrayList<ItemStack>> oreStacks = (HashMap<Integer, ArrayList<ItemStack>>)MekanismUtils.getPrivateValue(null, OreDictionary.class, new String[] {"oreStacks"});
int idFound = -1;
for(Map.Entry<Integer, ArrayList<ItemStack>> entry : oreStacks.entrySet())
{
for(ItemStack stack : entry.getValue())
{
if(stack.isItemEqual(check))
{
idFound = entry.getKey();
break;
}
}
if(idFound != -1)
{
break;
}
}
if(idFound == -1)
{
return null;
}
return OreDictionary.getOreName(idFound);
}
/** /**
* Returns an integer facing that converts a world-based orientation to a machine-based oriention. * Returns an integer facing that converts a world-based orientation to a machine-based oriention.
* @param side - world based * @param side - world based

View file

@ -353,6 +353,16 @@ public final class TransporterUtils
return null; return null;
} }
public static EnumColor increment(EnumColor color)
{
if(colors.indexOf(color) == colors.size()-1)
{
return colors.get(0);
}
return colors.get(colors.indexOf(color)+1);
}
public static void incrementColor(TileEntityLogisticalTransporter tileEntity) public static void incrementColor(TileEntityLogisticalTransporter tileEntity)
{ {
if(tileEntity.color == null) if(tileEntity.color == null)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB