Added transporter recipe, items now drop when necessary
This commit is contained in:
parent
cb555e90a6
commit
a63573d80f
5 changed files with 55 additions and 15 deletions
|
@ -1,6 +1,5 @@
|
|||
package mekanism.client.render.tileentity;
|
||||
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.client.model.ModelTransmitter;
|
||||
import mekanism.client.model.ModelTransmitter.Size;
|
||||
import mekanism.client.model.ModelTransporterBox;
|
||||
|
@ -72,18 +71,10 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer
|
|||
{
|
||||
GL11.glPushMatrix();
|
||||
entityItem.setEntityItemStack(stack.itemStack);
|
||||
Object3D offset = new Object3D(0, 0, 0).step(ForgeDirection.getOrientation(stack.getSide(tileEntity)));
|
||||
|
||||
float itemFix = 0;
|
||||
float[] pos = TransporterUtils.getStackPosition(tileEntity, stack);
|
||||
|
||||
if(stack.itemStack.itemID >= 256)
|
||||
{
|
||||
itemFix = 0.1F;
|
||||
}
|
||||
|
||||
double progress = ((double)stack.progress / 100D) - 0.5;
|
||||
|
||||
renderer.doRenderItem(entityItem, x + 0.5 + offset.xCoord*progress, y + 0.5 + offset.yCoord*progress - entityItem.yOffset - itemFix, z + 0.5 + offset.zCoord*progress, 0, 0);
|
||||
renderer.doRenderItem(entityItem, x + pos[0], y + pos[1] - entityItem.yOffset, z + pos[2], 0, 0);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(stack.color != null)
|
||||
|
@ -93,7 +84,7 @@ public class RenderLogisticalTransporter extends TileEntitySpecialRenderer
|
|||
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 + 0.5 + offset.xCoord*progress), (float)(y + 0.5 + offset.yCoord*progress - entityItem.yOffset - 0.1F), (float)(z + 0.5 + offset.zCoord*progress));
|
||||
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();
|
||||
|
|
|
@ -412,6 +412,9 @@ public class Mekanism
|
|||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(WalkieTalkie), new Object[] {
|
||||
" O", "SCS", " S ", Character.valueOf('O'), "ingotOsmium", Character.valueOf('S'), "ingotSteel", Character.valueOf('C'), "circuitBasic"
|
||||
}));
|
||||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(Transmitter, 8, 3), new Object[] {
|
||||
"S S", Character.valueOf('S'), "ingotSteel"
|
||||
}));
|
||||
CraftingManager.getInstance().getRecipeList().add(new MekanismRecipe(new ItemStack(MachineBlock, 1, 15), new Object[] {
|
||||
"IPI", "ICI", "III", Character.valueOf('I'), Item.ingotIron, Character.valueOf('P'), Block.pistonBase, Character.valueOf('C'), "circuitBasic"
|
||||
}));
|
||||
|
|
|
@ -16,7 +16,7 @@ import mekanism.common.tileentity.TileEntityLogisticalTransporter;
|
|||
import mekanism.common.tileentity.TileEntityMechanicalPipe;
|
||||
import mekanism.common.tileentity.TileEntityPressurizedTube;
|
||||
import mekanism.common.tileentity.TileEntityUniversalCable;
|
||||
import mekanism.common.transporter.TransporterPathfinder;
|
||||
import mekanism.common.transporter.TransporterStack;
|
||||
import mekanism.common.util.CableUtils;
|
||||
import mekanism.common.util.TransporterUtils;
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -376,6 +376,24 @@ public class BlockTransmitter extends Block
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, int i1, int i2)
|
||||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if(!world.isRemote && tileEntity instanceof TileEntityLogisticalTransporter)
|
||||
{
|
||||
TileEntityLogisticalTransporter transporter = (TileEntityLogisticalTransporter)world.getBlockTileEntity(x, y, z);
|
||||
|
||||
for(TransporterStack stack : transporter.transit)
|
||||
{
|
||||
TransporterUtils.drop(transporter, stack);
|
||||
}
|
||||
}
|
||||
|
||||
super.breakBlock(world, x, y, z, i1, i2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float playerX, float playerY, float playerZ)
|
||||
{
|
||||
|
|
|
@ -189,7 +189,7 @@ public class TileEntityLogisticalTransporter extends TileEntity implements ITile
|
|||
|
||||
if(!stack.hasPath())
|
||||
{
|
||||
//drop
|
||||
TransporterUtils.drop(this, stack);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,13 +2,14 @@ package mekanism.common.util;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import mekanism.api.EnumColor;
|
||||
import mekanism.api.Object3D;
|
||||
import mekanism.api.transmitters.ITransmitter;
|
||||
import mekanism.common.tileentity.TileEntityLogisticalTransporter;
|
||||
import mekanism.common.transporter.SlotInfo;
|
||||
import mekanism.common.transporter.TransporterStack;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -363,6 +364,33 @@ public final class TransporterUtils
|
|||
return colors.get(colors.indexOf(color)+1);
|
||||
}
|
||||
|
||||
public static void drop(TileEntityLogisticalTransporter tileEntity, TransporterStack stack)
|
||||
{
|
||||
float[] pos = TransporterUtils.getStackPosition(tileEntity, stack);
|
||||
EntityItem entityItem = new EntityItem(tileEntity.worldObj, tileEntity.xCoord + pos[0], tileEntity.yCoord + pos[1], tileEntity.zCoord + pos[2], stack.itemStack);
|
||||
|
||||
entityItem.motionX = 0;
|
||||
entityItem.motionY = 0;
|
||||
entityItem.motionZ = 0;
|
||||
|
||||
tileEntity.worldObj.spawnEntityInWorld(entityItem);
|
||||
}
|
||||
|
||||
public static float[] getStackPosition(TileEntityLogisticalTransporter tileEntity, TransporterStack stack)
|
||||
{
|
||||
Object3D offset = new Object3D(0, 0, 0).step(ForgeDirection.getOrientation(stack.getSide(tileEntity)));
|
||||
float progress = ((float)stack.progress / 100F) - 0.5F;
|
||||
|
||||
float itemFix = 0;
|
||||
|
||||
if(stack.itemStack.itemID >= 256)
|
||||
{
|
||||
itemFix = 0.1F;
|
||||
}
|
||||
|
||||
return new float[] {0.5F + offset.xCoord*progress, 0.5F + offset.yCoord*progress - itemFix, 0.5F + offset.zCoord*progress};
|
||||
}
|
||||
|
||||
public static void incrementColor(TileEntityLogisticalTransporter tileEntity)
|
||||
{
|
||||
if(tileEntity.color == null)
|
||||
|
|
Loading…
Reference in a new issue