From cebea2283824ef9d074a8a2c4182c5bc526ebce8 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Wed, 24 Oct 2018 22:06:29 +0200 Subject: [PATCH] calamity, meteor time adjustments --- assets/hbm/lang/de_DE.lang | 3 + assets/hbm/lang/en_US.lang | 3 + assets/hbm/sounds.json | 1 + assets/hbm/sounds/weapon/cal1.ogg | Bin 0 -> 21276 bytes assets/hbm/sounds/weapon/cal2.ogg | Bin 0 -> 21178 bytes assets/hbm/sounds/weapon/cal3.ogg | Bin 0 -> 24172 bytes assets/hbm/textures/items/gun_calamity.png | Bin 0 -> 281 bytes .../hbm/textures/items/gun_calamity_ammo.png | Bin 0 -> 185 bytes .../hbm/textures/items/gun_calamity_dual.png | Bin 0 -> 306 bytes assets/hbm/textures/models/ModelCalBarrel.png | Bin 0 -> 750 bytes .../hbm/textures/models/ModelCalDualStock.png | Bin 0 -> 668 bytes assets/hbm/textures/models/ModelCalStock.png | Bin 0 -> 606 bytes com/hbm/blocks/ModBlocks.java | 2 +- com/hbm/blocks/generic/BlockCrate.java | 3 + com/hbm/items/ModItems.java | 9 + com/hbm/items/weapon/GunCalamity.java | 128 +++++++++ com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/ClientProxy.java | 2 + com/hbm/main/CraftingManager.java | 3 + com/hbm/main/MainRegistry.java | 8 +- com/hbm/render/item/ItemRenderOverkill.java | 55 +++- com/hbm/render/model/ModelCalBarrel.java | 108 ++++++++ com/hbm/render/model/ModelCalDualStock.java | 243 ++++++++++++++++++ com/hbm/render/model/ModelCalStock.java | 175 +++++++++++++ .../render/tileentity/RendererObjTester.java | 30 ++- 25 files changed, 763 insertions(+), 12 deletions(-) create mode 100644 assets/hbm/sounds/weapon/cal1.ogg create mode 100644 assets/hbm/sounds/weapon/cal2.ogg create mode 100644 assets/hbm/sounds/weapon/cal3.ogg create mode 100644 assets/hbm/textures/items/gun_calamity.png create mode 100644 assets/hbm/textures/items/gun_calamity_ammo.png create mode 100644 assets/hbm/textures/items/gun_calamity_dual.png create mode 100644 assets/hbm/textures/models/ModelCalBarrel.png create mode 100644 assets/hbm/textures/models/ModelCalDualStock.png create mode 100644 assets/hbm/textures/models/ModelCalStock.png create mode 100644 com/hbm/items/weapon/GunCalamity.java create mode 100644 com/hbm/render/model/ModelCalBarrel.java create mode 100644 com/hbm/render/model/ModelCalDualStock.java create mode 100644 com/hbm/render/model/ModelCalStock.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index fb4a03d27..96f314f9b 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -1167,6 +1167,8 @@ item.gun_revolver_cursed.name=Verfluchte Pistole item.gun_revolver_nightmare.name=Nightmare-Revolver (Original) item.gun_revolver_nightmare2.name=Nightmare-Revolver (Dunkel) item.gun_revolver_pip.name=Lil' Pipsqueak +item.gun_calamity.name=Calamity +item.gun_calamity_dual.name=Sattelkanone item.gun_fatman.name=M42 Nukleares Katapult "Fat Man" item.gun_proto.name=M42 Nukleares Katapult "Proto MIRV" item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" @@ -1212,6 +1214,7 @@ item.gun_revolver_cursed_ammo.name=Stahlpatrone item.gun_revolver_nightmare_ammo.name=Nightmare-Kugel item.gun_revolver_nightmare2_ammo.name=Laserschrot item.gun_revolver_pip_ammo.name=Verdorbene Patrone +item.gun_calamity_ammo.name=.50 BMG Patrone item.gun_fatman_ammo.name=Miniatombombe item.gun_mirv_ammo.name=Achtfaches MIRV item.gun_bf_ammo.name=Mk.V kompaktes AMAT-Artilleriegeschoss - Typ B.F. diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 392925c41..0ba17a937 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -1167,6 +1167,8 @@ item.gun_revolver_cursed.name=Cursed Revolver item.gun_revolver_nightmare.name=Nightmare Revolver (Original) item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) item.gun_revolver_pip.name=Lil' Pipsqueak +item.gun_calamity.name=Calamity +item.gun_calamity_dual.name=Saddle Gun item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" @@ -1212,6 +1214,7 @@ item.gun_revolver_cursed_ammo.name=Steel Bullet item.gun_revolver_nightmare_ammo.name=Nightmare Bullet item.gun_revolver_nightmare2_ammo.name=Laser Buckshot item.gun_revolver_pip_ammo.name=Tainted Bullet +item.gun_calamity_ammo.name=.50 BMG Round item.gun_fatman_ammo.name=Mini Nuke item.gun_mirv_ammo.name=Eightfold MIRV item.gun_bf_ammo.name=Mk.V Compact AMAT-Artillery Shell - Type B.F. diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 5b7412318..f23eb5f3c 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -87,6 +87,7 @@ "weapon.uziShoot": {"category": "player", "sounds": [{"name": "weapon/uziShoot", "stream": false}]}, "weapon.silencerShoot": {"category": "player", "sounds": [{"name": "weapon/silencerShoot", "stream": false}]}, "weapon.gBounce": {"category": "player", "sounds": ["weapon/gBounce1", "weapon/gBounce2", "weapon/gBounce3"]}, + "weapon.calShoot": {"category": "player", "sounds": ["weapon/cal1", "weapon/cal2", "weapon/cal3"]}, "weapon.reloadTurret": {"category": "player", "sounds": [{"name": "weapon/reloadTurret", "stream": false}]}, "weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/cal1.ogg b/assets/hbm/sounds/weapon/cal1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..79a7c0792c47647f22692061238384be408347d6 GIT binary patch literal 21276 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�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 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/cal2.ogg b/assets/hbm/sounds/weapon/cal2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..934880aea5cc1dc96662be6eff8291eb02c11317 GIT binary patch literal 21178 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

yTr5xuJfm_!p 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/weapon/cal3.ogg b/assets/hbm/sounds/weapon/cal3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..817bec5d31ae7106799102f3d68649b53b670a55 GIT binary patch literal 24172 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

tX{h54(I?KoYoCx0-lxI5fb!va|236;E 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 F1O++(=4$`| literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_calamity.png b/assets/hbm/textures/items/gun_calamity.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ec308bcfaced78165a74bcccad32ffd049bf33 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfMnkR-`#X<`!F(H%i>L4LVy~KC$MB#p86mKTbfCg)G^Zg4mvlkCFr(CGcgl{0p>2rSs@=EZsM_p#4g znJ3O*bjapS_Ax$nA>HtpNFzgrl_b-Z33WZk1slGbf4}Fisru%3Uump;G7qCm&`*m# cwojAemM$xNuFA7>BG7LPp00i_>zopr0D)R<#Q*>R literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_calamity_ammo.png b/assets/hbm/textures/items/gun_calamity_ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..cc26b5bab534dab95ae7db159b7baec4d947f0ad GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfH3LgwOJP&#@0bPv^Jk$1BcA gVeaU4>tba1`cca8)RoI8fp#-^y85}Sb4q9e08g()6#xJL literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_calamity_dual.png b/assets/hbm/textures/items/gun_calamity_dual.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6d18f4204166156cbb1428a008723ed5e20cee GIT binary patch literal 306 zcmV-20nPr2P)dfwq7~p*OoD1+D)wXS_>pB4#V^Y_3>8ZBZLaM4lDTVi*d7c@^vA7Zgyz*iz zR!UKpB~P5}Iv8V;Qi>QOLI`4vOw)Af|=H@DUnAq19Xp=p|*7>@wCa_4njcaT5T7cT987)EJ;Q~&?~07*qoM6N<$ Eg5yAbZ2$lO literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/ModelCalBarrel.png b/assets/hbm/textures/models/ModelCalBarrel.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5903f49a57160d408abbc1f6d5d3db2c2d5dc5 GIT binary patch literal 750 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0$52zK~#8N?OVI9 z!Y~Zwhq^PfbYW&;VS$B(|A3_nzngm<$;h%o>-eTgs(X;4HYBl6j-5yI*zLsc`Fw_H zn!@}2j!%leUa$C0f!}2rde`Z)45xAVln$$2DND;S^JzOrAaJ^mw zz0c)MrBN9QTwcd>or0bk4E-n5Wf@MBPNkj9s#nU=a;1KqkDXcTogg2$n9^}F(0TjGD{0mx8fd~yOZW-g&*WOe}V1=s;R z@^bZ?^OMnKXf*^_F)VfcDd*I~m}NMSt=7|G=emE7JhMTO(Z>Lf(SLb<8}FCq18@kR z&5D+iMqq=RI>17H9Q)M3Cg2`v3Ro`Yd&5}3l~nFQ8hzf&!(zRO$b?bHl_ z1qQ$X7ytucpgIGs#^P3bs}tOlLOlcLxLy)YZ3>m%obh1E*%Z>7R&yIvJ=thgEZpk& z^NHfCDx4AC6P8vSRM%_S7^wxSCoHw<++0sjt*$35%?(ovfM?wOcHpDL!H^W5x%mj@ z04sTl^>D}<%fgm338nR}L?gt40WbgtzyKHk17KiV3}6ztEql4qrdIyGEeEGAiIkp= zd-33)h|>jf2(PstpsQlppTK%R1qVP6;3Rnq#rP<+#(F-V<8>x_o=&IFa|?9>#ta7d z4x27Q#=qTeA17dE$PkUJJu@Khu>I}>2MYAxe!mZg!yy`;9e~qiuh4VdfX%>wyw1c1 zrvHXvh)y7l&FL5l48(3E%MTnxmbc^RnMVKs002ovPDHLkV1fVu03UQkSaeNqWMyms gRApmmZe=e+VQgV-X>@rnLt$(}VRCY1Y{3^HpJC8VIsgCw literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/ModelCalDualStock.png b/assets/hbm/textures/models/ModelCalDualStock.png new file mode 100644 index 0000000000000000000000000000000000000000..c24d880639a4209058720d5c37bb121b77bc91ff GIT binary patch literal 668 zcmV;N0%QG&P)sYO9jod~DGhxN#n=0}bJ;1tg&WXVi0BRjlyfJv zl1NAiU6ZEiRTNNiKFczrwT3*;8wIA6GFP^W|d{;t)&8O3eceGuA#);;Kq>atCR0-7U2PptiGISa-6+2 zL{SuW_kD+lkgRch3`%H&@a;0HAxV_N!A zHQ}MZgQ&YNbCnSa1cRNBb~{ND_!;2)pAUfnUGl*J zp*FXgGQkwU;BGZAF1>XDD*3UEZ21(OE1 zPO2h~y*mf(y$jH^Gtlu{sUe+z6m3G=n!vFS&G`k!B7R&8*AeId0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0m(^3K~!i%?U_+- z!ypWXbEG}yC7P5Q%^{*TUFc2bWL?skb4A>t(hHhQQKGQUr5{3If z^~d~eet*6Up0eHcJ`96F>HFTGg!FyeQ1HvLL>EAF^>sNx_SBcRQ_u*UAOM6G2n9cm z<39un9#5^`uD!(SO8`+0Gvj0crGj?NTLb{4m}3iQ+rhWR&Zyy(0vdoC;2Hw*ih0c} z6^|MVfb1&{C)_pHZ)=R;0&^PxA%SuTnteF>$}BY{NOxnmOl9F7-Dv>W|JH0W_pP7} zUiB;Ple7`*YvYb%--5OOp#T5? literal 0 HcmV?d00001 diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java index 027cd4106..da584f667 100644 --- a/com/hbm/blocks/ModBlocks.java +++ b/com/hbm/blocks/ModBlocks.java @@ -882,7 +882,7 @@ public class ModBlocks { vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); - barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.weaponTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire"); + barbed_wire = new BarbedWire(Material.iron).setBlockName("barbed_wire").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":barbed_wire"); marker_structure = new BlockMarker(Material.iron).setBlockName("marker_structure").setHardness(0.0F).setResistance(0.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":marker_structure"); diff --git a/com/hbm/blocks/generic/BlockCrate.java b/com/hbm/blocks/generic/BlockCrate.java index 59067a3ba..2c98a533d 100644 --- a/com/hbm/blocks/generic/BlockCrate.java +++ b/com/hbm/blocks/generic/BlockCrate.java @@ -110,6 +110,8 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_nightmare, 5); BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_nightmare2, 4); BlockCrate.addToListWithWeight(weaponList, ModItems.gun_revolver_pip, 3); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_calamity, 3); + BlockCrate.addToListWithWeight(weaponList, ModItems.gun_calamity_dual, 2); BlockCrate.addToListWithWeight(weaponList, ModItems.gun_rpg, 8); BlockCrate.addToListWithWeight(weaponList, ModItems.gun_stinger, 7); BlockCrate.addToListWithWeight(weaponList, ModItems.gun_fatman, 5); @@ -215,6 +217,7 @@ public class BlockCrate extends BlockFalling { BlockCrate.addToListWithWeight(redList, ModItems.mysteryshovel, 1); BlockCrate.addToListWithWeight(redList, ModItems.gun_revolver_pip, 1); BlockCrate.addToListWithWeight(redList, ModItems.clip_revolver_pip, 1); + BlockCrate.addToListWithWeight(redList, ModItems.gun_calamity_dual, 1); BlockCrate.addToListWithWeight(redList, ModItems.gun_b92, 1); BlockCrate.addToListWithWeight(redList, ModItems.weaponized_starblaster_cell, 1); BlockCrate.addToListWithWeight(redList, ModItems.battery_spark, 1); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index c6117c7d5..2538bf194 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -742,6 +742,9 @@ public class ModItems { public static Item gun_revolver_nightmare2_ammo; public static Item gun_revolver_pip; public static Item gun_revolver_pip_ammo; + public static Item gun_calamity; + public static Item gun_calamity_dual; + public static Item gun_calamity_ammo; public static Item gun_fatman; public static Item gun_proto; public static Item gun_fatman_ammo; @@ -2029,6 +2032,9 @@ public class ModItems { gun_revolver_nightmare2 = new GunNightmare().setMaxDamage(6).setUnlocalizedName("gun_revolver_nightmare2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_nightmare2"); gun_revolver_pip_ammo = new ItemCustomLore().setUnlocalizedName("gun_revolver_pip_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip_ammo"); gun_revolver_pip = new GunRevolver(gun_revolver_pip_ammo, 25, 35, false, false).setMaxDamage(1000).setUnlocalizedName("gun_revolver_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_pip"); + gun_calamity_ammo = new ItemCustomLore().setUnlocalizedName("gun_calamity_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity_ammo"); + gun_calamity = new GunCalamity().setUnlocalizedName("gun_calamity").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity"); + gun_calamity_dual = new GunCalamity().setUnlocalizedName("gun_calamity_dual").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_calamity_dual"); gun_fatman_ammo = new Item().setUnlocalizedName("gun_fatman_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman_ammo"); gun_fatman = new GunFatman().setMaxDamage(2500).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); gun_proto = new GunProtoMirv().setMaxDamage(2500).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman"); @@ -3478,6 +3484,8 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_nightmare, gun_revolver_nightmare.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_nightmare2, gun_revolver_nightmare2.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_pip, gun_revolver_pip.getUnlocalizedName()); + GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); + GameRegistry.registerItem(gun_calamity_dual, gun_calamity_dual.getUnlocalizedName()); GameRegistry.registerItem(gun_b92, gun_b92.getUnlocalizedName()); GameRegistry.registerItem(gun_b93, gun_b93.getUnlocalizedName()); GameRegistry.registerItem(gun_rpg, gun_rpg.getUnlocalizedName()); @@ -3529,6 +3537,7 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_nightmare_ammo, gun_revolver_nightmare_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_nightmare2_ammo, gun_revolver_nightmare2_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_revolver_pip_ammo, gun_revolver_pip_ammo.getUnlocalizedName()); + GameRegistry.registerItem(gun_calamity_ammo, gun_calamity_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_rpg_ammo, gun_rpg_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_stinger_ammo, gun_stinger_ammo.getUnlocalizedName()); diff --git a/com/hbm/items/weapon/GunCalamity.java b/com/hbm/items/weapon/GunCalamity.java new file mode 100644 index 000000000..4cda557aa --- /dev/null +++ b/com/hbm/items/weapon/GunCalamity.java @@ -0,0 +1,128 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.items.ModItems; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunCalamity extends Item { + + Random rand = new Random(); + + public GunCalamity() + { + this.maxStackSize = 1; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) { + return EnumAction.bow; + } + + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + { + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } + + return p_77659_1_; + } + + @Override + public void onUsingTick(ItemStack stack, EntityPlayer player, int count) + { + World world = player.worldObj; + + boolean flag = player.capabilities.isCreativeMode + || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; + + if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_calamity_ammo)) && count % 6 == 0) { + EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 15, 25, false, false); + entityarrow.setDamage(15 + rand.nextInt(25)); + + world.playSoundAtEntity(player, "hbm:weapon.calShoot", 1.0F, 1.0F); + + if (flag) { + entityarrow.canBePickedUp = 2; + } else { + player.inventory.consumeInventoryItem(ModItems.gun_mp40_ammo); + } + + if (!world.isRemote) { + world.spawnEntityInWorld(entityarrow); + } + } + + if (this == ModItems.gun_calamity_dual && (player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_calamity_ammo)) && count % 6 == 3) { + EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 15, 25, false, false); + entityarrow.setDamage(15 + rand.nextInt(25)); + + world.playSoundAtEntity(player, "hbm:weapon.calShoot", 1.0F, 0.7F); + + if (flag) { + entityarrow.canBePickedUp = 2; + } else { + player.inventory.consumeInventoryItem(ModItems.gun_mp40_ammo); + } + + if (!world.isRemote) { + world.spawnEntityInWorld(entityarrow); + } + } + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + if(this == ModItems.gun_calamity) { + list.add("Handheld Maxim"); + } + if(this == ModItems.gun_calamity_dual) { + list.add("You may be thinking, 'This gun makes no"); + list.add("sense, why is there only one receiver for"); + list.add("two barrels, and how do the bullets even"); + list.add("come out of this thing? The barrels are"); + list.add("just taped onto a plate with no connection"); + list.add("to the rest of the gun!' Well my boy, this"); + list.add("question has a simple, easy to understand"); + list.add("answer, it's because " + EnumChatFormatting.OBFUSCATED + "gkjin soi unsi"); + list.add("and " + EnumChatFormatting.OBFUSCATED + "aslfnu isnfi uo fnafaoin fsj afakjkk abk"); + } + list.add(""); + list.add("Ammo: .50 BMG Round"); + list.add("Damage: 15 - 25"); + } + + @Override + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); + return multimap; + } +} diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index b661c3a64..6652631a7 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (2922)"; + public static final String VERSION = "1.0.27 BETA (2936)"; //HBM's Beta Naming Convention: //V T (X-Y-Z) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index fb9ae0523..8d5390011 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -237,6 +237,8 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_silencer, new ItemRenderUZI()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite, new ItemRenderUZI()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity, new ItemRenderOverkill()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_calamity_dual, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index 8c31c55a3..9d4ad0b5e 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -1309,6 +1309,9 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.syringe_taint), new Object[] { ModItems.bottle2_empty, ModItems.syringe_metal_empty, ModItems.ducttape, ModItems.powder_magic, "nuggetSchrabidium", Items.potionitem })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.loops), new Object[] { ModItems.flame_pony, Items.wheat, Items.sugar }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.loop_stew), new Object[] { ModItems.loops, ModItems.can_smart, Items.bowl }); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_calamity, 1), new Object[] { " PI", "BBM", " PI", 'P', "plateIron", 'B', ModItems.pipes_steel, 'M', ModItems.mechanism_rifle_1, 'I', "ingotSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_calamity_dual, 1), new Object[] { "BBM", " PI", "BBM", 'P', "plateIron", 'B', ModItems.pipes_steel, 'M', ModItems.mechanism_rifle_1, 'I', "ingotSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.gun_calamity_ammo, 8), new Object[] { "S", "C", "G", 'S', "plateSteel", 'C', "plateCopper", 'G', Items.gunpowder })); GameRegistry.addShapelessRecipe(new ItemStack(Items.paper, 1), new Object[] { new ItemStack(ModItems.assembly_template, 1, OreDictionary.WILDCARD_VALUE) }); GameRegistry.addShapelessRecipe(new ItemStack(Items.paper, 1), new Object[] { new ItemStack(ModItems.chemistry_template, 1, OreDictionary.WILDCARD_VALUE) }); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index d9ec24aa0..311f25088 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -522,8 +522,8 @@ public class MainRegistry public static int broadcaster = 5000; public static int minefreq = 64; public static int radfreq = 5000; - public static int meteorStrikeChance = 20 * 60 * 90; - public static int meteorShowerChance = 20 * 60 * 3; + public static int meteorStrikeChance = 20 * 60 * 180; + public static int meteorShowerChance = 20 * 60 * 5; public static int meteorShowerDuration = 6000; public static int limitExplosionLifespan = 0; public static int radarRange = 1000; @@ -1676,10 +1676,10 @@ public class MainRegistry propRad.comment = "Spawn radiation hotspot on every nTH chunk"; radfreq = propRad.getInt(); - Property propMeteorStrikeChance = config.get(Configuration.CATEGORY_GENERAL, "5.00_meteorStrikeChance", 50000); + Property propMeteorStrikeChance = config.get(Configuration.CATEGORY_GENERAL, "5.00_meteorStrikeChance", 20 * 60 * 180); propMeteorStrikeChance.comment = "The probability of a meteor spawning (an average of once every nTH ticks)"; meteorStrikeChance = propMeteorStrikeChance.getInt(); - Property propMeteorShowerChance = config.get(Configuration.CATEGORY_GENERAL, "5.01_meteorShowerChance", 500); + Property propMeteorShowerChance = config.get(Configuration.CATEGORY_GENERAL, "5.01_meteorShowerChance", 20 * 60 * 5); propMeteorShowerChance.comment = "The probability of a meteor spawning during meteor shower (an average of once every nTH ticks)"; meteorShowerChance = propMeteorShowerChance.getInt(); Property propMeteorShowerDuration = config.get(Configuration.CATEGORY_GENERAL, "5.02_meteorShowerDuration", 6000); diff --git a/com/hbm/render/item/ItemRenderOverkill.java b/com/hbm/render/item/ItemRenderOverkill.java index 27d8b341c..0cc9b2a73 100644 --- a/com/hbm/render/item/ItemRenderOverkill.java +++ b/com/hbm/render/item/ItemRenderOverkill.java @@ -5,6 +5,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.render.model.ModelCalBarrel; +import com.hbm.render.model.ModelCalDualStock; +import com.hbm.render.model.ModelCalStock; import com.hbm.render.model.ModelDash; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; @@ -31,6 +34,10 @@ public class ItemRenderOverkill implements IItemRenderer { protected ModelDash dasher; protected ModelTwiGun rgottp; protected ModelPip pip; + + protected ModelCalBarrel barrel; + protected ModelCalStock stock; + protected ModelCalDualStock saddle; public ItemRenderOverkill() { powerJack = new ModelJack(); @@ -41,6 +48,9 @@ public class ItemRenderOverkill implements IItemRenderer { dasher = new ModelDash(); rgottp = new ModelTwiGun(); pip = new ModelPip(); + barrel = new ModelCalBarrel(); + stock = new ModelCalStock(); + saddle = new ModelCalDualStock(); } @Override @@ -114,6 +124,24 @@ public class ItemRenderOverkill implements IItemRenderer { rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_revolver_pip) pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + + if(item.getItem() == ModItems.gun_calamity) { + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalBarrel.png")); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalStock.png")); + stock.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + } + if(item.getItem() == ModItems.gun_calamity_dual) { + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalDualStock.png")); + saddle.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalBarrel.png")); + GL11.glTranslated(1D/16D * -2, 0, 0); + GL11.glTranslated(0, 0, 0.35); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + GL11.glTranslated(0, 0, -0.7); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + } + GL11.glPopMatrix(); break; case EQUIPPED: @@ -153,11 +181,19 @@ public class ItemRenderOverkill implements IItemRenderer { GL11.glTranslatef(0.5F, 0.2F, 0); if(item.getItem() == ModItems.gun_defabricator) GL11.glTranslatef(0.5F, 0.6F, -0.2F); - + if(item.getItem() == ModItems.gun_revolver_pip) { GL11.glScalef(0.60F, 0.60F, 0.60F); GL11.glTranslatef(0.7F, 0.3F, 0.0F); } + if(item.getItem() == ModItems.gun_calamity) { + GL11.glScalef(0.75F, 0.75F, 0.75F); + GL11.glTranslatef(0.5F, 0.0F, 0.0F); + } + if(item.getItem() == ModItems.gun_calamity_dual) { + GL11.glScalef(0.75F, 0.75F, 0.75F); + GL11.glTranslatef(0.5F, 0.0F, 0.0F); + } if(item.getItem() == ModItems.gun_jack) powerJack.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); @@ -175,6 +211,23 @@ public class ItemRenderOverkill implements IItemRenderer { rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_revolver_pip) pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + + if(item.getItem() == ModItems.gun_calamity) { + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalBarrel.png")); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalStock.png")); + stock.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + } + if(item.getItem() == ModItems.gun_calamity_dual) { + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalDualStock.png")); + saddle.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelCalBarrel.png")); + GL11.glTranslated(1D/16D * -2, 0, 0); + GL11.glTranslated(0, 0, 0.35); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + GL11.glTranslated(0, 0, -0.7); + barrel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); + } GL11.glPopMatrix(); default: break; } diff --git a/com/hbm/render/model/ModelCalBarrel.java b/com/hbm/render/model/ModelCalBarrel.java new file mode 100644 index 000000000..81bf3b31e --- /dev/null +++ b/com/hbm/render/model/ModelCalBarrel.java @@ -0,0 +1,108 @@ +// Date: 24.10.2018 09:56:30 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCalBarrel extends ModelBase { + // fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelCalBarrel() { + textureWidth = 128; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(0F, 0F, 0F, 30, 6, 3); + Shape1.setRotationPoint(-30F, 0F, -1.5F); + Shape1.setTextureSize(128, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 19); + Shape2.addBox(0F, 0F, 0F, 30, 3, 6); + Shape2.setRotationPoint(-30F, 1.5F, -3F); + Shape2.setTextureSize(128, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 9); + Shape3.addBox(0F, 0F, 0F, 30, 5, 5); + Shape3.setRotationPoint(-30F, 0.5F, -2.5F); + Shape3.setTextureSize(128, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 28); + Shape4.addBox(0F, 0F, 0F, 1, 2, 2); + Shape4.setRotationPoint(-30.5F, 0.5F, -1F); + Shape4.setTextureSize(128, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 6, 28); + Shape5.addBox(0F, 0F, 0F, 3, 2, 2); + Shape5.setRotationPoint(-33F, 3.5F, -1F); + Shape5.setTextureSize(128, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 66, 0); + Shape6.addBox(0F, 0F, 0F, 4, 2, 4); + Shape6.setRotationPoint(-20F, -1F, -2F); + Shape6.setTextureSize(128, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 82, 0); + Shape7.addBox(0F, -1F, -4F, 4, 1, 4); + Shape7.setRotationPoint(-20F, -1F, 2F); + Shape7.setTextureSize(128, 32); + Shape7.mirror = true; + setRotation(Shape7, -0.3490659F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + } + + public void renderAll(float f5) { + GL11.glPushMatrix(); + GL11.glTranslated(0, 1D/16D * 1, 0); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + GL11.glPopMatrix(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/model/ModelCalDualStock.java b/com/hbm/render/model/ModelCalDualStock.java new file mode 100644 index 000000000..a9b94fdfd --- /dev/null +++ b/com/hbm/render/model/ModelCalDualStock.java @@ -0,0 +1,243 @@ +// Date: 24.10.2018 10:31:22 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCalDualStock extends ModelBase { + // fields + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + ModelRenderer Shape13; + ModelRenderer Shape14; + ModelRenderer Shape15; + ModelRenderer Shape16; + ModelRenderer Shape17; + ModelRenderer Shape18; + ModelRenderer Shape19; + ModelRenderer Shape20; + ModelRenderer Shape21; + ModelRenderer Shape22; + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelCalDualStock() { + textureWidth = 64; + textureHeight = 32; + + Shape8 = new ModelRenderer(this, 0, 0); + Shape8.addBox(0F, 0F, 0F, 15, 6, 3); + Shape8.setRotationPoint(0F, 1F, -1.5F); + Shape8.setTextureSize(64, 32); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 0, 9); + Shape9.addBox(0F, 0F, 0F, 6, 1, 2); + Shape9.setRotationPoint(7F, 7F, -1F); + Shape9.setTextureSize(64, 32); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + Shape10 = new ModelRenderer(this, 0, 12); + Shape10.addBox(0F, 0F, 0F, 2, 5, 2); + Shape10.setRotationPoint(10F, 8F, -1F); + Shape10.setTextureSize(64, 32); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, -0.2617994F); + Shape11 = new ModelRenderer(this, 0, 26); + Shape11.addBox(0F, 0F, 0F, 3, 4, 2); + Shape11.setRotationPoint(19F, 3F, -1F); + Shape11.setTextureSize(64, 32); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0F, 0F); + Shape12 = new ModelRenderer(this, 0, 22); + Shape12.addBox(-4F, 0F, 0F, 4, 2, 2); + Shape12.setRotationPoint(19F, 3F, -1F); + Shape12.setTextureSize(64, 32); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0F, -0.1115358F); + Shape13 = new ModelRenderer(this, 10, 28); + Shape13.addBox(-5F, -2F, 0F, 5, 2, 2); + Shape13.setRotationPoint(19F, 7F, -1F); + Shape13.setTextureSize(64, 32); + Shape13.mirror = true; + setRotation(Shape13, 0F, 0F, 0.2617994F); + Shape14 = new ModelRenderer(this, 12, 23); + Shape14.addBox(0F, 0F, 0F, 1, 3, 2); + Shape14.setRotationPoint(22F, 3F, -1F); + Shape14.setTextureSize(64, 32); + Shape14.mirror = true; + setRotation(Shape14, 0F, 0F, 0.3490659F); + Shape15 = new ModelRenderer(this, 42, 0); + Shape15.addBox(0F, 0F, 0F, 3, 5, 8); + Shape15.setRotationPoint(3F, 4F, -9.5F); + Shape15.setTextureSize(64, 32); + Shape15.mirror = true; + setRotation(Shape15, 0F, 0F, 0F); + Shape16 = new ModelRenderer(this, 36, 0); + Shape16.addBox(0F, 0F, 0F, 2, 1, 1); + Shape16.setRotationPoint(3.5F, 3.5F, -4F); + Shape16.setTextureSize(64, 32); + Shape16.mirror = true; + setRotation(Shape16, 0F, 0F, 0F); + Shape17 = new ModelRenderer(this, 36, 0); + Shape17.addBox(0F, 0F, 0F, 2, 1, 1); + Shape17.setRotationPoint(3.5F, 2.7F, -3.5F); + Shape17.setTextureSize(64, 32); + Shape17.mirror = true; + setRotation(Shape17, 0F, 0F, 0F); + Shape18 = new ModelRenderer(this, 36, 0); + Shape18.addBox(0F, 0F, 0F, 2, 1, 1); + Shape18.setRotationPoint(3.5F, 2.2F, -2.8F); + Shape18.setTextureSize(64, 32); + Shape18.mirror = true; + setRotation(Shape18, 0F, 0F, 0F); + Shape19 = new ModelRenderer(this, 36, 0); + Shape19.addBox(0F, 0F, 0F, 2, 1, 1); + Shape19.setRotationPoint(3.5F, 1.8F, -2F); + Shape19.setTextureSize(64, 32); + Shape19.mirror = true; + setRotation(Shape19, 0F, 0F, 0F); + Shape20 = new ModelRenderer(this, 16, 9); + Shape20.addBox(0F, 0F, 0F, 6, 1, 4); + Shape20.setRotationPoint(7F, 4F, -2F); + Shape20.setTextureSize(64, 32); + Shape20.mirror = true; + setRotation(Shape20, 0F, 0F, 0F); + Shape21 = new ModelRenderer(this, 8, 12); + Shape21.addBox(0F, 0F, 0F, 2, 1, 1); + Shape21.setRotationPoint(11F, 0F, 0F); + Shape21.setTextureSize(64, 32); + Shape21.mirror = true; + setRotation(Shape21, 0F, 0F, 0F); + Shape22 = new ModelRenderer(this, 8, 14); + Shape22.addBox(0F, 0F, 0F, 2, 1, 2); + Shape22.setRotationPoint(11F, -1F, 0F); + Shape22.setTextureSize(64, 32); + Shape22.mirror = true; + setRotation(Shape22, -0.3490659F, 0F, 0F); + Shape1 = new ModelRenderer(this, 42, 0); + Shape1.addBox(0F, 0F, 0F, 3, 5, 8); + Shape1.setRotationPoint(3F, 4F, 1.5F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 36, 0); + Shape2.addBox(0F, 0F, 0F, 2, 1, 1); + Shape2.setRotationPoint(3.5F, 3.5F, 3F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 36, 0); + Shape3.addBox(0F, 0F, 0F, 2, 1, 1); + Shape3.setRotationPoint(3.5F, 2.7F, 2.5F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 36, 0); + Shape4.addBox(0F, 0F, 0F, 2, 1, 1); + Shape4.setRotationPoint(3.5F, 2.2F, 1.8F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 36, 0); + Shape5.addBox(0F, 0F, 0F, 2, 1, 1); + Shape5.setRotationPoint(3.5F, 1.8F, 1F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 18, 17); + Shape6.addBox(0F, 0F, 0F, 1, 5, 6); + Shape6.setRotationPoint(-1F, 1F, -3F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 32, 13); + Shape7.addBox(0F, 0F, 0F, 1, 4, 15); + Shape7.setRotationPoint(-2F, 2F, -7.5F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + } + + public void renderAll(float f5) { + GL11.glPushMatrix(); + GL11.glTranslated(1D/16D * 2, 0, 0); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + GL11.glPopMatrix(); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/model/ModelCalStock.java b/com/hbm/render/model/ModelCalStock.java new file mode 100644 index 000000000..f6902b24c --- /dev/null +++ b/com/hbm/render/model/ModelCalStock.java @@ -0,0 +1,175 @@ +// Date: 24.10.2018 10:23:38 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelCalStock extends ModelBase { + // fields + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + ModelRenderer Shape13; + ModelRenderer Shape14; + ModelRenderer Shape15; + ModelRenderer Shape16; + ModelRenderer Shape17; + ModelRenderer Shape18; + ModelRenderer Shape19; + ModelRenderer Shape20; + ModelRenderer Shape21; + ModelRenderer Shape22; + + public ModelCalStock() { + textureWidth = 64; + textureHeight = 32; + + Shape8 = new ModelRenderer(this, 0, 0); + Shape8.addBox(0F, 0F, 0F, 15, 6, 3); + Shape8.setRotationPoint(0F, 1F, -1.5F); + Shape8.setTextureSize(64, 32); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 0, 9); + Shape9.addBox(0F, 0F, 0F, 6, 1, 2); + Shape9.setRotationPoint(7F, 7F, -1F); + Shape9.setTextureSize(64, 32); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + Shape10 = new ModelRenderer(this, 0, 12); + Shape10.addBox(0F, 0F, 0F, 2, 5, 2); + Shape10.setRotationPoint(10F, 8F, -1F); + Shape10.setTextureSize(64, 32); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, -0.2617994F); + Shape11 = new ModelRenderer(this, 0, 26); + Shape11.addBox(0F, 0F, 0F, 3, 4, 2); + Shape11.setRotationPoint(19F, 3F, -1F); + Shape11.setTextureSize(64, 32); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0F, 0F); + Shape12 = new ModelRenderer(this, 0, 22); + Shape12.addBox(-4F, 0F, 0F, 4, 2, 2); + Shape12.setRotationPoint(19F, 3F, -1F); + Shape12.setTextureSize(64, 32); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0F, -0.1115358F); + Shape13 = new ModelRenderer(this, 10, 28); + Shape13.addBox(-5F, -2F, 0F, 5, 2, 2); + Shape13.setRotationPoint(19F, 7F, -1F); + Shape13.setTextureSize(64, 32); + Shape13.mirror = true; + setRotation(Shape13, 0F, 0F, 0.2617994F); + Shape14 = new ModelRenderer(this, 12, 23); + Shape14.addBox(0F, 0F, 0F, 1, 3, 2); + Shape14.setRotationPoint(22F, 3F, -1F); + Shape14.setTextureSize(64, 32); + Shape14.mirror = true; + setRotation(Shape14, 0F, 0F, 0.3490659F); + Shape15 = new ModelRenderer(this, 42, 0); + Shape15.addBox(0F, 0F, 0F, 3, 5, 8); + Shape15.setRotationPoint(3F, 4F, -9.5F); + Shape15.setTextureSize(64, 32); + Shape15.mirror = true; + setRotation(Shape15, 0F, 0F, 0F); + Shape16 = new ModelRenderer(this, 36, 0); + Shape16.addBox(0F, 0F, 0F, 2, 1, 1); + Shape16.setRotationPoint(3.5F, 3.5F, -4F); + Shape16.setTextureSize(64, 32); + Shape16.mirror = true; + setRotation(Shape16, 0F, 0F, 0F); + Shape17 = new ModelRenderer(this, 36, 0); + Shape17.addBox(0F, 0F, 0F, 2, 1, 1); + Shape17.setRotationPoint(3.5F, 2.7F, -3.5F); + Shape17.setTextureSize(64, 32); + Shape17.mirror = true; + setRotation(Shape17, 0F, 0F, 0F); + Shape18 = new ModelRenderer(this, 36, 0); + Shape18.addBox(0F, 0F, 0F, 2, 1, 1); + Shape18.setRotationPoint(3.5F, 2.2F, -2.8F); + Shape18.setTextureSize(64, 32); + Shape18.mirror = true; + setRotation(Shape18, 0F, 0F, 0F); + Shape19 = new ModelRenderer(this, 36, 0); + Shape19.addBox(0F, 0F, 0F, 2, 1, 1); + Shape19.setRotationPoint(3.5F, 1.8F, -2F); + Shape19.setTextureSize(64, 32); + Shape19.mirror = true; + setRotation(Shape19, 0F, 0F, 0F); + Shape20 = new ModelRenderer(this, 16, 9); + Shape20.addBox(0F, 0F, 0F, 6, 1, 4); + Shape20.setRotationPoint(7F, 4F, -2F); + Shape20.setTextureSize(64, 32); + Shape20.mirror = true; + setRotation(Shape20, 0F, 0F, 0F); + Shape21 = new ModelRenderer(this, 8, 12); + Shape21.addBox(0F, 0F, 0F, 2, 1, 1); + Shape21.setRotationPoint(11F, 0F, 0F); + Shape21.setTextureSize(64, 32); + Shape21.mirror = true; + setRotation(Shape21, 0F, 0F, 0F); + Shape22 = new ModelRenderer(this, 8, 14); + Shape22.addBox(0F, 0F, 0F, 2, 1, 2); + Shape22.setRotationPoint(11F, -1F, 0F); + Shape22.setTextureSize(64, 32); + Shape22.mirror = true; + setRotation(Shape22, -0.3490659F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + } + + public void renderAll(float f5) { + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + Shape20.render(f5); + Shape21.render(f5); + Shape22.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/tileentity/RendererObjTester.java b/com/hbm/render/tileentity/RendererObjTester.java index 5b1055275..ca682d118 100644 --- a/com/hbm/render/tileentity/RendererObjTester.java +++ b/com/hbm/render/tileentity/RendererObjTester.java @@ -6,6 +6,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; +import com.hbm.render.model.ModelCalBarrel; +import com.hbm.render.model.ModelCalDualStock; +import com.hbm.render.model.ModelCalStock; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -32,8 +35,8 @@ public class RendererObjTester extends TileEntitySpecialRenderer { public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - //GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslated(x + 0.5D, y + 1, z + 0.5D); + GL11.glRotatef(180, 0F, 0F, 1F); /*switch(tileEntity.getBlockMetadata()) { case 5: @@ -48,9 +51,10 @@ public class RendererObjTester extends TileEntitySpecialRenderer { /*bindTexture(objTesterTexture); objTesterModel.renderAll();*/ - - GL11.glEnable(GL11.GL_LIGHTING); + //GL11.glScaled(5, 5, 5); + + /*GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_CULL_FACE); bindTexture(ResourceManager.sat_foeq_burning_tex); ResourceManager.sat_foeq_burning.renderAll(); @@ -88,7 +92,23 @@ public class RendererObjTester extends TileEntitySpecialRenderer { } GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_TEXTURE_2D);*/ + + ModelCalBarrel barrel = new ModelCalBarrel(); + ModelCalStock stock = new ModelCalStock(); + ModelCalDualStock saddle = new ModelCalDualStock(); + + bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/ModelCalDualStock.png")); + saddle.renderAll(1F/16F); + + bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/ModelCalBarrel.png")); + GL11.glTranslated(0, 0, -0.25); + barrel.renderAll(1F/16F); + GL11.glTranslated(0, 0, 0.5); + barrel.renderAll(1F/16F); + + bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/ModelCalStock.png")); + //stock.renderAll(1F/16F); GL11.glPopMatrix(); }