From ae431a3a9bf1a81f4661a4c3749d8b86f1e443a9 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 6 Jan 2025 18:19:56 +0100 Subject: [PATCH] can a special weapon have a b-side? --- changelog | 10 +- src/main/java/api/hbm/fluid/PipeNet.java | 3 - .../java/com/hbm/crafting/WeaponRecipes.java | 5 +- .../hbm/entity/mob/glyphid/EntityGlyphid.java | 1 + .../com/hbm/handler/EntityEffectHandler.java | 3 - .../ChunkRadiationHandlerSimple.java | 3 - src/main/java/com/hbm/items/ModItems.java | 4 +- .../sedna/factory/GunFactoryClient.java | 184 +++++++++--------- .../weapon/sedna/factory/XFactory10ga.java | 10 + .../java/com/hbm/main/CraftingManager.java | 4 - .../java/com/hbm/main/ModEventHandler.java | 3 - .../java/com/hbm/main/NetworkHandler.java | 3 - .../java/com/hbm/main/ResourceManager.java | 3 +- .../java/com/hbm/packet/PacketDispatcher.java | 3 - .../com/hbm/particle/ParticlePlasmaBlast.java | 1 + .../weapon/sedna/ItemRenderDoubleBarrel.java | 43 +++- .../TileEntityMachineAssemblerBase.java | 1 - .../machine/pile/TileEntityPileFuel.java | 1 - .../java/com/hbm/util/CompatExternal.java | 6 - src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../{sacred_dragon.png => double_barrel.png} | Bin .../weapons/double_barrel_sacred_dragon.png | Bin 0 -> 11772 bytes 23 files changed, 157 insertions(+), 136 deletions(-) rename src/main/resources/assets/hbm/textures/models/weapons/{sacred_dragon.png => double_barrel.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png diff --git a/changelog b/changelog index d0f049ef9..01f21f200 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +## The performance update +* my boy gammawave basically did the entire thing +* packet sending should be more performant now, which affects most machines +* RBMKs are now *much* more performant with their simulation and packets + ## Added * 10 gauge slug * Shredder @@ -5,6 +10,7 @@ * Fires 12 gauge, accelerated by plasma, which bursts on impact * Fragments move slowly and have damaging ricochet effects * Fragments keep the effects of the original shell (e.g. explosive shell will spawn a single explosive fragment) +* Other gun stuff ## Changed * Black powder bullets now have 75% base damage instead of 50% @@ -24,4 +30,6 @@ * Fixed rotary furnace not always properly showing the metal pouring effect * Fixed T45 model not lifting its arms when a new gun is held * Like previously, due to the archaic nature of the model, the rotations are not very precise, and will most likely break when holding an akimbo gun -* Potentially fixed an issue where cargo planes do not successfully spawn on lower render distances \ No newline at end of file +* Potentially fixed an issue where cargo planes do not successfully spawn on lower render distances +* Fixed glyphids not calling their `onDeath` function properly, causing them to not drop anything and preventing the appropriate forge events from firing +* Fixed GL state leak caused by plasma blast particles, causing other particles (especially bones) to render weird \ No newline at end of file diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index f459ee32d..d8a219497 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -1,12 +1,9 @@ package api.hbm.fluid; import java.math.BigInteger; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.HashSet; import java.util.List; -import java.util.TimeZone; import com.hbm.inventory.fluid.FluidType; diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 669a39f54..49777c12d 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -74,7 +74,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun_shredder, 1), new Object[] { " M ", "MSM", " M ", 'M', BIGMT.mechanism(), 'A', ModItems.gun_autoshotgun }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun_shredder, 1), new Object[] { " M ", "MAM", " M ", 'M', BIGMT.mechanism(), 'A', ModItems.gun_autoshotgun }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh }); @@ -84,7 +84,8 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "PPP", "BSR", "G M", 'P', BIGMT.plate(), 'B', BIGMT.heavyBarrel(), 'S', BIGMT.shell(), 'R', BIGMT.heavyReceiver(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "LC ", "BRS", "MG ", 'L', ModItems.crystal_redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() }); - + CraftingManager.addShapelessAuto(new ItemStack(ModItems.gun_double_barrel_sacred_dragon, 1), new Object[] { ModItems.gun_double_barrel, DictFrame.fromOne(ModItems.item_secret, EnumSecretType.SELENIUM_STEEL) }); + //SEDNA Ammo CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_AP, 6), new Object[] { "C", "P", "G", 'C', Items.flint, 'P', Items.paper, 'G', Items.gunpowder }); diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java index e335f0614..00162795a 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java @@ -321,6 +321,7 @@ public class EntityGlyphid extends EntityMob implements IResistanceProvider { @Override public void onDeath(DamageSource source) { + super.onDeath(source); if(doesInfectedSpawnMaggots() && this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE) == TYPE_INFECTED) { diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index e32fb95ab..19536eace 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -37,9 +37,6 @@ import com.hbm.util.ContaminationUtil.HazardType; import com.hbm.world.biome.BiomeGenCraterBase; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.PooledByteBufAllocator; -import io.netty.buffer.Unpooled; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index b63c54b56..d77c6b34b 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -6,10 +6,7 @@ import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; import com.hbm.config.RadiationConfig; import com.hbm.main.MainRegistry; -import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.AuxParticlePacketNT; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d9ae3f60a..8e563aee3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -64,8 +64,6 @@ import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; -import java.util.function.BiFunction; - public class ModItems { public static void mainRegistry() @@ -1521,6 +1519,7 @@ public class ModItems { public static Item gun_bolter; public static Item gun_folly; public static Item gun_double_barrel; + public static Item gun_double_barrel_sacred_dragon; public static Item ammo_standard; public static Item ammo_secret; @@ -6546,6 +6545,7 @@ public class ModItems { GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); GameRegistry.registerItem(gun_folly, gun_folly.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(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 fddf948c1..600dfbd19 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 @@ -36,53 +36,54 @@ public class GunFactoryClient { public static void init() { //GUNS - MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas(ResourceManager.bio_revolver_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_atlas, new ItemRenderAtlas(ResourceManager.bio_revolver_atlas_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_dani, new ItemRenderDANI()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); - 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)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flaregun, new ItemRenderFlaregun()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_lilmac, new ItemRenderHeavyRevolver(ResourceManager.lilmac_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_protege, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_protege_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_carbine, new ItemRenderCarbine()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_stg77, new ItemRenderSTG77()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_tau, new ItemRenderTau()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_fatman, new ItemRenderFatMan()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_lasrifle, new ItemRenderLasrifle()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel, new ItemRenderDoubleBarrel()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver, new ItemRenderAtlas(ResourceManager.bio_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_atlas, new ItemRenderAtlas(ResourceManager.bio_revolver_atlas_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_light_revolver_dani, new ItemRenderDANI()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun()); + 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)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flaregun, new ItemRenderFlaregun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_lilmac, new ItemRenderHeavyRevolver(ResourceManager.lilmac_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver_protege, new ItemRenderHeavyRevolver(ResourceManager.heavy_revolver_protege_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_carbine, new ItemRenderCarbine()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_am180, new ItemRenderAm180()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_liberator, new ItemRenderLiberator()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer(ResourceManager.flamethrower_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_topaz, new ItemRenderFlamer(ResourceManager.flamethrower_topaz_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer_daybreaker, new ItemRenderFlamer(ResourceManager.flamethrower_daybreaker_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_akimbo, new ItemRenderUziAkimbo()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun, new ItemRenderShredder(ResourceManager.shredder_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_shredder, new ItemRenderShredder(ResourceManager.shredder_orig_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_autoshotgun_sexy, new ItemRenderShredder(ResourceManager.sexy_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderQuadro()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun, new ItemRenderMinigun(ResourceManager.minigun_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_minigun_lacunae, new ItemRenderMinigun(ResourceManager.minigun_lacunae_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_missile_launcher, new ItemRenderMissileLauncher()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_tesla_cannon, new ItemRenderTeslaCannon()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_stg77, new ItemRenderSTG77()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_tau, new ItemRenderTau()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_fatman, new ItemRenderFatMan()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_lasrifle, new ItemRenderLasrifle()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_tex)); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_double_barrel_sacred_dragon, new ItemRenderDoubleBarrel(ResourceManager.double_barrel_sacred_dragon_tex)); //PROJECTILES ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); @@ -192,50 +193,51 @@ public class GunFactoryClient { setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots //HUDS - ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_henry) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_greasegun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_maresleg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_maresleg_broken) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_flaregun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_heavy_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_heavy_revolver_lilmac) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_heavy_revolver_protege) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_carbine) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_am180) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); - ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); - ((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); - ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_g3) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_stinger) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_m2) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_autoshotgun_sexy) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_minigun_lacunae) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_missile_launcher) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_tesla_cannon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_stg77) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_tau) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_fatman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_lasrifle) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); - ((ItemGunBaseNT) ModItems.gun_folly) .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_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_henry) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_greasegun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_maresleg) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_maresleg_broken) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_flaregun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver_lilmac) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_heavy_revolver_protege) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_carbine) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_am180) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_liberator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_topaz) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_flamer_daybreaker) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER); + ((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_g3) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_stinger) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_m2) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun_shredder) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_autoshotgun_sexy) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_quadro) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_minigun_lacunae) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_missile_launcher) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_tesla_cannon) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_stg77) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_tau) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_fatman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_lasrifle) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_folly) .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_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/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java index 08fa1c34a..9df3a3a63 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -46,6 +46,16 @@ public class XFactory10ga { .setupStandardConfiguration() .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) ).setUnlocalizedName("gun_double_barrel"); + ModItems.gun_double_barrel_sacred_dragon = new ItemGunBaseNT(WeaponQuality.B_SIDE, new GunConfig() + .dura(6000).draw(10).inspect(39).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) + .rec(new Receiver(0) + .dmg(45F).rounds(2).delay(10).reload(41).reloadOnEmpty(true).sound("hbm:weapon.fire.shotgun", 1.0F, 0.9F) + .mag(new MagazineFullReload(0, 2).addConfigs(g10, g10_shrapnel, g10_du, g10_slug)) + .offset(0.75, -0.0625, -0.1875) + .setupStandardFire().recoil(LAMBDA_RECOIL_DOUBLE_BARREL)) + .setupStandardConfiguration() + .anim(LAMBDA_DOUBLE_BARREL_ANIMS).orchestra(Orchestras.ORCHESTRA_DOUBLE_BARREL) + ).setUnlocalizedName("gun_double_barrel_sacred_dragon"); } public static BiConsumer LAMBDA_RECOIL_DOUBLE_BARREL = (stack, ctx) -> { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index c5eb93ed5..e18be7120 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -23,7 +23,6 @@ import com.hbm.items.ItemEnums.EnumLegendaryType; import com.hbm.items.ItemEnums.EnumPages; import com.hbm.items.ItemEnums.EnumPlantType; import com.hbm.items.ItemGenericPart.EnumPartType; -import com.hbm.items.ModItems; import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.machine.ItemArcElectrode.EnumElectrodeType; import com.hbm.items.machine.ItemBattery; @@ -33,7 +32,6 @@ import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.items.tool.ItemDrone.EnumDroneType; import com.hbm.items.tool.ItemGuideBook.BookType; -import com.hbm.util.EnchantmentUtil; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; @@ -50,8 +48,6 @@ import net.minecraftforge.oredict.ShapelessOreRecipe; import java.util.ArrayList; import java.util.List; -import static com.hbm.inventory.OreDictManager.*; - public class CraftingManager { public static void mainRegistry() { diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 878da2f7b..9debc9d25 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -29,8 +29,6 @@ import com.hbm.handler.neutron.NeutronNodeWorld; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.threading.PacketThreading; -import com.hbm.hazard.HazardSystem; -import com.hbm.interfaces.IBomb; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.*; @@ -65,7 +63,6 @@ import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import cpw.mods.fml.relauncher.ReflectionHelper; import io.netty.buffer.ByteBuf; import io.netty.buffer.PooledByteBufAllocator; -import io.netty.buffer.Unpooled; import net.minecraft.block.Block; import net.minecraft.command.CommandGameRule; import net.minecraft.command.ICommand; diff --git a/src/main/java/com/hbm/main/NetworkHandler.java b/src/main/java/com/hbm/main/NetworkHandler.java index e7dad9ced..06ff25dc1 100644 --- a/src/main/java/com/hbm/main/NetworkHandler.java +++ b/src/main/java/com/hbm/main/NetworkHandler.java @@ -21,9 +21,6 @@ import io.netty.handler.codec.CodecException; import io.netty.handler.codec.MessageToMessageCodec; import net.minecraft.entity.player.EntityPlayerMP; -import javax.management.MXBean; -import java.lang.management.ManagementFactory; -import java.lang.management.ThreadInfo; import java.lang.ref.WeakReference; import java.util.EnumMap; import java.util.List; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 61d0f6441..4efabb02f 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1016,7 +1016,8 @@ public class ResourceManager { public static final ResourceLocation lasrifle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lasrifle.png"); public static final ResourceLocation hangman_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hangman.png"); public static final ResourceLocation folly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/moonlight.png"); - public static final ResourceLocation double_barrel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sacred_dragon.png"); + public static final ResourceLocation double_barrel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel.png"); + public static final ResourceLocation double_barrel_sacred_dragon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel_sacred_dragon.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 7509d411d..b749cfdd3 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -5,9 +5,6 @@ import com.hbm.main.NetworkHandler; import com.hbm.packet.toclient.*; import com.hbm.packet.toserver.*; -import cpw.mods.fml.common.network.FMLEventChannel; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; public class PacketDispatcher { diff --git a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java index 7031aafa5..8f449ef14 100644 --- a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java +++ b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java @@ -87,6 +87,7 @@ public class ParticlePlasmaBlast extends EntityFX { GL11.glPolygonOffset(0.0F, 0.0F); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDepthMask(true); OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java index c83cfb1a6..5647da9ae 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDoubleBarrel.java @@ -2,14 +2,22 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; 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; +import net.minecraft.util.ResourceLocation; public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { + + protected ResourceLocation texture; + + public ItemRenderDoubleBarrel(ResourceLocation texture) { + this.texture = texture; + } @Override protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } @@ -34,7 +42,7 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { public void renderFirstPerson(ItemStack stack) { ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.double_barrel_tex); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); double scale = 0.375D; GL11.glScaled(scale, scale, scale); @@ -75,7 +83,7 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { GL11.glTranslated(0, 0.4375, 0.875); ResourceManager.double_barrel.renderPart("BarrelShort"); - ResourceManager.double_barrel.renderPart("Barrel"); + if(!isSawedOff(stack)) ResourceManager.double_barrel.renderPart("Barrel"); GL11.glPushMatrix(); GL11.glTranslated(0.75, 0, -0.6875); @@ -126,11 +134,19 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { @Override public void setupInv(ItemStack stack) { super.setupInv(stack); - double scale = 1.375D; - GL11.glScaled(scale, scale, scale); - GL11.glRotated(25, 1, 0, 0); - GL11.glRotated(45, 0, 1, 0); - GL11.glTranslated(0, 0.5, 0); + if(isSawedOff(stack)) { + double scale = 2D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-2, 0.5, 0); + } else { + double scale = 1.375D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(0, 0.5, 0); + } } @Override @@ -138,8 +154,17 @@ public class ItemRenderDoubleBarrel extends ItemRenderWeaponBase { GL11.glEnable(GL11.GL_LIGHTING); GL11.glShadeModel(GL11.GL_SMOOTH); - Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.double_barrel_tex); - ResourceManager.double_barrel.renderAll(); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + ResourceManager.double_barrel.renderPart("Stock"); + ResourceManager.double_barrel.renderPart("BarrelShort"); + if(!isSawedOff(stack)) ResourceManager.double_barrel.renderPart("Barrel"); + ResourceManager.double_barrel.renderPart("Buckle"); + ResourceManager.double_barrel.renderPart("Lever"); + ResourceManager.double_barrel.renderPart("Shells"); GL11.glShadeModel(GL11.GL_FLAT); } + + public boolean isSawedOff(ItemStack stack) { + return stack.getItem() == ModItems.gun_double_barrel_sacred_dragon; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index 8d3e0153d..d0d58dfb4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -1,6 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index b920da829..2d44341e6 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; -import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 2bb276490..2a7f1177c 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -27,12 +27,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; -import java.util.function.BiFunction; - /** * EXTERNAL COMPATIBILITY CLASS - DO NOT CHANGE METHOD NAMES/PARAMS ONCE CREATED * Is there a smarter way to do this? Most likely. Is there an easier one? Probably not. diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 4e4cd8b34..6cd397b09 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2212,6 +2212,7 @@ item.gun_defabricator.name=Defabrikator item.gun_defabricator_ammo.name=Defabrikator-Energiezelle item.gun_detonator.name=Laserzünder item.gun_double_barrel.name=Ein alter Klassiker +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon item.gun_emp.name=EMP-Waffe item.gun_emp_ammo.name=Energiezelle item.gun_euthanasia.name=Euthanasia diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 218b03ef1..4b90f99f7 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3020,6 +3020,7 @@ item.gun_defabricator.name=Defabricator item.gun_defabricator_ammo.name=Defabricator Energy Cell item.gun_detonator.name=Laser Detonator item.gun_double_barrel.name=An Old Classic +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon item.gun_emp.name=EMP Gun item.gun_emp_ammo.name=Energy Cell item.gun_euthanasia.name=Euthanasia diff --git a/src/main/resources/assets/hbm/textures/models/weapons/sacred_dragon.png b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/weapons/sacred_dragon.png rename to src/main/resources/assets/hbm/textures/models/weapons/double_barrel.png diff --git a/src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png b/src/main/resources/assets/hbm/textures/models/weapons/double_barrel_sacred_dragon.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccf01cb15abf8989044ff67eeaa5d3c5e674f5a GIT binary patch literal 11772 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 literal 0 HcmV?d00001