From ead4af2f786c4f2af2774206d837bd8ba3dd58ca Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Tue, 17 Jun 2014 18:21:59 +0200 Subject: [PATCH] Fixed transporter item rendering, fixed WAILA display bug. Dispensers now eject balloon entities! --- src/main/java/mekanism/api/Pos3D.java | 7 +++ .../java/mekanism/client/gui/GuiGauge.java | 1 + .../mekanism/common/item/ItemBalloon.java | 47 +++++++++++++++++++ .../multipart/PartLogisticalTransporter.java | 2 +- .../common/multipart/PartMechanicalPipe.java | 2 +- .../common/tile/TileEntityDigitalMiner.java | 2 +- .../common/transporter/TransporterStack.java | 2 + 7 files changed, 60 insertions(+), 3 deletions(-) diff --git a/src/main/java/mekanism/api/Pos3D.java b/src/main/java/mekanism/api/Pos3D.java index 28b4499d6..aa4ae089f 100644 --- a/src/main/java/mekanism/api/Pos3D.java +++ b/src/main/java/mekanism/api/Pos3D.java @@ -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. diff --git a/src/main/java/mekanism/client/gui/GuiGauge.java b/src/main/java/mekanism/client/gui/GuiGauge.java index 834bf1f5d..00c334c10 100644 --- a/src/main/java/mekanism/client/gui/GuiGauge.java +++ b/src/main/java/mekanism/client/gui/GuiGauge.java @@ -57,6 +57,7 @@ public abstract class GuiGauge extends GuiElement { if(getScaledLevel() == 0 || getIcon() == null) { + guiObj.drawTexturedRect(guiWidth + xLocation, guiHeight + yLocation, width, 0, width, height); return; } diff --git a/src/main/java/mekanism/common/item/ItemBalloon.java b/src/main/java/mekanism/common/item/ItemBalloon.java index 6bbc9c23c..bb245c03c 100644 --- a/src/main/java/mekanism/common/item/ItemBalloon.java +++ b/src/main/java/mekanism/common/item/ItemBalloon.java @@ -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; + } + } } diff --git a/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java b/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java index 0ee61fe5d..745bbfacd 100644 --- a/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java +++ b/src/main/java/mekanism/common/multipart/PartLogisticalTransporter.java @@ -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); } diff --git a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java index 4d019c870..b32f8195b 100644 --- a/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java +++ b/src/main/java/mekanism/common/multipart/PartMechanicalPipe.java @@ -39,7 +39,7 @@ public class PartMechanicalPipe extends PartTransmitter implements public PartMechanicalPipe(Tier.PipeTier pipeTier) { - this.tier = pipeTier; + tier = pipeTier; } @Override diff --git a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java index 6c5d38c3c..723d0c844 100644 --- a/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java +++ b/src/main/java/mekanism/common/tile/TileEntityDigitalMiner.java @@ -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; diff --git a/src/main/java/mekanism/common/transporter/TransporterStack.java b/src/main/java/mekanism/common/transporter/TransporterStack.java index 0c1f97072..07322fc71 100644 --- a/src/main/java/mekanism/common/transporter/TransporterStack.java +++ b/src/main/java/mekanism/common/transporter/TransporterStack.java @@ -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())