Fixed transporter item rendering, fixed WAILA display bug. Dispensers now eject balloon entities!

This commit is contained in:
Aidan C. Brady 2014-06-17 18:21:59 +02:00
parent 0528f1aace
commit ead4af2f78
7 changed files with 60 additions and 3 deletions

View file

@ -26,6 +26,13 @@ public class Pos3D
yPos = y;
zPos = z;
}
public Pos3D(Coord4D coord)
{
xPos = coord.xCoord;
yPos = coord.yCoord;
zPos = coord.zCoord;
}
/**
* Creates a Pos3D with an entity's posX, posY, and posZ values.

View file

@ -57,6 +57,7 @@ public abstract class GuiGauge<T> extends GuiElement
{
if(getScaledLevel() == 0 || getIcon() == null)
{
guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, width, 0, width, height);
return;
}

View file

@ -7,14 +7,18 @@ import mekanism.api.EnumColor;
import mekanism.api.Pos3D;
import mekanism.common.entity.EntityBalloon;
import mekanism.common.util.MekanismUtils;
import net.minecraft.block.BlockDispenser;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
import net.minecraft.dispenser.IBlockSource;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -24,6 +28,7 @@ public class ItemBalloon extends ItemMekanism
{
super();
setHasSubtypes(true);
BlockDispenser.dispenseBehaviorRegistry.putObject(this, new DispenserBehavior());
}
public EnumColor getColor(ItemStack stack)
@ -155,4 +160,46 @@ public class ItemBalloon extends ItemMekanism
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {}
public class DispenserBehavior extends BehaviorDefaultDispenseItem
{
@Override
public ItemStack dispenseStack(IBlockSource source, ItemStack stack)
{
Coord4D coord = new Coord4D(source.getXInt(), source.getYInt(), source.getZInt(), source.getWorld().provider.dimensionId);
ForgeDirection side = ForgeDirection.getOrientation(BlockDispenser.func_149937_b(source.getBlockMetadata()).ordinal());
Pos3D pos = new Pos3D(coord);
switch(side)
{
case DOWN:
pos.translate(0, -2.5, 0);
break;
case UP:
pos.translate(0, 0, 0);
break;
case NORTH:
pos.translate(0, -1, -0.5);
break;
case SOUTH:
pos.translate(0, -1, 0.5);
break;
case WEST:
pos.translate(-0.5, -1, 0);
break;
case EAST:
pos.translate(0.5, -1, 0);
break;
}
if(!source.getWorld().isRemote)
{
source.getWorld().spawnEntityInWorld(new EntityBalloon(source.getWorld(), pos.xPos, pos.yPos, pos.zPos, getColor(stack)));
}
stack.stackSize--;
return stack;
}
}
}

View file

@ -82,7 +82,7 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
@SideOnly(Side.CLIENT)
public void renderDynamic(Vector3 pos, float f, int pass)
{
if(pass == 1)
if(pass == 0)
{
RenderPartTransmitter.getInstance().renderContents(this, f, pos);
}

View file

@ -39,7 +39,7 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
public PartMechanicalPipe(Tier.PipeTier pipeTier)
{
this.tier = pipeTier;
tier = pipeTier;
}
@Override

View file

@ -176,7 +176,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I
Block block = coord.getBlock(worldObj);
int meta = coord.getMetadata(worldObj);
if(block == Blocks.air)
if(block == null || coord.isAirBlock(worldObj))
{
toRemove.add(index);
next = index + 1;

View file

@ -49,6 +49,7 @@ public class TransporterStack
}
data.add(progress);
originalLocation.write(data);
data.add(pathType.ordinal());
if(pathToTarget.indexOf(Coord4D.get(tileEntity.getTile())) > 0)
@ -80,6 +81,7 @@ public class TransporterStack
}
progress = dataStream.readInt();
originalLocation = Coord4D.read(dataStream);
pathType = Path.values()[dataStream.readInt()];
if(dataStream.readBoolean())