diff --git a/common/mekanism/api/gas/EnumGas.java b/common/mekanism/api/gas/EnumGas.java index dbc8a1c1f..e6fac0eea 100644 --- a/common/mekanism/api/gas/EnumGas.java +++ b/common/mekanism/api/gas/EnumGas.java @@ -1,7 +1,6 @@ package mekanism.api.gas; import net.minecraft.util.Icon; -import net.minecraft.util.ResourceLocation; /** * The gasses currently available in Mekanism. @@ -10,13 +9,12 @@ import net.minecraft.util.ResourceLocation; */ public enum EnumGas { - NONE("None", null, null), - OXYGEN("Oxygen", null, null), - HYDROGEN("Hydrogen", null, null); + NONE("None", null), + OXYGEN("Oxygen", null), + HYDROGEN("Hydrogen", null); public String name; public Icon gasIcon; - public ResourceLocation texturePath; public static EnumGas getFromName(String gasName) { @@ -34,13 +32,12 @@ public enum EnumGas public boolean hasTexture() { - return gasIcon != null && texturePath != null; + return gasIcon != null; } - private EnumGas(String s, Icon icon, ResourceLocation path) + private EnumGas(String s, Icon icon) { name = s; gasIcon = icon; - texturePath = path; } } diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 41d4a3dac..f31e68c7c 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -5,7 +5,6 @@ import java.io.File; import java.util.HashMap; import mekanism.api.IConfigurable; -import mekanism.api.gas.EnumGas; import mekanism.client.gui.GuiCombiner; import mekanism.client.gui.GuiConfiguration; import mekanism.client.gui.GuiCredits; @@ -71,6 +70,7 @@ import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityCrusher; import mekanism.common.tileentity.TileEntityDigitalMiner; +import mekanism.common.tileentity.TileEntityDiversionTransporter; import mekanism.common.tileentity.TileEntityDynamicTank; import mekanism.common.tileentity.TileEntityDynamicValve; import mekanism.common.tileentity.TileEntityElectricChest; @@ -82,7 +82,6 @@ import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityEnrichmentChamber; import mekanism.common.tileentity.TileEntityFactory; import mekanism.common.tileentity.TileEntityGasTank; -import mekanism.common.tileentity.TileEntityDiversionTransporter; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.tileentity.TileEntityMechanicalPipe; @@ -93,8 +92,6 @@ import mekanism.common.tileentity.TileEntityPressurizedTube; import mekanism.common.tileentity.TileEntityPurificationChamber; import mekanism.common.tileentity.TileEntityTeleporter; import mekanism.common.tileentity.TileEntityUniversalCable; -import mekanism.common.util.MekanismUtils; -import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -108,7 +105,6 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.client.registry.KeyBindingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -279,18 +275,6 @@ public class ClientProxy extends CommonProxy RenderingRegistry.registerBlockHandler(new TransmitterRenderingHandler()); RenderingRegistry.registerBlockHandler(new BasicRenderingHandler()); - if(!EnumGas.HYDROGEN.hasTexture()) - { - EnumGas.HYDROGEN.gasIcon = MekanismRenderer.getTextureMap(1).registerIcon("mekanism:LiquidHydrogen"); - EnumGas.HYDROGEN.texturePath = MekanismUtils.getResource(ResourceType.TEXTURE_ITEMS, "LiquidHydrogen.png"); - } - - if(!EnumGas.OXYGEN.hasTexture()) - { - EnumGas.OXYGEN.gasIcon = MekanismRenderer.getTextureMap(1).registerIcon("mekanism:LiquidOxygen"); - EnumGas.OXYGEN.texturePath = MekanismUtils.getResource(ResourceType.TEXTURE_ITEMS, "LiquidOxygen.png"); - } - System.out.println("[Mekanism] Render registrations complete."); } @@ -420,6 +404,12 @@ public class ClientProxy extends CommonProxy } } + @Override + public void preInit() + { + MekanismRenderer.init(); + } + @Override public double getReach(EntityPlayer player) { diff --git a/common/mekanism/client/gui/GuiConfiguration.java b/common/mekanism/client/gui/GuiConfiguration.java index f6b2f0bc5..24f424d53 100644 --- a/common/mekanism/client/gui/GuiConfiguration.java +++ b/common/mekanism/client/gui/GuiConfiguration.java @@ -165,7 +165,7 @@ public class GuiConfiguration extends GuiMekanism GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(configurable.getEjector().getOutputColor())); + mc.getTextureManager().bindTexture(MekanismRenderer.getBlocksTexture()); itemRenderer.renderIcon(80, 49, MekanismRenderer.getColorIcon(configurable.getEjector().getOutputColor()), 16, 16); GL11.glDisable(GL11.GL_LIGHTING); diff --git a/common/mekanism/client/gui/GuiDynamicTank.java b/common/mekanism/client/gui/GuiDynamicTank.java index 4254bd60a..c04565797 100644 --- a/common/mekanism/client/gui/GuiDynamicTank.java +++ b/common/mekanism/client/gui/GuiDynamicTank.java @@ -94,7 +94,7 @@ public class GuiDynamicTank extends GuiContainer scale = 0; } - mc.renderEngine.bindTexture(MekanismRenderer.getLiquidTexture()); + mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); drawTexturedModelRectFromIcon(width + xPos, height + yPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); start+=16; diff --git a/common/mekanism/client/gui/GuiElectricPump.java b/common/mekanism/client/gui/GuiElectricPump.java index dac7cc851..d72004064 100644 --- a/common/mekanism/client/gui/GuiElectricPump.java +++ b/common/mekanism/client/gui/GuiElectricPump.java @@ -97,7 +97,7 @@ public class GuiElectricPump extends GuiContainer scale = 0; } - mc.renderEngine.bindTexture(MekanismRenderer.getLiquidTexture()); + mc.renderEngine.bindTexture(MekanismRenderer.getBlocksTexture()); drawTexturedModelRectFromIcon(width + yPos, height + xPos + 58 - renderRemaining - start, fluid.getFluid().getIcon(), 16, 16 - (16 - renderRemaining)); start+=16; diff --git a/common/mekanism/client/gui/GuiLogisticalSorter.java b/common/mekanism/client/gui/GuiLogisticalSorter.java index b7b581a6e..3f2e6d36e 100644 --- a/common/mekanism/client/gui/GuiLogisticalSorter.java +++ b/common/mekanism/client/gui/GuiLogisticalSorter.java @@ -330,7 +330,7 @@ public class GuiLogisticalSorter extends GuiMekanism GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(tileEntity.color)); + mc.getTextureManager().bindTexture(MekanismRenderer.getBlocksTexture()); itemRenderer.renderIcon(13, 137, MekanismRenderer.getColorIcon(tileEntity.color), 16, 16); GL11.glDisable(GL11.GL_LIGHTING); diff --git a/common/mekanism/client/gui/GuiTItemStackFilter.java b/common/mekanism/client/gui/GuiTItemStackFilter.java index 80f485291..47489b175 100644 --- a/common/mekanism/client/gui/GuiTItemStackFilter.java +++ b/common/mekanism/client/gui/GuiTItemStackFilter.java @@ -190,7 +190,7 @@ public class GuiTItemStackFilter extends GuiMekanism GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(filter.color)); + mc.getTextureManager().bindTexture(MekanismRenderer.getBlocksTexture()); itemRenderer.renderIcon(12, 44, MekanismRenderer.getColorIcon(filter.color), 16, 16); GL11.glDisable(GL11.GL_LIGHTING); diff --git a/common/mekanism/client/gui/GuiTOreDictFilter.java b/common/mekanism/client/gui/GuiTOreDictFilter.java index 6735ff425..d75f2f8cf 100644 --- a/common/mekanism/client/gui/GuiTOreDictFilter.java +++ b/common/mekanism/client/gui/GuiTOreDictFilter.java @@ -177,7 +177,7 @@ public class GuiTOreDictFilter extends GuiMekanism GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL12.GL_RESCALE_NORMAL); - mc.getTextureManager().bindTexture(MekanismRenderer.getColorResource(filter.color)); + mc.getTextureManager().bindTexture(MekanismRenderer.getBlocksTexture()); itemRenderer.renderIcon(12, 44, MekanismRenderer.getColorIcon(filter.color), 16, 16); GL11.glDisable(GL11.GL_LIGHTING); diff --git a/common/mekanism/client/render/MekanismRenderer.java b/common/mekanism/client/render/MekanismRenderer.java index a4a4acd42..467a18708 100644 --- a/common/mekanism/client/render/MekanismRenderer.java +++ b/common/mekanism/client/render/MekanismRenderer.java @@ -4,10 +4,10 @@ import java.util.Arrays; import java.util.List; import mekanism.api.EnumColor; +import mekanism.api.gas.EnumGas; import mekanism.common.ISpecialBounds; import mekanism.common.ObfuscatedNames; import mekanism.common.util.MekanismUtils; -import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; @@ -22,12 +22,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Timer; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.fluids.Fluid; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; +import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -38,9 +42,34 @@ public class MekanismRenderer public static Icon[] colors = new Icon[256]; + public static Icon energyIcon; + private static float lightmapLastX; private static float lightmapLastY; private static boolean optifineBreak = false; + + public static void init() + { + MinecraftForge.EVENT_BUS.register(new MekanismRenderer()); + } + + @EventHandler + @ForgeSubscribe /* Screwy Forge code */ + public void onStitch(TextureStitchEvent.Pre event) + { + if(event.map.textureType == 0) + { + for(EnumColor color : EnumColor.values()) + { + colors[color.ordinal()] = event.map.registerIcon("mekanism:Overlay" + color.friendlyName.replace(" ", "")); + } + + energyIcon = event.map.registerIcon("mekanism:LiquidEnergy"); + + EnumGas.HYDROGEN.gasIcon = event.map.registerIcon("mekanism:LiquidHydrogen"); + EnumGas.OXYGEN.gasIcon = event.map.registerIcon("mekanism:LiquidOxygen"); + } + } public static class Model3D { @@ -152,18 +181,8 @@ 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()]; } @@ -175,9 +194,7 @@ public class MekanismRenderer { lightmapLastX = OpenGlHelper.lastBrightnessX; lightmapLastY = OpenGlHelper.lastBrightnessY; - } - catch(NoSuchFieldError e) - { + } catch(NoSuchFieldError e) { optifineBreak = true; } @@ -428,8 +445,13 @@ public class MekanismRenderer return 0; } - public static ResourceLocation getLiquidTexture() + public static ResourceLocation getBlocksTexture() { return TextureMap.locationBlocksTexture; } + + public static ResourceLocation getItemsTexture() + { + return TextureMap.locationItemsTexture; + } } diff --git a/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java b/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java index d6a1d3bc9..776dfb7ee 100644 --- a/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java +++ b/common/mekanism/client/render/tileentity/RenderConfigurableMachine.java @@ -14,12 +14,10 @@ import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; -import net.minecraft.client.renderer.texture.TextureMap; 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.Icon; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -68,7 +66,7 @@ public class RenderConfigurableMachine extends TileEntitySpecialRenderer GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.4F); - bindTexture(MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "Overlay" + color.friendlyName.replace(" ", "") + ".png")); + bindTexture(MekanismRenderer.getBlocksTexture()); GL11.glTranslatef((float)x, (float)y, (float)z); int display = getOverlayDisplay(world, ForgeDirection.getOrientation(pos.sideHit), color).display; diff --git a/common/mekanism/client/render/tileentity/RenderDynamicTank.java b/common/mekanism/client/render/tileentity/RenderDynamicTank.java index 14bccfdb4..b4f8b6237 100644 --- a/common/mekanism/client/render/tileentity/RenderDynamicTank.java +++ b/common/mekanism/client/render/tileentity/RenderDynamicTank.java @@ -47,7 +47,7 @@ public class RenderDynamicTank extends TileEntitySpecialRenderer data.length = tileEntity.structure.volLength; data.width = tileEntity.structure.volWidth; - bindTexture(MekanismRenderer.getLiquidTexture()); + bindTexture(MekanismRenderer.getBlocksTexture()); if(data.location != null && data.height > 0 && tileEntity.structure.fluidStored.getFluid() != null) { diff --git a/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java b/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java index e6cd36a56..e8f20f120 100644 --- a/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java +++ b/common/mekanism/client/render/tileentity/RenderLogisticalTransporter.java @@ -84,28 +84,31 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer for(TransporterStack stack : tileEntity.transit) { - GL11.glPushMatrix(); - entityItem.setEntityItemStack(stack.itemStack); - - float[] pos = TransporterUtils.getStackPosition(tileEntity, stack, partialTick*TileEntityLogisticalTransporter.SPEED); - - GL11.glTranslated(x + pos[0], y + pos[1] - entityItem.yOffset, z + pos[2]); - GL11.glScalef(0.75F, 0.75F, 0.75F); - - renderer.doRenderItem(entityItem, 0, 0, 0, 0, 0); - GL11.glPopMatrix(); - - if(stack.color != null) + if(stack != null) { - bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "TransporterBox.png")); GL11.glPushMatrix(); - MekanismRenderer.glowOn(); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glColor4f(stack.color.getColor(0), stack.color.getColor(1), stack.color.getColor(2), 1.0F); - GL11.glTranslatef((float)(x + pos[0]), (float)(y + pos[1] - entityItem.yOffset - (stack.itemStack.itemID < 256 ? 0.1 : 0)), (float)(z + pos[2])); - modelBox.render(0.0625F); - MekanismRenderer.glowOff(); + entityItem.setEntityItemStack(stack.itemStack); + + float[] pos = TransporterUtils.getStackPosition(tileEntity, stack, partialTick*TileEntityLogisticalTransporter.SPEED); + + GL11.glTranslated(x + pos[0], y + pos[1] - entityItem.yOffset, z + pos[2]); + GL11.glScalef(0.75F, 0.75F, 0.75F); + + renderer.doRenderItem(entityItem, 0, 0, 0, 0, 0); GL11.glPopMatrix(); + + if(stack.color != null) + { + bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "TransporterBox.png")); + GL11.glPushMatrix(); + MekanismRenderer.glowOn(); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glColor4f(stack.color.getColor(0), stack.color.getColor(1), stack.color.getColor(2), 1.0F); + GL11.glTranslatef((float)(x + pos[0]), (float)(y + pos[1] - entityItem.yOffset - (stack.itemStack.itemID < 256 ? 0.1 : 0)), (float)(z + pos[2])); + modelBox.render(0.0625F); + MekanismRenderer.glowOff(); + GL11.glPopMatrix(); + } } } } diff --git a/common/mekanism/client/render/tileentity/RenderMechanicalPipe.java b/common/mekanism/client/render/tileentity/RenderMechanicalPipe.java index 6eb718b79..3d4b20272 100644 --- a/common/mekanism/client/render/tileentity/RenderMechanicalPipe.java +++ b/common/mekanism/client/render/tileentity/RenderMechanicalPipe.java @@ -69,7 +69,7 @@ public class RenderMechanicalPipe extends TileEntitySpecialRenderer MekanismRenderer.glowOn(); } - bindTexture(MekanismRenderer.getLiquidTexture()); + bindTexture(MekanismRenderer.getBlocksTexture()); GL11.glTranslatef((float)x, (float)y, (float)z); for(int i = 0; i < 6; i++) diff --git a/common/mekanism/client/render/tileentity/RenderPressurizedTube.java b/common/mekanism/client/render/tileentity/RenderPressurizedTube.java index 67e6741a9..1cb583cf0 100644 --- a/common/mekanism/client/render/tileentity/RenderPressurizedTube.java +++ b/common/mekanism/client/render/tileentity/RenderPressurizedTube.java @@ -118,7 +118,7 @@ public class RenderPressurizedTube extends TileEntitySpecialRenderer push(); GL11.glColor4f(1.0F, 1.0F, 1.0F, tileEntity.gasScale); - bindTexture(tileEntity.refGas.texturePath); + bindTexture(MekanismRenderer.getBlocksTexture()); GL11.glTranslatef((float)x, (float)y, (float)z); if(tileEntity.gasScale > 0) diff --git a/common/mekanism/client/render/tileentity/RenderUniversalCable.java b/common/mekanism/client/render/tileentity/RenderUniversalCable.java index 28835ecf0..04e47eb73 100644 --- a/common/mekanism/client/render/tileentity/RenderUniversalCable.java +++ b/common/mekanism/client/render/tileentity/RenderUniversalCable.java @@ -30,8 +30,6 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer { private static ModelTransmitter model = new ModelTransmitter(Size.SMALL); - private static Icon renderIcon = MekanismRenderer.getTextureMap(1).registerIcon("mekanism:LiquidEnergy"); - private static Model3D[] energy = null; private static Map sideDisplayLists = new HashMap(); @@ -75,7 +73,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer MekanismRenderer.glowOn(); GL11.glColor4f(1F, 1F, 1F, tileEntity.getEnergyScale()); - bindTexture(MekanismUtils.getResource(ResourceType.TEXTURE_ITEMS, "LiquidEnergy.png")); + bindTexture(MekanismRenderer.getBlocksTexture()); GL11.glTranslatef((float)x, (float)y, (float)z); if(energy == null) @@ -125,7 +123,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer Model3D[] energyArray = new Model3D[7]; Model3D centerModel = new Model3D(); centerModel.baseBlock = Block.waterStill; - centerModel.setTexture(renderIcon); + centerModel.setTexture(MekanismRenderer.energyIcon); centerModel.minX = 0.3 + offset; centerModel.minY = 0.3 + offset; @@ -141,7 +139,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer { Model3D toReturn = new Model3D(); toReturn.baseBlock = Block.waterStill; - toReturn.setTexture(renderIcon); + toReturn.setTexture(MekanismRenderer.energyIcon); toReturn.setSideRender(side, false); toReturn.setSideRender(side.getOpposite(), false); diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index 0e7b48cc0..ff8b65871 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -314,6 +314,8 @@ public class CommonProxy return null; } + public void preInit() {} + public double getReach(EntityPlayer player) { if(player instanceof EntityPlayerMP) diff --git a/common/mekanism/common/HashList.java b/common/mekanism/common/HashList.java index 488cf6fe1..ab6312661 100644 --- a/common/mekanism/common/HashList.java +++ b/common/mekanism/common/HashList.java @@ -39,6 +39,14 @@ public class HashList implements Iterable { if(!list.contains(obj)) { + if(index > size()) + { + for(int i = size(); i <= index-1; i++) + { + list.add(i, null); + } + } + list.add(index, obj); } } diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 1b347925e..38e4344dc 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -1057,6 +1057,8 @@ public class Mekanism System.out.println("[Mekanism] Detected Tekkit in root directory - hello, fellow user!"); } + Mekanism.proxy.preInit(); + MinecraftForge.EVENT_BUS.register(hooks); //Register infuses diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java index 8ec6e06c5..03f8c6585 100644 --- a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -984,7 +984,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I { for(int x = xCoord-1; x <= xCoord+1; x++) { - for(int y = yCoord; y <= yCoord+2; y++) + for(int y = yCoord; y <= yCoord+1; y++) { for(int z = zCoord-1; z <= zCoord+1; z++) { diff --git a/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java b/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java index 3b2fd868c..60d8319a5 100644 --- a/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java +++ b/common/mekanism/common/tileentity/TileEntityLogisticalSorter.java @@ -374,7 +374,7 @@ public class TileEntityLogisticalSorter extends TileEntityElectricBlock implemen if(back instanceof IInventory) { - return TransporterUtils.canInsert(back, null, stack, ForgeDirection.getOrientation(facing).getOpposite().ordinal(), true); + return InventoryUtils.canInsert(back, null, stack, ForgeDirection.getOrientation(facing).getOpposite().ordinal(), true); } return false; diff --git a/common/mekanism/common/tileentity/TileEntityLogisticalTransporter.java b/common/mekanism/common/tileentity/TileEntityLogisticalTransporter.java index 5253ce364..68ef6f72b 100644 --- a/common/mekanism/common/tileentity/TileEntityLogisticalTransporter.java +++ b/common/mekanism/common/tileentity/TileEntityLogisticalTransporter.java @@ -52,7 +52,10 @@ public class TileEntityLogisticalTransporter extends TileEntity implements ITile { for(TransporterStack stack : transit) { - stack.progress = Math.min(100, stack.progress+SPEED); + if(stack != null) + { + stack.progress = Math.min(100, stack.progress+SPEED); + } } } else { @@ -143,7 +146,7 @@ public class TileEntityLogisticalTransporter extends TileEntity implements ITile { if(stack.isFinal(this)) { - if(stack.pathType == Path.DEST && !TransporterUtils.canInsert(stack.getDest().getTileEntity(worldObj), stack.color, stack.itemStack, stack.getSide(this), false)) + if(stack.pathType == Path.DEST && !InventoryUtils.canInsert(stack.getDest().getTileEntity(worldObj), stack.color, stack.itemStack, stack.getSide(this), false)) { if(!recalculate(stack, null)) { @@ -151,7 +154,7 @@ public class TileEntityLogisticalTransporter extends TileEntity implements ITile continue; } } - else if(stack.pathType == Path.HOME && !TransporterUtils.canInsert(stack.getDest().getTileEntity(worldObj), stack.color, stack.itemStack, stack.getSide(this), true)) + else if(stack.pathType == Path.HOME && !InventoryUtils.canInsert(stack.getDest().getTileEntity(worldObj), stack.color, stack.itemStack, stack.getSide(this), true)) { if(!recalculate(stack, null)) { diff --git a/common/mekanism/common/transporter/TransporterPathfinder.java b/common/mekanism/common/transporter/TransporterPathfinder.java index 03ee639fd..150a25260 100644 --- a/common/mekanism/common/transporter/TransporterPathfinder.java +++ b/common/mekanism/common/transporter/TransporterPathfinder.java @@ -14,8 +14,7 @@ import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.tileentity.TileEntityLogisticalTransporter; import mekanism.common.transporter.TransporterPathfinder.Pathfinder.DestChecker; import mekanism.common.transporter.TransporterStack.Path; -import mekanism.common.util.TransporterUtils; -import net.minecraft.inventory.IInventory; +import mekanism.common.util.InventoryUtils; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; @@ -213,7 +212,7 @@ public final class TransporterPathfinder continue; } - if(TransporterUtils.canInsert(tile, transportStack.color, transportStack.itemStack, side.ordinal(), false)) + if(InventoryUtils.canInsert(tile, transportStack.color, transportStack.itemStack, side.ordinal(), false)) { destsFound.add(Object3D.get(tile)); } @@ -240,7 +239,7 @@ public final class TransporterPathfinder @Override public boolean isValid(TransporterStack stack, int side, TileEntity tile) { - return TransporterUtils.canInsert(tile, stack.color, stack.itemStack, side, false); + return InventoryUtils.canInsert(tile, stack.color, stack.itemStack, side, false); } }; @@ -507,7 +506,7 @@ public final class TransporterPathfinder @Override public boolean isValid(TransporterStack stack, int side, TileEntity tile) { - return TransporterUtils.canInsert(tile, stack.color, stack.itemStack, side, true); + return InventoryUtils.canInsert(tile, stack.color, stack.itemStack, side, true); } }; diff --git a/common/mekanism/common/util/InventoryUtils.java b/common/mekanism/common/util/InventoryUtils.java index d315baa46..ebbc9bdb9 100644 --- a/common/mekanism/common/util/InventoryUtils.java +++ b/common/mekanism/common/util/InventoryUtils.java @@ -1,5 +1,7 @@ package mekanism.common.util; +import mekanism.api.EnumColor; +import mekanism.api.IConfigurable; import mekanism.common.tileentity.TileEntityBin; import mekanism.common.tileentity.TileEntityLogisticalSorter; import mekanism.common.transporter.InvStack; @@ -7,6 +9,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.InventoryLargeChest; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; import net.minecraftforge.common.ForgeDirection; @@ -332,4 +335,117 @@ public final class InventoryUtils return null; } + public static boolean canInsert(TileEntity tileEntity, EnumColor color, ItemStack itemStack, int side, boolean force) + { + if(!(tileEntity instanceof IInventory)) + { + return false; + } + + if(force && tileEntity instanceof TileEntityLogisticalSorter) + { + return ((TileEntityLogisticalSorter)tileEntity).canSendHome(itemStack); + } + + if(!force && tileEntity instanceof IConfigurable) + { + IConfigurable config = (IConfigurable)tileEntity; + int tileSide = config.getOrientation(); + EnumColor configColor = config.getEjector().getInputColor(ForgeDirection.getOrientation(MekanismUtils.getBaseOrientation(side, tileSide)).getOpposite()); + + if(config.getEjector().hasStrictInput() && configColor != null && configColor != color) + { + return false; + } + } + + IInventory inventory = (IInventory)tileEntity; + + if(!(inventory instanceof ISidedInventory)) + { + inventory = InventoryUtils.checkChestInv(inventory); + + for(int i = 0; i <= inventory.getSizeInventory() - 1; i++) + { + if(!force) + { + if(!inventory.isItemValidForSlot(i, itemStack)) + { + continue; + } + } + + ItemStack inSlot = inventory.getStackInSlot(i); + + if(inSlot == null) + { + return true; + } + else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) + { + if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) + { + return true; + } + else { + int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); + + if(rejects < itemStack.stackSize) + { + return true; + } + } + } + } + } + else { + ISidedInventory sidedInventory = (ISidedInventory)inventory; + int[] slots = sidedInventory.getAccessibleSlotsFromSide(ForgeDirection.getOrientation(side).getOpposite().ordinal()); + + if(slots != null && slots.length != 0) + { + if(force && sidedInventory instanceof TileEntityBin && ForgeDirection.getOrientation(side).getOpposite().ordinal() == 0) + { + slots = sidedInventory.getAccessibleSlotsFromSide(1); + } + + for(int get = 0; get <= slots.length - 1; get++) + { + int slotID = slots[get]; + + if(!force) + { + if(!sidedInventory.isItemValidForSlot(slotID, itemStack) || !sidedInventory.canInsertItem(slotID, itemStack, ForgeDirection.getOrientation(side).getOpposite().ordinal())) + { + continue; + } + } + + ItemStack inSlot = inventory.getStackInSlot(slotID); + + if(inSlot == null) + { + return true; + } + else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) + { + if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) + { + return true; + } + else { + int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); + + if(rejects < itemStack.stackSize) + { + return true; + } + } + } + } + } + } + + return false; + } } diff --git a/common/mekanism/common/util/TransporterUtils.java b/common/mekanism/common/util/TransporterUtils.java index f26a14f2b..7bc86088c 100644 --- a/common/mekanism/common/util/TransporterUtils.java +++ b/common/mekanism/common/util/TransporterUtils.java @@ -200,120 +200,6 @@ public final class TransporterUtils return tileEntity.insertRR(outputter, itemStack.copy(), color); } - public static boolean canInsert(TileEntity tileEntity, EnumColor color, ItemStack itemStack, int side, boolean force) - { - if(!(tileEntity instanceof IInventory)) - { - return false; - } - - if(force && tileEntity instanceof TileEntityLogisticalSorter) - { - return ((TileEntityLogisticalSorter)tileEntity).canSendHome(itemStack); - } - - if(!force && tileEntity instanceof IConfigurable) - { - IConfigurable config = (IConfigurable)tileEntity; - int tileSide = config.getOrientation(); - EnumColor configColor = config.getEjector().getInputColor(ForgeDirection.getOrientation(MekanismUtils.getBaseOrientation(side, tileSide)).getOpposite()); - - if(config.getEjector().hasStrictInput() && configColor != null && configColor != color) - { - return false; - } - } - - IInventory inventory = (IInventory)tileEntity; - - if(!(inventory instanceof ISidedInventory)) - { - inventory = InventoryUtils.checkChestInv(inventory); - - for(int i = 0; i <= inventory.getSizeInventory() - 1; i++) - { - if(!force) - { - if(!inventory.isItemValidForSlot(i, itemStack)) - { - continue; - } - } - - ItemStack inSlot = inventory.getStackInSlot(i); - - if(inSlot == null) - { - return true; - } - else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) - { - if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) - { - return true; - } - else { - int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); - - if(rejects < itemStack.stackSize) - { - return true; - } - } - } - } - } - else { - ISidedInventory sidedInventory = (ISidedInventory)inventory; - int[] slots = sidedInventory.getAccessibleSlotsFromSide(ForgeDirection.getOrientation(side).getOpposite().ordinal()); - - if(slots != null && slots.length != 0) - { - if(force && sidedInventory instanceof TileEntityBin && ForgeDirection.getOrientation(side).getOpposite().ordinal() == 0) - { - slots = sidedInventory.getAccessibleSlotsFromSide(1); - } - - for(int get = 0; get <= slots.length - 1; get++) - { - int slotID = slots[get]; - - if(!force) - { - if(!sidedInventory.isItemValidForSlot(slotID, itemStack) || !sidedInventory.canInsertItem(slotID, itemStack, ForgeDirection.getOrientation(side).getOpposite().ordinal())) - { - continue; - } - } - - ItemStack inSlot = inventory.getStackInSlot(slotID); - - if(inSlot == null) - { - return true; - } - else if(inSlot.isItemEqual(itemStack) && inSlot.stackSize < inSlot.getMaxStackSize()) - { - if(inSlot.stackSize + itemStack.stackSize <= inSlot.getMaxStackSize()) - { - return true; - } - else { - int rejects = (inSlot.stackSize + itemStack.stackSize) - inSlot.getMaxStackSize(); - - if(rejects < itemStack.stackSize) - { - return true; - } - } - } - } - } - } - - return false; - } - public static EnumColor increment(EnumColor color) { if(color == null) diff --git a/resources/assets/mekanism/textures/items/LiquidEnergy.png b/resources/assets/mekanism/textures/blocks/LiquidEnergy.png similarity index 100% rename from resources/assets/mekanism/textures/items/LiquidEnergy.png rename to resources/assets/mekanism/textures/blocks/LiquidEnergy.png diff --git a/resources/assets/mekanism/textures/blocks/LiquidEnergy.png.mcmeta b/resources/assets/mekanism/textures/blocks/LiquidEnergy.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/resources/assets/mekanism/textures/blocks/LiquidEnergy.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/resources/assets/mekanism/textures/items/LiquidHydrogen.png b/resources/assets/mekanism/textures/blocks/LiquidHydrogen.png similarity index 100% rename from resources/assets/mekanism/textures/items/LiquidHydrogen.png rename to resources/assets/mekanism/textures/blocks/LiquidHydrogen.png diff --git a/resources/assets/mekanism/textures/blocks/LiquidHydrogen.png.mcmeta b/resources/assets/mekanism/textures/blocks/LiquidHydrogen.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/resources/assets/mekanism/textures/blocks/LiquidHydrogen.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/resources/assets/mekanism/textures/items/LiquidOxygen.png b/resources/assets/mekanism/textures/blocks/LiquidOxygen.png similarity index 100% rename from resources/assets/mekanism/textures/items/LiquidOxygen.png rename to resources/assets/mekanism/textures/blocks/LiquidOxygen.png diff --git a/resources/assets/mekanism/textures/blocks/LiquidOxygen.png.mcmeta b/resources/assets/mekanism/textures/blocks/LiquidOxygen.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/resources/assets/mekanism/textures/blocks/LiquidOxygen.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/resources/assets/mekanism/textures/blocks/LogisticalSorterSideOn.png b/resources/assets/mekanism/textures/blocks/LogisticalSorterSideOn.png deleted file mode 100644 index 8165e457c..000000000 Binary files a/resources/assets/mekanism/textures/blocks/LogisticalSorterSideOn.png and /dev/null differ diff --git a/resources/assets/mekanism/textures/items/LiquidEnergy.txt b/resources/assets/mekanism/textures/items/LiquidEnergy.txt deleted file mode 100644 index 0af6f629f..000000000 --- a/resources/assets/mekanism/textures/items/LiquidEnergy.txt +++ /dev/null @@ -1,32 +0,0 @@ -0*2 -1*2 -2*2 -3*2 -4*2 -5*2 -6*2 -7*2 -8*2 -9*2 -10*2 -11*2 -12*2 -13*2 -14*2 -15*2 -16*2 -17*2 -18*2 -19*2 -20*2 -21*2 -22*2 -23*2 -24*2 -25*2 -26*2 -27*2 -28*2 -29*2 -30*2 -31*2 \ No newline at end of file diff --git a/resources/assets/mekanism/textures/items/LiquidHydrogen.txt b/resources/assets/mekanism/textures/items/LiquidHydrogen.txt deleted file mode 100644 index 0af6f629f..000000000 --- a/resources/assets/mekanism/textures/items/LiquidHydrogen.txt +++ /dev/null @@ -1,32 +0,0 @@ -0*2 -1*2 -2*2 -3*2 -4*2 -5*2 -6*2 -7*2 -8*2 -9*2 -10*2 -11*2 -12*2 -13*2 -14*2 -15*2 -16*2 -17*2 -18*2 -19*2 -20*2 -21*2 -22*2 -23*2 -24*2 -25*2 -26*2 -27*2 -28*2 -29*2 -30*2 -31*2 \ No newline at end of file diff --git a/resources/assets/mekanism/textures/items/LiquidOxygen.txt b/resources/assets/mekanism/textures/items/LiquidOxygen.txt deleted file mode 100644 index 0af6f629f..000000000 --- a/resources/assets/mekanism/textures/items/LiquidOxygen.txt +++ /dev/null @@ -1,32 +0,0 @@ -0*2 -1*2 -2*2 -3*2 -4*2 -5*2 -6*2 -7*2 -8*2 -9*2 -10*2 -11*2 -12*2 -13*2 -14*2 -15*2 -16*2 -17*2 -18*2 -19*2 -20*2 -21*2 -22*2 -23*2 -24*2 -25*2 -26*2 -27*2 -28*2 -29*2 -30*2 -31*2 \ No newline at end of file