From f5ad04fcfadc82b1979b077a5ad1e423e9bec429 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 9 Sep 2021 22:58:58 +0200 Subject: [PATCH] enhanced lung diseases, coughing fits --- .../java/com/hbm/blocks/gas/BlockGasCoal.java | 8 +- .../entity/mob/siege/EntitySiegeZombie.java | 26 ++++++ .../com/hbm/entity/mob/siege/SiegeTier.java | 14 +-- .../java/com/hbm/extprop/HbmLivingProps.java | 8 +- .../com/hbm/handler/EntityEffectHandler.java | 82 ++++++++++++++++-- src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/special/ItemSiegeCoin.java | 25 ++++++ src/main/java/com/hbm/main/ClientProxy.java | 44 +++++----- src/main/java/com/hbm/main/MainRegistry.java | 2 + .../java/com/hbm/main/ModEventHandler.java | 12 ++- .../com/hbm/modules/ItemHazardModule.java | 6 +- .../render/entity/mob/RenderSiegeZombie.java | 10 +-- .../hbm/render/model/ModelSiegeZombie.java | 35 ++++++++ src/main/resources/assets/hbm/sounds.json | 4 +- .../assets/hbm/sounds/player/cough1.ogg | Bin 0 -> 9043 bytes .../assets/hbm/sounds/player/cough2.ogg | Bin 0 -> 6421 bytes .../assets/hbm/sounds/player/cough3.ogg | Bin 0 -> 8445 bytes .../assets/hbm/sounds/player/cough4.ogg | Bin 0 -> 7774 bytes .../assets/hbm/textures/entity/siege_buff.png | Bin 0 -> 1669 bytes .../assets/hbm/textures/entity/siege_clay.png | Bin 528 -> 2285 bytes .../hbm/textures/entity/siege_stone.png | Bin 0 -> 1588 bytes .../assets/hbm/textures/entity/zombie.png | Bin 0 -> 2388 bytes .../hbm/textures/items/coin_siege_buff.png | Bin 0 -> 379 bytes .../hbm/textures/items/coin_siege_clay.png | Bin 0 -> 372 bytes .../hbm/textures/items/coin_siege_desh.png | Bin 0 -> 360 bytes .../hbm/textures/items/coin_siege_dnt.png | Bin 0 -> 393 bytes .../hbm/textures/items/coin_siege_gold.png | Bin 0 -> 396 bytes .../hbm/textures/items/coin_siege_iron.png | Bin 0 -> 384 bytes .../hbm/textures/items/coin_siege_schrab.png | Bin 0 -> 422 bytes .../hbm/textures/items/coin_siege_silver.png | Bin 0 -> 324 bytes .../hbm/textures/items/coin_siege_stone.png | Bin 0 -> 327 bytes 31 files changed, 221 insertions(+), 57 deletions(-) create mode 100644 src/main/java/com/hbm/render/model/ModelSiegeZombie.java create mode 100644 src/main/resources/assets/hbm/sounds/player/cough1.ogg create mode 100644 src/main/resources/assets/hbm/sounds/player/cough2.ogg create mode 100644 src/main/resources/assets/hbm/sounds/player/cough3.ogg create mode 100644 src/main/resources/assets/hbm/sounds/player/cough4.ogg create mode 100644 src/main/resources/assets/hbm/textures/entity/siege_buff.png create mode 100644 src/main/resources/assets/hbm/textures/entity/siege_stone.png create mode 100644 src/main/resources/assets/hbm/textures/entity/zombie.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_buff.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_clay.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_desh.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_dnt.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_gold.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_iron.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_schrab.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_silver.png create mode 100644 src/main/resources/assets/hbm/textures/items/coin_siege_stone.png diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasCoal.java b/src/main/java/com/hbm/blocks/gas/BlockGasCoal.java index 86d9690ca..3edf0a6cd 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasCoal.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasCoal.java @@ -23,9 +23,7 @@ public class BlockGasCoal extends BlockGasBase { @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random rand) { super.randomDisplayTick(world, x, y, z, rand); - - if(world.rand.nextInt(5) == 0) - world.spawnParticle("smoke", x + rand.nextFloat(), y + rand.nextFloat(), z + rand.nextFloat(), 0.0D, 0.0D, 0.0D); + world.spawnParticle("smoke", x + rand.nextFloat(), y + rand.nextFloat(), z + rand.nextFloat(), 0.0D, 0.0D, 0.0D); } @Override @@ -36,7 +34,7 @@ public class BlockGasCoal extends BlockGasBase { EntityLivingBase living = (EntityLivingBase) entity; if(!ArmorRegistry.hasProtection(living, 3, HazardClass.PARTICLE_COARSE)) - HbmLivingProps.incrementBlackLung(living, 1); + HbmLivingProps.incrementBlackLung(living, 10); } } @@ -57,7 +55,7 @@ public class BlockGasCoal extends BlockGasBase { @Override public void updateTick(World world, int x, int y, int z, Random rand) { - if(!world.isRemote && rand.nextInt(30) == 0) { + if(!world.isRemote && rand.nextInt(20) == 0) { world.setBlockToAir(x, y, z); return; } diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeZombie.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeZombie.java index c544f8cdd..d0e50825f 100644 --- a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeZombie.java +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeZombie.java @@ -1,5 +1,6 @@ package com.hbm.entity.mob.siege; +import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.EntityAIAttackOnCollide; import net.minecraft.entity.ai.EntityAIHurtByTarget; @@ -68,12 +69,22 @@ public class EntitySiegeZombie extends EntityMob { protected void entityInit() { super.entityInit(); this.getDataWatcher().addObject(12, (int) 0); + this.getDataWatcher().addObject(13, (byte) 0); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.23D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(3.0D); } public void setTier(SiegeTier tier) { this.getDataWatcher().updateObject(12, tier.id); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).applyModifier(new AttributeModifier("Tier Speed Mod", tier.speedMod, 1)); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).applyModifier(new AttributeModifier("Tier Damage Mod", tier.damageMod, 1)); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(tier.health); this.setHealth(this.getMaxHealth()); } @@ -113,6 +124,15 @@ public class EntitySiegeZombie extends EntityMob { } } + @Override + public void onUpdate() { + + super.onUpdate(); + if(!worldObj.isRemote) { + this.dataWatcher.updateObject(13, (byte)(this.getAttackTarget() != null ? 1 : 0)); + } + } + @Override public void writeEntityToNBT(NBTTagCompound nbt) { super.writeEntityToNBT(nbt); @@ -124,4 +144,10 @@ public class EntitySiegeZombie extends EntityMob { super.readEntityFromNBT(nbt); this.setTier(SiegeTier.tiers[nbt.getInteger("siegeTier")]); } + + @Override + public IEntityLivingData onSpawnWithEgg(IEntityLivingData data) { + this.setTier(SiegeTier.tiers[rand.nextInt(SiegeTier.getLength())]); + return super.onSpawnWithEgg(data); + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/mob/siege/SiegeTier.java b/src/main/java/com/hbm/entity/mob/siege/SiegeTier.java index 52c2856f0..b5c3e6653 100644 --- a/src/main/java/com/hbm/entity/mob/siege/SiegeTier.java +++ b/src/main/java/com/hbm/entity/mob/siege/SiegeTier.java @@ -23,8 +23,8 @@ public class SiegeTier { public static SiegeTier DEFAULT_BUFF; public static SiegeTier CLAY; - public static SiegeTier IRON; public static SiegeTier STONE; + public static SiegeTier IRON; public static SiegeTier SILVER; public static SiegeTier GOLD; public static SiegeTier DESH; @@ -36,11 +36,11 @@ public class SiegeTier { CLAY = new SiegeTier(30, "clay") .addDrop(new ItemStack(ModItems.coin_siege, 1, 1)) .setDR(0.2F) .setDMG(3F); STONE = new SiegeTier(40, "stone") .addDrop(new ItemStack(ModItems.coin_siege, 1, 2)) .setDR(0.3F) .setDT(1F) .setFP() .setDMG(5F); IRON = new SiegeTier(50, "iron") .addDrop(new ItemStack(ModItems.coin_siege, 1, 3)) .setDR(0.3F) .setDT(2F) .setFP() .setDMG(7.5F) .setFF(); - SILVER = new SiegeTier(70, "silver") .addDrop(new ItemStack(ModItems.coin_siege, 1, 4)) .setDR(0.5F) .setDT(3F) .setNF() .setFP() .setDMG(10F) .setSP(1.5F) .setFF(); - GOLD = new SiegeTier(100, "gold") .addDrop(new ItemStack(ModItems.coin_siege, 1, 5)) .setDR(0.5F) .setDT(5F) .setNF() .setFP() .setDMG(15F) .setSP(1.5F) .setFF(); - DESH = new SiegeTier(150, "desh") .addDrop(new ItemStack(ModItems.coin_siege, 1, 6)) .setDR(0.7F) .setDT(7F) .setNF() .setFP() .setDMG(25F) .setSP(1.5F) .setFF(); - SCHRAB = new SiegeTier(250, "schrab") .addDrop(new ItemStack(ModItems.coin_siege, 1, 7)) .setDR(0.7F) .setDT(10F) .setNF() .setFP() .setDMG(50F) .setSP(2F) .setFF(); - DNT = new SiegeTier(500, "dnt") .addDrop(new ItemStack(ModItems.coin_siege, 1, 8)) .setDR(0.9F) .setDT(20F) .setNF() .setFP() .setDMG(100F) .setSP(2F) .setFF(); + SILVER = new SiegeTier(70, "silver") .addDrop(new ItemStack(ModItems.coin_siege, 1, 4)) .setDR(0.5F) .setDT(3F) .setNF() .setFP() .setDMG(10F) .setSP(0.5F) .setFF(); + GOLD = new SiegeTier(100, "gold") .addDrop(new ItemStack(ModItems.coin_siege, 1, 5)) .setDR(0.5F) .setDT(5F) .setNF() .setFP() .setDMG(15F) .setSP(0.5F) .setFF(); + DESH = new SiegeTier(150, "desh") .addDrop(new ItemStack(ModItems.coin_siege, 1, 6)) .setDR(0.7F) .setDT(7F) .setNF() .setFP() .setDMG(25F) .setSP(0.5F) .setFF(); + SCHRAB = new SiegeTier(250, "schrab") .addDrop(new ItemStack(ModItems.coin_siege, 1, 7)) .setDR(0.7F) .setDT(10F) .setNF() .setFP() .setDMG(50F) .setSP(1F) .setFF(); + DNT = new SiegeTier(500, "dnt") .addDrop(new ItemStack(ModItems.coin_siege, 1, 8)) .setDR(0.9F) .setDT(20F) .setNF() .setFP() .setDMG(100F) .setSP(1F) .setFF(); } public int id; @@ -49,7 +49,7 @@ public class SiegeTier { public float health = 20F; public String name = ""; public float damageMod = 1F; - public float speedMod = 1F; + public float speedMod = 0F; public boolean fireProof = false; public boolean noFall = false; public boolean noFriendlyFire = false; diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 96819a92a..8a65319ac 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -32,7 +32,9 @@ public class HbmLivingProps implements IExtendedEntityProperties { private float radiation; private float digamma; private int asbestos; + public static final int maxAsbestos = 60 * 60 * 20; private int blacklung; + public static final int maxBlacklung = 60 * 60 * 20; private float radEnv; private float radBuf; private int bombTimer; @@ -175,7 +177,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { public static void setAsbestos(EntityLivingBase entity, int asbestos) { getData(entity).asbestos = asbestos; - if(asbestos >= 60 * 60 * 20) { + if(asbestos >= maxAsbestos) { getData(entity).asbestos = 0; entity.attackEntityFrom(ModDamageSource.asbestos, 1000); } @@ -194,7 +196,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { public static void setBlackLung(EntityLivingBase entity, int blacklung) { getData(entity).blacklung = blacklung; - if(blacklung >= 60 * 60 * 20) { + if(blacklung >= maxBlacklung) { getData(entity).asbestos = 0; entity.attackEntityFrom(ModDamageSource.asbestos, 1000); } @@ -235,6 +237,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { props.setInteger("hfr_asbestos", asbestos); props.setInteger("hfr_bomb", bombTimer); props.setInteger("hfr_contagion", contagion); + props.setInteger("hfr_blacklung", blacklung); props.setInteger("hfr_cont_count", this.contamination.size()); @@ -256,6 +259,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { asbestos = props.getInteger("hfr_asbestos"); bombTimer = props.getInteger("hfr_bomb"); contagion = props.getInteger("hfr_contagion"); + blacklung = props.getInteger("hfr_blacklung"); int cont = props.getInteger("hfr_cont_count"); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 953f203d9..9eaf602b6 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -62,16 +62,17 @@ public class EntityEffectHandler { ExplosionNukeSmall.explode(entity.worldObj, entity.posX, entity.posY, entity.posZ, ExplosionNukeSmall.medium); } } + + if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { + entity.setFire(5); + } } handleContamination(entity); handleContagion(entity); handleRadiation(entity); handleDigamma(entity); - - if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { - entity.setFire(5); - } + handleLungDisease(entity); } private static void handleContamination(EntityLivingBase entity) { @@ -133,12 +134,14 @@ public class EntityEffectHandler { if((world.getTotalWorldTime() + r600) % 600 < 20) { NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "bloodvomit"); + nbt.setString("type", "vomit"); + nbt.setString("mode", "blood"); + nbt.setInteger("count", 25); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); if((world.getTotalWorldTime() + r600) % 600 == 1) { - world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F); + world.playSoundEffect(ix, iy, iz, "hbm:player.vomit", 1.0F, 1.0F); entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19)); } } @@ -147,11 +150,13 @@ public class EntityEffectHandler { NBTTagCompound nbt = new NBTTagCompound(); nbt.setString("type", "vomit"); + nbt.setString("mode", "normal"); + nbt.setInteger("count", 15); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); if((world.getTotalWorldTime() + r1200) % 1200 == 1) { - world.playSoundEffect(ix, iy, iz, "hbm:entity.vomit", 1.0F, 1.0F); + world.playSoundEffect(ix, iy, iz, "hbm:player.vomit", 1.0F, 1.0F); entity.addPotionEffect(new PotionEffect(Potion.hunger.id, 60, 19)); } @@ -297,12 +302,14 @@ public class EntityEffectHandler { if(contagion < 30 * minute && (contagion + entity.getEntityId()) % 200 < 20) { NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "bloodvomit"); + nbt.setString("type", "vomit"); + nbt.setString("mode", "blood"); + nbt.setInteger("count", 25); nbt.setInteger("entity", entity.getEntityId()); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); if((contagion + entity.getEntityId()) % 200 == 19) - world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:entity.vomit", 1.0F, 1.0F); + world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.vomit", 1.0F, 1.0F); } //end of contagion, drop dead @@ -312,4 +319,61 @@ public class EntityEffectHandler { } } } + + private static void handleLungDisease(EntityLivingBase entity) { + + if(entity.worldObj.isRemote) + return; + + double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung); + double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos); + + boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D; + + if(!coughs) + return; + + boolean coughsCoal = blacklung / HbmLivingProps.maxBlacklung > 0.5D; + boolean coughsALotOfCoal = blacklung / HbmLivingProps.maxBlacklung > 0.8D; + boolean coughsBlood = asbestos / HbmLivingProps.maxAsbestos > 0.75D || blacklung / HbmLivingProps.maxBlacklung > 0.75D; + + double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung); + double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos); + + double total = 1 - (blacklungDelta * asbestosDelta); + + int freq = Math.max((int) (1000 - 950 * total), 20); + + World world = entity.worldObj; + + if(total > 0.75D) { + entity.addPotionEffect(new PotionEffect(Potion.weakness.id, 100, 2)); + } + + if(total > 0.95D) { + entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 100, 0)); + } + + if(world.getTotalWorldTime() % freq == entity.getEntityId() % freq) { + world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.cough", 1.0F, 1.0F); + + if(coughsBlood) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vomit"); + nbt.setString("mode", "blood"); + nbt.setInteger("count", 5); + nbt.setInteger("entity", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + } + + if(coughsCoal) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vomit"); + nbt.setString("mode", "smoke"); + nbt.setInteger("count", coughsALotOfCoal ? 50 : 10); + nbt.setInteger("entity", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + } + } + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 51a42bcfc..0cda754fe 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3286,7 +3286,7 @@ public class ModItems { coin_maskman = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_maskman").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_maskman"); coin_worm = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_worm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_worm"); coin_ufo = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_ufo").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_ufo"); - coin_siege = new ItemSiegeCoin().setUnlocalizedName("coin_siege").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_siege"); + coin_siege = new ItemSiegeCoin().setUnlocalizedName("coin_siege").setCreativeTab(MainRegistry.consumableTab); recycled_ground = new Item().setUnlocalizedName("recycled_ground").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_ground"); recycled_rock = new Item().setUnlocalizedName("recycled_rock").setCreativeTab(null).setTextureName(RefStrings.MODID + ":recycled_rock"); diff --git a/src/main/java/com/hbm/items/special/ItemSiegeCoin.java b/src/main/java/com/hbm/items/special/ItemSiegeCoin.java index 153d9786d..add9dd20e 100644 --- a/src/main/java/com/hbm/items/special/ItemSiegeCoin.java +++ b/src/main/java/com/hbm/items/special/ItemSiegeCoin.java @@ -3,23 +3,48 @@ package com.hbm.items.special; import java.util.List; import com.hbm.entity.mob.siege.SiegeTier; +import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; public class ItemSiegeCoin extends Item { + @SideOnly(Side.CLIENT) + private IIcon[] icons; + public ItemSiegeCoin() { this.hasSubtypes = true; this.setMaxDamage(0); } + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return this.icons[meta % icons.length]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister p_94581_1_) { + this.itemIcon = Items.stick.getIconFromDamage(0); + + icons = new IIcon[SiegeTier.getLength()]; + + for(int i = 0; i < SiegeTier.getLength(); i++) { + icons[i] = p_94581_1_.registerIcon(RefStrings.MODID + ":coin_siege_" + SiegeTier.tiers[i].name); + } + } + @Override public EnumRarity getRarity(ItemStack stack) { return EnumRarity.uncommon; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 368edf617..1275459a0 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1286,6 +1286,7 @@ public class ClientProxy extends ServerProxy { if("vomit".equals(type)) { Entity e = world.getEntityByID(data.getInteger("entity")); + int count = data.getInteger("count"); if(e instanceof EntityLivingBase) { @@ -1295,30 +1296,25 @@ public class ClientProxy extends ServerProxy { Vec3 vec = e.getLookVec(); - for(int i = 0; i < 25; i++) { - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13)); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); - } - } - } - - if("bloodvomit".equals(type)) { - - Entity e = world.getEntityByID(data.getInteger("entity")); - - if(e instanceof EntityLivingBase) { - - double ix = e.posX; - double iy = e.posY - e.getYOffset() + e.getEyeHeight() + (e instanceof EntityPlayer ? 1 : 0); - double iz = e.posZ; - - Vec3 vec = e.getLookVec(); - - for(int i = 0; i < 25; i++) { - EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.redstone_block, 0); - ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); - Minecraft.getMinecraft().effectRenderer.addEffect(fx); + for(int i = 0; i < count; i++) { + + if("normal".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.stained_hardened_clay, (rand.nextBoolean() ? 5 : 13)); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("blood".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntityBlockDustFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.yCoord + rand.nextGaussian() * 0.2) * 0.2, (vec.zCoord + rand.nextGaussian() * 0.2) * 0.2, Blocks.redstone_block, 0); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 150 + rand.nextInt(50), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + + if("smoke".equals(data.getString("mode"))) { + EntityFX fx = new net.minecraft.client.particle.EntitySmokeFX(world, ix, iy, iz, (vec.xCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.yCoord + rand.nextGaussian() * 0.1) * 0.05, (vec.zCoord + rand.nextGaussian() * 0.1) * 0.05, 0.2F); + ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(10), "particleMaxAge", "field_70547_e"); + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } } } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index d90af5fe7..b51f26ba6 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -57,6 +57,7 @@ import com.hbm.entity.missile.*; import com.hbm.entity.mob.*; import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; +import com.hbm.entity.mob.siege.EntitySiegeZombie; import com.hbm.entity.mob.siege.SiegeTier; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; @@ -468,6 +469,7 @@ public class MainRegistry { EntityRegistry.registerGlobalEntityID(EntityQuackos.class, "entity_elder_one", EntityRegistry.findGlobalUniqueEntityId(), 0xd0d0d0, 0xFFBF00); EntityRegistry.registerGlobalEntityID(EntityFBI.class, "entity_ntm_fbi", EntityRegistry.findGlobalUniqueEntityId(), 0x008000, 0x404040); EntityRegistry.registerGlobalEntityID(EntityRADBeast.class, "entity_ntm_radiation_blaze", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008000); + EntityRegistry.registerGlobalEntityID(EntitySiegeZombie.class, "entity_meme_zombie", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008000); ForgeChunkManager.setForcedChunkLoadingCallback(this, new LoadingCallback() { diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index b7dc71508..58742d2e1 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -105,6 +105,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.EntityEvent; @@ -1063,7 +1064,16 @@ public class ModEventHandler { } if(event.block == Blocks.coal_ore || event.block == ModBlocks.ore_lignite) { - event.world.setBlock(event.x, event.y, event.z, ModBlocks.gas_coal); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + int x = event.x + dir.offsetX; + int y = event.y + dir.offsetY; + int z = event.z + dir.offsetZ; + + if(event.world.rand.nextInt(2) == 0 && event.world.getBlock(x, y, z) == Blocks.air) + event.world.setBlock(x, y, z, ModBlocks.gas_coal); + } } } diff --git a/src/main/java/com/hbm/modules/ItemHazardModule.java b/src/main/java/com/hbm/modules/ItemHazardModule.java index f4f5bdb69..efb17edb8 100644 --- a/src/main/java/com/hbm/modules/ItemHazardModule.java +++ b/src/main/java/com/hbm/modules/ItemHazardModule.java @@ -3,11 +3,14 @@ package com.hbm.modules; import java.util.List; import com.hbm.config.GeneralConfig; +import com.hbm.extprop.HbmLivingProps; import com.hbm.inventory.BreederRecipes; import com.hbm.items.ModItems; +import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.I18nUtil; +import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; @@ -95,7 +98,8 @@ public class ItemHazardModule { entity.setFire(this.fire); if(this.asbestos) - ContaminationUtil.applyAsbestos(entity, (int) (1 * mod)); + if(!ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE)) + HbmLivingProps.incrementAsbestos(entity, (int) (1 * mod)); if(this.hydro && currentItem) { diff --git a/src/main/java/com/hbm/render/entity/mob/RenderSiegeZombie.java b/src/main/java/com/hbm/render/entity/mob/RenderSiegeZombie.java index 85d0d2204..679d0a9d7 100644 --- a/src/main/java/com/hbm/render/entity/mob/RenderSiegeZombie.java +++ b/src/main/java/com/hbm/render/entity/mob/RenderSiegeZombie.java @@ -3,19 +3,17 @@ package com.hbm.render.entity.mob; import com.hbm.entity.mob.siege.EntitySiegeZombie; import com.hbm.entity.mob.siege.SiegeTier; import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelSiegeZombie; -import net.minecraft.client.model.ModelBiped; -import net.minecraft.client.model.ModelZombie; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.ResourceLocation; public class RenderSiegeZombie extends RenderBiped { public RenderSiegeZombie() { - super(new ModelZombie(), 0.5F, 1.0F); + super(new ModelSiegeZombie(0.0F), 0.5F, 1.0F); } @Override @@ -35,7 +33,7 @@ public class RenderSiegeZombie extends RenderBiped { @Override protected void func_82421_b() { - this.field_82423_g = new ModelZombie(1.0F, true); //armor slots 1, 2, 4 - this.field_82425_h = new ModelZombie(0.5F, true); //armor slot 3 + this.field_82423_g = new ModelSiegeZombie(1.0F); //armor slots 1, 2, 4 + this.field_82425_h = new ModelSiegeZombie(0.5F); //armor slot 3 } } diff --git a/src/main/java/com/hbm/render/model/ModelSiegeZombie.java b/src/main/java/com/hbm/render/model/ModelSiegeZombie.java new file mode 100644 index 000000000..76bd7c883 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelSiegeZombie.java @@ -0,0 +1,35 @@ +package com.hbm.render.model; + +import com.hbm.entity.mob.siege.EntitySiegeZombie; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +public class ModelSiegeZombie extends ModelBiped { + + public ModelSiegeZombie(float p_i1168_1_) { + super(p_i1168_1_, 0.0F, 64, 32); + } + + public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity entity) { + super.setRotationAngles(p_78087_1_, p_78087_2_, p_78087_3_, p_78087_4_, p_78087_5_, p_78087_6_, entity); + + if(entity instanceof EntitySiegeZombie && ((EntitySiegeZombie)entity).getDataWatcher().getWatchableObjectByte(13) != 0) { + float f6 = MathHelper.sin(this.onGround * (float) Math.PI); + float f7 = MathHelper.sin((1.0F - (1.0F - this.onGround) * (1.0F - this.onGround)) * (float) Math.PI); + this.bipedRightArm.rotateAngleZ = 0.0F; + this.bipedLeftArm.rotateAngleZ = 0.0F; + this.bipedRightArm.rotateAngleY = -(0.1F - f6 * 0.6F); + this.bipedLeftArm.rotateAngleY = 0.1F - f6 * 0.6F; + this.bipedRightArm.rotateAngleX = -((float) Math.PI / 2F); + this.bipedLeftArm.rotateAngleX = -((float) Math.PI / 2F); + this.bipedRightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; + this.bipedLeftArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; + this.bipedRightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; + this.bipedRightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + this.bipedLeftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + } + } +} diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 1e5a94a9e..fa6278953 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -181,7 +181,6 @@ "entity.ducc": {"category": "neutral", "sounds": ["entity/ducc1", "entity/ducc2"]}, "entity.slicer": {"category": "neutral", "sounds": ["entity/slicer1", "entity/slicer2", "entity/slicer3", "entity/slicer4"]}, "entity.megaquacc": {"category": "hostile", "sounds": [{"name": "entity/megaquacc", "stream": false}]}, - "entity.vomit": {"category": "player", "sounds": [{"name": "entity/vomit", "stream": false}]}, "entity.ufoBeam": {"category": "hostile", "sounds": [{"name": "entity/ufoBeamShort", "stream": false}]}, "entity.ufoBlast": {"category": "hostile", "sounds": [{"name": "entity/ufoBlast", "stream": false}]}, "entity.siegeIdle": {"category": "hostile", "sounds": ["entity/siegeIdle1", "entity/siegeIdle2"]}, @@ -194,6 +193,9 @@ "step.iron": {"category": "player", "sounds": ["footsteps/iron1", "footsteps/iron2", "footsteps/iron3", "footsteps/iron4"]}, "step.metalBlock": {"category": "block", "sounds": ["footsteps/metalStep1", "footsteps/metalStep2", "footsteps/metalStep3", "footsteps/metalStep4"]}, + "player.vomit": {"category": "player", "sounds": [{"name": "player/vomit", "stream": false}]}, + "player.cough": {"category": "player", "sounds": ["player/cough1", "player/cough2", "player/cough3", "player/cough4"]}, + "potatos.random": {"category": "player", "sounds": ["potatos/randResponse0", "potatos/randResponse1", "potatos/randResponse2", "potatos/randResponse3", "potatos/randResponse4", "potatos/randResponse5", "potatos/randResponse6", "potatos/randResponse7"]}, "fm.clap": {"category": "block", "sounds": [{"name": "clap", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/player/cough1.ogg b/src/main/resources/assets/hbm/sounds/player/cough1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8f6136f198664040a12f7e82b755eaa0be68a0f0 GIT binary patch literal 9043 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 J^Cs1h{{w!L^i=== literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/player/cough2.ogg b/src/main/resources/assets/hbm/sounds/player/cough2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e728b0d6fdd93df2ce632515602733aa531fbf54 GIT binary patch literal 6421 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 D=DgWP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/player/cough3.ogg b/src/main/resources/assets/hbm/sounds/player/cough3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a02a9dd43806b9656a348a60ec088bcc5fb2d821 GIT binary patch literal 8445 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/sounds/player/cough4.ogg b/src/main/resources/assets/hbm/sounds/player/cough4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f9d990d500f5395b5b1eafb69b776efebf85432a GIT binary patch literal 7774 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 P!QyKHK>xixp8)<1wyHGe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/entity/siege_buff.png b/src/main/resources/assets/hbm/textures/entity/siege_buff.png new file mode 100644 index 0000000000000000000000000000000000000000..f95ba419acd764c8a0d3eabe706a7f2db0464669 GIT binary patch literal 1669 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 Zd;!rBwH(h}B{={9002ovPDHLkV1foPo5KJA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/coin_siege_clay.png b/src/main/resources/assets/hbm/textures/items/coin_siege_clay.png new file mode 100644 index 0000000000000000000000000000000000000000..947858aa464c36c11a1ce30c88a076e4808a1a83 GIT binary patch literal 372 zcmV-)0gL{LP)i^h<1WcaCc>fYY}$Y*-dJl?*4pp&pC5}zpmP*gT;90nF+)MWM3UrBG3$IB&2R4}DoS6XE9hHHQ#^mxy!D0=N?S_`2{639g8&9lk^HzkI?KFXwZFopV@M6&7U~MgfK#X_ExW2wQ6}7T%8ym}R5RBq1UScFsZi z{z|}a|FpA+KtvSmtc6eRLA`=&nh@UJROjc@39IQe!iTQIyZ4b(|9~Wzz}8v?5BrY{ z0AMwn1rfozs+9Jj>mc6aW5C?}%8RlL;ytAA;YF18{~AA>iL=le?x)580000xxl7Qt#;^j|Qp z3}H*dX0QyEEr@BbYFZJ~Yr`>Bi4-u3wqlO8zb{P>*j;T+(v%}Yykdjms6 z$S&5fLm8|dZ+~06{58<-^bPrh*7*&X8N0JhY%yVYKQTmvY9;Tb0@|IvIcr^knXO~? zk-NQn1T&*ps+-Bf&_b5t0P@LcK5aH^j+r4M&{{i+Euh;Qm`HZyk;00000NkvXXu0mjfw413M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/coin_siege_gold.png b/src/main/resources/assets/hbm/textures/items/coin_siege_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..29e2905a59af442deb248257dccc26105557be3f GIT binary patch literal 396 zcmV;70dxL|P)3`|FE*Eg!`)KEp^N3l835+uk zC&abJ!n2fLc)32c#0l@WM-Y)f7zv0d#CX`V#0jOp3h*E_Tb}-4_w}jgF--NL1p3fyuZEf;B>(&6n@w4&W1J0pxvq#ZZ^u` q>R}T68jw}9Ua>|QH-~xc|5e{qo52l@Nk?G-0000@R9ygAYw_OWoMSqjHUJ@n#w&DwmoX-W5HQBnA@4og?Uv{B$?G00003`rm+qRj%d%p)BKZ+$91?>;V3tf_mZ{m98JI#$ zEkWSGL4xBSU=dh~xh7$~X1C8=E_cs!?|pZ`Uzc=gp*xwx03d4`6iq|B zQu%Q&xdc8AhfpmGYM}ttvhcQC#tNmlE0r=L=^TC-3_wit8$Jk*Bky#;d%cvC&l9MY z1&1g`sgg8On=df#l~S6POvs_-2L&zvLlyiEMh(FoCeF69KrK0t^BIGm`}>lr~L zMCKK8zw4&eiX$OlG@B_Da1MVw2Eq_nEG~bf)4HlwS{PDtUNH Q{{R3007*qoM6N<$g4c1e<^TWy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/coin_siege_silver.png b/src/main/resources/assets/hbm/textures/items/coin_siege_silver.png new file mode 100644 index 0000000000000000000000000000000000000000..06f76a95df2897d0c3009e4151e68fb9db743ae8 GIT binary patch literal 324 zcmV-K0lWT*P)V}zOA6EJfIH%$X(hN@<8S>rLm*;!Sgsu^4+xE|3tSA`G~fUL8b zW$-jjnCH2=37j>`&ciUgx&seCvG4n&su;)d=4@tImZkbCa8B2C$;_atFtaT7|C(Q4 Wq`jgIYXtxR00000 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/coin_siege_stone.png b/src/main/resources/assets/hbm/textures/items/coin_siege_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0d3544c0831436738dce819021ea0c6169abae GIT binary patch literal 327 zcmV-N0l5B&P);0=5JuM|v)ge8&%gm_tnBne$z|-Fv4L|~h?NDk1&za6 zkV;0y|8J9>p#c2eJ`jMvuHw~(F(x7+5D_3ENGTt`{kkswALVmNW)qi5fRF= zynsIM;lA&|Id=&QAz<4!*!LaQb^V^E>F3CNoB@b<2~|~fnS1YnnJ>l(V2p`(ZA65w z>r&Wz4{h6mQYvPEd-nrCL@9iXvqb_BQ3fC)2q9#E5JC=kG6*36Gru)RzfnqASZm|5 zEa}Y7xeTDShH)H=%;0Qs4%Bu1vOB=TOKh4ZGBdPon{{SpnCH283ph$C6`48R!&&=( Z)h`L^#V{zWdcptz002ovPDHLkV1iT-gcbk* literal 0 HcmV?d00001