diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java index 873694184..84a46915d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRotaryFurnace.java @@ -60,7 +60,7 @@ public class GUIMachineRotaryFurnace extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int p = (int) (furnace.progress * 33); + int p = (int) Math.ceil(furnace.progress * 33); drawTexturedModalRect(guiLeft + 63, guiTop + 30, 176, 0, p, 10); if(furnace.maxBurnTime > 0) { diff --git a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java index 713474b35..87464341a 100644 --- a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java @@ -16,10 +16,13 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; import com.hbm.items.machine.ItemScraps; @@ -31,10 +34,16 @@ public class RotaryFurnaceRecipes extends SerializableRecipe { @Override public void registerDefaults() { + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(COAL.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 100, 100, new OreDictStack(IRON.ingot()), new OreDictStack(ANY_COKE.gem()))); - recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(1)), 200, 100, - new OreDictStack(IRON.ingot()), new OreDictStack(ANY_COKE.gem()) - )); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(2)), 100, 100, new OreDictStack(IRON.fragment(), 9), new OreDictStack(COAL.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(3)), 100, 100, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_STEEL, INGOT.q(4)), 200, 100, new OreDictStack(IRON.fragment(), 9), new OreDictStack(ANY_COKE.gem()), new ComparableStack(ModItems.powder_flux))); + + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_GUNMETAL, INGOT.q(4)), 200, 100, new OreDictStack(CU.ingot(), 3), new OreDictStack(AL.ingot(), 1))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_WEAPONSTEEL, INGOT.q(1)), 200, 400, new FluidStack(Fluids.GAS_COKER, 100), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.powder_flux, 2))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index f30ea49fc..9b13f5a59 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1618,8 +1618,9 @@ public class ModItems { public static Item gun_debug; public static Item ammo_debug; - + public static Item gun_pepperbox; + public static Item gun_atlas; public static Item ammo_standard; @@ -7021,6 +7022,7 @@ public class ModItems { GameRegistry.registerItem(ammo_debug, ammo_debug.getUnlocalizedName()); GameRegistry.registerItem(gun_pepperbox, gun_pepperbox.getUnlocalizedName()); + GameRegistry.registerItem(gun_atlas, gun_atlas.getUnlocalizedName()); GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName()); //Ammo diff --git a/src/main/java/com/hbm/items/machine/ItemMold.java b/src/main/java/com/hbm/items/machine/ItemMold.java index 81b8fb0b8..b6467c310 100644 --- a/src/main/java/com/hbm/items/machine/ItemMold.java +++ b/src/main/java/com/hbm/items/machine/ItemMold.java @@ -80,6 +80,14 @@ public class ItemMold extends Item { registerMold(new MoldSingle( 16, S, "c9", new ItemStack(ModItems.casing_9), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); registerMold(new MoldSingle( 17, S, "c50", new ItemStack(ModItems.casing_50), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); registerMold(new MoldSingle( 18, S, "cbuckshot", new ItemStack(ModItems.casing_buckshot), Mats.MAT_COPPER, MaterialShapes.PLATE.q(1))); + + registerMold(new MoldShape( 22, S, "barrel_light", MaterialShapes.LIGHTBARREL)); + registerMold(new MoldShape( 23, S, "barrel_heavy", MaterialShapes.HEAVYBARREL)); + registerMold(new MoldShape( 24, S, "receiver_light", MaterialShapes.LIGHTRECEIVER)); + registerMold(new MoldShape( 25, S, "receiver_heavy", MaterialShapes.HEAVYRECEIVER)); + registerMold(new MoldShape( 26, S, "mechanism", MaterialShapes.MECHANISM)); + registerMold(new MoldShape( 27, S, "stock", MaterialShapes.STOCK)); + registerMold(new MoldShape( 28, S, "grip", MaterialShapes.GRIP)); } public void registerMold(Mold mold) { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index dcc1aa49a..34ba52b61 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -47,6 +47,7 @@ public class GunFactory { ).setUnlocalizedName("gun_debug").setTextureName(RefStrings.MODID + ":gun_darter"); XFactoryBlackPowder.init(); + XFactory357.init(); /// PROXY BULLSHIT /// MainRegistry.proxy.registerGunCfg(); @@ -57,5 +58,10 @@ public class GunFactory { STONE_AP, STONE_IRON, STONE_SHOT, + M357_SP, + M357_FMJ, + M357_JHP, + M357_AP, + M357_EXPRESS, } } 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 a4b66a0c8..19efdc760 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 @@ -9,6 +9,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.items.ModItems; import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.render.item.weapon.sedna.ItemRenderAtlas; import com.hbm.render.item.weapon.sedna.ItemRenderDebug; import com.hbm.render.item.weapon.sedna.ItemRenderPepperbox; @@ -21,12 +22,14 @@ public class GunFactoryClient { //GUNS MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_atlas, new ItemRenderAtlas()); //PROJECTILES ammo_debug.setRenderer(RENDER_STANDARD_BULLET); ammo_debug_buckshot.setRenderer(RENDER_STANDARD_BULLET); //HUDS ((ItemGunBaseNT) ModItems.gun_debug).config_DNA.hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox).config_DNA.hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_atlas).config_DNA.hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); } public static BiConsumer RENDER_STANDARD_BULLET = (bullet, interp) -> { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index c2b889575..93548ffed 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -38,7 +38,7 @@ public class Orchestras { if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F); } if(type == AnimType.CYCLE_DRY) { - if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F); if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F); } if(type == AnimType.INSPECT) { @@ -71,4 +71,31 @@ public class Orchestras { if(timer == 45) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 0.6F); } }; + + public static BiConsumer ORCHESTRA_ATLAS = (stack, ctx) -> { + EntityPlayer player = ctx.player; + AnimType type = ItemGunBaseNT.getLastAnim(stack); + int timer = ItemGunBaseNT.getAnimTimer(stack); + + if(type == AnimType.RELOAD) { + if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 36) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallInsert", 1F, 1F); + if(timer == 44) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.CYCLE) { + if(timer == 14) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.CYCLE_DRY) { + if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F); + if(timer == 14) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 0.9F); + } + if(type == AnimType.INSPECT) { + if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 24) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + if(type == AnimType.JAMMED) { + if(timer == 12) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallRemove", 1F, 1F); + if(timer == 34) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java new file mode 100644 index 000000000..6bf4e95f2 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory357.java @@ -0,0 +1,79 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiFunction; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.Crosshair; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import com.hbm.items.weapon.sedna.mags.MagazineFullReload; +import com.hbm.lib.RefStrings; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe.IType; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.item.ItemStack; + +public class XFactory357 { + + public static BulletConfig m357_sp; + public static BulletConfig m357_fmj; + public static BulletConfig m357_jhp; + public static BulletConfig m357_ap; + public static BulletConfig m357_express; + + public static void init() { + m357_sp = new BulletConfig().setItem(EnumAmmo.M357_SP); + m357_fmj = new BulletConfig().setItem(EnumAmmo.M357_FMJ).setDamage(0.8F).setArmorPiercing(0.1F); + m357_jhp = new BulletConfig().setItem(EnumAmmo.M357_JHP).setDamage(1.5F).setArmorPiercing(-0.25F); + m357_ap = new BulletConfig().setItem(EnumAmmo.M357_AP).setDoesPenetrate(true).setDamageFalloutByPen(false); + m357_express = new BulletConfig().setItem(EnumAmmo.M357_EXPRESS).setDoesPenetrate(true).setDamage(1.5F).setWear(1.5F); + + ModItems.gun_atlas = new ItemGunBaseNT(new GunConfig() + .dura(300).draw(4).inspect(23).jam(45).crosshair(Crosshair.CIRCLE).smoke(true).orchestra(Orchestras.ORCHESTRA_ATLAS) + .rec(new Receiver(0) + .dmg(10F).delay(16).reload(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 6).addConfigs(m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express)) + .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL)) + .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(LAMBDA_ATLAS_ANIMS) + ).setUnlocalizedName("gun_atlas").setTextureName(RefStrings.MODID + ":gun_darter"); + } + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_ATLAS_ANIMS = (stack, type) -> { + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, -3, 350, IType.SIN_DOWN)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 550).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 1, 200)); + case CYCLE_DRY: return new BusAnimation() + .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 550).addPos(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(0, 0, 1, 200)); + case RELOAD: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 2000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 2000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(60, 0, 0, 500).addPos(60, 0, 0, 500).addPos(0, -90, -90, 0).addPos(0, -90, -90, 600).addPos(0, 0, 0, 300).addPos(0, 0, 0, 100).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, -15, 0, 1000).addPos(0, 0, 0, 450)) + .addBus("DRUM_PUSH", new BusAnimationSequence().addPos(0, 0, 0, 1600).addPos(0, 0, -5, 0).addPos(0, 0, 0, 300)); + case INSPECT: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 90, 300).addPos(0, 0, 90, 1000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 1000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(45, 0, 0, 500, IType.SIN_FULL).addPos(45, 0, 0, 500).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, -2.5, 0, 500, IType.SIN_FULL).addPos(0, -2.5, 0, 500).addPos(0, 0, 0, 350)); + case JAMMED: return new BusAnimation() + .addBus("LATCH", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 90, 300).addPos(0, 0, 90, 1000).addPos(0, 0, 0, 150)) + .addBus("FRONT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 200).addPos(0, 0, 45, 150).addPos(0, 0, 45, 1000).addPos(0, 0, 0, 75)) + .addBus("RELOAD_ROT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 300).addPos(45, 0, 0, 500, IType.SIN_FULL).addPos(45, 0, 0, 500).addPos(-45, 0, 0, 50).addPos(-45, 0, 0, 100).addPos(0, 0, 0, 300)) + .addBus("RELOAD_MOVE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 300).addPos(0, -2.5, 0, 500, IType.SIN_FULL).addPos(0, -2.5, 0, 500).addPos(0, 0, 0, 350)); + } + + return null; + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java index 1c4668282..691982117 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryBlackPowder.java @@ -28,7 +28,7 @@ public class XFactoryBlackPowder { BulletConfig shot = new BulletConfig().setItem(EnumAmmo.STONE_SHOT).setSpread(0.1F).setRicochetAngle(45).setProjectiles(6, 6).setDamage(0.5F); ModItems.gun_pepperbox = new ItemGunBaseNT(new GunConfig() - .dura(300).draw(4).inspect(23).crosshair(Crosshair.CIRCLE).smoke(true).orchestra(Orchestras.ORCHESTRA_PEPPERBOX) + .dura(300).draw(4).inspect(23).jam(58).crosshair(Crosshair.CIRCLE).smoke(true).orchestra(Orchestras.ORCHESTRA_PEPPERBOX) .rec(new Receiver(0) .dmg(5F).delay(27).reload(67).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F) .mag(new MagazineFullReload(0, 6).addConfigs(stone, flint, iron, shot)) diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java new file mode 100644 index 000000000..4036dd54b --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -0,0 +1,123 @@ +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 ItemRenderAtlas extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + protected void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -0.75F * offset, 1F * offset, + 0, -3.125 / 8D, 0.25); + } + + @Override + public void renderFirstPerson(ItemStack stack) { + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + + GL11.glShadeModel(GL11.GL_SMOOTH); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] reloadMove = HbmAnimations.getRelevantTransformation("RELOAD_MOVE"); + double[] reloadRot = HbmAnimations.getRelevantTransformation("RELOAD_ROT"); + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 1, 0, 0); + + GL11.glTranslated(0, 0, -7); + GL11.glRotated(equip[0], -1, 0, 0); + GL11.glTranslated(0, 0, 7); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(90, 0, 1, 0); + this.renderSmokeNodes(gun.smokeNodes, 0.5D); + GL11.glPopMatrix(); + + GL11.glTranslated(reloadMove[0], reloadMove[1], reloadMove[2]); + + GL11.glRotated(reloadRot[0], 1, 0, 0); + GL11.glRotated(reloadRot[2], 0, 0, 1); + GL11.glRotated(reloadRot[1], 0, 1, 0); + ResourceManager.bio_revolver.renderPart("Grip"); + + GL11.glPushMatrix(); /// FRONT PUSH /// + GL11.glRotated(HbmAnimations.getRelevantTransformation("FRONT")[2], 1, 0, 0); + ResourceManager.bio_revolver.renderPart("Barrel"); + GL11.glPushMatrix(); /// LATCH PUSH /// + GL11.glTranslated(0, 2.3125, -0.875); + GL11.glRotated(HbmAnimations.getRelevantTransformation("LATCH")[2], 1, 0, 0); + GL11.glTranslated(0, -2.3125, 0.875); + ResourceManager.bio_revolver.renderPart("Latch"); + GL11.glPopMatrix(); /// LATCH POP /// + + GL11.glPushMatrix(); /// DRUM PUSH /// + GL11.glTranslated(0, 1, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * 60, 0, 0, 1); + GL11.glTranslated(0, -1, 0); + GL11.glTranslated(0, 0, HbmAnimations.getRelevantTransformation("DRUM_PUSH")[2]); + ResourceManager.bio_revolver.renderPart("Drum"); + GL11.glPopMatrix(); /// DRUM POP /// + + GL11.glPopMatrix(); /// FRONT POP /// + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(0, 0, -4.5); + GL11.glRotated(-45 + 45 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 1, 0, 0); + GL11.glTranslated(0, 0, 4.5); + ResourceManager.bio_revolver.renderPart("Hammer"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 9.25); + GL11.glRotated(90, 0, 1, 0); + this.renderGapFlash(gun.lastShot); + GL11.glPopMatrix(); + } + + @Override + protected void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + GL11.glTranslated(0, 1, 3); + + } + + @Override + protected void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 1.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.bio_revolver_tex); + ResourceManager.bio_revolver.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java b/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java index d7ff261ae..e326c7445 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRotaryFurnace.java @@ -6,6 +6,7 @@ import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.main.ResourceManager; import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineRotaryFurnace; import com.hbm.util.BobMathUtil; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -34,7 +35,11 @@ public class RenderRotaryFurnace extends TileEntitySpecialRenderer implements II bindTexture(ResourceManager.rotary_furnace_tex); ResourceManager.rotary_furnace.renderPart("Furnace"); GL11.glPushMatrix(); - GL11.glTranslated(0, BobMathUtil.sps((tile.getWorldObj().getTotalWorldTime() + f) * 0.125) * 0.5 - 0.5, 0); + + TileEntityMachineRotaryFurnace furnace = (TileEntityMachineRotaryFurnace) tile; + float anim = furnace.lastAnim + (furnace.anim - furnace.lastAnim) * f; + + GL11.glTranslated(0, BobMathUtil.sps((anim * 0.75) * 0.125) * 0.5 - 0.5, 0); ResourceManager.rotary_furnace.renderPart("Piston"); GL11.glPopMatrix(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index 2ae2a54e2..771badfe1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -48,6 +48,9 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i public boolean isVenting; public MaterialStack output; public static final int maxOutput = MaterialShapes.BLOCK.q(16); + + public int anim; + public int lastAnim; public TileEntityMachineRotaryFurnace() { super(5, 50); @@ -103,6 +106,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } RotaryFurnaceRecipe recipe = RotaryFurnaceRecipes.getRecipe(slots[0], slots[1], slots[2]); + this.isProgressing = false; if(recipe != null) { @@ -116,6 +120,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.progress += 1F / recipe.duration; tanks[1].setFill(tanks[1].getFill() - recipe.steam); tanks[2].setFill(tanks[2].getFill() + recipe.steam / 100); + this.isProgressing = true; if(this.progress >= 1F) { this.progress -= 1F; @@ -165,6 +170,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i fx.setDouble("posZ", zCoord + 0.5 + rot.offsetZ); MainRegistry.proxy.effectNT(fx); } + this.lastAnim = this.anim; + if(this.isProgressing) { + this.anim++; + } } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 0df5c046d..c797ec3f7 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -373,6 +373,7 @@ container.machineMixer=Industrieller Mixer container.machineOreSlopper=B.E.M. container.machinePyroOven=Pyrolyseofen container.machineRefinery=Ölraffinerie +container.machineRotaryFurnace=Rotationshochofen container.machineSelenium=Hochleistungs-Sternmotor container.machineShredder=Brecher container.machineSILEX=SILEX @@ -1145,6 +1146,11 @@ item.ammo_shell.name=240mm Geschoss item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE-Geschoss +item.ammo_standard.m357_ap.name=.357 Magnumkugel (Panzerbrechend) +item.ammo_standard.m357_express.name=.357 Magnumkugel (VMG Express) +item.ammo_standard.m357_fmj.name=.357 Magnumkugel (Vollmantelgeschoss) +item.ammo_standard.m357_jhp.name=.357 Magnumkugel (Hohlspitz) +item.ammo_standard.m357_sp.name=.357 Magnumkugel (Teilmantelgeschoss) item.ammo_standard.stone.name=Kugel und Pulver item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver @@ -4367,6 +4373,7 @@ tile.machine_reactor_on.name=Brutreaktor tile.machine_reactor_small.name=Atomreaktor tile.machine_refinery.name=Ölraffinerie tile.machine_reix_mainframe.name=Rei-X Hauptrechner (WIP) +tile.machine_rotary_furnace.name=Rotationshochofen tile.machine_rtg_blue.name=Konvektionsgenerator tile.machine_rtg_cyan.name=Schrabidium-Zerfallsenergie-Generator (WIP) tile.machine_rtg_furnace_off.name=RTG-Ofen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 8c8d24faf..8eb87dca8 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -775,6 +775,7 @@ container.machineMixer=Industrial Mixer container.machineOreSlopper=B.O.P. container.machinePyroOven=Pyrolysis Oven container.machineRefinery=Oil Refinery +container.machineRotaryFurnace=Rotary Furnace container.machineSelenium=Radial Performance Engine container.machineShredder=Shredder container.machineSILEX=SILEX @@ -1868,6 +1869,11 @@ item.ammo_shell_apfsds_du.name=240mm APFSDS-DU item.ammo_shell_apfsds_t.name=240mm APFSDS-T item.ammo_shell_explosive.name=240mm HE Shell item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) +item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) +item.ammo_standard.m357_fmj.name=.357 Magnum Round (Full Metal Jacket) +item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) item.ammo_standard.stone.name=Ball and Powder item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder @@ -5465,6 +5471,7 @@ tile.machine_reactor.name=Breeding Reactor tile.machine_reactor_small.name=Research Reactor tile.machine_refinery.name=Oil Refinery tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) +tile.machine_rotary_furnace.name=Rotary Furnace tile.machine_rtg_blue.name=Convection Generator tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) tile.machine_rtg_furnace_off.name=RTG Furnace diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png new file mode 100644 index 000000000..a9dbde5aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_ap.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png new file mode 100644 index 000000000..cad8fbc2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_express.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png new file mode 100644 index 000000000..7025adb2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_fmj.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png new file mode 100644 index 000000000..6f13cbeb7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_jhp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png new file mode 100644 index 000000000..0aecdede2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_standard.m357_sp.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png b/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png new file mode 100644 index 000000000..62f61b3c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_barrel_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png b/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png new file mode 100644 index 000000000..0e3bbe8e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_barrel_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_grip.png b/src/main/resources/assets/hbm/textures/items/mold_grip.png new file mode 100644 index 000000000..e59e52749 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_grip.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_mechanism.png b/src/main/resources/assets/hbm/textures/items/mold_mechanism.png new file mode 100644 index 000000000..041996d88 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_mechanism.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png b/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png new file mode 100644 index 000000000..4036ee57b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_receiver_heavy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png b/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png new file mode 100644 index 000000000..98d550222 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_receiver_light.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_steel_base.png b/src/main/resources/assets/hbm/textures/items/mold_steel_base.png new file mode 100644 index 000000000..fd2c59e1b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_steel_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/mold_stock.png b/src/main/resources/assets/hbm/textures/items/mold_stock.png new file mode 100644 index 000000000..f8e24f415 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/mold_stock.png differ