diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1d9aecff4..de693e8ec 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1150,10 +1150,6 @@ public class ModBlocks { public static Block gas_explosive; public static Block vacuum; - @Deprecated public static Block absorber; - @Deprecated public static Block absorber_red; - @Deprecated public static Block absorber_green; - @Deprecated public static Block absorber_pink; public static Block rad_absorber; public static Block decon; @@ -2288,11 +2284,6 @@ public class ModBlocks { gas_explosive = new BlockGasExplosive().setBlockName("gas_explosive").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":gas_explosive"); vacuum = new BlockVacuum().setBlockName("vacuum").setResistance(1000000F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vacuum"); - absorber = new BlockGeneric(Material.iron).setBlockName("absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - absorber_red = new BlockGeneric(Material.iron).setBlockName("absorber_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - absorber_green = new BlockGeneric(Material.iron).setBlockName("absorber_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - absorber_pink = new BlockGeneric(Material.iron).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_deprecated"); - rad_absorber = new BlockAbsorber(Material.iron).setBlockName("rad_absorber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side"); @@ -3312,10 +3303,6 @@ public class ModBlocks { GameRegistry.registerBlock(struct_icf_core, struct_icf_core.getUnlocalizedName()); //Absorbers - GameRegistry.registerBlock(absorber, absorber.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_red, absorber_red.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_green, absorber_green.getUnlocalizedName()); - GameRegistry.registerBlock(absorber_pink, absorber_pink.getUnlocalizedName()); GameRegistry.registerBlock(rad_absorber, ItemBlockBase.class, rad_absorber.getUnlocalizedName()); GameRegistry.registerBlock(decon, decon.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeUniversal.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeUniversal.java index 0bb36c78c..6d6991441 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeUniversal.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeUniversal.java @@ -110,4 +110,5 @@ public class EntityGrenadeUniversal extends EntityThrowableInterp { } @Override protected int groundDespawn() { return 0; } + @Override public boolean fullBlockCollisions() { return true; } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index 380ff5af2..e589f7b56 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -248,9 +248,13 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { float drag = this.getAirDrag(); double gravity = this.getGravityVelocity(); - this.posX += this.motionX * motionMult(); - this.posY += this.motionY * motionMult(); - this.posZ += this.motionZ * motionMult(); + if(fullBlockCollisions()) { + this.moveEntity(this.motionX * motionMult(), this.motionY * motionMult(), this.motionZ * motionMult()); + } else { + this.posX += this.motionX * motionMult(); + this.posY += this.motionY * motionMult(); + this.posZ += this.motionZ * motionMult(); + } if(this.isInWater()) { for(int i = 0; i < 4; ++i) { @@ -269,6 +273,10 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } } + public boolean fullBlockCollisions() { + return false; + } + public boolean doesImpactEntities() { return true; } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java index d699707da..c4b9a697e 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCross.java @@ -9,6 +9,7 @@ import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler; import com.hbm.explosion.vanillant.interfaces.IEntityProcessor; import com.hbm.explosion.vanillant.interfaces.IEntityRangeMutator; +import com.hbm.interfaces.NotableComments; import net.minecraft.enchantment.EnchantmentProtection; import net.minecraft.entity.Entity; @@ -22,6 +23,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.ForgeEventFactory; +@NotableComments /** The amount of good decisions in NTM is few and far between, but the VNT explosion surely is one of them. */ public class EntityProcessorCross implements IEntityProcessor { diff --git a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeFilling.java b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeFilling.java index 1fe50493a..60239b0da 100644 --- a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeFilling.java +++ b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeFilling.java @@ -5,6 +5,7 @@ import java.util.Set; import java.util.function.BiConsumer; import java.util.function.Consumer; +import com.hbm.entity.effect.EntityFireLingering; import com.hbm.entity.grenade.EntityGrenadeUniversal; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.explosion.vanillant.ExplosionVNT; @@ -14,13 +15,22 @@ import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; import com.hbm.explosion.vanillant.standard.ExplosionEffectTiny; import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.handler.threading.PacketThreading; import com.hbm.items.ItemEnumMulti; import com.hbm.items.weapon.grenade.ItemGrenadeShell.EnumGrenadeShell; import static com.hbm.items.weapon.grenade.ItemGrenadeShell.EnumGrenadeShell.*; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.factory.Lego; +import com.hbm.main.NTMSounds; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.util.DamageResistanceHandler.DamageClass; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class ItemGrenadeFilling extends ItemEnumMulti { @@ -38,8 +48,10 @@ public class ItemGrenadeFilling extends ItemEnumMulti { HE(EXPLODE_HE, 0x595533, 0xA49D62, FRAG, STICK), // high explosive HE_FRAG(EXPLODE_FRAG, 0x595533, 0xE0BA29, FRAG, STICK), // high explosive with fragmentation DEMO(EXPLODE_DEMO, 0x595533, 0xDD4029, FRAG, STICK), // demolition - INC(null, 0x5A5A5A, 0xFF5F21, FRAG, STICK), // incendiary + INC(EXPLODE_INC, 0x5A5A5A, 0xFF5F21, FRAG, STICK), // incendiary CLUSTER(EXPLODE_CLUSTER, 0x5A5A5A, 0xFFC711, FRAG, STICK), // explosive pellets + EMP(EXPLODE_EMP, 0x93A1AC, 0x00FFFF, TECH), // tesla + PLASMA(EXPLODE_PLASMA, 0x655B2C, 0x4CFF00, TECH), // EMP but more oomph NUCLEAR(null, 0, 0, NUKE); // nuka grenade // and more which i haven't decided. probably plasma, EMP, perhaps laser(?) @@ -57,13 +69,9 @@ public class ItemGrenadeFilling extends ItemEnumMulti { } } - public static Consumer EXPLODE_POWDER = (grenade) -> { - standardExplode(grenade, 5F, 10F, 5F, 0F); - }; + public static Consumer EXPLODE_POWDER = (grenade) -> { standardExplode(grenade, 5F, 10F, 5F, 0F); }; - public static Consumer EXPLODE_HE = (grenade) -> { - standardExplode(grenade, 7.5F, 25F, 10F, 0.1F); - }; + public static Consumer EXPLODE_HE = (grenade) -> { standardExplode(grenade, 7.5F, 25F, 10F, 0.1F); }; public static Consumer EXPLODE_FRAG = (grenade) -> { standardExplode(grenade, 7.5F, 15F, 10F, 0.1F); @@ -99,6 +107,57 @@ public class ItemGrenadeFilling extends ItemEnumMulti { vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); }; + + public static Consumer EXPLODE_INC = (grenade) -> { + World world = grenade.worldObj; + standardExplode(grenade, 3F, 10F); + EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(200).setType(EntityFireLingering.TYPE_DIESEL); + fire.setPosition(grenade.posX, grenade.posY, grenade.posZ); + world.spawnEntityInWorld(fire); + for(int dx = -2; dx <= 2; dx++) for(int dy = -2; dy <= 2; dy++) for(int dz = -2; dz <= 2; dz++) { + int x = (int) Math.floor(grenade.posX) + dx; + int y = (int) Math.floor(grenade.posY) + dy; + int z = (int) Math.floor(grenade.posZ) + dz; + if(world.getBlock(x, y, z).isAir(grenade.worldObj, x, y, z)) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isFlammable(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.getOpposite())) { + world.setBlock(x, y, z, Blocks.fire); + break; + } + } + } + } + }; + + public static Consumer EXPLODE_EMP = (grenade) -> { + explodeStandardEnergy(grenade, 30F, 3F, DamageClass.ELECTRIC, 0.5F, 0.5F, 1F, 3F); + }; + + public static Consumer EXPLODE_PLASMA = (grenade) -> { + explodeStandardEnergy(grenade, 50F, 5F, DamageClass.PLASMA, 0.5F, 1F, 0.5F, 4F); + }; + + public static void explodeStandardEnergy(EntityGrenadeUniversal grenade, float damage, float range, DamageClass damageClass, float r, float g, float b, float scale) { + ExplosionVNT vnt = new ExplosionVNT(grenade.worldObj, grenade.posX, grenade.posY, grenade.posZ, range, grenade.getThrower()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, damage).setDamageClass(damageClass)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + grenade.worldObj.playSoundEffect(grenade.posX, grenade.posY, grenade.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + grenade.worldObj.rand.nextFloat() * 0.2F); + grenade.worldObj.playSoundEffect(grenade.posX, grenade.posY, grenade.posZ, NTMSounds.VANILLA_FIREWORKS_BANG, 5.0F, 0.5F); + + float yaw = grenade.worldObj.rand.nextFloat() * 180F; + for(int i = 0; i < 3; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", r); + data.setFloat("g", g); + data.setFloat("b", b); + data.setFloat("pitch", -60F + 60F * i); + data.setFloat("yaw", yaw); + data.setFloat("scale", scale); + PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, grenade.posX, grenade.posY + 0.125, grenade.posZ), new TargetPoint(grenade.dimension, grenade.posX, grenade.posY, grenade.posZ, 100)); + } + } public static BiConsumer LAMBDA_TINY_EXPLODE = (bullet, mop) -> { if(bullet.ticksExisted < 2) return; @@ -118,7 +177,7 @@ public class ItemGrenadeFilling extends ItemEnumMulti { public static void tinyExplode(EntityGrenadeUniversal grenade, float range, float damage) { tinyExplode(grenade, range, damage, 0F, 0F); } public static void tinyExplode(EntityGrenadeUniversal grenade, float range, float damage, float dt, float dr) { ExplosionVNT vnt = new ExplosionVNT(grenade.worldObj, grenade.posX, grenade.posY, grenade.posZ, range, grenade.getThrower()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, damage).setupPiercing(dt, dr).setKnockback(0.25D)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, damage).setupPiercing(dt, dr).setKnockback(0.25D)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectTiny()); vnt.explode(); diff --git a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeShell.java b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeShell.java index 05722cd89..f89eb7848 100644 --- a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeShell.java +++ b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeShell.java @@ -30,12 +30,10 @@ public class ItemGrenadeShell extends ItemEnumMulti { } public static enum EnumGrenadeShell { - FRAG(4, 20, 0.5D), // bonus fragmentation - STICK(4, 20, 0.25D), // thrown father - TECH(2, 20, 0.5D), // casing with electronics for EMP/plasma - NUKE(1, 20, 0.25D); // nuka grenade casing for high yield grenades - /* ^ - * nice */ + FRAG(4, 20, 0.5D), // bonus fragmentation + STICK(4, 20, 0.25D), // thrown farther + TECH(2, 20, 0.5D), // casing with electronics for EMP/plasma + NUKE(1, 20, 0.25D); // nuka grenade casing for high yield grenades private int stackLimit; private int drawDuration; diff --git a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeUniversal.java b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeUniversal.java index be3b5c9f1..955866000 100644 --- a/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeUniversal.java +++ b/src/main/java/com/hbm/items/weapon/grenade/ItemGrenadeUniversal.java @@ -134,6 +134,8 @@ public class ItemGrenadeUniversal extends Item implements IEquipReceiver { for(EnumGrenadeShell shell : EnumGrenadeShell.values()) for(EnumGrenadeFilling filling : EnumGrenadeFilling.values()) { if(filling.compatibleShells.contains(shell)) for(EnumGrenadeFuze fuze : EnumGrenadeFuze.values()) list.add(make(shell, filling, fuze)); } + + list.add(make(EnumGrenadeShell.TECH, EnumGrenadeFilling.HE, EnumGrenadeFuze.S3)); } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index f7f5629c7..3f86dedf8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -30,6 +30,7 @@ public class ConfettiUtil { if(entity.isEntityAlive()) return; if(source.damageType.equals(DamageClass.LASER.name().toLowerCase(Locale.US))) pulverize(entity); if(source.damageType.equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) pulverize(entity); + if(source.damageType.equals(DamageClass.PLASMA.name().toLowerCase(Locale.US))) cremate(entity); if(source.isExplosion()) gib(entity); if(source.isFireDamage()) cremate(entity); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 1fdf49add..0d4cf9248 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -299,7 +299,7 @@ public class Lego { double y = mop.hitVec.yCoord + dir.offsetY * 0.25D; double z = mop.hitVec.zCoord + dir.offsetZ * 0.25D; ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, x, y, z, range, bullet.getThrower()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod) + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, bullet.damage * damageMod) .setupPiercing(bullet.config.armorThresholdNegation, bullet.config.armorPiercingPercent).setKnockback(0.25D)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectTiny()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 6e23e231a..e63640db7 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1517,7 +1517,11 @@ public class MainRegistry { ignoreMappings.add("hbm:item.euphemium_capacitor"); ignoreMappings.add("hbm:item.toolbox_legacy"); ignoreMappings.add("hbm:item.crucible_template"); - + ignoreMappings.add("hbm:tile.absorber"); + ignoreMappings.add("hbm:tile.absorber_red"); + ignoreMappings.add("hbm:tile.absorber_green"); + ignoreMappings.add("hbm:tile.absorber_pink"); + /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); remapItems.put("hbm:item.man_explosive8", ModItems.explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 524a2d08e..66c1d0bda 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1078,21 +1078,6 @@ public class ModEventHandler { event.getChunk().func_150807_a(x, y, z, Blocks.air, 0); } }*/ - - for(int x = 0; x < 16; x++) for(int y = 0; y < 255; y++) for(int z = 0; z < 16; z++) { - if(event.getChunk().getBlock(x, y, z) == ModBlocks.absorber) { - event.getChunk().func_150807_a(x, y, z, ModBlocks.rad_absorber, 0); - } - else if(event.getChunk().getBlock(x, y, z) == ModBlocks.absorber_red) { - event.getChunk().func_150807_a(x, y, z, ModBlocks.rad_absorber, 1); - } - else if(event.getChunk().getBlock(x, y, z) == ModBlocks.absorber_green) { - event.getChunk().func_150807_a(x, y, z, ModBlocks.rad_absorber, 2); - } - else if(event.getChunk().getBlock(x, y, z) == ModBlocks.absorber_pink) { - event.getChunk().func_150807_a(x, y, z, ModBlocks.rad_absorber, 3); - } - } } @SubscribeEvent diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 54b8e95f8..ee9c886fe 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1109,7 +1109,13 @@ public class ResourceManager { public static final ResourceLocation grenade_frag_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/frag_label.png"); public static final ResourceLocation grenade_frag_fuze_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/frag_fuze.png"); public static final ResourceLocation grenade_stick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/stick.png"); + public static final ResourceLocation grenade_stick_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/stick_body.png"); + public static final ResourceLocation grenade_stick_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/stick_label.png"); + public static final ResourceLocation grenade_stick_fuze_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/stick_fuze.png"); public static final ResourceLocation grenade_tech_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/tech.png"); + public static final ResourceLocation grenade_tech_body_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/tech_body.png"); + public static final ResourceLocation grenade_tech_lights_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/tech_lights.png"); + public static final ResourceLocation grenade_tech_fuze_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/tech_fuze.png"); public static final ResourceLocation grenade_nuka_tex = new ResourceLocation(RefStrings.MODID, "textures/models/grenades/nuka.png"); public static final ResourceLocation bj_eyepatch = new ResourceLocation(RefStrings.MODID, "textures/armor/bj_eyepatch.png"); diff --git a/src/main/java/com/hbm/render/item/ItemRenderGrenade.java b/src/main/java/com/hbm/render/item/ItemRenderGrenade.java index 445587ad7..51ccc340e 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderGrenade.java +++ b/src/main/java/com/hbm/render/item/ItemRenderGrenade.java @@ -8,6 +8,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.weapon.grenade.ItemGrenadeUniversal; import com.hbm.main.ResourceManager; +import com.hbm.render.tileentity.RenderArcFurnace; import com.hbm.util.ColorUtil; import net.minecraft.client.Minecraft; @@ -85,14 +86,17 @@ public class ItemRenderGrenade implements IItemRenderer { } if(shell == EnumGrenadeShell.STICK) { - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_stick_tex); - ResourceManager.grenades.renderPart("Stick"); + renderStickBody(stack); + EnumGrenadeFilling filling = ItemGrenadeUniversal.getFilling(stack); + GL11.glColor3f(ColorUtil.fr(filling.bodyColor), ColorUtil.fg(filling.bodyColor), ColorUtil.fb(filling.bodyColor)); + bind(ResourceManager.grenade_stick_body_tex); ResourceManager.grenades.renderPart("StickCap"); + GL11.glColor3f(1F, 1F, 1F); } if(shell == EnumGrenadeShell.TECH) { + renderTechBody(stack); Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_tech_tex); - ResourceManager.grenades.renderPart("Tech"); ResourceManager.grenades.renderPart("TechRing"); } @@ -134,10 +138,13 @@ public class ItemRenderGrenade implements IItemRenderer { if(renderType == null) { GL11.glTranslated(0, -2, 0); } - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_stick_tex); - ResourceManager.grenades.renderPart("Stick"); + renderStickBody(stack); if(renderType != null) { + EnumGrenadeFilling filling = ItemGrenadeUniversal.getFilling(stack); + GL11.glColor3f(ColorUtil.fr(filling.bodyColor), ColorUtil.fg(filling.bodyColor), ColorUtil.fb(filling.bodyColor)); + bind(ResourceManager.grenade_stick_body_tex); ResourceManager.grenades.renderPart("StickCap"); + GL11.glColor3f(1F, 1F, 1F); } } @@ -154,9 +161,9 @@ public class ItemRenderGrenade implements IItemRenderer { GL11.glScaled(1.5, 1.5, 1.5); GL11.glTranslated(0, -1, 0); } - Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_tech_tex); - ResourceManager.grenades.renderPart("Tech"); + renderTechBody(stack); if(renderType != null) { + Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_tech_tex); ResourceManager.grenades.renderPart("TechRing"); } } @@ -210,6 +217,62 @@ public class ItemRenderGrenade implements IItemRenderer { GL11.glDisable(GL11.GL_BLEND); } + public static void renderStickBody(ItemStack stack) { + + EnumGrenadeFilling filling = ItemGrenadeUniversal.getFilling(stack); + EnumGrenadeFuze fuze = ItemGrenadeUniversal.getFuze(stack); + + bind(ResourceManager.grenade_stick_tex); + ResourceManager.grenades.renderPart("Stick"); + + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + GL11.glColor3f(ColorUtil.fr(filling.bodyColor), ColorUtil.fg(filling.bodyColor), ColorUtil.fb(filling.bodyColor)); + bind(ResourceManager.grenade_stick_body_tex); + ResourceManager.grenades.renderPart("Stick"); + + GL11.glColor3f(ColorUtil.fr(filling.labelColor), ColorUtil.fg(filling.labelColor), ColorUtil.fb(filling.labelColor)); + bind(ResourceManager.grenade_stick_label_tex); + ResourceManager.grenades.renderPart("Stick"); + + GL11.glColor3f(ColorUtil.fr(fuze.bandColor), ColorUtil.fg(fuze.bandColor), ColorUtil.fb(fuze.bandColor)); + bind(ResourceManager.grenade_stick_fuze_tex); + ResourceManager.grenades.renderPart("Stick"); + + GL11.glColor3f(1F, 1F, 1F); + GL11.glDisable(GL11.GL_BLEND); + } + + public static void renderTechBody(ItemStack stack) { + + EnumGrenadeFilling filling = ItemGrenadeUniversal.getFilling(stack); + EnumGrenadeFuze fuze = ItemGrenadeUniversal.getFuze(stack); + + bind(ResourceManager.grenade_tech_tex); + ResourceManager.grenades.renderPart("Tech"); + + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + + GL11.glColor3f(ColorUtil.fr(filling.bodyColor), ColorUtil.fg(filling.bodyColor), ColorUtil.fb(filling.bodyColor)); + bind(ResourceManager.grenade_tech_body_tex); + ResourceManager.grenades.renderPart("Tech"); + + GL11.glColor3f(ColorUtil.fr(fuze.bandColor), ColorUtil.fg(fuze.bandColor), ColorUtil.fb(fuze.bandColor)); + bind(ResourceManager.grenade_tech_fuze_tex); + ResourceManager.grenades.renderPart("Tech"); + + RenderArcFurnace.fullbright(true); + GL11.glColor3f(ColorUtil.fr(filling.labelColor), ColorUtil.fg(filling.labelColor), ColorUtil.fb(filling.labelColor)); + bind(ResourceManager.grenade_tech_lights_tex); + ResourceManager.grenades.renderPart("Tech"); + RenderArcFurnace.fullbright(false); + + GL11.glColor3f(1F, 1F, 1F); + GL11.glDisable(GL11.GL_BLEND); + } + public static void bind(ResourceLocation res) { Minecraft.getMinecraft().getTextureManager().bindTexture(res); } diff --git a/src/main/java/com/hbm/util/DamageResistanceHandler.java b/src/main/java/com/hbm/util/DamageResistanceHandler.java index 0636050b0..e6b482f0d 100644 --- a/src/main/java/com/hbm/util/DamageResistanceHandler.java +++ b/src/main/java/com/hbm/util/DamageResistanceHandler.java @@ -409,6 +409,7 @@ public class DamageResistanceHandler { FIRE, EXPLOSIVE, ELECTRIC, + PLASMA, LASER, MICROWAVE, SUBATOMIC, @@ -457,6 +458,7 @@ public class DamageResistanceHandler { if(source.isFireDamage()) return CATEGORY_FIRE; if(source.isProjectile()) return CATEGORY_PHYSICAL; if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.LASER.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; + if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.PLASMA.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.MICROWAVE.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.SUBATOMIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) return CATEGORY_ENERGY; diff --git a/src/main/resources/assets/hbm/textures/models/grenades/stick.png b/src/main/resources/assets/hbm/textures/models/grenades/stick.png index 135bb1405..e81d3fc5e 100644 Binary files a/src/main/resources/assets/hbm/textures/models/grenades/stick.png and b/src/main/resources/assets/hbm/textures/models/grenades/stick.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/stick_body.png b/src/main/resources/assets/hbm/textures/models/grenades/stick_body.png new file mode 100644 index 000000000..c96defc4b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/stick_body.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/stick_fuze.png b/src/main/resources/assets/hbm/textures/models/grenades/stick_fuze.png new file mode 100644 index 000000000..d593fd7d2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/stick_fuze.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/stick_label.png b/src/main/resources/assets/hbm/textures/models/grenades/stick_label.png new file mode 100644 index 000000000..c90d268a1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/stick_label.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/tech.png b/src/main/resources/assets/hbm/textures/models/grenades/tech.png index 7e2ff932b..ad30a49a2 100644 Binary files a/src/main/resources/assets/hbm/textures/models/grenades/tech.png and b/src/main/resources/assets/hbm/textures/models/grenades/tech.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/tech_body.png b/src/main/resources/assets/hbm/textures/models/grenades/tech_body.png new file mode 100644 index 000000000..f837758e3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/tech_body.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/tech_fuze.png b/src/main/resources/assets/hbm/textures/models/grenades/tech_fuze.png new file mode 100644 index 000000000..fb20b9086 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/tech_fuze.png differ diff --git a/src/main/resources/assets/hbm/textures/models/grenades/tech_lights.png b/src/main/resources/assets/hbm/textures/models/grenades/tech_lights.png new file mode 100644 index 000000000..8383488f9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/grenades/tech_lights.png differ