aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/entity
diff options
context:
space:
mode:
authorJordan Byrne <draknyte1@hotmail.com>2017-12-24 11:54:30 +1000
committerJordan Byrne <draknyte1@hotmail.com>2017-12-24 11:54:30 +1000
commitecf908e98ccee72a713091e8ab547e35a41d7436 (patch)
treef0dade1481aa02fd0ac4fcf8a672cc7a761a0547 /src/Java/gtPlusPlus/core/entity
parentb9fe3352840abe0846834cefd578895ec6f5e520 (diff)
parentfa5de3584ce7bc97ce6f32b31f6062b5b6e89e75 (diff)
downloadGT5-Unofficial-ecf908e98ccee72a713091e8ab547e35a41d7436.tar.gz
GT5-Unofficial-ecf908e98ccee72a713091e8ab547e35a41d7436.tar.bz2
GT5-Unofficial-ecf908e98ccee72a713091e8ab547e35a41d7436.zip
> Why does Git make me do these? arghhh...
Merge branch 'master' of https://github.com/draknyte1/GTplusplus # Conflicts: # src/Java/gtPlusPlus/core/material/ALLOY.java # src/Java/gtPlusPlus/core/material/ELEMENT.java # src/Java/gtPlusPlus/core/material/Material.java # src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Recycling.java
Diffstat (limited to 'src/Java/gtPlusPlus/core/entity')
-rw-r--r--src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java4
-rw-r--r--src/Java/gtPlusPlus/core/entity/monster/EntitySickBlaze.java6
-rw-r--r--src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java391
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java5
-rw-r--r--src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java3
5 files changed, 340 insertions, 69 deletions
diff --git a/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java b/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java
index 5eb6e91812..5233c876e9 100644
--- a/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java
+++ b/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java
@@ -2,19 +2,19 @@ package gtPlusPlus.core.entity;
import cpw.mods.fml.common.registry.EntityRegistry;
import gtPlusPlus.GTplusplus;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.entity.monster.EntitySickBlaze;
import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct;
import gtPlusPlus.core.entity.projectile.EntityHydrofluoricAcidPotion;
import gtPlusPlus.core.entity.projectile.EntitySulfuricAcidPotion;
import gtPlusPlus.core.entity.projectile.EntityToxinballSmall;
-import gtPlusPlus.core.util.Utils;
public class InternalEntityRegistry {
static int mEntityID = 0;
public static void registerEntities(){
- Utils.LOG_INFO("Registering GT++ Entities.");
+ Logger.INFO("Registering GT++ Entities.");
//EntityRegistry.registerModEntity(EntityMiningChargePrimed.class, "MiningCharge", 3, Main.modInstance, 64, 20, true);
EntityRegistry.registerModEntity(EntityPrimedMiningExplosive.class, "MiningCharge", mEntityID++, GTplusplus.instance, 64, 20, true);
EntityRegistry.registerModEntity(EntitySulfuricAcidPotion.class, "throwablePotionSulfuric", mEntityID++, GTplusplus.instance, 64, 20, true);
diff --git a/src/Java/gtPlusPlus/core/entity/monster/EntitySickBlaze.java b/src/Java/gtPlusPlus/core/entity/monster/EntitySickBlaze.java
index 13ecf99bc1..4e2a4c4439 100644
--- a/src/Java/gtPlusPlus/core/entity/monster/EntitySickBlaze.java
+++ b/src/Java/gtPlusPlus/core/entity/monster/EntitySickBlaze.java
@@ -5,7 +5,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import gtPlusPlus.core.entity.projectile.EntityToxinballSmall;
import net.minecraft.entity.Entity;
import net.minecraft.entity.SharedMonsterAttributes;
-import net.minecraft.entity.monster.EntityBlaze;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
@@ -216,4 +215,9 @@ public class EntitySickBlaze extends EntityMob {
protected boolean isValidLightLevel() {
return true;
}
+
+ @Override
+ public int getMaxSpawnedInChunk() {
+ return 8;
+ }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java b/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java
index 2cbd00bf2c..cd7878273f 100644
--- a/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java
+++ b/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java
@@ -1,45 +1,78 @@
package gtPlusPlus.core.entity.monster;
+import java.lang.reflect.Field;
+
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.core.world.explosions.ExplosionHandler;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.*;
import net.minecraft.entity.ai.*;
+import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityIronGolem;
import net.minecraft.entity.monster.IMob;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.init.Items;
-import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.*;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.MathHelper;
import net.minecraft.village.Village;
import net.minecraft.world.World;
public class EntityStaballoyConstruct extends EntityIronGolem {
- /** deincrements, and a distance-to-home check is done at 0 */
- private int homeCheckTimer;
- Village villageObj;
- private int attackTimer;
- private int holdRoseTick;
+
+ /*
+ * Determines whether or not the entity is in a fluid at all.
+ */
+ private volatile boolean inFluid = false;
+ private volatile boolean mReflectFirstUpdate = true;
+ private volatile boolean isReadyToExplode = false;
+ private volatile int fuse = 60;
+ private volatile int attackTimer;
public EntityStaballoyConstruct(World world) {
super(world);
+ this.experienceValue = 250;
this.setSize(1.4F, 2.9F);
this.getNavigator().setAvoidsWater(true);
+ this.getNavigator().setBreakDoors(true);
+ this.getNavigator().setCanSwim(false);
+ this.getNavigator().setAvoidSun(false);
this.tasks.addTask(1, new EntityAIAttackOnCollide(this, 1.0D, true));
- //this.tasks.addTask(2, new EntityAIMoveTowardsTarget(this, 0.9D, 32.0F));
+ this.tasks.addTask(2, new EntityAIMoveTowardsTarget(this, 0.9D, 32.0F));
//this.tasks.addTask(3, new EntityAIMoveThroughVillage(this, 0.6D, true));
- this.tasks.addTask(2, new EntityAIMoveTowardsRestriction(this, 1.0D));
- this.tasks.addTask(3, new EntityAIWander(this, 0.6D));
- this.tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
- this.tasks.addTask(5, new EntityAILookIdle(this));
+ this.tasks.addTask(3, new EntityAIMoveTowardsRestriction(this, 1.0D));
+ this.tasks.addTask(4, new EntityAIWander(this, 0.6D));
+ this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
+ this.tasks.addTask(6, new EntityAILookIdle(this));
this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
- //this.targetTasks.addTask(2,
- //new EntityAINearestAttackableTarget(this, EntityLiving.class, 0, false, true, IMob.mobSelector));
+ this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityLiving.class, 0, false, true, IMob.mobSelector));
+ }
+
+ /**
+ * (abstract) Protected helper method to write subclass entity data to NBT.
+ */
+ @Override
+ public void writeEntityToNBT(NBTTagCompound p_70014_1_) {
+ super.writeEntityToNBT(p_70014_1_);
+ p_70014_1_.setBoolean("inFluid", this.inFluid);
+ p_70014_1_.setBoolean("isReadyToExplode", this.isReadyToExplode);
+ p_70014_1_.setInteger("fuse", this.fuse);
+ }
+
+ /**
+ * (abstract) Protected helper method to read subclass entity data from NBT.
+ */
+ @Override
+ public void readEntityFromNBT(NBTTagCompound p_70037_1_) {
+ super.readEntityFromNBT(p_70037_1_);
+ this.inFluid = p_70037_1_.getBoolean("inFluid");
+ this.isReadyToExplode = p_70037_1_.getBoolean("isReadyToExplode");
+ this.fuse = p_70037_1_.getInteger("fuse");
}
@Override
@@ -61,11 +94,6 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
*/
@Override
protected void updateAITick() {
- if (--this.homeCheckTimer <= 0) {
- this.homeCheckTimer = 70 + this.rand.nextInt(50);
- this.detachHome();
- }
-
super.updateAITick();
}
@@ -81,7 +109,7 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
*/
@Override
protected int decreaseAirSupply(int p_70682_1_) {
- return p_70682_1_;
+ return 0;
}
@Override
@@ -106,10 +134,6 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
--this.attackTimer;
}
- if (this.holdRoseTick > 0) {
- --this.holdRoseTick;
- }
-
if (this.motionX * this.motionX + this.motionZ * this.motionZ > 2.500000277905201E-7D
&& this.rand.nextInt(5) == 0) {
int i = MathHelper.floor_double(this.posX);
@@ -117,8 +141,8 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
int k = MathHelper.floor_double(this.posZ);
Block block = this.worldObj.getBlock(i, j, k);
-
-
+
+
if (block.getMaterial() != Material.air) {
this.worldObj.spawnParticle(
"blockcrack_" + Block.getIdFromBlock(block) + "_" + this.worldObj.getBlockMetadata(i, j, k),
@@ -135,27 +159,8 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
* Returns true if this entity can attack entities of the specified class.
*/
@Override
- public boolean canAttackClass(Class p_70686_1_) {
- return this.isPlayerCreated() && EntityPlayer.class.isAssignableFrom(p_70686_1_) ? false
- : super.canAttackClass(p_70686_1_);
- }
-
- /**
- * (abstract) Protected helper method to write subclass entity data to NBT.
- */
- @Override
- public void writeEntityToNBT(NBTTagCompound p_70014_1_) {
- super.writeEntityToNBT(p_70014_1_);
- p_70014_1_.setBoolean("PlayerCreated", this.isPlayerCreated());
- }
-
- /**
- * (abstract) Protected helper method to read subclass entity data from NBT.
- */
- @Override
- public void readEntityFromNBT(NBTTagCompound p_70037_1_) {
- super.readEntityFromNBT(p_70037_1_);
- this.setPlayerCreated(p_70037_1_.getBoolean("PlayerCreated"));
+ public boolean canAttackClass(Class clazz) {
+ return clazz.equals(this.getClass()) ? false : true;
}
@Override
@@ -180,28 +185,22 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
this.attackTimer = 10;
this.playSound("mob.irongolem.throw", 1.0F, 1.0F);
}
- else if (p_70103_1_ == 11) {
- this.holdRoseTick = 400;
- }
else {
super.handleHealthUpdate(p_70103_1_);
}
}
+ @Override
public Village getVillage() {
return null;
}
+ @Override
@SideOnly(Side.CLIENT)
public int getAttackTimer() {
return this.attackTimer;
}
- public void setHoldingRose(boolean p_70851_1_) {
- this.holdRoseTick = p_70851_1_ ? 400 : 0;
- this.worldObj.setEntityState(this, (byte) 11);
- }
-
/**
* Returns the sound this mob makes when it is hurt.
*/
@@ -220,7 +219,7 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
@Override
protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_) {
- //this.playSound("mob.irongolem.walk", 1.0F, 1.0F);
+ this.playSound("mob.irongolem.walk", 1.0F, 1.0F);
}
/**
@@ -248,14 +247,12 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
}
}
- public int getHoldRoseTick() {
- return this.holdRoseTick;
- }
-
+ @Override
public boolean isPlayerCreated() {
return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0;
}
+ @Override
public void setPlayerCreated(boolean p_70849_1_) {
byte b0 = this.dataWatcher.getWatchableObjectByte(16);
@@ -274,4 +271,274 @@ public class EntityStaballoyConstruct extends EntityIronGolem {
public void onDeath(DamageSource p_70645_1_) {
super.onDeath(p_70645_1_);
}
+
+ @Override
+ protected String getLivingSound() { //TODO
+ return super.getLivingSound();
+ }
+
+ @Override
+ public int getTalkInterval() {
+ return 0;
+ }
+
+ @Override
+ protected boolean canDespawn() {
+ return true;
+ }
+
+ @Override
+ public void onEntityUpdate() {
+ //Set Fire Immunity
+ if (!this.isImmuneToFire){
+ this.isImmuneToFire = true;
+ }
+
+ if (this.getHealth() <= (this.getMaxHealth()*MathUtils.randDouble(0.02, 0.15))){
+ float r = MathUtils.randFloat(0, 1);
+ if (r <= 0.1){
+ this.isReadyToExplode = true;
+ }
+ }
+
+ //Handle Exploding
+ if (isReadyToExplode){
+ if (this.fuse-- <= 0){
+ this.setDead();
+
+ if (!this.worldObj.isRemote)
+ {
+ this.explode();
+ }
+ }
+ else {
+
+ int maxFuse = 60;
+ int fuseUsed = maxFuse-this.fuse;
+ float var2 = (float) (fuseUsed * 0.1);
+
+ this.setSize(1.4F+(var2/2), 2.9F+(var2/2));
+
+ float r = MathUtils.randFloat(0, 1);
+ int r2 = MathUtils.randInt(5, 15);
+ for (int o=0;o<r2;o++){
+ if (r <= 0.3){
+ this.worldObj.spawnParticle("smoke", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.6){
+ this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ if (r <= 0.3){
+ this.worldObj.spawnParticle("cloud", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.7){
+ this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ if (r <= 0.2){
+ this.worldObj.spawnParticle("explode", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.5){
+ this.worldObj.spawnParticle("largeexplode", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.7){
+ this.worldObj.spawnParticle("hugeexplosion", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D);
+
+ }
+ }
+
+
+ }
+ }
+
+ //Get a private field from a super class if it exists.
+ try {
+ if (ReflectionUtils.getField(Class.forName("net.minecraft.entity.Entity"), "firstUpdate") != null && mReflectFirstUpdate == true){
+ Field x = ReflectionUtils.getField(Class.forName("net.minecraft.entity.Entity"), "firstUpdate");
+ try {
+ this.mReflectFirstUpdate = (boolean) x.get(this);
+ Logger.REFLECTION("Successfully got 'firstUpdate' variable state via reflection.");
+ }
+ catch (IllegalArgumentException | IllegalAccessException e) {}
+ }
+ }
+ catch (NoSuchFieldException | ClassNotFoundException e) {}
+ super.onEntityUpdate();
+ }
+
+ @Override
+ public int getMaxSpawnedInChunk() {
+ return 1;
+ }
+
+ @Override
+ public boolean canBreatheUnderwater() {
+ return true;
+ }
+
+ @Override
+ public void knockBack(Entity p_70653_1_, float p_70653_2_, double p_70653_3_, double p_70653_5_) {
+ // Do Nothing because he weighs metric shittonnes.
+ }
+
+ @Override
+ protected void setOnFireFromLava() {
+ extinguish();
+ }
+
+ @Override
+ public void setFire(int p_70015_1_) {
+ extinguish();
+ }
+
+ @Override
+ protected void dealFireDamage(int p_70081_1_) {
+
+ }
+
+ @Override
+ public boolean isInWater() {
+ if (super.isInWater()){
+ return true;
+ }
+ else {
+ this.moveForward *= 0.98F;
+ return false;
+ }
+ }
+
+ @Override
+ public boolean handleWaterMovement() {
+ this.moveForward *= 0.74F;
+ return handleFluidMovement(Material.water);
+ }
+
+ @Override
+ public boolean handleLavaMovement() {
+ this.moveForward *= 0.74F;
+ return handleFluidMovement(Material.lava);
+ }
+
+ /**
+ * Returns if this entity is in water and will end up adding the waters velocity to the entity
+ */
+ public boolean handleFluidMovement(Material fluid){
+
+
+
+ if (this.worldObj.handleMaterialAcceleration(this.boundingBox.expand(0.0D, -0.4000000059604645D, 0.0D).contract(0.001D, 0.001D, 0.001D), fluid, this))
+ {
+ if (!this.inFluid && !this.mReflectFirstUpdate)
+ {
+ float f = MathHelper.sqrt_double(this.motionX * this.motionX * 0.20000000298023224D + this.motionY * this.motionY + this.motionZ * this.motionZ * 0.20000000298023224D) * 0.2F;
+
+ if (f > 1.0F)
+ {
+ f = 1.0F;
+ }
+
+ this.playSound(this.getSplashSound(), f, 1.0F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.4F);
+ float f1 = MathHelper.floor_double(this.boundingBox.minY);
+ int i;
+ float f2;
+ float f3;
+
+ for (i = 0; i < 1.0F + this.width * 20.0F; ++i)
+ {
+ f2 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
+ f3 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
+ this.worldObj.spawnParticle("bubble", this.posX + f2, f1 + 1.0F, this.posZ + f3, this.motionX, this.motionY - this.rand.nextFloat() * 0.2F, this.motionZ);
+ }
+
+ for (i = 0; i < 1.0F + this.width * 20.0F; ++i)
+ {
+ f2 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
+ f3 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
+ this.worldObj.spawnParticle("splash", this.posX + f2, f1 + 1.0F, this.posZ + f3, this.motionX, this.motionY, this.motionZ);
+ }
+ }
+ this.fallDistance = 0.0F;
+ this.inFluid = true;
+ }
+ else
+ {
+ this.inFluid = false;
+ }
+ return this.inFluid;
+ }
+
+ @Override
+ public void onChunkLoad() {
+ // TODO Auto-generated method stub
+ super.onChunkLoad();
+ }
+
+ @Override
+ public void onStruckByLightning(EntityLightningBolt p_70077_1_) {
+ this.isReadyToExplode = true;
+ this.fuse = 20;
+ }
+
+ private void explode(){
+ /* float f = 12.0F;
+ this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, f, true);*/
+
+ final float f = 16F;
+ ExplosionHandler explode = new ExplosionHandler();
+ explode.createExplosion(this.worldObj, this, this.posX, this.posY, this.posZ, f, true, true);
+
+ float r = MathUtils.randFloat(0, 1);
+ int r2 = MathUtils.randInt(20, 40);
+ for (int o=0;o<r2;o++){
+ if (r <= 0.3){
+ this.worldObj.spawnParticle("smoke", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(0, 3), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.6){
+ this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ if (r <= 0.3){
+ this.worldObj.spawnParticle("cloud", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.7){
+ this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ if (r <= 0.2){
+ this.worldObj.spawnParticle("explode", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.5){
+ this.worldObj.spawnParticle("largeexplode", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ else if (r <= 0.7){
+ this.worldObj.spawnParticle("hugeexplosion", this.posX+MathUtils.randDouble(-4, 4), this.posY+MathUtils.randDouble(-4, 4), this.posZ+MathUtils.randDouble(-4, 4), 0.0D, 0.0D, 0.0D);
+
+ }
+ }
+
+ }
+
+ @Override
+ public boolean canAttackWithItem() {
+ return true;
+ }
+
+ @Override
+ public boolean canRenderOnFire() {
+ return false;
+ }
+
+ @Override
+ public boolean isPushedByWater() {
+ return false;
+ }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
index 8b86d456b7..c935409650 100644
--- a/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
+++ b/src/Java/gtPlusPlus/core/entity/projectile/EntityHydrofluoricAcidPotion.java
@@ -5,10 +5,8 @@ import gtPlusPlus.core.util.array.BlockPos;
import gtPlusPlus.core.util.entity.EntityUtils;
import gtPlusPlus.core.util.math.MathUtils;
import net.minecraft.block.Block;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.init.Blocks;
import net.minecraft.potion.Potion;
@@ -34,6 +32,7 @@ public class EntityHydrofluoricAcidPotion extends EntityThrowable {
/**
* Called when this EntityThrowable hits a block or entity.
*/
+ @Override
protected void onImpact(MovingObjectPosition object) {
int xBlock = object.blockX;
int yBlock = object.blockY;
@@ -41,7 +40,7 @@ public class EntityHydrofluoricAcidPotion extends EntityThrowable {
if (object.entityHit != null) {
byte b0 = 6;
if (!GT_Utility.isWearingFullRadioHazmat((EntityLivingBase) object.entityHit)){
- object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float) b0);
+ object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), b0);
EntityUtils.setEntityOnFire(object.entityHit, 5);
if (object.entityHit instanceof EntityPlayer){
diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
index 38bcb42791..cd4bec52bf 100644
--- a/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
+++ b/src/Java/gtPlusPlus/core/entity/projectile/EntitySulfuricAcidPotion.java
@@ -29,6 +29,7 @@ public class EntitySulfuricAcidPotion extends EntityThrowable {
/**
* Called when this EntityThrowable hits a block or entity.
*/
+ @Override
protected void onImpact(MovingObjectPosition object) {
int xBlock = object.blockX;
int yBlock = object.blockY;
@@ -36,7 +37,7 @@ public class EntitySulfuricAcidPotion extends EntityThrowable {
if (object.entityHit != null) {
byte b0 = 6;
if (!GT_Utility.isWearingFullRadioHazmat((EntityLivingBase) object.entityHit)){
- object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float) b0);
+ object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), b0);
EntityUtils.setEntityOnFire(object.entityHit, 10);
object.entityHit.fireResistance = 0;
ravage(EntityUtils.findBlockPosUnderEntity(object.entityHit));