Fixed Model3D textures, fixed error spam on world load, fixed Digital Miner breaking blocks on top, general code cleanup
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,10 +42,35 @@ 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
|
||||
{
|
||||
public double minX;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -83,6 +83,8 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer
|
|||
entityItem.worldObj = tileEntity.worldObj;
|
||||
|
||||
for(TransporterStack stack : tileEntity.transit)
|
||||
{
|
||||
if(stack != null)
|
||||
{
|
||||
GL11.glPushMatrix();
|
||||
entityItem.setEntityItemStack(stack.itemStack);
|
||||
|
@ -110,3 +112,4 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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<ForgeDirection, DisplayInteger> sideDisplayLists = new HashMap<ForgeDirection, DisplayInteger>();
|
||||
|
@ -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);
|
||||
|
|
|
@ -314,6 +314,8 @@ public class CommonProxy
|
|||
return null;
|
||||
}
|
||||
|
||||
public void preInit() {}
|
||||
|
||||
public double getReach(EntityPlayer player)
|
||||
{
|
||||
if(player instanceof EntityPlayerMP)
|
||||
|
|
|
@ -39,6 +39,14 @@ public class HashList<T> implements Iterable<T>
|
|||
{
|
||||
if(!list.contains(obj))
|
||||
{
|
||||
if(index > size())
|
||||
{
|
||||
for(int i = size(); i <= index-1; i++)
|
||||
{
|
||||
list.add(i, null);
|
||||
}
|
||||
}
|
||||
|
||||
list.add(index, obj);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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++)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -51,10 +51,13 @@ public class TileEntityLogisticalTransporter extends TileEntity implements ITile
|
|||
if(worldObj.isRemote)
|
||||
{
|
||||
for(TransporterStack stack : transit)
|
||||
{
|
||||
if(stack != null)
|
||||
{
|
||||
stack.progress = Math.min(100, stack.progress+SPEED);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Set<TransporterStack> remove = new HashSet<TransporterStack>();
|
||||
|
||||
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"animation": {
|
||||
"frametime": 2
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.7 KiB |
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"animation": {
|
||||
"frametime": 2
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"animation": {
|
||||
"frametime": 2
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB |
|
@ -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
|
|
@ -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
|
|
@ -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
|