From baff99e4817e563720abea56bdb8b02feaf58e1c Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 31 May 2022 22:28:12 +0200 Subject: [PATCH] particles that are actual particles --- .../hbm/blocks/machine/BlockMassStorage.java | 7 +- .../blocks/machine/MachineAutocrafter.java | 55 +++++++- .../com/hbm/blocks/turret/TurretCIWS.java | 17 --- .../com/hbm/blocks/turret/TurretHeavy.java | 7 - .../com/hbm/blocks/turret/TurretRocket.java | 7 - .../com/hbm/blocks/turret/TurretSpitfire.java | 12 -- .../com/hbm/entity/logic/EntityBomber.java | 6 +- .../com/hbm/entity/missile/EntityCarrier.java | 60 ++++----- .../hbm/entity/missile/EntityMinerRocket.java | 10 +- .../hbm/entity/particle/EntityGasFlameFX.java | 83 ------------ .../com/hbm/explosion/ExplosionLarge.java | 8 +- src/main/java/com/hbm/items/ModItems.java | 20 +-- src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 9 +- src/main/java/com/hbm/main/MainRegistry.java | 24 +++- .../java/com/hbm/main/ModEventHandler.java | 4 + .../com/hbm/particle/ParticleGasFlame.java | 56 ++++++++ .../entity/effect/GasFlameRenderer.java | 125 ------------------ .../hbm/tileentity/deco/TileEntityGeysir.java | 16 ++- .../machine/TileEntityAMSLimiter.java | 16 +-- .../oil/TileEntityMachineGasFlare.java | 5 +- .../storage/TileEntityMassStorage.java | 18 +-- src/main/java/com/hbm/util/ParticleUtil.java | 21 +++ src/main/resources/mcmod.info | 2 +- 24 files changed, 234 insertions(+), 356 deletions(-) delete mode 100644 src/main/java/com/hbm/entity/particle/EntityGasFlameFX.java create mode 100644 src/main/java/com/hbm/particle/ParticleGasFlame.java delete mode 100644 src/main/java/com/hbm/render/entity/effect/GasFlameRenderer.java create mode 100644 src/main/java/com/hbm/util/ParticleUtil.java diff --git a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java index 10a69e2d5..7e9c27ef3 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java +++ b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java @@ -21,11 +21,11 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class BlockMassStorage extends BlockContainer { @@ -206,4 +206,9 @@ public class BlockMassStorage extends BlockContainer { super.breakBlock(world, x, y, z, block, meta); } + + @Override + public Item getItemDropped(int i, Random rand, int j) { + return null; + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java index 7bb318c6a..f4fabf399 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutocrafter.java @@ -1,19 +1,23 @@ package com.hbm.blocks.machine; -import com.hbm.items.ModItems; -import com.hbm.items.tool.ItemLock; +import java.util.Random; + import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -62,4 +66,49 @@ public class MachineAutocrafter extends BlockContainer { return false; } } + + private final Random field_149933_a = new Random(); + + @Override + public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { + ISidedInventory tileentityfurnace = (ISidedInventory) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + + if(tileentityfurnace != null) { + + for(int i1 = 10; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + + if(itemstack != null) { + float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = this.field_149933_a.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; + entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; + p_149749_1_.spawnEntityInWorld(entityitem); + } + } + } + + p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); + } + + super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); + } } diff --git a/src/main/java/com/hbm/blocks/turret/TurretCIWS.java b/src/main/java/com/hbm/blocks/turret/TurretCIWS.java index 7efcf0b06..b88899123 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretCIWS.java +++ b/src/main/java/com/hbm/blocks/turret/TurretCIWS.java @@ -3,7 +3,6 @@ package com.hbm.blocks.turret; import java.util.List; import com.hbm.config.WeaponConfig; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.turret.TileEntityTurretCIWS; @@ -50,22 +49,6 @@ public class TurretCIWS extends TurretBase { Math.cos(yaw / 180.0F * (float) Math.PI) * Math.cos(pitch / 180.0F * (float) Math.PI)); vector.normalize(); - - if(!world.isRemote) { - - rayShot(world, vector, x + vector.xCoord * 2.5 + 0.5, y + vector.yCoord * 2.5 + 0.5, z + vector.zCoord * 2.5 + 0.5, 100, 10.0F, WeaponConfig.ciwsHitrate); - - EntityGasFlameFX smoke = new EntityGasFlameFX(world); - smoke.posX = x + vector.xCoord * 2.5 + 0.5; - smoke.posY = y + vector.yCoord * 2.5 + 1.5; - smoke.posZ = z + vector.zCoord * 2.5 + 0.5; - - smoke.motionX = vector.xCoord * 0.25; - smoke.motionY = vector.yCoord * 0.25; - smoke.motionZ = vector.zCoord * 0.25; - - world.spawnEntityInWorld(smoke); - } world.playSoundEffect(x, y, z, "hbm:weapon.ciwsFiringLoop", 1.0F, 1.25F); diff --git a/src/main/java/com/hbm/blocks/turret/TurretHeavy.java b/src/main/java/com/hbm/blocks/turret/TurretHeavy.java index ba442e277..43a75441c 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretHeavy.java +++ b/src/main/java/com/hbm/blocks/turret/TurretHeavy.java @@ -1,6 +1,5 @@ package com.hbm.blocks.turret; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.projectile.EntityBullet; import com.hbm.tileentity.turret.TileEntityTurretHeavy; @@ -51,12 +50,6 @@ public class TurretHeavy extends TurretBase { bullet.damage = rand.nextInt(26) + 15; world.spawnEntityInWorld(bullet); - - EntityGasFlameFX fx = new EntityGasFlameFX(world); - fx.posX = x + vector.xCoord * 2.2 + 0.5; - fx.posY = y + vector.yCoord * 2.2 + 1; - fx.posZ = z + vector.zCoord * 2.2 + 0.5; - world.spawnEntityInWorld(fx); } world.playSoundEffect(x, y, z, "hbm:weapon.defabShoot", 1.0F, 0.75F); diff --git a/src/main/java/com/hbm/blocks/turret/TurretRocket.java b/src/main/java/com/hbm/blocks/turret/TurretRocket.java index b300f1801..a5639863a 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretRocket.java +++ b/src/main/java/com/hbm/blocks/turret/TurretRocket.java @@ -1,6 +1,5 @@ package com.hbm.blocks.turret; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.projectile.EntityRocket; import com.hbm.tileentity.turret.TileEntityTurretRocket; @@ -49,12 +48,6 @@ public class TurretRocket extends TurretBase { bullet.motionZ = vector.zCoord * 3; world.spawnEntityInWorld(bullet); - - EntityGasFlameFX fx = new EntityGasFlameFX(world); - fx.posX = x + vector.xCoord * 1 + 0.5; - fx.posY = y + vector.yCoord * 1 + 1; - fx.posZ = z + vector.zCoord * 1 + 0.5; - world.spawnEntityInWorld(fx); } world.playSoundEffect(x, y, z, "hbm:weapon.rpgShoot", 1.0F, 0.75F); diff --git a/src/main/java/com/hbm/blocks/turret/TurretSpitfire.java b/src/main/java/com/hbm/blocks/turret/TurretSpitfire.java index b4a8ff633..0b3f8551e 100644 --- a/src/main/java/com/hbm/blocks/turret/TurretSpitfire.java +++ b/src/main/java/com/hbm/blocks/turret/TurretSpitfire.java @@ -1,6 +1,5 @@ package com.hbm.blocks.turret; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.projectile.EntityAAShell; import com.hbm.tileentity.turret.TileEntityTurretSpitfire; @@ -51,17 +50,6 @@ public class TurretSpitfire extends TurretBase { bullet.speedOverride = 3; world.spawnEntityInWorld(bullet); - - EntityGasFlameFX smoke = new EntityGasFlameFX(world); - smoke.posX = x + vector.xCoord * 4 + 0.5; - smoke.posY = y + vector.yCoord * 4 + 1; - smoke.posZ = z + vector.zCoord * 4 + 0.5; - - smoke.motionX = vector.xCoord * 0.25; - smoke.motionY = vector.yCoord * 0.25; - smoke.motionZ = vector.zCoord * 0.25; - - world.spawnEntityInWorld(smoke); } world.playSoundEffect(x, y, z, "hbm:entity.oldExplosion", 1.0F, 0.5F); diff --git a/src/main/java/com/hbm/entity/logic/EntityBomber.java b/src/main/java/com/hbm/entity/logic/EntityBomber.java index 1a02f2fc6..820bdfc3b 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBomber.java +++ b/src/main/java/com/hbm/entity/logic/EntityBomber.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.hbm.config.GeneralConfig; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.projectile.EntityBombletZeta; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityRocketHoming; @@ -14,6 +13,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.LoopedEntitySoundPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -106,8 +106,8 @@ public class EntityBomber extends Entity implements IChunkLoader { if(this.health <= 0) { motionY -= 0.025; - for(int i = 0; i < 10; i++) - this.worldObj.spawnEntityInWorld(new EntityGasFlameFX(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0)); + for(int i = 0; i < 10; i++) + ParticleUtil.spawnGasFlame(this.worldObj, this.posX + rand.nextGaussian() * 0.5 - motionX * 2, this.posY + rand.nextGaussian() * 0.5 - motionY * 2, this.posZ + rand.nextGaussian() * 0.5 - motionZ * 2, 0.0, 0.1, 0.0); if(worldObj.getBlock((int)posX, (int)posY, (int)posZ).isNormalCube() && !worldObj.isRemote) { this.setDead(); diff --git a/src/main/java/com/hbm/entity/missile/EntityCarrier.java b/src/main/java/com/hbm/entity/missile/EntityCarrier.java index 405b6dbc7..9f1d6934a 100644 --- a/src/main/java/com/hbm/entity/missile/EntityCarrier.java +++ b/src/main/java/com/hbm/entity/missile/EntityCarrier.java @@ -1,17 +1,20 @@ package com.hbm.entity.missile; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemSatChip; import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.saveddata.satellites.Satellite; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -41,48 +44,33 @@ public class EntityCarrier extends EntityThrowable { if(!worldObj.isRemote) { for(int i = 0; i < 10; i++) { - EntityGasFlameFX fx = new EntityGasFlameFX(worldObj); - fx.posY = posY - 0.25D; - fx.posX = posX + rand.nextGaussian() * 0.75D; - fx.posZ = posZ + rand.nextGaussian() * 0.75D; - fx.motionY = -0.2D; - - worldObj.spawnEntityInWorld(fx); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "gasfire"); + data.setDouble("mY", -0.2D); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); } if(this.dataWatcher.getWatchableObjectInt(8) == 1) for(int i = 0; i < 2; i++) { - EntityGasFlameFX fx1 = new EntityGasFlameFX(worldObj); - fx1.posY = posY - 0.25D; - fx1.posX = posX + rand.nextGaussian() * 0.15D + 2.5D; - fx1.posZ = posZ + rand.nextGaussian() * 0.15D; - fx1.motionY = -0.2D; + NBTTagCompound d1 = new NBTTagCompound(); + d1.setString("type", "gasfire"); + d1.setDouble("mY", -0.2D); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d1, posX + rand.nextGaussian() * 0.75D + 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - worldObj.spawnEntityInWorld(fx1); - - EntityGasFlameFX fx2 = new EntityGasFlameFX(worldObj); - fx2.posY = posY - 0.25D; - fx2.posX = posX + rand.nextGaussian() * 0.15D - 2.5D; - fx2.posZ = posZ + rand.nextGaussian() * 0.15D; - fx2.motionY = -0.2D; + NBTTagCompound d2 = new NBTTagCompound(); + d2.setString("type", "gasfire"); + d2.setDouble("mY", -0.2D); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d2, posX + rand.nextGaussian() * 0.75D - 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - worldObj.spawnEntityInWorld(fx2); - - EntityGasFlameFX fx3 = new EntityGasFlameFX(worldObj); - fx3.posY = posY - 0.25D; - fx3.posX = posX + rand.nextGaussian() * 0.15D; - fx3.posZ = posZ + rand.nextGaussian() * 0.15D + 2.5D; - fx3.motionY = -0.2D; + NBTTagCompound d3 = new NBTTagCompound(); + d3.setString("type", "gasfire"); + d3.setDouble("mY", -0.2D); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d3, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D + 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); - worldObj.spawnEntityInWorld(fx3); - - EntityGasFlameFX fx4 = new EntityGasFlameFX(worldObj); - fx4.posY = posY - 0.25D; - fx4.posX = posX + rand.nextGaussian() * 0.15D; - fx4.posZ = posZ + rand.nextGaussian() * 0.15D - 2.5D; - fx4.motionY = -0.2D; - - worldObj.spawnEntityInWorld(fx4); + NBTTagCompound d4 = new NBTTagCompound(); + d4.setString("type", "gasfire"); + d4.setDouble("mY", -0.2D); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d4, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D - 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200)); } diff --git a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java index b7261ef09..7e9cb87d7 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java +++ b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java @@ -1,8 +1,8 @@ package com.hbm.entity.missile; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.util.ParticleUtil; import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; @@ -69,13 +69,7 @@ public class EntityMinerRocket extends Entity { if(dataWatcher.getWatchableObjectInt(16) != 1) { if(ticksExisted % 2 == 0) { - EntityGasFlameFX fx = new EntityGasFlameFX(worldObj); - fx.posY = posY - 0.5D; - fx.posX = posX; - fx.posZ = posZ; - fx.motionY = -1D; - - worldObj.spawnEntityInWorld(fx); + ParticleUtil.spawnGasFlame(worldObj, posX, posY - 0.5, posZ, 0.0, -1.0, 0.0); } } diff --git a/src/main/java/com/hbm/entity/particle/EntityGasFlameFX.java b/src/main/java/com/hbm/entity/particle/EntityGasFlameFX.java deleted file mode 100644 index 66b3a0db7..000000000 --- a/src/main/java/com/hbm/entity/particle/EntityGasFlameFX.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.hbm.entity.particle; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.world.World; - -public class EntityGasFlameFX extends EntityModFX -{ - float smokeParticleScale; - public int particleAge; - public int maxAge; - private static final String __OBFID = "CL_00000924"; - - public EntityGasFlameFX(World world) { - super(world, 0, 0, 0); - } - - public EntityGasFlameFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) - { - this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); - } - - public EntityGasFlameFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) - { - super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); - this.motionX *= 0.10000000149011612D; - this.motionY *= 0.10000000149011612D; - this.motionZ *= 0.10000000149011612D; - this.motionX += p_i1226_8_; - this.motionY += p_i1226_10_; - this.motionZ += p_i1226_12_; - this.particleRed = this.particleGreen = this.particleBlue = (float)(Math.random() * 0.30000001192092896D); - this.particleScale *= 0.75F; - this.particleScale *= p_i1226_14_; - this.smokeParticleScale = this.particleScale; - //this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - //this.particleMaxAge = (int)((float)this.particleMaxAge * p_i1226_14_); - this.noClip = true; - } - - /** - * Called to update the entity's position/logic. - */ - - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - if(maxAge < 30) - { - maxAge = rand.nextInt(13) + 30; - } - - this.particleAge++; - - if (this.particleAge >= maxAge) - { - this.setDead(); - } - - this.motionX *= 0.7599999785423279D; - this.motionY += 0.0075D; - this.motionZ *= 0.7599999785423279D; - - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } - - this.moveEntity(motionX, motionY, motionZ); - } - - @Override - @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } -} diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 12b7f6840..fd0f431f1 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -3,12 +3,12 @@ package com.hbm.explosion; import java.util.List; import java.util.Random; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.projectile.EntityOilSpill; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; @@ -57,11 +57,7 @@ public class ExplosionLarge { vec.rotateAroundY(rand.nextInt(360)); for(int i = 0; i < count; i++) { - EntityGasFlameFX fx = new EntityGasFlameFX(world, x, y, z, 0.0, 0.0, 0.0); - fx.motionY = 0; - fx.motionX = vec.xCoord; - fx.motionZ = vec.zCoord; - world.spawnEntityInWorld(fx); + ParticleUtil.spawnGasFlame(world, x, y, z, vec.xCoord, 0.0, vec.zCoord); vec.rotateAroundY(360 / count); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index a345169e1..04d19a070 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2501,14 +2501,14 @@ public class ModItems { public static Item orange6; public static Item orange7; public static Item orange8; - public static Item gasflame1; + /*public static Item gasflame1; public static Item gasflame2; public static Item gasflame3; public static Item gasflame4; public static Item gasflame5; public static Item gasflame6; public static Item gasflame7; - public static Item gasflame8; + public static Item gasflame8;*/ public static Item energy_ball; public static Item discharge; public static Item empblast; @@ -5642,14 +5642,6 @@ public class ModItems { orange6 = new Item().setUnlocalizedName("orange6").setTextureName(RefStrings.MODID + ":orange6"); orange7 = new Item().setUnlocalizedName("orange7").setTextureName(RefStrings.MODID + ":orange7"); orange8 = new Item().setUnlocalizedName("orange8").setTextureName(RefStrings.MODID + ":orange8"); - gasflame1 = new Item().setUnlocalizedName("gasflame1").setTextureName(RefStrings.MODID + ":gasflame1"); - gasflame2 = new Item().setUnlocalizedName("gasflame2").setTextureName(RefStrings.MODID + ":gasflame2"); - gasflame3 = new Item().setUnlocalizedName("gasflame3").setTextureName(RefStrings.MODID + ":gasflame3"); - gasflame4 = new Item().setUnlocalizedName("gasflame4").setTextureName(RefStrings.MODID + ":gasflame4"); - gasflame5 = new Item().setUnlocalizedName("gasflame5").setTextureName(RefStrings.MODID + ":gasflame5"); - gasflame6 = new Item().setUnlocalizedName("gasflame6").setTextureName(RefStrings.MODID + ":gasflame6"); - gasflame7 = new Item().setUnlocalizedName("gasflame7").setTextureName(RefStrings.MODID + ":gasflame7"); - gasflame8 = new Item().setUnlocalizedName("gasflame8").setTextureName(RefStrings.MODID + ":gasflame8"); energy_ball = new Item().setUnlocalizedName("energy_ball").setTextureName(RefStrings.MODID + ":energy_ball"); discharge = new Item().setUnlocalizedName("discharge").setTextureName(RefStrings.MODID + ":discharge"); empblast = new Item().setUnlocalizedName("empblast").setTextureName(RefStrings.MODID + ":empblast"); @@ -8194,14 +8186,6 @@ public class ModItems { GameRegistry.registerItem(orange6, orange6.getUnlocalizedName()); GameRegistry.registerItem(orange7, orange7.getUnlocalizedName()); GameRegistry.registerItem(orange8, orange8.getUnlocalizedName()); - GameRegistry.registerItem(gasflame1, gasflame1.getUnlocalizedName()); - GameRegistry.registerItem(gasflame2, gasflame2.getUnlocalizedName()); - GameRegistry.registerItem(gasflame3, gasflame3.getUnlocalizedName()); - GameRegistry.registerItem(gasflame4, gasflame4.getUnlocalizedName()); - GameRegistry.registerItem(gasflame5, gasflame5.getUnlocalizedName()); - GameRegistry.registerItem(gasflame6, gasflame6.getUnlocalizedName()); - GameRegistry.registerItem(gasflame7, gasflame7.getUnlocalizedName()); - GameRegistry.registerItem(gasflame8, gasflame8.getUnlocalizedName()); GameRegistry.registerItem(energy_ball, energy_ball.getUnlocalizedName()); GameRegistry.registerItem(discharge, discharge.getUnlocalizedName()); GameRegistry.registerItem(empblast, empblast.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 85ecc3a5f..e9f05f200 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4242)"; + public static final String VERSION = "1.0.27 BETA (4251)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index b3150ec36..008ff582d 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -666,7 +666,6 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySSmokeFX.class, new SSmokeRenderer(ModItems.nuclear_waste)); RenderingRegistry.registerEntityRenderingHandler(EntityOilSpillFX.class, new SpillRenderer(ModItems.nuclear_waste)); RenderingRegistry.registerEntityRenderingHandler(EntityGasFX.class, new GasRenderer(ModItems.nuclear_waste)); - RenderingRegistry.registerEntityRenderingHandler(EntityGasFlameFX.class, new GasFlameRenderer(ModItems.nuclear_waste)); RenderingRegistry.registerEntityRenderingHandler(EntityCombineBall.class, new RenderSnowball(ModItems.energy_ball)); RenderingRegistry.registerEntityRenderingHandler(EntityDischarge.class, new ElectricityRenderer(ModItems.discharge)); RenderingRegistry.registerEntityRenderingHandler(EntityEMPBlast.class, new RenderEMPBlast()); @@ -1675,6 +1674,14 @@ public class ClientProxy extends ServerProxy { } Minecraft.getMinecraft().effectRenderer.addEffect(debug); } + + if("gasfire".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + ParticleGasFlame text = new ParticleGasFlame(world, x, y, z, mX, mY, mZ, 6.5F); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } } private HashMap vanished = new HashMap(); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 536808999..fc95215d2 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -30,6 +30,7 @@ import cpw.mods.fml.common.Mod.Metadata; import cpw.mods.fml.common.ModMetadata; import java.io.File; +import java.util.HashSet; import java.util.List; import java.util.Map.Entry; import java.util.Random; @@ -81,8 +82,10 @@ import com.hbm.world.generator.CellularDungeonFactory; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; @@ -396,7 +399,7 @@ public class MainRegistry { EntityRegistry.registerModEntity(EntityOilSpillFX.class, "entity_spill_fx", 72, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityOilSpill.class, "entity_oil_spill", 73, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityGasFX.class, "entity_spill_fx", 74, this, 1000, 1, true); - EntityRegistry.registerModEntity(EntityGasFlameFX.class, "entity_gasflame_fx", 75, this, 1000, 1, true); + //EntityRegistry.registerModEntity(EntityGasFlameFX.class, "entity_gasflame_fx", 75, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMinecartTest.class, "entity_minecart_test", 76, this, 1000, 1, true); EntityRegistry.registerModEntity(EntitySparkBeam.class, "entity_spark_beam", 77, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityMissileDoomsday.class, "entity_missile_doomsday", 78, this, 1000, 1, true); @@ -1064,4 +1067,23 @@ public class MainRegistry { config.save(); } + + private static HashSet ignoreMappings = new HashSet(); + + static { + for(int i = 1; i <= 8; i++) + ignoreMappings.add("hbm:item.gasflame" + i); + } + + @EventHandler + public void handleMissingMappings(FMLMissingMappingsEvent event) { + + for(MissingMapping mapping : event.get()) { + if(mapping.type == GameRegistry.Type.ITEM) { + if(ignoreMappings.contains(mapping.name)) { + mapping.ignore(); + } + } + } + } } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 8a1c3bc87..d88bbd324 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -4,6 +4,7 @@ import java.lang.reflect.Field; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -62,6 +63,8 @@ import com.hbm.util.EntityDamageUtil; import com.hbm.world.WorldProviderNTM; import com.hbm.world.generator.TimedGenerator; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -70,6 +73,7 @@ import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockBush; diff --git a/src/main/java/com/hbm/particle/ParticleGasFlame.java b/src/main/java/com/hbm/particle/ParticleGasFlame.java new file mode 100644 index 000000000..daca9116a --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleGasFlame.java @@ -0,0 +1,56 @@ +package com.hbm.particle; + +import java.awt.Color; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntitySmokeFX; +import net.minecraft.world.World; + +public class ParticleGasFlame extends EntitySmokeFX { + + float colorMod = 1.0F; + + public ParticleGasFlame(World world, double x, double y, double z, double mX, double mY, double mZ, float scale) { + super(world, x, y, z, mX, mY * 1.5, mZ, scale); + updateColor(); + this.particleScale = scale; + this.colorMod = 0.8F + rand.nextFloat() * 0.2F; + this.noClip = true; + this.particleMaxAge = 30 + rand.nextInt(13); + } + + @Override + public void onUpdate() { + double prevMo = this.motionY; + super.onUpdate(); + updateColor(); + //this.motionX *= 0.75; + //this.motionZ *= 0.75; + this.motionY = prevMo; + + this.motionX *= 0.75D; + this.motionY += 0.005D; + this.motionZ *= 0.75D; + } + + protected void updateColor() { + float time = (float) this.particleAge / (float) this.particleMaxAge; + + Color color = Color.getHSBColor(Math.max((60 - time * 100) / 360F, 0.0F), 1 - time * 0.25F, 1 - time * 0.5F); + + this.particleRed = color.getRed() / 255F; + this.particleGreen = color.getGreen() / 255F; + this.particleBlue = color.getBlue() / 255F; + + this.particleRed *= colorMod; + this.particleGreen *= colorMod; + this.particleBlue *= colorMod; + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } +} diff --git a/src/main/java/com/hbm/render/entity/effect/GasFlameRenderer.java b/src/main/java/com/hbm/render/entity/effect/GasFlameRenderer.java deleted file mode 100644 index f14de47a7..000000000 --- a/src/main/java/com/hbm/render/entity/effect/GasFlameRenderer.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.hbm.render.entity.effect; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; - -import com.hbm.entity.particle.EntityGasFlameFX; -import com.hbm.items.ModItems; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; - -public class GasFlameRenderer extends Render { - private Item field_94151_a; - private int field_94150_f; - private static final String __OBFID = "CL_00001008"; - - public GasFlameRenderer(Item p_i1259_1_, int p_i1259_2_) { - this.field_94151_a = p_i1259_1_; - this.field_94150_f = p_i1259_2_; - } - - public GasFlameRenderer(Item p_i1260_1_) { - this(p_i1260_1_, 0); - } - - /** - * Actually renders the given argument. This is a synthetic bridge method, - * always casting down its argument and then handing it off to a worker - * function which does the actual work. In all probabilty, the class Render - * is generic (Render= fx.maxAge / 8 * 7) { - field_94151_a = ModItems.gasflame8; - } - - if (fx.particleAge < fx.maxAge / 8 * 7 && fx.particleAge >= fx.maxAge / 8 * 6) { - field_94151_a = ModItems.gasflame7; - } - - if (fx.particleAge < fx.maxAge / 8 * 6 && fx.particleAge >= fx.maxAge / 8 * 5) { - field_94151_a = ModItems.gasflame6; - } - - if (fx.particleAge < fx.maxAge / 8 * 5 && fx.particleAge >= fx.maxAge / 8 * 4) { - field_94151_a = ModItems.gasflame5; - } - - if (fx.particleAge < fx.maxAge / 8 * 4 && fx.particleAge >= fx.maxAge / 8 * 3) { - field_94151_a = ModItems.gasflame4; - } - - if (fx.particleAge < fx.maxAge / 8 * 3 && fx.particleAge >= fx.maxAge / 8 * 2) { - field_94151_a = ModItems.gasflame3; - } - - if (fx.particleAge < fx.maxAge / 8 * 2 && fx.particleAge >= fx.maxAge / 8 * 1) { - field_94151_a = ModItems.gasflame2; - } - - if (fx.particleAge < fx.maxAge / 8 && fx.particleAge >= 0) { - field_94151_a = ModItems.gasflame1; - } - - IIcon iicon = field_94151_a.getIconFromDamage(0); - - if (iicon != null) { - GL11.glPushMatrix(); - GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); - GL11.glEnable(GL12.GL_RESCALE_NORMAL); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(7.5F, 7.5F, 7.5F); - // - GL11.glScalef(0.35F, 0.35F, 0.35F); - // - this.bindEntityTexture(p_76986_1_); - Tessellator tessellator = Tessellator.instance; - - this.func_77026_a(tessellator, iicon); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - GL11.glPopMatrix(); - } - } - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called - * unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) { - return TextureMap.locationItemsTexture; - } - - private void func_77026_a(Tessellator p_77026_1_, IIcon p_77026_2_) { - float f = p_77026_2_.getMinU(); - float f1 = p_77026_2_.getMaxU(); - float f2 = p_77026_2_.getMinV(); - float f3 = p_77026_2_.getMaxV(); - float f4 = 1.0F; - float f5 = 0.5F; - float f6 = 0.25F; - GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - p_77026_1_.startDrawingQuads(); - p_77026_1_.setNormal(0.0F, 1.0F, 0.0F); - p_77026_1_.addVertexWithUV(0.0F - f5, 0.0F - f6, 0.0D, f, f3); - p_77026_1_.addVertexWithUV(f4 - f5, 0.0F - f6, 0.0D, f1, f3); - p_77026_1_.addVertexWithUV(f4 - f5, f4 - f6, 0.0D, f1, f2); - p_77026_1_.addVertexWithUV(0.0F - f5, f4 - f6, 0.0D, f, f2); - p_77026_1_.draw(); - } -} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java index ded7a9ed7..122e52ba3 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java @@ -4,16 +4,19 @@ import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.entity.particle.EntityOrangeFX; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.entity.projectile.EntityWaterSplash; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; @@ -102,9 +105,14 @@ public class TileEntityGeysir extends TileEntity { worldObj.spawnEntityInWorld(fx); } - if(timer % 2 == 0) //TODO: replace with actual particle - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, this.xCoord + 0.5F, this.yCoord + 1.1F, this.zCoord + 0.5F, worldObj.rand.nextGaussian() * 0.05, 0.2, worldObj.rand.nextGaussian() * 0.05)); - + if(timer % 2 == 0) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "gasfire"); + data.setDouble("mX", worldObj.rand.nextGaussian() * 0.05); + data.setDouble("mY", 0.2); + data.setDouble("mZ", worldObj.rand.nextGaussian() * 0.05); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, this.xCoord + 0.5F, this.yCoord + 1.1F, this.zCoord + 0.5F), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 75)); + } } private int getDelay() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityAMSLimiter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityAMSLimiter.java index bc928654b..519396d26 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityAMSLimiter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityAMSLimiter.java @@ -1,10 +1,7 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; import java.util.Random; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.explosion.ExplosionLarge; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -16,6 +13,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -331,14 +329,10 @@ public class TileEntityAMSLimiter extends TileEntity implements ISidedInventory, int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); double pos = rand.nextDouble() * 2.5; double off = 0.25; - if(meta == 2) - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.5 + off, yCoord + 5.5, zCoord + 0.5 - pos, 0.0, 0.0, 0.0)); - if(meta == 3) - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.5 - off, yCoord + 5.5, zCoord + 0.5 + pos, 0.0, 0.0, 0.0)); - if(meta == 4) - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.5 - pos, yCoord + 5.5, zCoord + 0.5 - off, 0.0, 0.0, 0.0)); - if(meta == 5) - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.5 + pos, yCoord + 5.5, zCoord + 0.5 + off, 0.0, 0.0, 0.0)); + if(meta == 2) ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5 + off, yCoord + 5.5, zCoord + 0.5 - pos, 0.0, 0.0, 0.0); + if(meta == 3) ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5 - off, yCoord + 5.5, zCoord + 0.5 + pos, 0.0, 0.0, 0.0); + if(meta == 4) ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5 - pos, yCoord + 5.5, zCoord + 0.5 - off, 0.0, 0.0, 0.0); + if(meta == 5) ParticleUtil.spawnGasFlame(worldObj, xCoord + 0.5 + pos, yCoord + 5.5, zCoord + 0.5 + off, 0.0, 0.0, 0.0); efficiency = 0; power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 1d8b0c05a..3a73f999f 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.machine.oil; import java.util.List; -import com.hbm.entity.particle.EntityGasFlameFX; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -16,6 +15,7 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.ParticleUtil; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; @@ -140,8 +140,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(power > maxPower) power = maxPower; - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, this.xCoord + 0.5F, this.yCoord + 11.75F, this.zCoord + 0.5F, - worldObj.rand.nextGaussian() * 0.15, 0.2, worldObj.rand.nextGaussian() * 0.15)); + ParticleUtil.spawnGasFlame(worldObj, this.xCoord + 0.5F, this.yCoord + 11.75F, this.zCoord + 0.5F, worldObj.rand.nextGaussian() * 0.15, 0.2, worldObj.rand.nextGaussian() * 0.15); List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord + 12, zCoord - 2, xCoord + 2, yCoord + 17, zCoord + 2)); for(Entity e : list) { diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java index d04977306..0f80fbbc5 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java @@ -52,14 +52,16 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa int amount = Math.min(getStockpile(), getType().getMaxStackSize()); - if(slots[2] == null) { - slots[2] = slots[1].copy(); - slots[2].stackSize = amount; - this.stack -= amount; - } else { - amount = Math.min(amount, slots[2].getMaxStackSize() - slots[2].stackSize); - slots[2].stackSize += amount; - this.stack -= amount; + if(amount > 0) { + if(slots[2] == null) { + slots[2] = slots[1].copy(); + slots[2].stackSize = amount; + this.stack -= amount; + } else { + amount = Math.min(amount, slots[2].getMaxStackSize() - slots[2].stackSize); + slots[2].stackSize += amount; + this.stack -= amount; + } } } diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java new file mode 100644 index 000000000..8f898e607 --- /dev/null +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -0,0 +1,21 @@ +package com.hbm.util; + +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ParticleUtil { + + public static void spawnGasFlame(World world, double x, double y, double z, double mX, double mY, double mZ) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "gasfire"); + data.setDouble("mX", mX); + data.setDouble("mY", mY); + data.setDouble("mZ", mZ); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); + } +} diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 5ff865767..c356e6427 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4242", + "version":"1.0.27_X4251", "mcversion": "1.7.10", "url": "", "updateUrl": "",