From 62d755432e60162574428ff8cd921499d935a401 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 24 Aug 2021 23:30:41 +0200 Subject: [PATCH] patched up smelly turret --- .../entity/projectile/EntityBulletBase.java | 21 +++++++++----- .../hbm/render/item/ItemRenderLibrary.java | 16 +++++++++++ .../turret/TileEntityTurretBaseNT.java | 27 +++++++++--------- .../turret/TileEntityTurretFritz.java | 2 +- .../turret/TileEntityTurretHowardDamaged.java | 17 ++++++++++- .../textures/gui/machine/gui_teleporter.png | Bin 0 -> 3319 bytes 6 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_teleporter.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java index 4fb3bd64b..d3f079f3d 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java @@ -250,6 +250,7 @@ public class EntityBulletBase extends Entity implements IProjectile { if (victim != null) { movement = new MovingObjectPosition(victim); + movement.hitVec.yCoord += victim.height * 0.5D; } /// ZONE 2 END /// @@ -264,10 +265,12 @@ public class EntityBulletBase extends Entity implements IProjectile { DamageSource damagesource = this.config.getDamage(this, shooter); if(!worldObj.isRemote) { - if(!config.doesPenetrate) + if(!config.doesPenetrate) { + this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); onEntityImpact(victim); - else + } else { onEntityHurt(victim); + } } float damage = rand.nextFloat() * (config.dmgMax - config.dmgMin) + config.dmgMin; @@ -292,8 +295,10 @@ public class EntityBulletBase extends Entity implements IProjectile { boolean hRic = rand.nextInt(100) < config.HBRC; boolean doesRic = config.doesRicochet || hRic; - if(!config.isSpectral && !doesRic) + if(!config.isSpectral && !doesRic) { + this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); this.onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); + } if(doesRic) { @@ -342,10 +347,12 @@ public class EntityBulletBase extends Entity implements IProjectile { onRicochet(movement.blockX, movement.blockY, movement.blockZ); - } else { - if(!worldObj.isRemote) - onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); - } + } else { + if(!worldObj.isRemote) { + this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); + onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); + } + } this.posX += (movement.hitVec.xCoord - this.posX) * 0.6; this.posY += (movement.hitVec.yCoord - this.posY) * 0.6; diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 60b5ad513..c7224887b 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -904,6 +904,22 @@ public class ItemRenderLibrary { GL11.glShadeModel(GL11.GL_FLAT); }}); + renderers.put(Item.getItemFromBlock(ModBlocks.turret_howard_damaged), new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4.5, 0); + GL11.glScaled(4, 4, 4); + } + public void renderCommon() { + GL11.glTranslated(-0.75, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.turret_base_rusted); ResourceManager.turret_chekhov.renderPart("Base"); + bindTexture(ResourceManager.turret_carriage_ciws_rusted); ResourceManager.turret_howard.renderPart("Carriage"); + bindTexture(ResourceManager.turret_howard_rusted); ResourceManager.turret_howard_damaged.renderPart("Body"); + bindTexture(ResourceManager.turret_howard_barrels_rusted); ResourceManager.turret_howard_damaged.renderPart("BarrelsTop"); + bindTexture(ResourceManager.turret_howard_barrels_rusted); ResourceManager.turret_howard_damaged.renderPart("BarrelsBottom"); + GL11.glShadeModel(GL11.GL_FLAT); + }}); + renderers.put(Item.getItemFromBlock(ModBlocks.machine_silex), new ItemRenderBase() { public void renderInventory() { GL11.glTranslated(0, -2.5, 0); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index dddec9e8c..71afb663c 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -21,6 +21,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.INpc; import net.minecraft.entity.boss.EntityDragon; import net.minecraft.entity.boss.EntityDragonPart; @@ -31,6 +32,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; @@ -495,12 +497,15 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e.isDead || !e.isEntityAlive()) return false; + if(!hasThermalVision() && e instanceof EntityLivingBase && ((EntityLivingBase)e).isPotionActive(Potion.invisibility)) + return false; + Vec3 pos = this.getTurretPos(); Vec3 ent = this.getEntityPos(e); Vec3 delta = Vec3.createVectorHelper(ent.xCoord - pos.xCoord, ent.yCoord - pos.yCoord, ent.zCoord - pos.zCoord); double length = delta.lengthVector(); - if(length < this.getDecetorGrace()) + if(length < this.getDecetorGrace() || length > this.getDecetorRange() * 1.1) //the latter statement is only relevant for entities that have already been detected return false; delta = delta.normalize(); @@ -511,18 +516,6 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(pitchDeg < -this.getTurretDepression() || pitchDeg > this.getTurretElevation()) return false; - /*for(double i = 0; i < length; i += 0.25D) { - - double x = pos.xCoord + delta.xCoord * i; - double y = pos.yCoord + delta.yCoord * i; - double z = pos.zCoord + delta.zCoord * i; - - worldObj.spawnParticle("reddust", x, y, z, 0, 0, 0); - } - - worldObj.spawnParticle("cloud", pos.xCoord, pos.yCoord, pos.zCoord, 0, 0.1, 0); - worldObj.spawnParticle("flame", ent.xCoord, ent.yCoord, ent.zCoord, 0, 0.1, 0);*/ - return !Library.isObstructed(worldObj, ent.xCoord, ent.yCoord, ent.zCoord, pos.xCoord, pos.yCoord, pos.zCoord); } @@ -661,6 +654,14 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple public double getBarrelLength() { return 1.0D; } + + /** + * Whether the turret can detect invisible targets or not + * @return + */ + public boolean hasThermalVision() { + return true; + } /** * The pivot point of the turret, this position is used for LOS calculation and more diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index a3bee012f..5f2b5b79a 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -106,7 +106,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl for(int i = 1; i < 10; i++) { if(slots[i] != null && slots[i].getItem() == ModItems.ammo_fuel) { - if(this.tank.getTankType() == FluidType.DIESEL && this.tank.getFill() <= this.tank.getMaxFill()) { + if(this.tank.getTankType() == FluidType.DIESEL && this.tank.getFill() + 1000 <= this.tank.getMaxFill()) { this.tank.setFill(this.tank.getFill() + 1000); this.decrStackSize(i, 1); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java index d4bb19655..3563a2ff9 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java @@ -9,6 +9,7 @@ import com.hbm.util.EntityDamageUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; @@ -36,11 +37,25 @@ public class TileEntityTurretHowardDamaged extends TileEntityTurretHoward { @Override public double getDecetorRange() { - return 64D; + return 16D; + } + + @Override + public double getDecetorGrace() { + return 5D; + } + + @Override + public boolean hasThermalVision() { + return false; } @Override public boolean entityAcceptableTarget(Entity e) { //will fire at any living entity + + if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode) + return false; + return e instanceof EntityLivingBase; } diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_teleporter.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_teleporter.png new file mode 100644 index 0000000000000000000000000000000000000000..99b2af04cfb11ece37f2094dded60201ff344fa2 GIT binary patch literal 3319 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 literal 0 HcmV?d00001