mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Tinkering + config
More tinkering, also tried to implement bounce sound effects, but they don't seem to work. Added a config to disable casings. Commented out smoke effect because it wasn't working out.
This commit is contained in:
parent
754f88a42f
commit
57f9bbf404
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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(),
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
|
||||
@ -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(),
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
|
||||
@ -241,8 +241,8 @@ public class Gun50BMGFactory {
|
||||
config.manufacturer = EnumGunManufacturer.ARMALITE;
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
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;
|
||||
|
||||
@ -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<Integer>();
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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<AmmoItemTrait> traits;
|
||||
private final BulletConfiguration config;
|
||||
private Ammo50BMG(BulletConfiguration config, AmmoItemTrait...traits)
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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 <T> List<T> mergeWithoutDuplicates(List<T>...lists)
|
||||
{
|
||||
final List<T> totalList = new ArrayList<T>();
|
||||
for (List<T> list : lists)
|
||||
totalList.addAll(list);
|
||||
return listWithoutDuplicates(totalList);
|
||||
}
|
||||
|
||||
public static <T> List<T> listWithoutDuplicates(List<T> list)
|
||||
{
|
||||
return list.stream().distinct().collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static <T> void removeListDuplicates(List<T> list)
|
||||
{
|
||||
final List<T> 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.
|
||||
*/
|
||||
|
||||
@ -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) { }
|
||||
|
||||
|
||||
@ -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<ItemStack> getSubItems(ItemStack stack) {
|
||||
|
||||
List<ItemStack> list = new ArrayList<ItemStack>();
|
||||
List<ItemStack> 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;
|
||||
}
|
||||
}
|
||||
@ -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<Pair<EasyLocation, Double>> smokeNodes = new ArrayList<Pair<EasyLocation, Double>>();
|
||||
|
||||
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<EasyLocation, Double> 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, Double>(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<EasyLocation, Double> 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, Double>(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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -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}]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C1.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C2.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C2.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C3.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C3.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C4.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C4.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C5.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/BRASS_C5.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC1.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC2.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC2.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC3.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC3.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC4.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSAOUNC4.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC1.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC2.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC2.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC3.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC3.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC4.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSBOUNC4.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL1.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL2.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL2.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL3.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/DSSHELL3.ogg
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user