diff --git a/changelog b/changelog index 05f81516f..c8f76cf55 100644 --- a/changelog +++ b/changelog @@ -4,6 +4,9 @@ * Totally different from the PWR, not similar in the slightest * Mark 3 nuclear bomb * New bobm +* ZOMG + * Cool gun + * Yes ## Changed * all secret weapons are now obtainable in creative, overstimulate yourselves all you want you little gremlins \ No newline at end of file diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1e00860b7..c6852310c 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1498,6 +1498,7 @@ public class ModItems { public static Item gun_aberrator_eott; public static Item gun_double_barrel; public static Item gun_double_barrel_sacred_dragon; + public static Item gun_zomg; public static Item ammo_standard; public static Item ammo_secret; @@ -6493,6 +6494,7 @@ public class ModItems { GameRegistry.registerItem(gun_aberrator_eott, gun_aberrator_eott.getUnlocalizedName()); GameRegistry.registerItem(gun_double_barrel, gun_double_barrel.getUnlocalizedName()); GameRegistry.registerItem(gun_double_barrel_sacred_dragon, gun_double_barrel_sacred_dragon.getUnlocalizedName()); + GameRegistry.registerItem(gun_zomg, gun_zomg.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index ffae70729..3df58c9d3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -46,6 +46,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry(ResourceManager.henry_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry_lincoln, new ItemRenderHenry(ResourceManager.henry_lincoln_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderGreaseZOMG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg, new ItemRenderMaresleg(ResourceManager.maresleg_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg_akimbo, new ItemRenderMareslegAkimbo()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg_broken, new ItemRenderMaresleg(ResourceManager.maresleg_broken_tex)); @@ -206,6 +207,7 @@ public class GunFactoryClient { folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); p35800.setRendererBeam(LegoClient.RENDER_CRACKLE); + zomg.setRenderer(LegoClient.RENDER_RAINBOW); setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots @@ -258,6 +260,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_aberrator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_double_barrel) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_double_barrel_sacred_dragon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_zomg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_light_revolver_dani) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index 01a06960c..27a902052 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -1,5 +1,7 @@ package com.hbm.items.weapon.sedna.factory; +import java.awt.Color; +import java.util.Random; import java.util.function.BiConsumer; import org.lwjgl.opengl.GL11; @@ -80,6 +82,15 @@ public class LegoClient { renderBulletStandard(Tessellator.instance, 0x7F006E, 0xFF7FED, length, true); }; + public static BiConsumer RENDER_RAINBOW = (bullet, interp) -> { + double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp; + if(length <= 0) return; + Random rand = new Random(bullet.getEntityId()); + Color light = new Color(rand.nextInt(2) * 255, rand.nextInt(2) * 255, rand.nextInt(2) * 255); + Color dark = new Color(light.getRed() / 2, light.getGreen() / 2, light.getBlue() / 2); + renderBulletStandard(Tessellator.instance, dark.getRGB(), light.getRGB(), length, true); + }; + public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, boolean fullbright) { renderBulletStandard(tess, dark, light, length, 0.03125D, 0.03125D * 0.25D, fullbright); } public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, double widthF, double widthB, boolean fullbright) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java index e8749552f..0ec92a772 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory9mm.java @@ -31,6 +31,7 @@ import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; public class XFactory9mm { @@ -38,6 +39,7 @@ public class XFactory9mm { public static BulletConfig p9_fmj; public static BulletConfig p9_jhp; public static BulletConfig p9_ap; + public static BulletConfig zomg; public static void init() { SpentCasing casing9 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1F, 1F, 0.75F); @@ -49,6 +51,15 @@ public class XFactory9mm { .setCasing(casing9.clone().register("p9jhp")); p9_ap = new BulletConfig().setItem(EnumAmmo.P9_AP).setCasing(EnumCasingType.SMALL_STEEL, 12).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setThresholdNegation(5F).setArmorPiercing(0.15F) .setCasing(casing9.clone().setColor(SpentCasing.COLOR_CASE_44).register("p9ap")); + + zomg = new BulletConfig().setItem(ModItems.nugget_euphemium).setVel(3F).setReloadCount(300).setThresholdNegation(100F) + .setCasing(casing9.clone().setColor(SpentCasing.COLOR_CASE_BRASS).register("zomg")).setOnImpact((bullet, mop) -> { + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + for(ForgeDirection dir : ForgeDirection.values()) + bullet.worldObj.func_147480_a(mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, false); + } + if(mop.entityHit != bullet.getThrower()) Lego.standardExplode(bullet, mop, 5F); + }); ModItems.gun_greasegun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) @@ -61,6 +72,17 @@ public class XFactory9mm { .anim(LAMBDA_GREASEGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_GREASEGUN) ).setNameMutator(LAMBDA_NAME_GREASEGUN) .setUnlocalizedName("gun_greasegun"); + ModItems.gun_zomg = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(3_000).draw(20).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(9_999F).delay(4).rounds(5).dry(40).auto(true).spread(0.05F).reload(60).jam(55).sound("hbm:weapon.fire.greaseGun", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 300).addConfigs(zomg)) + .offset(1, -0.0625 * 2.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_GREASEGUN)) + .setupStandardConfiguration() + .anim(LAMBDA_GREASEGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_GREASEGUN) + ).setNameMutator(LAMBDA_NAME_GREASEGUN) + .setUnlocalizedName("gun_zomg"); ModItems.gun_lag = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(1_700).draw(7).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 9bb287259..3c9e996ac 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -956,6 +956,7 @@ public class ResourceManager { public static final ResourceLocation henry_lincoln_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/henry_lincoln.png"); public static final ResourceLocation greasegun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/greasegun.png"); public static final ResourceLocation greasegun_clean_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/greasegun_clean.png"); + public static final ResourceLocation zomg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/zomg.png"); public static final ResourceLocation maresleg_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/maresleg.png"); public static final ResourceLocation maresleg_broken_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/maresleg_broken.png"); public static final ResourceLocation flaregun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flaregun.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreaseZOMG.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreaseZOMG.java new file mode 100644 index 000000000..f20c761d3 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderGreaseZOMG.java @@ -0,0 +1,153 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderGreaseZOMG extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1F * offset, 1.75F * offset, + 0, -2.625 / 8D, 1.125); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.zomg_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] stock = HbmAnimations.getRelevantTransformation("STOCK"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] flap = HbmAnimations.getRelevantTransformation("FLAP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] handle = HbmAnimations.getRelevantTransformation("HANDLE"); + double[] mag = HbmAnimations.getRelevantTransformation("MAG"); + double[] turn = HbmAnimations.getRelevantTransformation("TURN"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + if(gun.aimingProgress < 1F) GL11.glRotated(turn[2], 0, 0, 1); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.greasegun.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, -4 - stock[2]); + ResourceManager.greasegun.renderPart("Stock"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(mag[0], mag[1], mag[2]); + ResourceManager.greasegun.renderPart("Magazine"); + if(bullet[0] != 1) ResourceManager.greasegun.renderPart("Bullet"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, -1.4375, -0.125); + GL11.glRotated(handle[0], 1, 0, 0); + GL11.glTranslated(0, 1.4375, 0.125); + ResourceManager.greasegun.renderPart("Handle"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.53125, 0); + GL11.glRotated(flap[2], 0, 0, 1); + GL11.glTranslated(0, -0.5125, 0); + ResourceManager.greasegun.renderPart("Flap"); + GL11.glPopMatrix(); + + double smokeScale = 0.25; + + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0, 1.5); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(turn[2], 0, 0, -1); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 2, 0); + } + + @Override + public void setupModTable(ItemStack stack) { + double scale = -7.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + GL11.glTranslated(0, 2, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.zomg_tex); + ResourceManager.greasegun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ba2c1b94a..e2a70f6fa 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3089,6 +3089,7 @@ item.gun_tesla_cannon.name=Tesla Cannon item.gun_uzi.name=Uzi item.gun_uzi_richter.name=Richter item.gun_uzi_akimbo.name=Uzis +item.gun_zomg.name=ZOMG item.hand_drill.name=Hand Drill item.hand_drill_desh.name=Desh Hand Drill item.hazmat_boots.name=Hazmat Boots diff --git a/src/main/resources/assets/hbm/textures/models/weapons/zomg.png b/src/main/resources/assets/hbm/textures/models/weapons/zomg.png new file mode 100644 index 000000000..071e31099 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/zomg.png differ