diff --git a/src/main/java/com/hbm/config/WeaponConfig.java b/src/main/java/com/hbm/config/WeaponConfig.java index 88c3dbdae..cf992059c 100644 --- a/src/main/java/com/hbm/config/WeaponConfig.java +++ b/src/main/java/com/hbm/config/WeaponConfig.java @@ -16,6 +16,8 @@ public class WeaponConfig { public static boolean dropCrys = true; public static boolean dropDead = true; + public static boolean spawnCasings = true; + public static void loadFromConfig(Configuration config) { final String CATEGORY_MISSILE = CommonConfig.CATEGORY_MISSILE; @@ -38,5 +40,7 @@ public class WeaponConfig { dropStar = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.02_dropStar", "Whether rigged star blaster cells should explode when dropped", true); dropCrys = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.04_dropCrys", "Whether xen crystals should move blocks when dropped", true); dropDead = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.05_dropDead", "Whether dead man's explosives should explode when dropped", true); + + spawnCasings = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.06_spawnCasings", "Should applicable guns spawn spent shell casings? (Disable if performance heavy)", true); } } diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 0a8c4c274..3496811b5 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -67,6 +67,8 @@ public class BulletConfigFactory { } + public static final float defaultSpread = 0.005f; + /// STANDARD CONFIGS /// //do not include damage or ammo public static BulletConfiguration standardBulletConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java index 588d951b3..cd6db534d 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun357MagnumFactory.java @@ -22,7 +22,8 @@ import net.minecraft.potion.PotionEffect; public class Gun357MagnumFactory { private static final SpentCasingConfigBuilder CASING_357_BUILDER = new SpentCasingConfigBuilder("357", CasingType.BRASS_STRAIGHT_WALL, false) - .setCasingAmount(6).setYawFactor(0.05f).setPosOffset(new EasyLocation(0, -0.15, 0)).setSmokeChance(6).setAfterReload(true); + .setCasingAmount(6).setYawFactor(0.05f).setPosOffset(new EasyLocation(0, -0.15, 0)).setSmokeChance(6).setAfterReload(true) + .setBounceSound("weapon.smallCasingBouncePB3"); static final SpentCasingConfig CASING_357 = CASING_357_BUILDER.build(), diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index ad8f4f2d1..ac287c724 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -31,7 +31,7 @@ public class Gun44MagnumFactory { static final SpentCasingConfig CASING_44 = new SpentCasingConfigBuilder("44Magnum", CasingType.BRASS_STRAIGHT_WALL, false) .setCasingAmount(6).setYawFactor(0.05f).setPosOffset(new EasyLocation(0, -0.15, 0)).setSmokeChance(6) - .setAfterReload(true).setScaleX(1.25f).build(); + .setAfterReload(true).setScaleX(1.25f).setBounceSound("weapon.smallCasingBouncePB3").build(); public static GunConfiguration getBaseConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index 9d0bf6d82..5bede6b0a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -26,7 +26,7 @@ public class Gun45ACPFactory private static final SpentCasingConfigBuilder CASING_45_BUILDER = new SpentCasingConfigBuilder("45acp", CasingType.BRASS_STRAIGHT_WALL, false) .setSmokeChance(8).setInitialMotion(Vec3.createVectorHelper(0.3, 0.75, 0)).setPitchFactor(0.03f).setYawFactor(0.01f) - .setPosOffset(new EasyLocation(-0.3, -0.25, 0.6)).setScaleZ(0.75f); + .setPosOffset(new EasyLocation(-0.3, -0.25, 0.6)).setScaleZ(0.75f).setBounceSound("weapon.smallCasingBouncePB3"); static final SpentCasingConfig CASING_45 = CASING_45_BUILDER.build(), diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java index ddbdff3fd..da4785ef4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50AEFactory.java @@ -20,7 +20,7 @@ public class Gun50AEFactory { static final SpentCasingConfig CASING_50AE = new SpentCasingConfigBuilder("50ae", CasingType.BRASS_STRAIGHT_WALL, false) .setSmokeChance(4).setInitialMotion(Vec3.createVectorHelper(-0.3, 0.7, 0)).setPitchFactor(0.03f).setYawFactor(0.01f) - .setPosOffset(new EasyLocation(-0.5, 0, 0.5)).setScaleZ(1.5f).build(); + .setPosOffset(new EasyLocation(-0.5, 0, 0.5)).setScaleZ(1.5f).setBounceSound("weapon.smallCasingBouncePB3").build(); public static GunConfiguration getBaseConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 0a0d0e758..7737f4030 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -241,8 +241,8 @@ public class Gun50BMGFactory { config.manufacturer = EnumGunManufacturer.ARMALITE; config.config = new ArrayList(); - config.config.addAll(HbmCollection.fiftyBMG); config.config.addAll(HbmCollection.fiftyBMGFlechette); + config.config.addAll(HbmCollection.fiftyBMG); config.casingConfig = Optional.of(CONFIG_50BMG); @@ -251,7 +251,7 @@ public class Gun50BMGFactory { public static GunConfiguration getM2Config() { - GunConfiguration config = getAR15Config().clone(); + GunConfiguration config = getAR15Config(); config.rateOfFire = 2; config.durability *= 10; @@ -286,17 +286,20 @@ public class Gun50BMGFactory { config.casingConfig = Optional.of(CONFIG_50BMG); + config.config.clear(); + config.config.addAll(HbmCollection.fiftyBMG); + config.config.addAll(HbmCollection.fiftyBMGFlechette); + return config; } - static final float inaccuracy = 0.0005F; - static byte i = 0; + static final float inaccuracy = 0.0005F, standardSpread = BulletConfigFactory.defaultSpread * inaccuracy; public static BulletConfiguration get50BMGConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, 0); + bullet.spread = standardSpread; bullet.dmgMin = 50; bullet.dmgMax = 56; bullet.penetration = 120; @@ -306,10 +309,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGFireConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 1; bullet.dmgMin = 50; bullet.dmgMax = 56; bullet.penetration = 120; @@ -321,10 +323,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGPhosphorusConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 2; bullet.dmgMin = 50; bullet.dmgMax = 56; bullet.penetration = 75; @@ -354,10 +355,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGExplosiveConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 3; bullet.dmgMin = 90; bullet.dmgMax = 94; bullet.penetration = 100; @@ -369,10 +369,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGAPConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 4; bullet.dmgMin = 82; bullet.dmgMax = 88; bullet.penetration = 150; @@ -384,10 +383,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGDUConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 5; bullet.dmgMin = 90; bullet.dmgMax = 96; bullet.penetration = 200; @@ -399,10 +397,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGStarConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 6; bullet.dmgMin = 108; bullet.dmgMax = 112; bullet.penetration = 250; @@ -414,10 +411,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGSleekConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 8; bullet.dmgMin = 60; bullet.dmgMax = 80; bullet.penetration = 120; @@ -457,10 +453,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGFlechetteConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 9; bullet.dmgMin = 60; bullet.dmgMax = 64; bullet.penetration = 130; @@ -471,10 +466,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGFlechetteAMConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); - bullet.spread *= inaccuracy; + bullet.ammo.meta = 10; bullet.dmgMin = 70; bullet.dmgMax = 74; bullet.penetration = 140; @@ -495,9 +489,9 @@ public class Gun50BMGFactory { public static BulletConfiguration get50BMGFlechettePOConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get50BMGConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_50bmg, 1, i++); + bullet.ammo.meta = 11; bullet.spread *= inaccuracy; bullet.dmgMin = 70; bullet.dmgMax = 74; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index 874d451c5..43b6f13c8 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -12,6 +12,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.lib.Library; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasingConfig; @@ -62,16 +63,17 @@ public class Gun556mmFactory { config.comment.add("Why is this gun so sticky?"); config.config = new ArrayList(); - config.config.add(BulletConfigSyncingUtil.R556_NORMAL); - config.config.add(BulletConfigSyncingUtil.R556_GOLD); - config.config.add(BulletConfigSyncingUtil.R556_TRACER); - config.config.add(BulletConfigSyncingUtil.R556_PHOSPHORUS); - config.config.add(BulletConfigSyncingUtil.R556_AP); - config.config.add(BulletConfigSyncingUtil.R556_DU); - config.config.add(BulletConfigSyncingUtil.R556_STAR); - config.config.add(BulletConfigSyncingUtil.CHL_R556); - config.config.add(BulletConfigSyncingUtil.R556_SLEEK); - config.config.add(BulletConfigSyncingUtil.R556_K); + config.config.addAll(HbmCollection.NATO); +// config.config.add(BulletConfigSyncingUtil.R556_NORMAL); +// config.config.add(BulletConfigSyncingUtil.R556_GOLD); +// config.config.add(BulletConfigSyncingUtil.R556_TRACER); +// config.config.add(BulletConfigSyncingUtil.R556_PHOSPHORUS); +// config.config.add(BulletConfigSyncingUtil.R556_AP); +// config.config.add(BulletConfigSyncingUtil.R556_DU); +// config.config.add(BulletConfigSyncingUtil.R556_STAR); +// config.config.add(BulletConfigSyncingUtil.CHL_R556); +// config.config.add(BulletConfigSyncingUtil.R556_SLEEK); +// config.config.add(BulletConfigSyncingUtil.R556_K); config.casingConfig = Optional.of(CONFIG_556); @@ -169,8 +171,7 @@ public class Gun556mmFactory { config.manufacturer = EnumGunManufacturer.LUNA; config.comment.add("\"May you never reincarnate again\""); - config.config.addAll(HbmCollection.NATO); - config.config.addAll(HbmCollection.NATOFlechette); + config.config.addAll(Library.mergeWithoutDuplicates(HbmCollection.NATO, HbmCollection.NATOFlechette)); config.animations.put(AnimType.CYCLE, new BusAnimation() .addBus("RECOIL", new BusAnimationSequence() @@ -234,7 +235,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 1); + bullet.ammo.meta = 1; bullet.dmgMin = 250; bullet.dmgMax = 320; bullet.spread = 0.0F; @@ -246,7 +247,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 2); + bullet.ammo.meta = 2; bullet.wear = 15; bullet.incendiary = 5; bullet.doesPenetrate = false; @@ -274,7 +275,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 3); + bullet.ammo.meta = 3; bullet.dmgMin = 20; bullet.dmgMax = 26; bullet.penetration *= 1.5; @@ -288,7 +289,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 4); + bullet.ammo.meta = 4; bullet.dmgMin = 24; bullet.dmgMax = 32; bullet.penetration *= 2; @@ -302,7 +303,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 5); + bullet.ammo.meta = 5; bullet.dmgMin = 30; bullet.dmgMax = 36; bullet.penetration *= 2.5; @@ -316,7 +317,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 6); + bullet.ammo.meta = 7; bullet.dmgMin = 45; bullet.dmgMax = 50; bullet.wear = 10; @@ -357,7 +358,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 7); + bullet.ammo.meta = 8; bullet.vPFX = "reddust"; return bullet; @@ -367,7 +368,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 8); + bullet.ammo.meta = 9; bullet.dmgMin = 26; bullet.dmgMax = 32; bullet.penetration = 22; @@ -384,7 +385,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 9); + bullet.ammo.meta = 10; bullet.incendiary = 5; return bullet; @@ -394,7 +395,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 10); + bullet.ammo.meta = 11; bullet.incendiary = 5; PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true); @@ -420,7 +421,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 11); + bullet.ammo.meta = 12; bullet.dmgMin = 46; bullet.dmgMax = 52; bullet.penetration *= 2.5; @@ -435,7 +436,7 @@ public class Gun556mmFactory { BulletConfiguration bullet = get556FlechetteConfig(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 12); + bullet.ammo.meta = 13; bullet.dmgMin = 45; bullet.dmgMax = 50; bullet.wear = 10; @@ -474,13 +475,14 @@ public class Gun556mmFactory { public static BulletConfiguration get556KConfig() { - BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); + BulletConfiguration bullet = get556Config(); - bullet.ammo = new ComparableStack(ModItems.ammo_556, 1, 13); + bullet.ammo.meta = 14; bullet.dmgMin = 0; bullet.dmgMax = 0; bullet.penetration = 0; bullet.maxAge = 0; + bullet.wear /= 2; return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java index 08a4f6024..a1bcf8cf8 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun9mmFactory.java @@ -24,7 +24,7 @@ public class Gun9mmFactory { static final SpentCasingConfig CASING_9 = Gun45ACPFactory.CASING_45_UAC.toBuilder("9") .setInitialMotion(Vec3.createVectorHelper(-0.3, 0.6, 0)).setPosOffset(new EasyLocation(-0.35, -0.2, 0.55)) - .setScaleX(1).setScaleY(1).setScaleZ(0.6f).build(); + .setScaleX(1).setScaleY(1).setScaleZ(0.6f).setBounceSound("weapon.smallCasingBouncePB3").build(); public static GunConfiguration getMP40Config() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index e49d86fc9..2f52fadef 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -20,7 +20,7 @@ import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class GunGrenadeFactory { static final SpentCasingConfig CASING_40 = new SpentCasingConfigBuilder("40", CasingType.BRASS_STRAIGHT_WALL, false) - .setSmokeChance(0).setScaleX(4).setAfterReload(true).setPitchFactor(0.02f).setYawFactor(0.03f) + .setSmokeChance(0).setScaleX(4).setScaleY(4).setScaleZ(3).setAfterReload(true).setPitchFactor(0.02f).setYawFactor(0.03f) .build(); public static GunConfiguration getHK69Config() { diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index 900973025..bffbef5b8 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -560,9 +560,9 @@ public class ItemAmmoEnums STAR(Gun50BMGFactory.get50BMGStarConfig(), HbmCollection.StarmetalType), CHLOROPHYTE(Gun50BMGFactory.get50BMGConfig().getChlorophyte(), HbmCollection.ChlorophyteType), SLEEK(Gun50BMGFactory.get50BMGSleekConfig(), AmmoItemTrait.NEU_MASKMAN_METEORITE), - FLECHETTE(Gun50BMGFactory.get50BMGFlechetteConfig()), - FLECHETTE_AM(Gun50BMGFactory.get50BMGFlechetteAMConfig()), - FLECHETTE_PO(Gun50BMGFactory.get50BMGFlechettePOConfig()); + FLECHETTE(Gun50BMGFactory.get50BMGFlechetteConfig(), AmmoItemTrait.PRO_DAMAGE), + FLECHETTE_AM(Gun50BMGFactory.get50BMGFlechetteAMConfig(), AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH), + FLECHETTE_PO(Gun50BMGFactory.get50BMGFlechettePOConfig(), AmmoItemTrait.PRO_DAMAGE, AmmoItemTrait.NEU_UHH); private final Set traits; private final BulletConfiguration config; private Ammo50BMG(BulletConfiguration config, AmmoItemTrait...traits) diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index f07cfac11..23d2dee3f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -251,7 +251,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); - if (altConfig.casingConfig.isPresent() && !altConfig.casingConfig.get().isAfterReload()) + if (altConfig.casingConfig.isPresent()) spawnCasing(player, altConfig.casingConfig.get(), stack); } diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 3c261c648..01cb315a8 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Set; +import java.util.stream.Collectors; import com.google.common.collect.Sets; import com.hbm.blocks.ModBlocks; @@ -106,6 +107,26 @@ public class Library { public static final ForgeDirection POS_Z = ForgeDirection.SOUTH; public static final ForgeDirection NEG_Z = ForgeDirection.NORTH; + public static List mergeWithoutDuplicates(List...lists) + { + final List totalList = new ArrayList(); + for (List list : lists) + totalList.addAll(list); + return listWithoutDuplicates(totalList); + } + + public static List listWithoutDuplicates(List list) + { + return list.stream().distinct().collect(Collectors.toList()); + } + + public static void removeListDuplicates(List list) + { + final List newList = listWithoutDuplicates(list); + list.clear(); + list.addAll(newList); + } + /* * Is putting this into this trash can a good idea? No. Do I have a better idea? Not currently. */ diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 98bead3d9..e738d14f5 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1,5 +1,637 @@ package com.hbm.main; +import java.awt.Color; +import java.awt.Desktop; +import java.net.URI; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; +import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; +import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.config.WeaponConfig; +import com.hbm.entity.cart.EntityMinecartCrate; +import com.hbm.entity.cart.EntityMinecartNTM; +import com.hbm.entity.effect.EntityBlackHole; +import com.hbm.entity.effect.EntityCloudFleija; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.effect.EntityCloudSolinium; +import com.hbm.entity.effect.EntityCloudTom; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.effect.EntityFalloutRain; +import com.hbm.entity.effect.EntityNukeCloudBig; +import com.hbm.entity.effect.EntityNukeCloudNoShroom; +import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.entity.effect.EntityNukeTorex; +import com.hbm.entity.effect.EntityQuasar; +import com.hbm.entity.effect.EntityRagingVortex; +import com.hbm.entity.effect.EntitySpear; +import com.hbm.entity.effect.EntityVortex; +import com.hbm.entity.grenade.EntityGrenadeASchrab; +import com.hbm.entity.grenade.EntityGrenadeBlackHole; +import com.hbm.entity.grenade.EntityGrenadeBouncyBaseNT; +import com.hbm.entity.grenade.EntityGrenadeBouncyGeneric; +import com.hbm.entity.grenade.EntityGrenadeBreach; +import com.hbm.entity.grenade.EntityGrenadeBurst; +import com.hbm.entity.grenade.EntityGrenadeCloud; +import com.hbm.entity.grenade.EntityGrenadeCluster; +import com.hbm.entity.grenade.EntityGrenadeDynamite; +import com.hbm.entity.grenade.EntityGrenadeElectric; +import com.hbm.entity.grenade.EntityGrenadeFire; +import com.hbm.entity.grenade.EntityGrenadeFlare; +import com.hbm.entity.grenade.EntityGrenadeFrag; +import com.hbm.entity.grenade.EntityGrenadeGas; +import com.hbm.entity.grenade.EntityGrenadeGascan; +import com.hbm.entity.grenade.EntityGrenadeGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFBouncy; +import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; +import com.hbm.entity.grenade.EntityGrenadeIFConcussion; +import com.hbm.entity.grenade.EntityGrenadeIFGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFHE; +import com.hbm.entity.grenade.EntityGrenadeIFHopwire; +import com.hbm.entity.grenade.EntityGrenadeIFImpact; +import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; +import com.hbm.entity.grenade.EntityGrenadeIFMystery; +import com.hbm.entity.grenade.EntityGrenadeIFNull; +import com.hbm.entity.grenade.EntityGrenadeIFSpark; +import com.hbm.entity.grenade.EntityGrenadeIFSticky; +import com.hbm.entity.grenade.EntityGrenadeIFToxic; +import com.hbm.entity.grenade.EntityGrenadeImpactGeneric; +import com.hbm.entity.grenade.EntityGrenadeLemon; +import com.hbm.entity.grenade.EntityGrenadeMIRV; +import com.hbm.entity.grenade.EntityGrenadeMk2; +import com.hbm.entity.grenade.EntityGrenadeNuclear; +import com.hbm.entity.grenade.EntityGrenadeNuke; +import com.hbm.entity.grenade.EntityGrenadePC; +import com.hbm.entity.grenade.EntityGrenadePlasma; +import com.hbm.entity.grenade.EntityGrenadePoison; +import com.hbm.entity.grenade.EntityGrenadePulse; +import com.hbm.entity.grenade.EntityGrenadeSchrabidium; +import com.hbm.entity.grenade.EntityGrenadeShrapnel; +import com.hbm.entity.grenade.EntityGrenadeSmart; +import com.hbm.entity.grenade.EntityGrenadeStrong; +import com.hbm.entity.grenade.EntityGrenadeTau; +import com.hbm.entity.grenade.EntityGrenadeZOMG; +import com.hbm.entity.grenade.EntityWastePearl; +import com.hbm.entity.item.EntityFireworks; +import com.hbm.entity.item.EntityMagnusCartus; +import com.hbm.entity.item.EntityMinecartTest; +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.entity.item.EntityMovingPackage; +import com.hbm.entity.item.EntityTNTPrimedBase; +import com.hbm.entity.logic.EntityBomber; +import com.hbm.entity.logic.EntityDeathBlast; +import com.hbm.entity.logic.EntityEMP; +import com.hbm.entity.logic.EntityNukeExplosionAdvanced; +import com.hbm.entity.missile.EntityBobmazon; +import com.hbm.entity.missile.EntityBombletSelena; +import com.hbm.entity.missile.EntityBombletTheta; +import com.hbm.entity.missile.EntityBooster; +import com.hbm.entity.missile.EntityCarrier; +import com.hbm.entity.missile.EntityMIRV; +import com.hbm.entity.missile.EntityMinerRocket; +import com.hbm.entity.missile.EntityMissileAntiBallistic; +import com.hbm.entity.missile.EntityMissileBHole; +import com.hbm.entity.missile.EntityMissileBunkerBuster; +import com.hbm.entity.missile.EntityMissileBurst; +import com.hbm.entity.missile.EntityMissileBusterStrong; +import com.hbm.entity.missile.EntityMissileCluster; +import com.hbm.entity.missile.EntityMissileClusterStrong; +import com.hbm.entity.missile.EntityMissileCustom; +import com.hbm.entity.missile.EntityMissileDoomsday; +import com.hbm.entity.missile.EntityMissileDrill; +import com.hbm.entity.missile.EntityMissileEMP; +import com.hbm.entity.missile.EntityMissileEMPStrong; +import com.hbm.entity.missile.EntityMissileEndo; +import com.hbm.entity.missile.EntityMissileExo; +import com.hbm.entity.missile.EntityMissileGeneric; +import com.hbm.entity.missile.EntityMissileIncendiary; +import com.hbm.entity.missile.EntityMissileIncendiaryStrong; +import com.hbm.entity.missile.EntityMissileInferno; +import com.hbm.entity.missile.EntityMissileMicro; +import com.hbm.entity.missile.EntityMissileMirv; +import com.hbm.entity.missile.EntityMissileNuclear; +import com.hbm.entity.missile.EntityMissileRain; +import com.hbm.entity.missile.EntityMissileSchrabidium; +import com.hbm.entity.missile.EntityMissileShuttle; +import com.hbm.entity.missile.EntityMissileStrong; +import com.hbm.entity.missile.EntityMissileTaint; +import com.hbm.entity.missile.EntityMissileVolcano; +import com.hbm.entity.missile.EntitySiegeDropship; +import com.hbm.entity.missile.EntitySoyuz; +import com.hbm.entity.missile.EntitySoyuzCapsule; +import com.hbm.entity.missile.EntityTestMissile; +import com.hbm.entity.mob.EntityBlockSpider; +import com.hbm.entity.mob.EntityCyberCrab; +import com.hbm.entity.mob.EntityDuck; +import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityGhost; +import com.hbm.entity.mob.EntityHunterChopper; +import com.hbm.entity.mob.EntityMaskMan; +import com.hbm.entity.mob.EntityNuclearCreeper; +import com.hbm.entity.mob.EntityQuackos; +import com.hbm.entity.mob.EntityRADBeast; +import com.hbm.entity.mob.EntityTaintCrab; +import com.hbm.entity.mob.EntityTaintedCreeper; +import com.hbm.entity.mob.EntityTeslaCrab; +import com.hbm.entity.mob.EntityUFO; +import com.hbm.entity.mob.botprime.EntityBOTPrimeBody; +import com.hbm.entity.mob.botprime.EntityBOTPrimeHead; +import com.hbm.entity.mob.siege.EntitySiegeCraft; +import com.hbm.entity.mob.siege.EntitySiegeSkeleton; +import com.hbm.entity.mob.siege.EntitySiegeTunneler; +import com.hbm.entity.mob.siege.EntitySiegeUFO; +import com.hbm.entity.mob.siege.EntitySiegeZombie; +import com.hbm.entity.particle.EntityBSmokeFX; +import com.hbm.entity.particle.EntityChlorineFX; +import com.hbm.entity.particle.EntityDSmokeFX; +import com.hbm.entity.particle.EntityFogFX; +import com.hbm.entity.particle.EntityGasFX; +import com.hbm.entity.particle.EntityOilSpillFX; +import com.hbm.entity.particle.EntityOrangeFX; +import com.hbm.entity.particle.EntityPinkCloudFX; +import com.hbm.entity.particle.EntitySSmokeFX; +import com.hbm.entity.particle.EntitySmokeFX; +import com.hbm.entity.particle.EntityTSmokeFX; +import com.hbm.entity.projectile.EntityAAShell; +import com.hbm.entity.projectile.EntityArtilleryShell; +import com.hbm.entity.projectile.EntityBeamVortex; +import com.hbm.entity.projectile.EntityBombletZeta; +import com.hbm.entity.projectile.EntityBoxcar; +import com.hbm.entity.projectile.EntityBuilding; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBurningFOEQ; +import com.hbm.entity.projectile.EntityChemical; +import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.entity.projectile.EntityCog; +import com.hbm.entity.projectile.EntityCombineBall; +import com.hbm.entity.projectile.EntityDischarge; +import com.hbm.entity.projectile.EntityDuchessGambit; +import com.hbm.entity.projectile.EntityExplosiveBeam; +import com.hbm.entity.projectile.EntityFallingNuke; +import com.hbm.entity.projectile.EntityFire; +import com.hbm.entity.projectile.EntityLN2; +import com.hbm.entity.projectile.EntityLaser; +import com.hbm.entity.projectile.EntityLaserBeam; +import com.hbm.entity.projectile.EntityMeteor; +import com.hbm.entity.projectile.EntityMinerBeam; +import com.hbm.entity.projectile.EntityModBeam; +import com.hbm.entity.projectile.EntityNightmareBlast; +import com.hbm.entity.projectile.EntityOilSpill; +import com.hbm.entity.projectile.EntityPlasmaBeam; +import com.hbm.entity.projectile.EntityRBMKDebris; +import com.hbm.entity.projectile.EntityRainbow; +import com.hbm.entity.projectile.EntityRocket; +import com.hbm.entity.projectile.EntityRocketHoming; +import com.hbm.entity.projectile.EntityRubble; +import com.hbm.entity.projectile.EntitySawblade; +import com.hbm.entity.projectile.EntitySchrab; +import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.entity.projectile.EntitySiegeLaser; +import com.hbm.entity.projectile.EntitySparkBeam; +import com.hbm.entity.projectile.EntityTom; +import com.hbm.entity.projectile.EntityWaterSplash; +import com.hbm.entity.projectile.EntityZirnoxDebris; +import com.hbm.handler.HbmKeybinds; +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.ItemAmmoEnums.AmmoHandGrenade; +import com.hbm.items.ModItems; +import com.hbm.particle.ParticleAmatFlash; +import com.hbm.particle.ParticleContrail; +import com.hbm.particle.ParticleCoolingTower; +import com.hbm.particle.ParticleDeadLeaf; +import com.hbm.particle.ParticleDebug; +import com.hbm.particle.ParticleDigammaSmoke; +import com.hbm.particle.ParticleExSmoke; +import com.hbm.particle.ParticleGasFlame; +import com.hbm.particle.ParticleGiblet; +import com.hbm.particle.ParticleHadron; +import com.hbm.particle.ParticleHaze; +import com.hbm.particle.ParticleLetter; +import com.hbm.particle.ParticleMukeCloud; +import com.hbm.particle.ParticleMukeFlash; +import com.hbm.particle.ParticleMukeWave; +import com.hbm.particle.ParticlePlasmaBlast; +import com.hbm.particle.ParticleRBMKFlame; +import com.hbm.particle.ParticleRBMKMush; +import com.hbm.particle.ParticleRadiationFog; +import com.hbm.particle.ParticleRift; +import com.hbm.particle.ParticleRocketFlame; +import com.hbm.particle.ParticleSmokePlume; +import com.hbm.particle.ParticleSpark; +import com.hbm.particle.ParticleText; +import com.hbm.particle.SpentCasingConfig; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations; +import com.hbm.render.anim.HbmAnimations.Animation; +import com.hbm.render.block.RenderAntennaTop; +import com.hbm.render.block.RenderAnvil; +import com.hbm.render.block.RenderBarbedWire; +import com.hbm.render.block.RenderBarrel; +import com.hbm.render.block.RenderBattery; +import com.hbm.render.block.RenderBlockCT; +import com.hbm.render.block.RenderBlockDecoModel; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.render.block.RenderBlockRotated; +import com.hbm.render.block.RenderBlockSideRotation; +import com.hbm.render.block.RenderBoxDuct; +import com.hbm.render.block.RenderCable; +import com.hbm.render.block.RenderCableClassic; +import com.hbm.render.block.RenderChain; +import com.hbm.render.block.RenderConserve; +import com.hbm.render.block.RenderConveyor; +import com.hbm.render.block.RenderConveyorChute; +import com.hbm.render.block.RenderConveyorLift; +import com.hbm.render.block.RenderCrystal; +import com.hbm.render.block.RenderDetCord; +import com.hbm.render.block.RenderDiode; +import com.hbm.render.block.RenderFence; +import com.hbm.render.block.RenderFoundryBasin; +import com.hbm.render.block.RenderFoundryChannel; +import com.hbm.render.block.RenderFoundryMold; +import com.hbm.render.block.RenderFoundryOutlet; +import com.hbm.render.block.RenderFoundryTank; +import com.hbm.render.block.RenderGrate; +import com.hbm.render.block.RenderMirror; +import com.hbm.render.block.RenderPipe; +import com.hbm.render.block.RenderPribris; +import com.hbm.render.block.RenderRBMKControl; +import com.hbm.render.block.RenderRBMKReflector; +import com.hbm.render.block.RenderRBMKRod; +import com.hbm.render.block.RenderRTGBlock; +import com.hbm.render.block.RenderScaffoldBlock; +import com.hbm.render.block.RenderSpikeBlock; +import com.hbm.render.block.RenderSteelBeam; +import com.hbm.render.block.RenderTaintBlock; +import com.hbm.render.block.RenderTapeBlock; +import com.hbm.render.block.RenderTestPipe; +import com.hbm.render.entity.RenderEmpty; +import com.hbm.render.entity.effect.ElectricityRenderer; +import com.hbm.render.entity.effect.FogRenderer; +import com.hbm.render.entity.effect.GasRenderer; +import com.hbm.render.entity.effect.MultiCloudRenderer; +import com.hbm.render.entity.effect.RenderBigNuke; +import com.hbm.render.entity.effect.RenderBlackHole; +import com.hbm.render.entity.effect.RenderCasingTest; +import com.hbm.render.entity.effect.RenderCloudFleija; +import com.hbm.render.entity.effect.RenderCloudRainbow; +import com.hbm.render.entity.effect.RenderCloudSolinium; +import com.hbm.render.entity.effect.RenderCloudTom; +import com.hbm.render.entity.effect.RenderDeathBlast; +import com.hbm.render.entity.effect.RenderEMPBlast; +import com.hbm.render.entity.effect.RenderFallout; +import com.hbm.render.entity.effect.RenderFireball; +import com.hbm.render.entity.effect.RenderFlare; +import com.hbm.render.entity.effect.RenderNoCloud; +import com.hbm.render.entity.effect.RenderQuasar; +import com.hbm.render.entity.effect.RenderSmallNukeMK4; +import com.hbm.render.entity.effect.RenderSpear; +import com.hbm.render.entity.effect.RenderTorex; +import com.hbm.render.entity.effect.SSmokeRenderer; +import com.hbm.render.entity.effect.SpillRenderer; +import com.hbm.render.entity.effect.TSmokeRenderer; +import com.hbm.render.entity.item.RenderBomber; +import com.hbm.render.entity.item.RenderMagnusCartus; +import com.hbm.render.entity.item.RenderMinecartTest; +import com.hbm.render.entity.item.RenderMovingItem; +import com.hbm.render.entity.item.RenderMovingPackage; +import com.hbm.render.entity.item.RenderNeoCart; +import com.hbm.render.entity.item.RenderTNTPrimedBase; +import com.hbm.render.entity.mob.RenderBlockSpider; +import com.hbm.render.entity.mob.RenderCyberCrab; +import com.hbm.render.entity.mob.RenderDuck; +import com.hbm.render.entity.mob.RenderFBI; +import com.hbm.render.entity.mob.RenderGhost; +import com.hbm.render.entity.mob.RenderHunterChopper; +import com.hbm.render.entity.mob.RenderMaskMan; +import com.hbm.render.entity.mob.RenderNuclearCreeper; +import com.hbm.render.entity.mob.RenderQuacc; +import com.hbm.render.entity.mob.RenderRADBeast; +import com.hbm.render.entity.mob.RenderSiegeCraft; +import com.hbm.render.entity.mob.RenderSiegeSkeleton; +import com.hbm.render.entity.mob.RenderSiegeTunneler; +import com.hbm.render.entity.mob.RenderSiegeUFO; +import com.hbm.render.entity.mob.RenderSiegeZombie; +import com.hbm.render.entity.mob.RenderTaintCrab; +import com.hbm.render.entity.mob.RenderTaintedCreeper; +import com.hbm.render.entity.mob.RenderTeslaCrab; +import com.hbm.render.entity.mob.RenderUFO; +import com.hbm.render.entity.mob.RenderWormBody; +import com.hbm.render.entity.mob.RenderWormHead; +import com.hbm.render.entity.projectile.RenderArtilleryShell; +import com.hbm.render.entity.projectile.RenderBeam; +import com.hbm.render.entity.projectile.RenderBeam2; +import com.hbm.render.entity.projectile.RenderBeam3; +import com.hbm.render.entity.projectile.RenderBeam4; +import com.hbm.render.entity.projectile.RenderBeam5; +import com.hbm.render.entity.projectile.RenderBeam6; +import com.hbm.render.entity.projectile.RenderBombletSelena; +import com.hbm.render.entity.projectile.RenderBombletTheta; +import com.hbm.render.entity.projectile.RenderBoxcar; +import com.hbm.render.entity.projectile.RenderBullet; +import com.hbm.render.entity.projectile.RenderChemical; +import com.hbm.render.entity.projectile.RenderChopperMine; +import com.hbm.render.entity.projectile.RenderCog; +import com.hbm.render.entity.projectile.RenderFOEQ; +import com.hbm.render.entity.projectile.RenderFallingNuke; +import com.hbm.render.entity.projectile.RenderGenericGrenade; +import com.hbm.render.entity.projectile.RenderGrenade; +import com.hbm.render.entity.projectile.RenderLN2; +import com.hbm.render.entity.projectile.RenderLaser; +import com.hbm.render.entity.projectile.RenderMeteor; +import com.hbm.render.entity.projectile.RenderMirv; +import com.hbm.render.entity.projectile.RenderOminousBullet; +import com.hbm.render.entity.projectile.RenderRBMKDebris; +import com.hbm.render.entity.projectile.RenderRainbow; +import com.hbm.render.entity.projectile.RenderRocket; +import com.hbm.render.entity.projectile.RenderRubble; +import com.hbm.render.entity.projectile.RenderSRocket; +import com.hbm.render.entity.projectile.RenderSawblade; +import com.hbm.render.entity.projectile.RenderShrapnel; +import com.hbm.render.entity.projectile.RenderSiegeLaser; +import com.hbm.render.entity.projectile.RenderTom; +import com.hbm.render.entity.projectile.RenderVortexBeam; +import com.hbm.render.entity.projectile.RenderZirnoxDebris; +import com.hbm.render.entity.rocket.RenderBoosterMissile; +import com.hbm.render.entity.rocket.RenderCarrierMissile; +import com.hbm.render.entity.rocket.RenderMinerRocket; +import com.hbm.render.entity.rocket.RenderMissileCustom; +import com.hbm.render.entity.rocket.RenderMissileDoomsday; +import com.hbm.render.entity.rocket.RenderMissileGeneric; +import com.hbm.render.entity.rocket.RenderMissileHuge; +import com.hbm.render.entity.rocket.RenderMissileMirv; +import com.hbm.render.entity.rocket.RenderMissileNuclear; +import com.hbm.render.entity.rocket.RenderMissileShuttle; +import com.hbm.render.entity.rocket.RenderMissileStrong; +import com.hbm.render.entity.rocket.RenderMissileTaint; +import com.hbm.render.entity.rocket.RenderMissileThermo; +import com.hbm.render.entity.rocket.RenderSoyuz; +import com.hbm.render.entity.rocket.RenderSoyuzCapsule; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.item.ItemRenderDetonatorLaser; +import com.hbm.render.item.ItemRenderLibrary; +import com.hbm.render.item.ItemRenderMissile; +import com.hbm.render.item.ItemRenderMissilePart; +import com.hbm.render.item.ItemRenderMultitool; +import com.hbm.render.item.ItemRenderTemplate; +import com.hbm.render.item.ItemRenderTransformer; +import com.hbm.render.item.ItemRendererHot; +import com.hbm.render.item.ItemRendererMeteorSword; +import com.hbm.render.item.block.ItemRenderDecoBlock; +import com.hbm.render.item.block.ItemRenderTestContainer; +import com.hbm.render.item.weapon.ItemRenderBFLauncher; +import com.hbm.render.item.weapon.ItemRenderBenelli; +import com.hbm.render.item.weapon.ItemRenderBigSword; +import com.hbm.render.item.weapon.ItemRenderBioRevolver; +import com.hbm.render.item.weapon.ItemRenderBullshit; +import com.hbm.render.item.weapon.ItemRenderChainsaw; +import com.hbm.render.item.weapon.ItemRenderCrucible; +import com.hbm.render.item.weapon.ItemRenderCryolator; +import com.hbm.render.item.weapon.ItemRenderEMPRay; +import com.hbm.render.item.weapon.ItemRenderFatMan; +import com.hbm.render.item.weapon.ItemRenderFireExt; +import com.hbm.render.item.weapon.ItemRenderG36; +import com.hbm.render.item.weapon.ItemRenderGavel; +import com.hbm.render.item.weapon.ItemRenderGunAnim; +import com.hbm.render.item.weapon.ItemRenderHLR; +import com.hbm.render.item.weapon.ItemRenderImmolator; +import com.hbm.render.item.weapon.ItemRenderLLR; +import com.hbm.render.item.weapon.ItemRenderLunaticSniper; +import com.hbm.render.item.weapon.ItemRenderM2; +import com.hbm.render.item.weapon.ItemRenderMIRVLauncher; +import com.hbm.render.item.weapon.ItemRenderMLR; +import com.hbm.render.item.weapon.ItemRenderMP; +import com.hbm.render.item.weapon.ItemRenderMP40; +import com.hbm.render.item.weapon.ItemRenderOSIPR; +import com.hbm.render.item.weapon.ItemRenderObj; +import com.hbm.render.item.weapon.ItemRenderOverkill; +import com.hbm.render.item.weapon.ItemRenderRedstoneSword; +import com.hbm.render.item.weapon.ItemRenderRevolverInverted; +import com.hbm.render.item.weapon.ItemRenderRpg; +import com.hbm.render.item.weapon.ItemRenderShim; +import com.hbm.render.item.weapon.ItemRenderStinger; +import com.hbm.render.item.weapon.ItemRenderTWR; +import com.hbm.render.item.weapon.ItemRenderTestBombAdvanced; +import com.hbm.render.item.weapon.ItemRenderUACPistol; +import com.hbm.render.item.weapon.ItemRenderUZI; +import com.hbm.render.item.weapon.ItemRenderUboinik; +import com.hbm.render.item.weapon.ItemRenderWeaponAR15; +import com.hbm.render.item.weapon.ItemRenderWeaponBolter; +import com.hbm.render.item.weapon.ItemRenderWeaponChemthrower; +import com.hbm.render.item.weapon.ItemRenderWeaponFFBolt; +import com.hbm.render.item.weapon.ItemRenderWeaponFFColt; +import com.hbm.render.item.weapon.ItemRenderWeaponFFCursed; +import com.hbm.render.item.weapon.ItemRenderWeaponFFMG42; +import com.hbm.render.item.weapon.ItemRenderWeaponFFMaresLeg; +import com.hbm.render.item.weapon.ItemRenderWeaponFFNightmare; +import com.hbm.render.item.weapon.ItemRenderWeaponFFNightmareDark; +import com.hbm.render.item.weapon.ItemRenderWeaponGlass; +import com.hbm.render.item.weapon.ItemRenderWeaponObj; +import com.hbm.render.item.weapon.ItemRenderWeaponQuadro; +import com.hbm.render.item.weapon.ItemRenderWeaponSauer; +import com.hbm.render.item.weapon.ItemRenderWeaponShotty; +import com.hbm.render.item.weapon.ItemRenderWeaponSpas12; +import com.hbm.render.item.weapon.ItemRenderWeaponThompson; +import com.hbm.render.item.weapon.ItemRenderWeaponVortex; +import com.hbm.render.item.weapon.ItemRenderXVL1456; +import com.hbm.render.item.weapon.ItemRenderZOMG; +import com.hbm.render.loader.HmfModelLoader; +import com.hbm.render.tileentity.*; +import com.hbm.render.util.MissilePart; +import com.hbm.render.util.RenderInfoSystem; +import com.hbm.render.util.RenderInfoSystem.InfoEntry; +import com.hbm.sound.AudioWrapper; +import com.hbm.sound.AudioWrapperClient; +import com.hbm.sound.AudioWrapperClientStartStop; +import com.hbm.tileentity.TileEntityDoorGeneric; +import com.hbm.tileentity.bomb.TileEntityBombMulti; +import com.hbm.tileentity.bomb.TileEntityCelPrime; +import com.hbm.tileentity.bomb.TileEntityCelPrimeBattery; +import com.hbm.tileentity.bomb.TileEntityCelPrimePort; +import com.hbm.tileentity.bomb.TileEntityCelPrimeTanks; +import com.hbm.tileentity.bomb.TileEntityCelPrimeTerminal; +import com.hbm.tileentity.bomb.TileEntityCharge; +import com.hbm.tileentity.bomb.TileEntityCompactLauncher; +import com.hbm.tileentity.bomb.TileEntityCrashedBomb; +import com.hbm.tileentity.bomb.TileEntityLandmine; +import com.hbm.tileentity.bomb.TileEntityLaunchPad; +import com.hbm.tileentity.bomb.TileEntityLaunchTable; +import com.hbm.tileentity.bomb.TileEntityNukeBalefire; +import com.hbm.tileentity.bomb.TileEntityNukeBoy; +import com.hbm.tileentity.bomb.TileEntityNukeCustom; +import com.hbm.tileentity.bomb.TileEntityNukeFleija; +import com.hbm.tileentity.bomb.TileEntityNukeGadget; +import com.hbm.tileentity.bomb.TileEntityNukeMan; +import com.hbm.tileentity.bomb.TileEntityNukeMike; +import com.hbm.tileentity.bomb.TileEntityNukeN2; +import com.hbm.tileentity.bomb.TileEntityNukeN45; +import com.hbm.tileentity.bomb.TileEntityNukePrototype; +import com.hbm.tileentity.bomb.TileEntityNukeSolinium; +import com.hbm.tileentity.bomb.TileEntityNukeTsar; +import com.hbm.tileentity.bomb.TileEntityTestBombAdvanced; +import com.hbm.tileentity.conductor.TileEntityFluidDuct; +import com.hbm.tileentity.conductor.TileEntityGasDuct; +import com.hbm.tileentity.conductor.TileEntityOilDuct; +import com.hbm.tileentity.conductor.TileEntityRFDuct; +import com.hbm.tileentity.deco.TileEntityBomber; +import com.hbm.tileentity.deco.TileEntityDecoBlock; +import com.hbm.tileentity.deco.TileEntityDecoBlockAlt; +import com.hbm.tileentity.deco.TileEntityDecoBlockAltF; +import com.hbm.tileentity.deco.TileEntityDecoBlockAltG; +import com.hbm.tileentity.deco.TileEntityDecoBlockAltW; +import com.hbm.tileentity.deco.TileEntityDecoPoleSatelliteReceiver; +import com.hbm.tileentity.deco.TileEntityObjTester; +import com.hbm.tileentity.deco.TileEntityRotationTester; +import com.hbm.tileentity.deco.TileEntityTestRender; +import com.hbm.tileentity.machine.TileEntityAMSBase; +import com.hbm.tileentity.machine.TileEntityAMSEmitter; +import com.hbm.tileentity.machine.TileEntityAMSLimiter; +import com.hbm.tileentity.machine.TileEntityBlastDoor; +import com.hbm.tileentity.machine.TileEntityBroadcaster; +import com.hbm.tileentity.machine.TileEntityCharger; +import com.hbm.tileentity.machine.TileEntityChungus; +import com.hbm.tileentity.machine.TileEntityCore; +import com.hbm.tileentity.machine.TileEntityCoreEmitter; +import com.hbm.tileentity.machine.TileEntityCoreInjector; +import com.hbm.tileentity.machine.TileEntityCoreReceiver; +import com.hbm.tileentity.machine.TileEntityCoreStabilizer; +import com.hbm.tileentity.machine.TileEntityCrucible; +import com.hbm.tileentity.machine.TileEntityDemonLamp; +import com.hbm.tileentity.machine.TileEntityDeuteriumTower; +import com.hbm.tileentity.machine.TileEntityElectrolyser; +import com.hbm.tileentity.machine.TileEntityFEL; +import com.hbm.tileentity.machine.TileEntityFF; +import com.hbm.tileentity.machine.TileEntityForceField; +import com.hbm.tileentity.machine.TileEntityFoundryBasin; +import com.hbm.tileentity.machine.TileEntityFoundryMold; +import com.hbm.tileentity.machine.TileEntityFurnaceIron; +import com.hbm.tileentity.machine.TileEntityFurnaceSteel; +import com.hbm.tileentity.machine.TileEntityGeiger; +import com.hbm.tileentity.machine.TileEntityHeatBoiler; +import com.hbm.tileentity.machine.TileEntityHeaterElectric; +import com.hbm.tileentity.machine.TileEntityHeaterFirebox; +import com.hbm.tileentity.machine.TileEntityHeaterOilburner; +import com.hbm.tileentity.machine.TileEntityITER; +import com.hbm.tileentity.machine.TileEntityITERStruct; +import com.hbm.tileentity.machine.TileEntityMachineAssembler; +import com.hbm.tileentity.machine.TileEntityMachineAssemfac; +import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; +import com.hbm.tileentity.machine.TileEntityMachineChemfac; +import com.hbm.tileentity.machine.TileEntityMachineChemplant; +import com.hbm.tileentity.machine.TileEntityMachineCrystallizer; +import com.hbm.tileentity.machine.TileEntityMachineCyclotron; +import com.hbm.tileentity.machine.TileEntityMachineEPress; +import com.hbm.tileentity.machine.TileEntityMachineGasCent; +import com.hbm.tileentity.machine.TileEntityMachineIGenerator; +import com.hbm.tileentity.machine.TileEntityMachineLargeTurbine; +import com.hbm.tileentity.machine.TileEntityMachineMiniRTG; +import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; +import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; +import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; +import com.hbm.tileentity.machine.TileEntityMachinePlasmaHeater; +import com.hbm.tileentity.machine.TileEntityMachinePress; +import com.hbm.tileentity.machine.TileEntityMachineRTG; +import com.hbm.tileentity.machine.TileEntityMachineRadGen; +import com.hbm.tileentity.machine.TileEntityMachineRadar; +import com.hbm.tileentity.machine.TileEntityMachineRadiolysis; +import com.hbm.tileentity.machine.TileEntityMachineReactorBreeding; +import com.hbm.tileentity.machine.TileEntityMachineSatDock; +import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; +import com.hbm.tileentity.machine.TileEntityMachineShredderLarge; +import com.hbm.tileentity.machine.TileEntityMachineTurbofan; +import com.hbm.tileentity.machine.TileEntityMicrowave; +import com.hbm.tileentity.machine.TileEntityMultiblock; +import com.hbm.tileentity.machine.TileEntityPlasmaStruct; +import com.hbm.tileentity.machine.TileEntityRadioRec; +import com.hbm.tileentity.machine.TileEntityRadiobox; +import com.hbm.tileentity.machine.TileEntityReactorResearch; +import com.hbm.tileentity.machine.TileEntityReactorZirnox; +import com.hbm.tileentity.machine.TileEntitySILEX; +import com.hbm.tileentity.machine.TileEntitySawmill; +import com.hbm.tileentity.machine.TileEntitySolarBoiler; +import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; +import com.hbm.tileentity.machine.TileEntitySoyuzStruct; +import com.hbm.tileentity.machine.TileEntityStirling; +import com.hbm.tileentity.machine.TileEntityStorageDrum; +import com.hbm.tileentity.machine.TileEntityStructureMarker; +import com.hbm.tileentity.machine.TileEntityTesla; +import com.hbm.tileentity.machine.TileEntityTowerLarge; +import com.hbm.tileentity.machine.TileEntityTowerSmall; +import com.hbm.tileentity.machine.TileEntityVaultDoor; +import com.hbm.tileentity.machine.TileEntityWatz; +import com.hbm.tileentity.machine.TileEntityZirnoxDestroyed; +import com.hbm.tileentity.machine.oil.TileEntityMachineCatalyticCracker; +import com.hbm.tileentity.machine.oil.TileEntityMachineFrackingTower; +import com.hbm.tileentity.machine.oil.TileEntityMachineFractionTower; +import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; +import com.hbm.tileentity.machine.oil.TileEntityMachineLiquefactor; +import com.hbm.tileentity.machine.oil.TileEntityMachineOilWell; +import com.hbm.tileentity.machine.oil.TileEntityMachinePumpjack; +import com.hbm.tileentity.machine.oil.TileEntityMachineRefinery; +import com.hbm.tileentity.machine.oil.TileEntityMachineSolidifier; +import com.hbm.tileentity.machine.oil.TileEntitySpacer; +import com.hbm.tileentity.machine.rbmk.TileEntityCraneConsole; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKAbsorber; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBlank; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKCooler; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKModerator; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKOutgasser; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKReflector; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRodReaSim; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKStorage; +import com.hbm.tileentity.machine.storage.TileEntityBarrel; +import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; +import com.hbm.tileentity.machine.storage.TileEntityMachineOrbus; +import com.hbm.tileentity.machine.storage.TileEntityMachinePuF6Tank; +import com.hbm.tileentity.machine.storage.TileEntityMachineUF6Tank; +import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; +import com.hbm.tileentity.network.TileEntityConnector; +import com.hbm.tileentity.network.TileEntityPylon; +import com.hbm.tileentity.network.TileEntityPylonLarge; +import com.hbm.tileentity.network.TileEntitySubstation; +import com.hbm.tileentity.turret.TileEntityTurretArty; +import com.hbm.tileentity.turret.TileEntityTurretBrandon; +import com.hbm.tileentity.turret.TileEntityTurretCIWS; +import com.hbm.tileentity.turret.TileEntityTurretCheapo; +import com.hbm.tileentity.turret.TileEntityTurretChekhov; +import com.hbm.tileentity.turret.TileEntityTurretFlamer; +import com.hbm.tileentity.turret.TileEntityTurretFriendly; +import com.hbm.tileentity.turret.TileEntityTurretFritz; +import com.hbm.tileentity.turret.TileEntityTurretHIMARS; +import com.hbm.tileentity.turret.TileEntityTurretHeavy; +import com.hbm.tileentity.turret.TileEntityTurretHoward; +import com.hbm.tileentity.turret.TileEntityTurretHowardDamaged; +import com.hbm.tileentity.turret.TileEntityTurretJeremy; +import com.hbm.tileentity.turret.TileEntityTurretLight; +import com.hbm.tileentity.turret.TileEntityTurretMaxwell; +import com.hbm.tileentity.turret.TileEntityTurretRichard; +import com.hbm.tileentity.turret.TileEntityTurretRocket; +import com.hbm.tileentity.turret.TileEntityTurretSpitfire; +import com.hbm.tileentity.turret.TileEntityTurretTau; +import com.hbm.tileentity.turret.TileEntityTurretTauon; +import com.hbm.util.BobMathUtil; + +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -23,85 +655,14 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.MovingObjectPosition.MovingObjectType; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Vec3; -import net.minecraft.util.MovingObjectPosition.MovingObjectType; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.common.MinecraftForge; -import java.awt.Color; -import java.awt.Desktop; -import java.net.URI; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; -import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; -import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; -import com.hbm.entity.cart.*; -import com.hbm.entity.effect.*; -import com.hbm.entity.grenade.*; -import com.hbm.entity.item.*; -import com.hbm.entity.logic.*; -import com.hbm.entity.missile.*; -import com.hbm.entity.mob.*; -import com.hbm.entity.mob.botprime.*; -import com.hbm.entity.mob.siege.*; -import com.hbm.entity.particle.*; -import com.hbm.entity.projectile.*; -import com.hbm.handler.HbmKeybinds; -import com.hbm.handler.HbmKeybinds.EnumKeybind; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoHandGrenade; -import com.hbm.particle.*; -import com.hbm.render.anim.*; -import com.hbm.render.anim.HbmAnimations.Animation; -import com.hbm.render.block.*; -import com.hbm.render.entity.*; -import com.hbm.render.entity.effect.*; -import com.hbm.render.entity.item.*; -import com.hbm.render.entity.mob.*; -import com.hbm.render.entity.projectile.*; -import com.hbm.render.entity.rocket.*; -import com.hbm.render.item.*; -import com.hbm.render.item.block.*; -import com.hbm.render.item.weapon.*; -import com.hbm.render.loader.HmfModelLoader; -import com.hbm.render.tileentity.*; -import com.hbm.render.util.MissilePart; -import com.hbm.render.util.RenderInfoSystem; -import com.hbm.render.util.RenderInfoSystem.InfoEntry; -import com.hbm.sound.AudioWrapper; -import com.hbm.sound.AudioWrapperClient; -import com.hbm.sound.AudioWrapperClientStartStop; -import com.hbm.sound.nt.ISoundSourceTE; -import com.hbm.sound.nt.SoundWrapper; -import com.hbm.sound.nt.SoundWrapperClient; -import com.hbm.tileentity.TileEntityDoorGeneric; -import com.hbm.tileentity.bomb.*; -import com.hbm.tileentity.conductor.*; -import com.hbm.tileentity.deco.*; -import com.hbm.tileentity.machine.*; -import com.hbm.tileentity.machine.oil.*; -import com.hbm.tileentity.machine.rbmk.*; -import com.hbm.tileentity.machine.storage.*; -import com.hbm.tileentity.network.*; -import com.hbm.tileentity.turret.*; -import com.hbm.util.BobMathUtil; - -import cpw.mods.fml.client.registry.ClientRegistry; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.relauncher.ReflectionHelper; - public class ClientProxy extends ServerProxy { public RenderInfoSystem theInfoSystem = new RenderInfoSystem(); @@ -1817,9 +2378,12 @@ public class ClientProxy extends ServerProxy { break; } case "casing": - final SpentCasingConfig casingConfig = SpentCasingConfig.get(data.getString("name")); - for (int i = 0; i < casingConfig.getCasingAmount(); i++) - casingConfig.spawnCasing(man, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); + if (WeaponConfig.spawnCasings) + { + final SpentCasingConfig casingConfig = SpentCasingConfig.get(data.getString("name")); + for (int i = 0; i < casingConfig.getCasingAmount(); i++) + casingConfig.spawnCasing(man, world, x, y, z, data.getFloat("pitch"), data.getFloat("yaw"), data.getBoolean("crouched")); + } break; default: break; @@ -1859,12 +2423,6 @@ public class ClientProxy extends ServerProxy { return audio; } - @Override - public SoundWrapper getTileSound(String sound, ISoundSourceTE tile) { - SoundWrapperClient wrapper = new SoundWrapperClient(sound, tile); - return wrapper; - } - @Override public void playSound(String sound, Object data) { } diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index 9a8f17ce2..aa28b5f51 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -4,9 +4,8 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.saveddata.TomSaveData; import com.hbm.sound.AudioWrapper; -import com.hbm.sound.nt.ISoundSourceTE; -import com.hbm.sound.nt.SoundWrapper; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -14,7 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public abstract class ServerProxy { +public class ServerProxy { //sort by estimated time of display. longer lasting ones should be sorted at the top. public static final int ID_DUCK = 0; @@ -28,47 +27,59 @@ public abstract class ServerProxy { public static final int ID_GUN_MODE = 8; public static final int ID_GAS_HAZARD = 9; - public abstract void registerRenderInfo(); - public abstract void registerTileEntitySpecialRenderer(); - public abstract void registerItemRenderer(); - public abstract void registerEntityRenderer(); - public abstract void registerBlockRenderer(); + public void registerRenderInfo() { } + public void registerTileEntitySpecialRenderer() { } + public void registerItemRenderer() { } + public void registerEntityRenderer() { } + public void registerBlockRenderer() { } - public abstract void particleControl(double x, double y, double z, int type); + public void particleControl(double x, double y, double z, int type) { } - public abstract void spawnParticle(double x, double y, double z, String type, float... args); + public void spawnParticle(double x, double y, double z, String type, float[] args) { } - public abstract void effectNT(NBTTagCompound data); + public void effectNT(NBTTagCompound data) { } - public abstract void registerMissileItems(); + public void registerMissileItems() { } - public abstract AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch); - public abstract AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch); + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; } + public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; } - public abstract void playSound(String sound, Object data); + public void playSound(String sound, Object data) { } public void displayTooltip(String msg, int id) { displayTooltip(msg, 1000, id); } - public abstract void displayTooltip(String msg, int time, int id); + public void displayTooltip(String msg, int time, int id) { } - public abstract boolean getIsKeyPressed(EnumKeybind key); - public abstract EntityPlayer me(); - - public abstract boolean isVanished(Entity e); - - public abstract void openLink(String url); - - @SuppressWarnings({ "unused", "static-method" }) - public SoundWrapper getTileSound(String sound, ISoundSourceTE source) { - return new SoundWrapper(); + public boolean getIsKeyPressed(EnumKeybind key) { + return false; } + public EntityPlayer me() { + return null; + } + + public boolean isVanished(Entity e) { + return false; + } + + public void openLink(String url) { } - @SuppressWarnings("static-method") public List getSubItems(ItemStack stack) { - List list = new ArrayList(); + List list = new ArrayList<>(); list.add(stack); return list; } + + public float getImpactDust(World world) { + return TomSaveData.forWorld(world).dust; + } + + public float getImpactFire(World world) { + return TomSaveData.forWorld(world).fire; + } + + public boolean getImpact(World world) { + return TomSaveData.forWorld(world).impact; + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index ae401cb95..7667d7ef7 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -14,24 +14,24 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.util.Vec3; import net.minecraft.world.World; @SideOnly(Side.CLIENT) public class ParticleSpentCasing extends EntityFX { - private static final float dScale = 0.05f, smokeJitter = 0.025f; - private static final byte smokeAccel = 1; + private static final float dScale = 0.05f;//, smokeJitter = 0.025f, smokeAccel = 0.5f; +// private static final byte maxSmokeGen = 60, maxSmokeLife = 120; private final List> smokeNodes = new ArrayList>(); private final TextureManager textureManager; - private final float momentumPitch, momentumYaw; private final SpentCasingConfig config; - private final boolean smoke; +// private final boolean smoke; + private float momentumPitch, momentumYaw; private boolean onGroundPreviously = false; + private double maxHeight; public ParticleSpentCasing(TextureManager textureManager, World world, double x, double y, double z, double mx, double my, double mz, float momentumPitch, float momentumYaw, SpentCasingConfig config) { super(world, x, y, z, 0, 0, 0); @@ -41,15 +41,17 @@ public class ParticleSpentCasing extends EntityFX this.config = config; particleMaxAge = 240; - smoke = config.getSmokeChance() == 0 ? true - : config.getSmokeChance() < 0 ? false - : rand.nextInt(config.getSmokeChance()) == 0; +// smoke = config.getSmokeChance() == 0 ? true +// : config.getSmokeChance() < 0 ? false +// : rand.nextInt(config.getSmokeChance()) == 0; motionX = mx; motionY = my; motionZ = mz; particleGravity = 8f; + + maxHeight = y; } @Override @@ -63,38 +65,48 @@ public class ParticleSpentCasing extends EntityFX { super.onUpdate(); - if (!onGroundPreviously && onGround) - onGroundPreviously = true; - else if (onGroundPreviously && !onGround) - onGroundPreviously = false; - + if (motionY > 0 && posY > maxHeight) + maxHeight = posY; + if (!onGroundPreviously && onGround) tryPlayBounceSound(); - if (particleAge > 120 && !smokeNodes.isEmpty()) - smokeNodes.clear(); - - if (smoke && particleAge <= 120) + // TODO Bounce factor in config + if (!onGroundPreviously && onGround) { - final double side = (rotationYaw - prevRotationYaw) * 0.1D; - final Vec3 prev = Vec3.createVectorHelper(motionX, -motionY, motionZ); - prev.rotateAroundY((float) Math.toRadians(rotationYaw)); + onGroundPreviously = true; + motionY = Math.log10(maxHeight - posY + 2); + momentumPitch = (float) rand.nextGaussian() * config.getPitchFactor(); + momentumYaw = (float) rand.nextGaussian() * config.getYawFactor(); - for (Pair pair : smokeNodes) - { - final EasyLocation node = pair.getKey(); - - node.posX += prev.xCoord * smokeAccel + rand.nextGaussian() * smokeJitter + side; - node.posY += prev.yCoord + 1.5; - node.posZ += prev.zCoord * smokeAccel + rand.nextGaussian() * smokeJitter; - } - - if (particleAge < 60) - { - final double alpha = (particleAge / 20d); - smokeNodes.add(new Pair(EasyLocation.getZeroLocation(), alpha)); - } - } + maxHeight = posY; + } else if (onGroundPreviously && !onGround) + onGroundPreviously = false; + +// if (particleAge > maxSmokeLife && !smokeNodes.isEmpty()) +// smokeNodes.clear(); + +// if (smoke && particleAge <= maxSmokeLife) +// { +// final double side = (rotationYaw - prevRotationYaw) * 0.1D; +// final Vec3 prev = Vec3.createVectorHelper(motionX, motionY, motionZ); +// prev.rotateAroundY((float) Math.toRadians(rotationYaw)); +// +// for (Pair pair : smokeNodes) +// { +// final EasyLocation node = pair.getKey(); +// +// node.posX += prev.xCoord * smokeAccel + rand.nextGaussian() * smokeJitter + side; +// node.posY += prev.yCoord + smokeAccel; +// node.posZ += prev.zCoord * smokeAccel + rand.nextGaussian() * smokeJitter; +// } +// +// if (particleAge < maxSmokeGen || inWater) +// { +// final double alpha = (particleAge / 20d); +// smokeNodes.add(new Pair(EasyLocation.getZeroLocation(), alpha)); +// } +// } prevRotationPitch = rotationPitch; prevRotationYaw = rotationYaw; @@ -188,7 +200,8 @@ public class ParticleSpentCasing extends EntityFX private void tryPlayBounceSound() { if (!config.getBounceSound().isEmpty()) - worldObj.playSoundEffect(posX, posY, posZ, config.getBounceSound(), 1, 1); + worldObj.playSoundAtEntity(this, config.getBounceSound(), 2, 1); +// playSound(config.getBounceSound(), 2, 1); } // private static float[] getOffset(float time) diff --git a/src/main/java/com/hbm/particle/SpentCasingConfig.java b/src/main/java/com/hbm/particle/SpentCasingConfig.java index 8fd314de4..e6b07db31 100644 --- a/src/main/java/com/hbm/particle/SpentCasingConfig.java +++ b/src/main/java/com/hbm/particle/SpentCasingConfig.java @@ -66,7 +66,7 @@ public class SpentCasingConfig private final byte delay; /**Chance for the casing to emit smoke. 0 for 100% chance and -1 for it to never make smoke.**/ private final byte smokeChance; - + // TODO Setting to disregard crouch effect and/or another offset specifically for crouching which can be set to null to use the default one public SpentCasingConfig( String registryName, ILocationProvider posOffset, Vec3 initialMotion, float pitchFactor, float yawFactor, float scaleX, float scaleY, float scaleZ, int redOverride, int greenOverride, int blueOverride, diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index 0428ec19b..e3d742f2b 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -1,8 +1,10 @@ package com.hbm.util; +import com.hbm.interfaces.ILocationProvider; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.particle.SpentCasingConfig; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; @@ -27,4 +29,27 @@ public class ParticleUtil { PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 150)); } } + + /** + * Spawn a spent shell casing. + * @param location Location to spawn from. + * @param config The shell casing configuration to use. + * @param pitch Pitch rotation in radians. + * @param yaw Yaw rotation in radians. + * @param heightAdjustment Height adjustment. + * @param sneaking Assume from a sneaking/crouched entity. + */ + public static void spawnCasing(ILocationProvider location, SpentCasingConfig config, float pitch, float yaw, float heightAdjustment, boolean sneaking) + { + final NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "casing"); + data.setDouble("posX", location.posX()); + data.setDouble("posY", location.posY() + heightAdjustment); + data.setDouble("posZ", location.posZ()); + data.setFloat("pitch", pitch); + data.setFloat("yaw", yaw); + data.setBoolean("crouched", sneaking); + data.setString("name", config.getRegistryName()); + MainRegistry.proxy.effectNT(data); + } } diff --git a/src/main/java/com/hbm/util/Quaternion.java b/src/main/java/com/hbm/util/Quaternion.java deleted file mode 100644 index 21aa12ed9..000000000 --- a/src/main/java/com/hbm/util/Quaternion.java +++ /dev/null @@ -1,302 +0,0 @@ -package com.hbm.util; - -import java.io.Serializable; -import java.util.Objects; - -import com.hbm.interfaces.IByteSerializable; -import com.hbm.interfaces.INBTSerializable; -import com.hbm.main.DeserializationException; - -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; - -/** - * Credits to Apache for the basic structure. - * @author UFFR - * - */ -public class Quaternion implements Serializable, Cloneable, IByteSerializable, INBTSerializable -{ - /** - * - */ - private static final long serialVersionUID = -403051011515625947L; - private double w, x, y, z; - - public Quaternion(double pitch, double yaw) - { - final double rPitch = Math.toRadians(pitch), - rYaw = Math.toRadians(yaw), - - cp = Math.cos(rPitch * 0.5), - sp = Math.sin(rPitch * 0.5), - cy = Math.cos(rYaw * 0.5), - sy = Math.sin(rYaw * 0.5); - - w = cy * sp; - x = sy * cp; - y = sy * cp; - z = cy * cp; - } - - public Quaternion(double roll, double pitch, double yaw) - { - final double rRoll = Math.toRadians(roll), - rPitch = Math.toRadians(pitch), - rYaw = Math.toRadians(yaw), - - cr = Math.cos(rRoll * 0.5), - sr = Math.sin(rRoll * 0.5), - cp = Math.cos(rPitch * 0.5), - sp = Math.sin(rPitch * 0.5), - cy = Math.cos(rYaw * 0.5), - sy = Math.sin(rYaw * 0.5); - - w = cr * cp * cy + sr * sp * sy; - x = sr * cp * cy - cr * sp * sy; - y = cr * sp * cy + sr * cp * sy; - z = cr * cp * sy - sr * sp * cy; - - } - - public Quaternion(double w, double x, double y, double z) - { - this.w = w; - this.x = x; - this.y = y; - this.z = z; - } - - public Quaternion(double w, Vec3 vec3) - { - this.w = w; - - x = vec3.xCoord; - y = vec3.yCoord; - z = vec3.zCoord; - } - - public Quaternion(Vec3 vec3) - { - this(0, vec3); - } - - public Quaternion(double w, double[] vector) - { - if (vector.length != 3) - throw new IllegalArgumentException("Vector argument must only have 3 values!"); - - this.w = w; - - x = vector[0]; - y = vector[1]; - z = vector[2]; - } - - public Quaternion(double[] vector) - { - this(0, vector); - } - - public Quaternion getConjugate() - { - return new Quaternion(w, -x, -y, -z); - } - - public Quaternion add(Quaternion q) - { - return add(this, q); - } - - public Quaternion subtract(Quaternion q) - { - return subtract(this, q); - } - - public Quaternion multiply(Quaternion q) - { - return multiply(this, q); - } - - public Quaternion dotProduct(Quaternion q) - { - return dotProduct(this, q); - } - - public double getNorm() - { - return Math.sqrt(w * w + x * x + y * y + z * z); - } - - public Quaternion normalize() - { - final double norm = getNorm(); - if (norm < Double.MIN_NORMAL) - throw new ArithmeticException("Quaternion norm zero!"); - - return new Quaternion( - w / norm, - x / norm, - y / norm, - z / norm); - } - - public double getPitch() - { - return Math.atan2(2 * (y * z + w * x), w * w - x * x - y * y + z * z); - } - - public double getYaw() - { - return Math.asin(-2 * (x * z - w * y)); - } - - public double getRoll() - { - return Math.atan2(2 * (x * y + w * z), w * w + x * x - y * y - z * z); - } - - public static Quaternion add(Quaternion q1, Quaternion q2) - { - return new Quaternion(q1.w + q2.w, q1.x + q2.x, q1.y + q2.y, q1.z + q2.z); - } - - public static Quaternion subtract(Quaternion q1, Quaternion q2) - { - return new Quaternion(q1.w - q2.w, q1.x - q2.x, q1.y - q2.y, q1.z - q2.z); - } - - public static Quaternion multiply(Quaternion q1, Quaternion q2) - { - return new Quaternion( - q1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z, - q1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y, - q1.w * q2.y - q1.x * q2.z + q1.y * q2.w + q1.z * q2.x, - q1.w * q2.z + q1.x * q2.y - q1.y * q2.x + q1.z * q2.w - ); - } - - public static Quaternion dotProduct(Quaternion q1, Quaternion q2) - { - return new Quaternion(q1.w * q2.w, q1.x * q2.x, q1.y * q2.y, q1.z * q2.z); - } - - public static Vec3 rotate(Quaternion q, Vec3 vec3) - { - return q.multiply(new Quaternion(vec3)).multiply(q.getConjugate()).getVector(); - } - - public static Vec3 rotate(Quaternion q, Vec3 vec3, Vec3 origin) - { - return q.multiply(new Quaternion(vec3.subtract(origin))).multiply(q.getConjugate()).getVector().addVector(origin.xCoord, origin.yCoord, origin.zCoord); - } - - public double getW() - { - return w; - } - - public double getX() - { - return x; - } - - public double getY() - { - return y; - } - - public double getZ() - { - return z; - } - - public Vec3 getVector() - { - return Vec3.createVectorHelper(x, y, z); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - nbt.setDouble("w", w); - nbt.setDouble("x", x); - nbt.setDouble("y", y); - nbt.setDouble("z", z); - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - w = nbt.getDouble("w"); - x = nbt.getDouble("x"); - y = nbt.getDouble("y"); - z = nbt.getDouble("z"); - } - - @Override - public void writeToBytes(ByteBuf buf) - { - buf.writeDouble(w).writeDouble(x).writeDouble(y).writeDouble(z); - } - - @Override - public void readFromBytes(byte[] bytes) throws DeserializationException - { - try - { - final ByteBuf buf = Unpooled.copiedBuffer(bytes); - w = buf.readDouble(); - x = buf.readDouble(); - y = buf.readDouble(); - z = buf.readDouble(); - } catch (Exception e) - { - throw new DeserializationException(e); - } - } - - @Override - public int hashCode() - { - return Objects.hash(w, x, y, z); - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) - return true; - if (!(obj instanceof Quaternion)) - return false; - final Quaternion other = (Quaternion) obj; - return Double.doubleToLongBits(w) == Double.doubleToLongBits(other.w) - && Double.doubleToLongBits(x) == Double.doubleToLongBits(other.x) - && Double.doubleToLongBits(y) == Double.doubleToLongBits(other.y) - && Double.doubleToLongBits(z) == Double.doubleToLongBits(other.z); - } - - @Override - public String toString() - { - final StringBuilder builder = new StringBuilder(); - builder.append("Quaternion [w=").append(w).append(", x=").append(x).append(", y=").append(y).append(", z=") - .append(z).append(']'); - return builder.toString(); - } - - @Override - public Quaternion clone() - { - try - { - return (Quaternion) super.clone(); - } catch (CloneNotSupportedException e) - { - return new Quaternion(w, x, y, z); - } - } - -} diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index ac277b9c5..9b3d481fb 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -188,6 +188,10 @@ "weapon.LMGMagInPB3": {"category": "player", "sounds": [{"name": "weapon/LMGIN", "stream": false}]}, "weapon.LMGCockPB3": {"category": "player", "sounds": [{"name": "weapon/LMGCLK", "stream": false}]}, "weapon.shotgunDrumPB3": {"category": "player", "sounds": ["weapon/ASGDRM1", "weapon/ASGDRM2"]}, + "weapon.shotgunShellBouncePB3": {"category": "player", "sounds": ["weapon/DSSHELL1", "weapon/DSSHELL2", "weapon/DSSHELL3"]}, + "weapon.smallCasingBouncePB3": {"category": "player", "sounds": ["weapon/BRASS_C1", "weapon/BRASS_C2", "weapon/BRASS_C3", "weapon/BRASS_C4", "weapon/BRASS_C5"]}, + "weapon.smallMagBouncePB3": {"category": "player", "sounds": ["weapon/DSAOUNC1", "weapon/DSAOUNC2", "weapon/DSAOUNC3", "weapon/DSAOUNC4"]}, + "weapon.largeMagBouncePB3": {"category": "player", "sounds": ["weapon/DSBOUNC1", "weapon/DSBOUNC2", "weapon/DSBOUNC3", "weapon/DSBOUNC4"]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/BRASS_C1.ogg b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C1.ogg new file mode 100644 index 000000000..0398dc877 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/BRASS_C2.ogg b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C2.ogg new file mode 100644 index 000000000..c16753f77 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/BRASS_C3.ogg b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C3.ogg new file mode 100644 index 000000000..62d7a52c7 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/BRASS_C4.ogg b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C4.ogg new file mode 100644 index 000000000..a94b20783 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C4.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/BRASS_C5.ogg b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C5.ogg new file mode 100644 index 000000000..79890e955 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/BRASS_C5.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC1.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC1.ogg new file mode 100644 index 000000000..45eb3c8f3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC2.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC2.ogg new file mode 100644 index 000000000..6179b6366 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC3.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC3.ogg new file mode 100644 index 000000000..6b09798ca Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC4.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC4.ogg new file mode 100644 index 000000000..bf41335ad Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSAOUNC4.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC1.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC1.ogg new file mode 100644 index 000000000..100fc5dd0 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC2.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC2.ogg new file mode 100644 index 000000000..236c0e767 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC3.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC3.ogg new file mode 100644 index 000000000..ca6ed3ed9 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC4.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC4.ogg new file mode 100644 index 000000000..b13d8dc34 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSBOUNC4.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSSHELL1.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL1.ogg new file mode 100644 index 000000000..a64fffc51 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSSHELL2.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL2.ogg new file mode 100644 index 000000000..98983bf66 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/DSSHELL3.ogg b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL3.ogg new file mode 100644 index 000000000..dc15231c6 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/DSSHELL3.ogg differ