diff --git a/common/mekanism/client/ClientProxy.java b/common/mekanism/client/ClientProxy.java index 87170c2e5..e230ee2c8 100644 --- a/common/mekanism/client/ClientProxy.java +++ b/common/mekanism/client/ClientProxy.java @@ -68,6 +68,7 @@ import mekanism.common.tileentity.TileEntityBin; import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityCrusher; +import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.tileentity.TileEntityDynamicTank; import mekanism.common.tileentity.TileEntityDynamicValve; import mekanism.common.tileentity.TileEntityElectricChest; @@ -104,6 +105,7 @@ 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; @@ -226,7 +228,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityEnrichmentChamber.class, "EnrichmentChamber", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityOsmiumCompressor.class, "OsmiumCompressor", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityCombiner.class, "Combiner", new RenderConfigurableMachine()); - ClientRegistry.registerTileEntity(TileEntityCrusher.class, "Crusher", new RenderConfigurableMachine()); //TODO model + ClientRegistry.registerTileEntity(TileEntityCrusher.class, "Crusher", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityFactory.class, "SmeltingFactory", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityAdvancedFactory.class, "AdvancedSmeltingFactory", new RenderConfigurableMachine()); ClientRegistry.registerTileEntity(TileEntityEliteFactory.class, "UltimateSmeltingFactory", new RenderConfigurableMachine()); @@ -247,6 +249,7 @@ public class ClientProxy extends CommonProxy ClientRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter", new RenderLogisticalTransporter()); ClientRegistry.registerTileEntity(TileEntityLogisticalSorter.class, "LogisticalSorter", new RenderLogisticalSorter()); ClientRegistry.registerTileEntity(TileEntityBin.class, "Bin", new RenderBin()); + GameRegistry.registerTileEntity(TileEntityDigitalMiner.class, "DigitalMiner"); //TODO model } @Override @@ -296,6 +299,8 @@ public class ClientProxy extends CommonProxy { case 1: return new GuiCredits(); + case 2: + //DigitalMiner GUI TODO case 3: return new GuiEnrichmentChamber(player.inventory, (TileEntityElectricMachine)tileEntity); case 4: @@ -411,6 +416,12 @@ public class ClientProxy extends CommonProxy } } + @Override + public double getReach(EntityPlayer player) + { + return Minecraft.getMinecraft().playerController.getBlockReachDistance(); + } + @Override public boolean isPaused() { diff --git a/common/mekanism/client/model/ModelCrusher.java b/common/mekanism/client/model/ModelCrusher.java deleted file mode 100644 index 6e02f5962..000000000 --- a/common/mekanism/client/model/ModelCrusher.java +++ /dev/null @@ -1,121 +0,0 @@ -package mekanism.client.model; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -@SideOnly(Side.CLIENT) -public class ModelCrusher extends ModelBase -{ - ModelRenderer Top; - ModelRenderer Base; - ModelRenderer RightWall; - ModelRenderer RightWall2; - ModelRenderer PistonDecor; - ModelRenderer PistonRod; - ModelRenderer Pad; - ModelRenderer PistonHead; - ModelRenderer BackWall; - ModelRenderer BackWall2; - ModelRenderer TopTop; - - public ModelCrusher() - { - textureWidth = 128; - textureHeight = 64; - - Top = new ModelRenderer(this, 0, 18); - Top.addBox(0F, 0F, 0F, 14, 1, 8); - Top.setRotationPoint(-7F, 14F, -4F); - Top.setTextureSize(128, 64); - Top.mirror = true; - setRotation(Top, 0F, 0F, 0F); - Base = new ModelRenderer(this, 0, 0); - Base.addBox(0F, 0F, 0F, 16, 1, 16); - Base.setRotationPoint(-8F, 23F, -8F); - Base.setTextureSize(128, 64); - Base.mirror = true; - setRotation(Base, 0F, 0F, 0F); - RightWall = new ModelRenderer(this, 0, 28); - RightWall.addBox(0F, 0F, 0F, 4, 6, 14); - RightWall.setRotationPoint(-8F, 17F, -7F); - RightWall.setTextureSize(128, 64); - RightWall.mirror = true; - setRotation(RightWall, 0F, 0F, 0F); - RightWall2 = new ModelRenderer(this, 0, 49); - RightWall2.addBox(0F, 0F, 0F, 4, 2, 12); - RightWall2.setRotationPoint(-8F, 15F, -6F); - RightWall2.setTextureSize(128, 64); - RightWall2.mirror = true; - setRotation(RightWall2, 0F, 0F, 0F); - PistonDecor = new ModelRenderer(this, 65, 0); - PistonDecor.addBox(0F, 0F, 0F, 7, 1, 7); - PistonDecor.setRotationPoint(-0.5F, 14.5F, -3.5F); - PistonDecor.setTextureSize(128, 64); - PistonDecor.mirror = true; - setRotation(PistonDecor, 0F, 0F, 0F); - PistonRod = new ModelRenderer(this, 45, 18); - PistonRod.addBox(0F, 0F, 0F, 1, 6, 1); - PistonRod.setRotationPoint(2.5F, 13F, -0.5F); - PistonRod.setTextureSize(128, 64); - PistonRod.mirror = true; - setRotation(PistonRod, 0F, 0F, 0F); - Pad = new ModelRenderer(this, 50, 18); - Pad.addBox(0F, 0F, 0F, 4, 1, 4); - Pad.setRotationPoint(1F, 22.7F, -2F); - Pad.setTextureSize(128, 64); - Pad.mirror = true; - setRotation(Pad, 0F, 0F, 0F); - PistonHead = new ModelRenderer(this, 67, 18); - PistonHead.addBox(0F, 0F, 0F, 4, 1, 4); - PistonHead.setRotationPoint(1F, 19F, -2F); - PistonHead.setTextureSize(128, 64); - PistonHead.mirror = true; - setRotation(PistonHead, 0F, 0F, 0F); - BackWall = new ModelRenderer(this, 94, 0); - BackWall.addBox(0F, 0F, 0F, 11, 6, 2); - BackWall.setRotationPoint(-4F, 17F, 5F); - BackWall.setTextureSize(128, 64); - BackWall.mirror = true; - setRotation(BackWall, 0F, 0F, 0F); - BackWall2 = new ModelRenderer(this, 90, 9); - BackWall2.addBox(0F, 0F, 0F, 11, 2, 3); - BackWall2.setRotationPoint(-4F, 15F, 3F); - BackWall2.setTextureSize(128, 64); - BackWall2.mirror = true; - setRotation(BackWall2, 0F, 0F, 0F); - TopTop = new ModelRenderer(this, 90, 15); - TopTop.addBox(0F, 0F, 0F, 6, 5, 6); - TopTop.setRotationPoint(0F, 12F, -3F); - TopTop.setTextureSize(128, 64); - TopTop.mirror = true; - setRotation(TopTop, 0F, 0F, 0F); - } - - public void render(float size, float depth) - { - PistonRod.setRotationPoint(2.5F, 13F+depth, -0.5F); - PistonHead.setRotationPoint(1F, 19F+depth, -2F); - - Top.render(size); - Base.render(size); - RightWall.render(size); - RightWall2.render(size); - PistonDecor.render(size); - PistonRod.render(size); - Pad.render(size); - PistonHead.render(size); - BackWall.render(size); - BackWall2.render(size); - TopTop.render(size); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } -} diff --git a/common/mekanism/client/render/block/MachineRenderingHandler.java b/common/mekanism/client/render/block/MachineRenderingHandler.java index d07843212..3a7ba5c13 100644 --- a/common/mekanism/client/render/block/MachineRenderingHandler.java +++ b/common/mekanism/client/render/block/MachineRenderingHandler.java @@ -2,12 +2,10 @@ package mekanism.client.render.block; import mekanism.client.ClientProxy; import mekanism.client.model.ModelChargepad; -import mekanism.client.model.ModelCrusher; import mekanism.client.model.ModelElectricPump; import mekanism.client.model.ModelLogisticalSorter; import mekanism.client.model.ModelMetallurgicInfuser; import mekanism.client.render.MekanismRenderer; -import mekanism.common.Mekanism; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; @@ -29,7 +27,6 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler public ModelMetallurgicInfuser metallurgicInfuser = new ModelMetallurgicInfuser(); public ModelChargepad chargepad = new ModelChargepad(); public ModelLogisticalSorter logisticalSorter = new ModelLogisticalSorter(); - public ModelCrusher crusher = new ModelCrusher(); @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) @@ -73,14 +70,6 @@ public class MachineRenderingHandler implements ISimpleBlockRenderingHandler Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "LogisticalSorter.png")); logisticalSorter.render(0.0625F, false); } - /*else if(metadata == MachineType.CRUSHER.meta) - { - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(270F, 0.0F, -1.0F, 0.0F); - GL11.glTranslatef(0.0F, -1.0F, 0.0F); - Minecraft.getMinecraft().renderEngine.bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "Crusher.png")); - crusher.render(0.0625F, 0.0F); - } TODO model */ else { MekanismRenderer.renderItem(renderer, metadata, block); } diff --git a/common/mekanism/client/render/tileentity/RenderCrusher.java b/common/mekanism/client/render/tileentity/RenderCrusher.java deleted file mode 100644 index e240c4d7f..000000000 --- a/common/mekanism/client/render/tileentity/RenderCrusher.java +++ /dev/null @@ -1,44 +0,0 @@ -package mekanism.client.render.tileentity; - -import mekanism.client.model.ModelCrusher; -import mekanism.common.tileentity.TileEntityCrusher; -import mekanism.common.util.MekanismUtils; -import mekanism.common.util.MekanismUtils.ResourceType; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; - -import org.lwjgl.opengl.GL11; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderCrusher extends TileEntitySpecialRenderer -{ - private ModelCrusher model = new ModelCrusher(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) - { - renderAModelAt((TileEntityCrusher)tileEntity, x, y, z, partialTick); - } - - private void renderAModelAt(TileEntityCrusher tileEntity, double x, double y, double z, float partialTick) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); - bindTexture(MekanismUtils.getResource(ResourceType.RENDER, "Crusher.png")); - - switch(tileEntity.facing) - { - case 2: GL11.glRotatef(0, 0.0F, 1.0F, 0.0F); break; - case 3: GL11.glRotatef(180, 0.0F, 1.0F, 0.0F); break; - case 4: GL11.glRotatef(90, 0.0F, 1.0F, 0.0F); break; - case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; - } - - GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); - model.render(0.0625F, tileEntity.isActive ? tileEntity.getMatrix() : 0.0F); - GL11.glPopMatrix(); - } -} diff --git a/common/mekanism/common/CommonProxy.java b/common/mekanism/common/CommonProxy.java index e53a91768..31e2379f3 100644 --- a/common/mekanism/common/CommonProxy.java +++ b/common/mekanism/common/CommonProxy.java @@ -25,6 +25,7 @@ import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityCrusher; +import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.tileentity.TileEntityDynamicTank; import mekanism.common.tileentity.TileEntityDynamicValve; import mekanism.common.tileentity.TileEntityElectricChest; @@ -46,6 +47,7 @@ import mekanism.common.tileentity.TileEntityPurificationChamber; import mekanism.common.tileentity.TileEntityTeleporter; import mekanism.common.tileentity.TileEntityUniversalCable; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -89,6 +91,7 @@ public class CommonProxy GameRegistry.registerTileEntity(TileEntityLogisticalTransporter.class, "LogisticalTransporter"); GameRegistry.registerTileEntity(TileEntityLogisticalSorter.class, "LogisticalSorter"); GameRegistry.registerTileEntity(TileEntityBin.class, "Bin"); + GameRegistry.registerTileEntity(TileEntityDigitalMiner.class, "DigitalMiner"); } /** @@ -240,6 +243,8 @@ public class CommonProxy switch(ID) { + case 2: + //DIGITAL MINER CONTAINER TODO case 3: return new ContainerElectricMachine(player.inventory, (TileEntityElectricMachine)tileEntity); case 4: @@ -303,6 +308,16 @@ public class CommonProxy return null; } + public double getReach(EntityPlayer player) + { + if(player instanceof EntityPlayerMP) + { + return ((EntityPlayerMP)player).theItemInWorldManager.getBlockReachDistance(); + } + + return 0; + } + /** * Gets the Minecraft base directory. * @return base directory diff --git a/common/mekanism/common/block/BlockBasic.java b/common/mekanism/common/block/BlockBasic.java index 23625cad2..dc683808c 100644 --- a/common/mekanism/common/block/BlockBasic.java +++ b/common/mekanism/common/block/BlockBasic.java @@ -39,6 +39,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; +import codechicken.lib.raytracer.RayTracer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -217,17 +218,21 @@ public class BlockBasic extends Block int meta = world.getBlockMetadata(x, y, z); if(!world.isRemote && meta == 6) - { + { TileEntityBin bin = (TileEntityBin)world.getBlockTileEntity(x, y, z); + MovingObjectPosition pos = MekanismUtils.rayTrace(world, player); - if(bin.getStack() != null) + if(pos != null && pos.sideHit == bin.facing) { - if(!player.isSneaking()) + if(bin.getStack() != null) { - world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, bin.removeStack().copy())); - } - else { - world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, bin.remove(1).copy())); + if(!player.isSneaking()) + { + world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, bin.removeStack().copy())); + } + else { + world.spawnEntityInWorld(new EntityItem(world, player.posX, player.posY, player.posZ, bin.remove(1).copy())); + } } } } diff --git a/common/mekanism/common/block/BlockMachine.java b/common/mekanism/common/block/BlockMachine.java index 3cd5346d8..27e3f1df5 100644 --- a/common/mekanism/common/block/BlockMachine.java +++ b/common/mekanism/common/block/BlockMachine.java @@ -31,6 +31,7 @@ import mekanism.common.tileentity.TileEntityChargepad; import mekanism.common.tileentity.TileEntityCombiner; import mekanism.common.tileentity.TileEntityContainerBlock; import mekanism.common.tileentity.TileEntityCrusher; +import mekanism.common.tileentity.TileEntityDigitalMiner; import mekanism.common.tileentity.TileEntityElectricBlock; import mekanism.common.tileentity.TileEntityElectricChest; import mekanism.common.tileentity.TileEntityElectricPump; @@ -75,7 +76,7 @@ import cpw.mods.fml.relauncher.SideOnly; * 1: Osmium Compressor * 2: Combiner * 3: Crusher - * 4: OPEN + * 4: Digital Miner * 5: Basic Factory * 6: Advanced Factory * 7: Elite Factory @@ -128,14 +129,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds icons[blockID][7][0] = register.registerIcon("mekanism:EliteFactoryFront"); icons[blockID][7][1] = register.registerIcon("mekanism:EliteFactorySide"); icons[blockID][7][2] = register.registerIcon("mekanism:EliteFactoryTop"); - icons[blockID][8][0] = register.registerIcon("mekanism:MetallurgicInfuserFrontOff"); - icons[blockID][8][1] = register.registerIcon("mekanism:MetallurgicInfuserFrontOn"); - icons[blockID][8][2] = register.registerIcon("mekanism:MetallurgicInfuserSideOff"); - icons[blockID][8][3] = register.registerIcon("mekanism:MetallurgicInfuserSideOn"); - icons[blockID][8][4] = register.registerIcon("mekanism:MetallurgicInfuserTopOff"); - icons[blockID][8][5] = register.registerIcon("mekanism:MetallurgicInfuserTopOn"); - icons[blockID][8][6] = register.registerIcon("mekanism:MetallurgicInfuserBackOff"); - icons[blockID][8][7] = register.registerIcon("mekanism:MetallurgicInfuserBackOn"); icons[blockID][9][0] = register.registerIcon("mekanism:PurificationChamberFrontOff"); icons[blockID][9][1] = register.registerIcon("mekanism:PurificationChamberFrontOn"); icons[blockID][9][2] = register.registerIcon("mekanism:SteelCasing"); @@ -184,6 +177,19 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds } } + @Override + public void breakBlock(World world, int x, int y, int z, int i1, int i2) + { + TileEntityElectricBlock tileEntity = (TileEntityElectricBlock)world.getBlockTileEntity(x, y, z); + + if(tileEntity instanceof IBoundingBlock) + { + ((IBoundingBlock)tileEntity).onBreak(); + } + + super.breakBlock(world, x, y, z, i1, i2); + } + @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random random) @@ -332,24 +338,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds return icons[blockID][7][1]; } } - else if(meta == 8) - { - if(side == 0 || side == 1) - { - return icons[blockID][8][4]; - } - else if(side == 3) - { - return icons[blockID][8][0]; - } - else if(side == 2) - { - return icons[blockID][8][6]; - } - else { - return icons[blockID][8][2]; - } - } else if(meta == 9) { if(side == 3) @@ -468,26 +456,6 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds return icons[blockID][7][1]; } } - else if(metadata == 8) - { - if(side == 0 || side == 1) - { - return MekanismUtils.isActive(world, x, y, z) ? icons[blockID][8][5] : icons[blockID][8][4]; - } - else { - if(side == tileEntity.facing) - { - return MekanismUtils.isActive(world, x, y, z) ? icons[blockID][8][1] : icons[blockID][8][0]; - } - else if(side == ForgeDirection.getOrientation(tileEntity.facing).getOpposite().ordinal()) - { - return MekanismUtils.isActive(world, x, y, z) ? icons[blockID][8][7] : icons[blockID][8][6]; - } - else { - return MekanismUtils.isActive(world, x, y, z) ? icons[blockID][8][3] : icons[blockID][8][2]; - } - } - } else if(metadata == 9) { if(side == tileEntity.facing) @@ -530,6 +498,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds list.add(new ItemStack(i, 1, 1)); list.add(new ItemStack(i, 1, 2)); list.add(new ItemStack(i, 1, 3)); + //TODO DIGITAL MINER for(RecipeType type : RecipeType.values()) { @@ -930,6 +899,7 @@ public class BlockMachine extends BlockContainer implements ISpecialBounds OSMIUM_COMPRESSOR(Mekanism.machineBlockID, 1, "OsmiumCompressor", 4, Mekanism.osmiumCompressorUsage*400, TileEntityOsmiumCompressor.class, false), COMBINER(Mekanism.machineBlockID, 2, "Combiner", 5, Mekanism.combinerUsage*400, TileEntityCombiner.class, false), CRUSHER(Mekanism.machineBlockID, 3, "Crusher", 6, Mekanism.crusherUsage*400, TileEntityCrusher.class, false), + DIGITAL_MINER(Mekanism.machineBlockID, 4, "DigitalMiner", 2, 100000, TileEntityDigitalMiner.class, true), BASIC_FACTORY(Mekanism.machineBlockID, 5, "BasicFactory", 11, Mekanism.factoryUsage*3*400, TileEntityFactory.class, false), ADVANCED_FACTORY(Mekanism.machineBlockID, 6, "AdvancedFactory", 11, Mekanism.factoryUsage*5*400, TileEntityAdvancedFactory.class, false), ELITE_FACTORY(Mekanism.machineBlockID, 7, "EliteFactory", 11, Mekanism.factoryUsage*7*400, TileEntityEliteFactory.class, false), diff --git a/common/mekanism/common/item/ItemBlockMachine.java b/common/mekanism/common/item/ItemBlockMachine.java index abf5b486e..1062a04fa 100644 --- a/common/mekanism/common/item/ItemBlockMachine.java +++ b/common/mekanism/common/item/ItemBlockMachine.java @@ -58,7 +58,7 @@ import cpw.mods.fml.relauncher.SideOnly; * 1: Osmium Compressor * 2: Combiner * 3: Crusher - * 4: OPEN + * 4: Digital Miner * 5: Basic Factory * 6: Advanced Factory * 7: Elite Factory diff --git a/common/mekanism/common/tileentity/TileEntityDigitalMiner.java b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java new file mode 100644 index 000000000..88c3ae57e --- /dev/null +++ b/common/mekanism/common/tileentity/TileEntityDigitalMiner.java @@ -0,0 +1,11 @@ +package mekanism.common.tileentity; + +import mekanism.common.block.BlockMachine.MachineType; + +public class TileEntityDigitalMiner extends TileEntityElectricBlock +{ + public TileEntityDigitalMiner() + { + super("Digital Miner", MachineType.DIGITAL_MINER.baseEnergy); + } +} diff --git a/common/mekanism/common/util/MekanismUtils.java b/common/mekanism/common/util/MekanismUtils.java index e69512b2f..b4057035b 100644 --- a/common/mekanism/common/util/MekanismUtils.java +++ b/common/mekanism/common/util/MekanismUtils.java @@ -41,13 +41,14 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemDye; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.network.packet.Packet3Chat; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; @@ -1028,6 +1029,34 @@ public final class MekanismUtils return false; } + public static MovingObjectPosition rayTrace(World world, EntityPlayer player) + { + double reach = Mekanism.proxy.getReach(player); + + Vec3 headVec = getHeadVec(player); + Vec3 lookVec = player.getLook(1); + Vec3 endVec = headVec.addVector(lookVec.xCoord * reach, lookVec.yCoord * reach, lookVec.zCoord * reach); + + return world.rayTraceBlocks_do_do(headVec, endVec, true, false); + } + + public static Vec3 getHeadVec(EntityPlayer player) + { + Vec3 vec = Vec3.createVectorHelper(player.posX, player.posY, player.posZ); + + if(!player.worldObj.isRemote) + { + vec.yCoord+=player.getEyeHeight(); + + if(player instanceof EntityPlayerMP && player.isSneaking()) + { + vec.yCoord-=0.08; + } + } + + return vec; + } + public static boolean useBuildcraft() { return Mekanism.hooks.BuildCraftLoaded || Mekanism.forceBuildcraft; diff --git a/resources/assets/mekanism/lang/en_US.lang b/resources/assets/mekanism/lang/en_US.lang index ae5a24e80..4ef24d7cd 100644 --- a/resources/assets/mekanism/lang/en_US.lang +++ b/resources/assets/mekanism/lang/en_US.lang @@ -55,6 +55,7 @@ tile.MachineBlock.ElectricPump.name=Electric Pump tile.MachineBlock.ElectricChest.name=Electric Chest tile.MachineBlock.Chargepad.name=Chargepad tile.MachineBlock.LogisticalSorter.name=Logistical Sorter +tile.MachineBlock.DigitalMiner.name=Digital Miner //Ore Block tile.OreBlock.OsmiumOre.name=Osmium Ore