diff --git a/resources/assets/resonantinduction/textures/models/em_contractor.png b/resources/assets/resonantinduction/textures/models/em_contractor.png index 287ea90a..1cacad58 100644 Binary files a/resources/assets/resonantinduction/textures/models/em_contractor.png and b/resources/assets/resonantinduction/textures/models/em_contractor.png differ diff --git a/resources/assets/resonantinduction/textures/models/em_contractor_push.png b/resources/assets/resonantinduction/textures/models/em_contractor_push.png new file mode 100644 index 00000000..037538af Binary files /dev/null and b/resources/assets/resonantinduction/textures/models/em_contractor_push.png differ diff --git a/src/resonantinduction/contractor/BlockEMContractor.java b/src/resonantinduction/contractor/BlockEMContractor.java index d39951ac..7a380d38 100644 --- a/src/resonantinduction/contractor/BlockEMContractor.java +++ b/src/resonantinduction/contractor/BlockEMContractor.java @@ -37,12 +37,14 @@ public class BlockEMContractor extends BlockBase implements ITileEntityProvider @Override public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + TileEntityEMContractor contractor = (TileEntityEMContractor)par1World.getBlockTileEntity(par2, par3, par4); + if(!par5EntityPlayer.isSneaking()) { - TileEntityEMContractor contractor = (TileEntityEMContractor)par1World.getBlockTileEntity(par2, par3, par4); contractor.incrementFacing(); - - return true; + } + else { + contractor.suck = !contractor.suck; } return true; diff --git a/src/resonantinduction/contractor/TileEntityEMContractor.java b/src/resonantinduction/contractor/TileEntityEMContractor.java index 5068e378..394a2537 100644 --- a/src/resonantinduction/contractor/TileEntityEMContractor.java +++ b/src/resonantinduction/contractor/TileEntityEMContractor.java @@ -48,7 +48,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionX = 0; entityItem.motionZ = 0; - entityItem.motionY = Math.max(-MAX_SPEED, entityItem.motionY-ACCELERATION); + if(!suck) + { + entityItem.motionY = Math.max(-MAX_SPEED, entityItem.motionY-ACCELERATION); + } + else { + entityItem.motionY = Math.min((MAX_SPEED*4), entityItem.motionY+(ACCELERATION*5)); + } entityItem.isAirBorne = true; break; @@ -61,7 +67,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionX = 0; entityItem.motionZ = 0; - entityItem.motionY = Math.min((MAX_SPEED*4), entityItem.motionY+(ACCELERATION*5)); + if(!suck) + { + entityItem.motionY = Math.min((MAX_SPEED*4), entityItem.motionY+(ACCELERATION*5)); + } + else { + entityItem.motionY = Math.max(-MAX_SPEED, entityItem.motionY-ACCELERATION); + } entityItem.isAirBorne = true; break; @@ -74,7 +86,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionY = 0; entityItem.motionZ = 0; - entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); + if(!suck) + { + entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); + } + else { + entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); + } entityItem.isAirBorne = true; break; @@ -87,7 +105,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionY = 0; entityItem.motionZ = 0; - entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); + if(!suck) + { + entityItem.motionX = Math.max(-MAX_SPEED, entityItem.motionX-ACCELERATION); + } + else { + entityItem.motionX = Math.min(MAX_SPEED, entityItem.motionX+ACCELERATION); + } entityItem.isAirBorne = true; break; @@ -100,7 +124,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionX = 0; entityItem.motionY = 0; - entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); + if(!suck) + { + entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); + } + else { + entityItem.motionZ = Math.max(-MAX_SPEED, entityItem.motionZ-ACCELERATION); + } entityItem.isAirBorne = true; break; @@ -113,7 +143,13 @@ public class TileEntityEMContractor extends TileEntity entityItem.motionX = 0; entityItem.motionY = 0; - entityItem.motionZ = Math.max(-MAX_SPEED, entityItem.motionZ-ACCELERATION); + if(!suck) + { + entityItem.motionZ = Math.max(-MAX_SPEED, entityItem.motionZ-ACCELERATION); + } + else { + entityItem.motionZ = Math.min(MAX_SPEED, entityItem.motionZ+ACCELERATION); + } entityItem.isAirBorne = true; break; diff --git a/src/resonantinduction/render/RenderEMContractor.java b/src/resonantinduction/render/RenderEMContractor.java index 4ce20d26..9d73e42c 100644 --- a/src/resonantinduction/render/RenderEMContractor.java +++ b/src/resonantinduction/render/RenderEMContractor.java @@ -14,6 +14,7 @@ public class RenderEMContractor extends TileEntitySpecialRenderer { public static final ModelEMContractor MODEL = new ModelEMContractor(); public static final ResourceLocation TEXTURE = new ResourceLocation(ResonantInduction.DOMAIN, ResonantInduction.MODEL_TEXTURE_DIRECTORY + "em_contractor.png"); + public static final ResourceLocation TEXTURE_PUSH = new ResourceLocation(ResonantInduction.DOMAIN, ResonantInduction.MODEL_TEXTURE_DIRECTORY + "em_contractor_push.png"); @Override public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) @@ -48,7 +49,14 @@ public class RenderEMContractor extends TileEntitySpecialRenderer break; } - this.func_110628_a(TEXTURE); + if(((TileEntityEMContractor)t).suck) + { + this.func_110628_a(TEXTURE); + } + else { + this.func_110628_a(TEXTURE_PUSH); + } + MODEL.render(0.0625f); GL11.glPopMatrix();