lots of gun fixes and improvements, dynamic audio sources
@ -1466,6 +1466,7 @@ item.ammo_50bmg_du.name=.50 BMG Patrone (DU)
|
||||
item.ammo_9mm.name=9mm Patrone
|
||||
item.ammo_9mm_ap.name=9mm Patrone (Panzerbrechend)
|
||||
item.ammo_9mm_du.name=9mm Patrone (DU)
|
||||
item.ammo_9mm_rocket.name=9mm Rakete
|
||||
item.ammo_22lr.name=.22 LR Patrone
|
||||
item.ammo_22lr_ap.name=.22 LR Patrone (Panzerbrechend)
|
||||
item.ammo_folly_taint.name=Silbernes Geschoss (Original)
|
||||
@ -1477,6 +1478,7 @@ item.ammo_44_ap.name=.44 Magnum Patrone (Panzerbrechend)
|
||||
item.ammo_44_du.name=.44 Magnum Patrone (DU)
|
||||
item.ammo_44_pip.name=.44 Magnum Patrone (Güterwagon)
|
||||
item.ammo_44_bj.name=.44 Magnum Patrone (Boot)
|
||||
item.ammo_44_rocket.name=.44 Magnum Rakete
|
||||
item.ammo_rocket.name=84mm Rakete
|
||||
item.ammo_rocket_he.name=84mm Rakete (HE)
|
||||
item.ammo_rocket_incendiary.name=84mm Rakete (Brand)
|
||||
|
||||
@ -1466,6 +1466,7 @@ item.ammo_50bmg_du.name=.50 BMG Round (DU)
|
||||
item.ammo_9mm.name=9mm Round
|
||||
item.ammo_9mm_ap.name=9mm Round (Armor Piercing)
|
||||
item.ammo_9mm_du.name=9mm Round (DU)
|
||||
item.ammo_9mm_rocket.name=9mm Rocket
|
||||
item.ammo_22lr.name=.22 LR Round
|
||||
item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing)
|
||||
item.ammo_folly.name=Silver Bullet (Original)
|
||||
@ -1477,6 +1478,7 @@ item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing)
|
||||
item.ammo_44_du.name=.44 Magnum Bullet (DU)
|
||||
item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar)
|
||||
item.ammo_44_bj.name=.44 Magnum Bullet (Boat)
|
||||
item.ammo_44_rocket.name=.44 Magnum Rocket
|
||||
item.ammo_rocket.name=84mm Rocket
|
||||
item.ammo_rocket_he.name=84mm Rocket (HE)
|
||||
item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary)
|
||||
|
||||
@ -63,10 +63,12 @@
|
||||
"weapon.osiprShoot": {"category": "player", "sounds": [{"name": "weapon/osiprShoot", "stream": false}]},
|
||||
"weapon.osiprAltFire": {"category": "player", "sounds": [{"name": "weapon/osiprAltFire", "stream": false}]},
|
||||
"weapon.osiprCharging": {"category": "player", "sounds": [{"name": "weapon/osiprCharging", "stream": false}]},
|
||||
"weapon.osiprReload": {"category": "player", "sounds": [{"name": "weapon/osiprReload", "stream": false}]},
|
||||
"weapon.singFlyby": {"category": "player", "sounds": [{"name": "weapon/singFlyby", "stream": false}]},
|
||||
"weapon.rifleShoot": {"category": "player", "sounds": [{"name": "weapon/rifleShoot", "stream": false}]},
|
||||
"weapon.rpgShoot": {"category": "player", "sounds": [{"name": "weapon/rpgShoot", "stream": false}]},
|
||||
"weapon.fatmanShoot": {"category": "player", "sounds": [{"name": "weapon/fatmanShoot", "stream": false}]},
|
||||
"weapon.fatmanReload": {"category": "player", "sounds": [{"name": "weapon/fatmanReload", "stream": false}]},
|
||||
"weapon.zomgShoot": {"category": "player", "sounds": [{"name": "weapon/zomgShoot", "stream": false}]},
|
||||
"weapon.flamethrowerIgnite": {"category": "player", "sounds": [{"name": "weapon/flamethrowerIgnite", "stream": false}]},
|
||||
"weapon.flamethrowerShoot": {"category": "player", "sounds": [{"name": "weapon/flamethrowerShoot", "stream": false}]},
|
||||
|
||||
BIN
assets/hbm/sounds/weapon/fatmanReload.ogg
Normal file
BIN
assets/hbm/sounds/weapon/osiprReload.ogg
Normal file
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
BIN
assets/hbm/textures/items/ammo_44_rocket.png
Normal file
|
After Width: | Height: | Size: 319 B |
BIN
assets/hbm/textures/items/ammo_9mm_rocket.png
Normal file
|
After Width: | Height: | Size: 313 B |
BIN
assets/hbm/textures/items/wire_advanced_alloy_new.png
Normal file
|
After Width: | Height: | Size: 320 B |
BIN
assets/hbm/textures/items/wire_aluminium_new.png
Normal file
|
After Width: | Height: | Size: 315 B |
BIN
assets/hbm/textures/items/wire_blank.png
Normal file
|
After Width: | Height: | Size: 437 B |
|
Before Width: | Height: | Size: 233 B |
BIN
assets/hbm/textures/items/wire_copper_new.png
Normal file
|
After Width: | Height: | Size: 330 B |
BIN
assets/hbm/textures/items/wire_gold_new.png
Normal file
|
After Width: | Height: | Size: 304 B |
BIN
assets/hbm/textures/items/wire_magnetized_tungsten_new.png
Normal file
|
After Width: | Height: | Size: 319 B |
BIN
assets/hbm/textures/items/wire_red_copper_new.png
Normal file
|
After Width: | Height: | Size: 327 B |
BIN
assets/hbm/textures/items/wire_schrabidium_new.png
Normal file
|
After Width: | Height: | Size: 325 B |
BIN
assets/hbm/textures/items/wire_tungsten_new.png
Normal file
|
After Width: | Height: | Size: 293 B |
@ -551,7 +551,7 @@ public class ModBlocks {
|
||||
public static final int guiID_launch_table = 84;
|
||||
|
||||
public static Block soyuz_launcher;
|
||||
public static final int guiID_soyuz_launcher = 85;
|
||||
public static final int guiID_soyuz_launcher = 86;
|
||||
|
||||
public static Block machine_radar;
|
||||
public static final int guiID_radar = 59;
|
||||
|
||||
@ -347,6 +347,12 @@ public class EntityBulletBase extends Entity implements IProjectile {
|
||||
if(this.ticksExisted > config.maxAge)
|
||||
this.setDead();
|
||||
|
||||
if(worldObj.isRemote && !config.vPFX.isEmpty()) {
|
||||
for (i = 0; i < 8; ++i) {
|
||||
this.worldObj.spawnParticle(config.vPFX, this.posX - this.motionX * i / 1.0D, this.posY - this.motionY * i / 1.0D, this.posZ - this.motionZ * i / 1.0D, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
|
||||
//this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
|
||||
}
|
||||
@ -354,6 +360,9 @@ public class EntityBulletBase extends Entity implements IProjectile {
|
||||
//for when a bullet dies by hitting a block
|
||||
private void onBlockImpact(int bX, int bY, int bZ) {
|
||||
|
||||
if(config.bImpact != null)
|
||||
config.bImpact.behaveBlockHit(this, bX, bY, bZ);
|
||||
|
||||
if(!worldObj.isRemote)
|
||||
this.setDead();
|
||||
|
||||
@ -453,13 +462,8 @@ public class EntityBulletBase extends Entity implements IProjectile {
|
||||
//for when a bullet dies by hitting a block
|
||||
private void onRicochet(int bX, int bY, int bZ) {
|
||||
|
||||
if(!worldObj.isRemote && config.destroysWood &&
|
||||
(worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves))
|
||||
worldObj.func_147480_a(bX, bY, bZ, false);
|
||||
|
||||
if(config.bRicochet != null)
|
||||
config.bRicochet.behaveBlockRicochet(this, bX, bY, bZ);
|
||||
}
|
||||
|
||||
//for when a bullet dies by hitting an entity
|
||||
@ -467,6 +471,9 @@ public class EntityBulletBase extends Entity implements IProjectile {
|
||||
onEntityHurt(e);
|
||||
onBlockImpact(-1, -1, -1);
|
||||
|
||||
if(config.bHit != null)
|
||||
config.bHit.behaveEntityHit(this, e);
|
||||
|
||||
if(config.boxcar && !worldObj.isRemote) {
|
||||
EntityBoxcar pippo = new EntityBoxcar(worldObj);
|
||||
pippo.posX = e.posX;
|
||||
@ -505,6 +512,9 @@ public class EntityBulletBase extends Entity implements IProjectile {
|
||||
//for when a bullet hurts an entity, not necessarily dying
|
||||
private void onEntityHurt(Entity e) {
|
||||
|
||||
if(config.bHurt != null)
|
||||
config.bHurt.behaveEntityHurt(this, e);
|
||||
|
||||
if(config.incendiary > 0 && !worldObj.isRemote) {
|
||||
e.setFire(config.incendiary);
|
||||
}
|
||||
|
||||
@ -80,10 +80,12 @@ public class BulletConfigSyncingUtil {
|
||||
public static final int M44_DU = 0x62;
|
||||
public static final int M44_PIP = 0x63;
|
||||
public static final int M44_BJ = 0x64;
|
||||
public static final int M44_ROCKET = 0x65;
|
||||
|
||||
public static final int P9_NORMAL = 0x70;
|
||||
public static final int P9_AP = 0x71;
|
||||
public static final int P9_DU = 0x72;
|
||||
public static final int P9_ROCKET = 0x73;
|
||||
|
||||
public static final int BMG50_NORMAL = 0x80;
|
||||
public static final int BMG50_INCENDIARY = 0x81;
|
||||
@ -101,6 +103,23 @@ public class BulletConfigSyncingUtil {
|
||||
public static final int AE50_AP = 0xA1;
|
||||
public static final int AE50_DU = 0xA2;
|
||||
|
||||
public static final int SPECIAL_OSIPR = 0xB0;
|
||||
public static final int SPECIAL_GAUSS = 0xB1;
|
||||
public static final int SPECIAL_GAUSS_CHARGED = 0xB2;
|
||||
|
||||
public static final int G20_NORMAL_FIRE = 0xC0;
|
||||
public static final int G20_SLUG_FIRE = 0xC1;
|
||||
public static final int G20_FLECHETTE_FIRE = 0xC2;
|
||||
public static final int G20_EXPLOSIVE_FIRE = 0xC3;
|
||||
public static final int G20_CAUSTIC_FIRE = 0xC4;
|
||||
public static final int G20_SHOCK_FIRE = 0xC5;
|
||||
public static final int G20_WITHER_FIRE = 0xC6;
|
||||
|
||||
public static final int NUKE_NORMAL = 0xD0;
|
||||
public static final int NUKE_MIRV = 0xD1;
|
||||
public static final int NUKE_AMAT = 0xD2;
|
||||
public static final int NUKE_PROTO = 0xD3;
|
||||
|
||||
public static void loadConfigsForSync() {
|
||||
|
||||
configSet.add(new ConfigKeyPair(BulletConfigFactory.getTestConfig(), TEST_CONFIG));
|
||||
@ -158,10 +177,12 @@ public class BulletConfigSyncingUtil {
|
||||
configSet.add(new ConfigKeyPair(Gun44MagnumFactory.getNoPipDUConfig(), M44_DU));
|
||||
configSet.add(new ConfigKeyPair(Gun44MagnumFactory.getPipConfig(), M44_PIP));
|
||||
configSet.add(new ConfigKeyPair(Gun44MagnumFactory.getBJConfig(), M44_BJ));
|
||||
configSet.add(new ConfigKeyPair(Gun44MagnumFactory.getRocketConfig(), M44_ROCKET));
|
||||
|
||||
configSet.add(new ConfigKeyPair(Gun9mmFactory.get9mmConfig(), P9_NORMAL));
|
||||
configSet.add(new ConfigKeyPair(Gun9mmFactory.get9mmAPConfig(), P9_AP));
|
||||
configSet.add(new ConfigKeyPair(Gun9mmFactory.get9mmDUConfig(), P9_DU));
|
||||
configSet.add(new ConfigKeyPair(Gun9mmFactory.get9mmRocketConfig(), P9_ROCKET));
|
||||
|
||||
configSet.add(new ConfigKeyPair(Gun50BMGFactory.get50BMGConfig(), BMG50_NORMAL));
|
||||
configSet.add(new ConfigKeyPair(Gun50BMGFactory.get50BMGFireConfig(), BMG50_INCENDIARY));
|
||||
@ -178,6 +199,21 @@ public class BulletConfigSyncingUtil {
|
||||
configSet.add(new ConfigKeyPair(Gun50AEFactory.get50AEConfig(), AE50_NORMAL));
|
||||
configSet.add(new ConfigKeyPair(Gun50AEFactory.get50APConfig(), AE50_AP));
|
||||
configSet.add(new ConfigKeyPair(Gun50AEFactory.get50DUConfig(), AE50_DU));
|
||||
|
||||
configSet.add(new ConfigKeyPair(GunOSIPRFactory.getPulseConfig(), SPECIAL_OSIPR));
|
||||
configSet.add(new ConfigKeyPair(GunGaussFactory.getGaussConfig(), SPECIAL_GAUSS));
|
||||
configSet.add(new ConfigKeyPair(GunGaussFactory.getAltConfig(), SPECIAL_GAUSS_CHARGED));
|
||||
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeConfig().setToFire(3), G20_NORMAL_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeSlugConfig().setToFire(3), G20_SLUG_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeFlechetteConfig().setToFire(3), G20_FLECHETTE_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeExplosiveConfig().setToFire(3), G20_EXPLOSIVE_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeCausticConfig().setToFire(3), G20_CAUSTIC_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeShockConfig().setToFire(3), G20_SHOCK_FIRE));
|
||||
configSet.add(new ConfigKeyPair(Gun20GaugeFactory.get20GaugeWitherConfig().setToFire(3), G20_WITHER_FIRE));
|
||||
|
||||
configSet.add(new ConfigKeyPair(GunFatmanFactory.getNukeConfig(), NUKE_NORMAL));
|
||||
configSet.add(new ConfigKeyPair(GunFatmanFactory.getNukeProtoConfig(), NUKE_PROTO));
|
||||
}
|
||||
|
||||
public static BulletConfiguration pullConfig(int key) {
|
||||
|
||||
@ -2,6 +2,11 @@ package com.hbm.handler;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.interfaces.IBulletHitBehavior;
|
||||
import com.hbm.interfaces.IBulletHurtBehavior;
|
||||
import com.hbm.interfaces.IBulletImpactBehavior;
|
||||
import com.hbm.interfaces.IBulletRicochetBehavior;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
|
||||
@ -62,9 +67,12 @@ public class BulletConfiguration {
|
||||
public int caustic;
|
||||
public boolean boxcar;
|
||||
public boolean boat;
|
||||
public boolean destroysWood;
|
||||
public boolean destroysBlocks;
|
||||
public boolean instakill;
|
||||
public IBulletHurtBehavior bHurt;
|
||||
public IBulletHitBehavior bHit;
|
||||
public IBulletRicochetBehavior bRicochet;
|
||||
public IBulletImpactBehavior bImpact;
|
||||
|
||||
//appearance
|
||||
public int style;
|
||||
@ -72,6 +80,8 @@ public class BulletConfiguration {
|
||||
public int trail;
|
||||
//ricochet sound type
|
||||
public int plink;
|
||||
//vanilla particle FX
|
||||
public String vPFX = "";
|
||||
|
||||
public static final int STYLE_NORMAL = 0;
|
||||
public static final int STYLE_FLECHETTE = 1;
|
||||
@ -83,6 +93,7 @@ public class BulletConfiguration {
|
||||
public static final int STYLE_NUKE = 7;
|
||||
public static final int STYLE_MIRV = 8;
|
||||
public static final int STYLE_GRENADE = 9;
|
||||
public static final int STYLE_BF = 10;
|
||||
|
||||
public static final int PLINK_NONE = 0;
|
||||
public static final int PLINK_BULLET = 1;
|
||||
|
||||
@ -769,6 +769,15 @@ public class GUIHandler implements IGuiHandler {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
case ModBlocks.guiID_soyuz_launcher:
|
||||
{
|
||||
if(entity instanceof TileEntitySoyuzLauncher)
|
||||
{
|
||||
return new ContainerSoyuzLauncher(player.inventory, (TileEntitySoyuzLauncher) entity);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//NON-TE CONTAINERS
|
||||
@ -1536,6 +1545,15 @@ public class GUIHandler implements IGuiHandler {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
case ModBlocks.guiID_soyuz_launcher:
|
||||
{
|
||||
if(entity instanceof TileEntitySoyuzLauncher)
|
||||
{
|
||||
return new GUISoyuzLauncher(player.inventory, (TileEntitySoyuzLauncher) entity);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//CLIENTONLY GUIS
|
||||
|
||||
@ -22,7 +22,7 @@ public class GunConfiguration {
|
||||
public int gunMode;
|
||||
//0 = manual, 1 = automatic
|
||||
public int firingMode;
|
||||
//weapon won't fire after weapon breaks
|
||||
//weapon won't fire after weapon breaks (main only)
|
||||
public int durability;
|
||||
|
||||
//whether or not there is a reload delay animation
|
||||
@ -46,6 +46,8 @@ public class GunConfiguration {
|
||||
//sound path to the shooting sound
|
||||
public String firingSound = "";
|
||||
public float firingPitch = 1.0F;
|
||||
//whether the reload sound should be played at the beginning or at the end of the reload
|
||||
public boolean reloadSoundEnd = true;
|
||||
|
||||
//how much ammo the clip can hold, 0 if drawn from inventory
|
||||
public int ammoCap;
|
||||
@ -80,6 +82,7 @@ public class GunConfiguration {
|
||||
public static final String RSOUND_SHOTGUN = "hbm:weapon.shotgunReload";
|
||||
public static final String RSOUND_LAUNCHER = "hbm:weapon.rpgReload";
|
||||
public static final String RSOUND_GRENADE = "hbm:weapon.hkReload";
|
||||
public static final String RSOUND_FATMAN = "hbm:weapon.fatmanReload";
|
||||
|
||||
public GunConfiguration silenced() {
|
||||
this.firingSound = "hbm:weapon.silencerShoot";
|
||||
|
||||
@ -143,4 +143,31 @@ public class BulletConfigFactory {
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration standardNukeConfig() {
|
||||
|
||||
BulletConfiguration bullet = new BulletConfiguration();
|
||||
|
||||
bullet.velocity = 3.0F;
|
||||
bullet.spread = 0.005F;
|
||||
bullet.wear = 10;
|
||||
bullet.bulletsMin = 1;
|
||||
bullet.bulletsMax = 1;
|
||||
bullet.dmgMin = 1000;
|
||||
bullet.dmgMax = 1000;
|
||||
bullet.gravity = 0.025D;
|
||||
bullet.maxAge = 300;
|
||||
bullet.doesRicochet = false;
|
||||
bullet.ricochetAngle = 0;
|
||||
bullet.HBRC = 0;
|
||||
bullet.LBRC = 0;
|
||||
bullet.bounceMod = 1.0;
|
||||
bullet.doesPenetrate = false;
|
||||
bullet.doesBreakGlass = false;
|
||||
bullet.nuke = 35;
|
||||
bullet.style = BulletConfiguration.STYLE_NUKE;
|
||||
bullet.plink = BulletConfiguration.PLINK_GRENADE;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -149,6 +149,32 @@ public class Gun20GaugeFactory {
|
||||
return config;
|
||||
}
|
||||
|
||||
public static GunConfiguration getBoltSaturniteConfig() {
|
||||
|
||||
GunConfiguration config = getShotgunConfig();
|
||||
|
||||
config.ammoCap = 1;
|
||||
config.durability = 4000;
|
||||
config.reloadSound = GunConfiguration.RSOUND_SHOTGUN;
|
||||
config.firingSound = "hbm:weapon.revolverShoot";
|
||||
config.firingPitch = 0.75F;
|
||||
|
||||
config.name = "Winchester Model 20 D-25A";
|
||||
config.manufacturer = "Winchester Repeating Arms Company / Big MT";
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.G20_SLUG_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_NORMAL_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_FLECHETTE_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_EXPLOSIVE_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_CAUSTIC_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_SHOCK_FIRE);
|
||||
config.config.add(BulletConfigSyncingUtil.G20_WITHER_FIRE);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static BulletConfiguration get20GaugeConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig();
|
||||
|
||||
@ -31,6 +31,7 @@ public class Gun22LRFactory {
|
||||
config.durability = 3000;
|
||||
config.reloadSound = GunConfiguration.RSOUND_MAG;
|
||||
config.firingSound = "hbm:weapon.uziShoot";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "IMI Uzi";
|
||||
config.manufacturer = "Israel Military Industries";
|
||||
|
||||
@ -33,6 +33,7 @@ public class Gun357MagnumFactory {
|
||||
config.crosshair = Crosshair.L_CLASSIC;
|
||||
config.reloadSound = GunConfiguration.RSOUND_REVOLVER;
|
||||
config.firingSound = "hbm:weapon.revolverShoot";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ public class Gun44MagnumFactory {
|
||||
config.crosshair = Crosshair.L_CLASSIC;
|
||||
config.reloadSound = GunConfiguration.RSOUND_REVOLVER;
|
||||
config.firingSound = "hbm:weapon.revolverShootAlt";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -47,6 +48,7 @@ public class Gun44MagnumFactory {
|
||||
config.config.add(BulletConfigSyncingUtil.M44_NORMAL);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_AP);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_DU);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_ROCKET);
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -65,6 +67,7 @@ public class Gun44MagnumFactory {
|
||||
config.config.add(BulletConfigSyncingUtil.M44_NORMAL);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_AP);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_DU);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_ROCKET);
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -84,6 +87,7 @@ public class Gun44MagnumFactory {
|
||||
config.config.add(BulletConfigSyncingUtil.M44_NORMAL);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_AP);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_DU);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_ROCKET);
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -104,6 +108,7 @@ public class Gun44MagnumFactory {
|
||||
config.config.add(BulletConfigSyncingUtil.M44_DU);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_PIP);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_BJ);
|
||||
config.config.add(BulletConfigSyncingUtil.M44_ROCKET);
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -173,4 +178,16 @@ public class Gun44MagnumFactory {
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getRocketConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig();
|
||||
|
||||
bullet.ammo = ModItems.ammo_44_rocket;
|
||||
bullet.velocity = 5;
|
||||
bullet.explosive = 15F;
|
||||
bullet.trail = 1;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ public class Gun50AEFactory {
|
||||
config.crosshair = Crosshair.L_CLASSIC;
|
||||
config.reloadSound = GunConfiguration.RSOUND_REVOLVER;
|
||||
config.firingSound = "hbm:weapon.revolverShootAlt";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ public class Gun50BMGFactory {
|
||||
config.durability = 2000;
|
||||
config.reloadSound = GunConfiguration.RSOUND_MAG;
|
||||
config.firingSound = "hbm:weapon.calShoot";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "Maxim gun";
|
||||
config.manufacturer = "Hiram Maxim";
|
||||
|
||||
@ -31,6 +31,7 @@ public class Gun9mmFactory {
|
||||
config.durability = 2500;
|
||||
config.reloadSound = GunConfiguration.RSOUND_MAG;
|
||||
config.firingSound = "hbm:weapon.rifleShoot";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "Maschinenpistole 40";
|
||||
config.manufacturer = "Erfurter Maschinenfabrik Geipel";
|
||||
@ -39,6 +40,7 @@ public class Gun9mmFactory {
|
||||
config.config.add(BulletConfigSyncingUtil.P9_NORMAL);
|
||||
config.config.add(BulletConfigSyncingUtil.P9_AP);
|
||||
config.config.add(BulletConfigSyncingUtil.P9_DU);
|
||||
config.config.add(BulletConfigSyncingUtil.P9_ROCKET);
|
||||
|
||||
return config;
|
||||
}
|
||||
@ -84,4 +86,16 @@ public class Gun9mmFactory {
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration get9mmRocketConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig();
|
||||
|
||||
bullet.ammo = ModItems.ammo_9mm_rocket;
|
||||
bullet.velocity = 5;
|
||||
bullet.explosive = 7.5F;
|
||||
bullet.trail = 5;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
114
com/hbm/handler/guncfg/GunFatmanFactory.java
Normal file
@ -0,0 +1,114 @@
|
||||
package com.hbm.handler.guncfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
|
||||
public class GunFatmanFactory {
|
||||
|
||||
public static GunConfiguration getFatmanConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 20;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_MANUAL;
|
||||
config.hasReloadAnim = false;
|
||||
config.hasFiringAnim = false;
|
||||
config.hasSpinup = false;
|
||||
config.hasSpindown = false;
|
||||
config.reloadDuration = 120;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 1;
|
||||
config.reloadType = GunConfiguration.RELOAD_FULL;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_CIRCUMFLEX;
|
||||
config.firingSound = "hbm:weapon.fatmanShoot";
|
||||
config.reloadSound = GunConfiguration.RSOUND_FATMAN;
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "M-42 Tactical Nuclear Catapult";
|
||||
config.manufacturer = "Fort Strong";
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.NUKE_NORMAL);
|
||||
config.durability = 1000;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static GunConfiguration getProtoConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 20;
|
||||
config.roundsPerCycle = 8;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_MANUAL;
|
||||
config.hasReloadAnim = false;
|
||||
config.hasFiringAnim = false;
|
||||
config.hasSpinup = false;
|
||||
config.hasSpindown = false;
|
||||
config.reloadDuration = 120;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 8;
|
||||
config.reloadType = GunConfiguration.RELOAD_FULL;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_CIRCUMFLEX;
|
||||
config.firingSound = "hbm:weapon.fatmanShoot";
|
||||
config.reloadSound = GunConfiguration.RSOUND_FATMAN;
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "M-42 Tactical Nuclear Catapult";
|
||||
config.manufacturer = "Fort Strong";
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.NUKE_PROTO);
|
||||
config.durability = 1000;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getNukeConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig();
|
||||
|
||||
bullet.ammo = ModItems.gun_fatman_ammo;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getNukeProtoConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig();
|
||||
|
||||
bullet.spread = 0.1F;
|
||||
bullet.ammo = ModItems.gun_fatman_ammo;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getMirvConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig();
|
||||
|
||||
bullet.ammo = ModItems.gun_mirv_ammo;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getBalefireConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig();
|
||||
|
||||
bullet.ammo = ModItems.gun_bf_ammo;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
}
|
||||
84
com/hbm/handler/guncfg/GunGaussFactory.java
Normal file
@ -0,0 +1,84 @@
|
||||
package com.hbm.handler.guncfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
|
||||
public class GunGaussFactory {
|
||||
|
||||
public static GunConfiguration getXVLConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 4;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_AUTO;
|
||||
config.hasReloadAnim = false;
|
||||
config.hasFiringAnim = false;
|
||||
config.hasSpinup = false;
|
||||
config.hasSpindown = false;
|
||||
config.reloadDuration = 20;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 0;
|
||||
config.reloadType = GunConfiguration.RELOAD_NONE;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_RAD;
|
||||
config.durability = 6000;
|
||||
config.firingSound = "hbm:weapon.tauShoot";
|
||||
|
||||
config.name = "XVL1456 Tau Cannon";
|
||||
config.manufacturer = "Black Mesa Research Facility";
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static GunConfiguration getChargedConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 10;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_AUTO;
|
||||
config.reloadDuration = 20;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 30;
|
||||
config.reloadType = GunConfiguration.RELOAD_FULL;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_ARROWS;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getGaussConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig();
|
||||
|
||||
bullet.ammo = ModItems.gun_xvl1456_ammo;
|
||||
bullet.dmgMin = 6;
|
||||
bullet.dmgMax = 9;
|
||||
bullet.trail = 1;
|
||||
bullet.vPFX = "fireworksSpark";
|
||||
bullet.LBRC = 80;
|
||||
bullet.HBRC = 5;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getAltConfig() {
|
||||
|
||||
BulletConfiguration bullet = getGaussConfig();
|
||||
|
||||
bullet.vPFX = "reddust";
|
||||
|
||||
return bullet;
|
||||
}
|
||||
}
|
||||
@ -31,6 +31,7 @@ public class GunGrenadeFactory {
|
||||
config.crosshair = Crosshair.L_CIRCUMFLEX;
|
||||
config.firingSound = "hbm:weapon.hkShoot";
|
||||
config.reloadSound = GunConfiguration.RSOUND_GRENADE;
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "Granatpistole HK69";
|
||||
config.manufacturer = "Heckler & Koch";
|
||||
|
||||
80
com/hbm/handler/guncfg/GunOSIPRFactory.java
Normal file
@ -0,0 +1,80 @@
|
||||
package com.hbm.handler.guncfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
|
||||
public class GunOSIPRFactory {
|
||||
|
||||
public static GunConfiguration getOSIPRConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 2;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_AUTO;
|
||||
config.hasReloadAnim = false;
|
||||
config.hasFiringAnim = false;
|
||||
config.hasSpinup = false;
|
||||
config.hasSpindown = false;
|
||||
config.reloadDuration = 20;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 30;
|
||||
config.reloadType = GunConfiguration.RELOAD_FULL;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_ARROWS;
|
||||
config.durability = 10000;
|
||||
config.reloadSound = "hbm:weapon.osiprReload";
|
||||
config.firingSound = "hbm:weapon.osiprShoot";
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "Overwatch Standard Issue Pulse Rifle";
|
||||
config.manufacturer = "The Universal Union";
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.SPECIAL_OSIPR);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static GunConfiguration getAltConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 15;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_MANUAL;
|
||||
config.hasReloadAnim = false;
|
||||
config.hasFiringAnim = false;
|
||||
config.hasSpinup = false;
|
||||
config.hasSpindown = false;
|
||||
config.reloadDuration = 20;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 1;
|
||||
config.reloadType = GunConfiguration.RELOAD_NONE;
|
||||
config.allowsInfinity = true;
|
||||
config.firingSound = "hbm:weapon.singFlyby";
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
static float inaccuracy = 5;
|
||||
public static BulletConfiguration getPulseConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig();
|
||||
|
||||
bullet.ammo = ModItems.gun_osipr_ammo;
|
||||
bullet.spread *= inaccuracy;
|
||||
bullet.dmgMin = 3;
|
||||
bullet.dmgMax = 5;
|
||||
bullet.trail = 2;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
}
|
||||
@ -2,12 +2,19 @@ package com.hbm.handler.guncfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.interfaces.IBulletImpactBehavior;
|
||||
import com.hbm.interfaces.IBulletRicochetBehavior;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class GunRocketFactory {
|
||||
|
||||
public static GunConfiguration getGustavConfig() {
|
||||
@ -30,6 +37,7 @@ public class GunRocketFactory {
|
||||
config.crosshair = Crosshair.L_CIRCUMFLEX;
|
||||
config.firingSound = "hbm:weapon.rpgShoot";
|
||||
config.reloadSound = GunConfiguration.RSOUND_LAUNCHER;
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "Carl Gustav Recoilless Rifle M1";
|
||||
config.manufacturer = "Saab Bofors Dynamics";
|
||||
@ -235,9 +243,21 @@ public class GunRocketFactory {
|
||||
bullet.gravity = 0.000D;
|
||||
bullet.ricochetAngle = 90;
|
||||
bullet.LBRC = 100;
|
||||
bullet.destroysWood = true;
|
||||
bullet.doesPenetrate = true;
|
||||
|
||||
bullet.bRicochet = new IBulletRicochetBehavior() {
|
||||
|
||||
public void behaveBlockRicochet(EntityBulletBase bullet, int bX, int bY, int bZ) {
|
||||
World worldObj = bullet.worldObj;
|
||||
if(!worldObj.isRemote &&
|
||||
(worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass ||
|
||||
worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves))
|
||||
worldObj.func_147480_a(bX, bY, bZ, false);}
|
||||
|
||||
};
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
|
||||
12
com/hbm/interfaces/IBulletHitBehavior.java
Normal file
@ -0,0 +1,12 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public interface IBulletHitBehavior {
|
||||
|
||||
//entity is hit, bullet dies
|
||||
public void behaveEntityHit(EntityBulletBase bullet, Entity hit);
|
||||
|
||||
}
|
||||
11
com/hbm/interfaces/IBulletHurtBehavior.java
Normal file
@ -0,0 +1,11 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public interface IBulletHurtBehavior {
|
||||
|
||||
//entity is hit
|
||||
public void behaveEntityHurt(EntityBulletBase bullet, Entity hit);
|
||||
}
|
||||
12
com/hbm/interfaces/IBulletImpactBehavior.java
Normal file
@ -0,0 +1,12 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public interface IBulletImpactBehavior {
|
||||
|
||||
//block is hit, bullet dies
|
||||
public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z);
|
||||
|
||||
}
|
||||
12
com/hbm/interfaces/IBulletRicochetBehavior.java
Normal file
@ -0,0 +1,12 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public interface IBulletRicochetBehavior {
|
||||
|
||||
//block is hit, bullet ricochets
|
||||
public void behaveBlockRicochet(EntityBulletBase bullet, int x, int y, int z);
|
||||
|
||||
}
|
||||
@ -659,6 +659,9 @@ public class MachineRecipes {
|
||||
|
||||
if(input.getItem() == ModItems.assembly_nopip)
|
||||
return new ItemStack(ModItems.ammo_44);
|
||||
|
||||
if(input.getItem() == ModItems.ammo_rocket)
|
||||
return new ItemStack(ModItems.ammo_44_rocket);
|
||||
}
|
||||
|
||||
if(stamp.getItem() == ModItems.stamp_9) {
|
||||
@ -671,6 +674,9 @@ public class MachineRecipes {
|
||||
return new ItemStack(ModItems.gun_mp_ammo);
|
||||
if(input.getItem() == ModItems.assembly_lacunae)
|
||||
return new ItemStack(ModItems.ammo_5mm);
|
||||
|
||||
if(input.getItem() == ModItems.ammo_rocket)
|
||||
return new ItemStack(ModItems.ammo_9mm_rocket);
|
||||
}
|
||||
|
||||
if(stamp.getItem() == ModItems.stamp_50) {
|
||||
@ -752,11 +758,13 @@ public class MachineRecipes {
|
||||
|
||||
recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.assembly_nopip) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.assembly_nopip));
|
||||
//recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.assembly_pip) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.assembly_pip));
|
||||
recipes.put(new Object[] { i_stamps_44, new ItemStack(ModItems.ammo_rocket) }, getPressResultNN(i_stamps_44.get(0).getItem(), ModItems.ammo_rocket));
|
||||
|
||||
recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_smg) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_smg));
|
||||
recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_uzi) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_uzi));
|
||||
recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.assembly_lacunae) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.assembly_lacunae));
|
||||
recipes.put(new Object[] { i_stamps_9, new ItemStack(Items.gold_ingot) }, getPressResultNN(i_stamps_9.get(0).getItem(), Items.gold_ingot));
|
||||
recipes.put(new Object[] { i_stamps_9, new ItemStack(ModItems.ammo_rocket) }, getPressResultNN(i_stamps_9.get(0).getItem(), ModItems.ammo_rocket));
|
||||
|
||||
recipes.put(new Object[] { i_stamps_50, new ItemStack(ModItems.assembly_actionexpress) }, getPressResultNN(i_stamps_50.get(0).getItem(), ModItems.assembly_actionexpress));
|
||||
recipes.put(new Object[] { i_stamps_50, new ItemStack(ModItems.assembly_calamity) }, getPressResultNN(i_stamps_50.get(0).getItem(), ModItems.assembly_calamity));
|
||||
|
||||
98
com/hbm/inventory/container/ContainerSoyuzLauncher.java
Normal file
@ -0,0 +1,98 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.tileentity.bomb.TileEntityLaunchTable;
|
||||
import com.hbm.tileentity.machine.TileEntitySoyuzLauncher;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerSoyuzLauncher extends Container {
|
||||
|
||||
private TileEntitySoyuzLauncher nukeBoy;
|
||||
|
||||
public ContainerSoyuzLauncher(InventoryPlayer invPlayer, TileEntitySoyuzLauncher tedf) {
|
||||
|
||||
nukeBoy = tedf;
|
||||
|
||||
//Soyuz
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 62, 18));
|
||||
//Designator
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 62, 36));
|
||||
//Satellite
|
||||
this.addSlotToContainer(new Slot(tedf, 2, 116, 18));
|
||||
//Landing module
|
||||
this.addSlotToContainer(new Slot(tedf, 3, 116, 36));
|
||||
//Kerosene IN
|
||||
this.addSlotToContainer(new Slot(tedf, 4, 8, 90));
|
||||
//Kerosene OUT
|
||||
this.addSlotToContainer(new Slot(tedf, 5, 8, 108));
|
||||
//Peroxide IN
|
||||
this.addSlotToContainer(new Slot(tedf, 6, 26, 90));
|
||||
//Peroxide OUT
|
||||
this.addSlotToContainer(new Slot(tedf, 7, 26, 108));
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tedf, 8, 44, 108));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 6; j++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(tedf, j + i * 6 + 9, 62 + j * 18, 72 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
|
||||
{
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 <= 1) {
|
||||
if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 0, 1, false))
|
||||
return null;
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return nukeBoy.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -47,7 +47,7 @@ public class GUIMachineLaunchTable extends GuiInfoContainer {
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 25, guiTop + 98, 18, 18, new String[] { "Size 15 & 15/20" });
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 43, guiTop + 98, 18, 18, new String[] { "Size 20" });
|
||||
|
||||
String[] text = new String[] { "Acepts custom missiles", "of all sizes, as long as the", "correct size setting is selected." };
|
||||
String[] text = new String[] { "Accepts custom missiles", "of all sizes, as long as the", "correct size setting is selected." };
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
|
||||
|
||||
String[] text1 = new String[] { "Detonator can only trigger center block." };
|
||||
|
||||
92
com/hbm/inventory/gui/GUISoyuzLauncher.java
Normal file
@ -0,0 +1,92 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.FluidTank;
|
||||
import com.hbm.inventory.container.ContainerSoyuzLauncher;
|
||||
import com.hbm.items.weapon.ItemCustomMissile;
|
||||
import com.hbm.items.weapon.ItemMissile.PartSize;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.AuxButtonPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.render.misc.MissileMultipart;
|
||||
import com.hbm.render.misc.MissilePronter;
|
||||
import com.hbm.tileentity.machine.TileEntitySoyuzLauncher;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUISoyuzLauncher extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_soyuz.png");
|
||||
private TileEntitySoyuzLauncher launcher;
|
||||
|
||||
public GUISoyuzLauncher(InventoryPlayer invPlayer, TileEntitySoyuzLauncher tedf) {
|
||||
super(new ContainerSoyuzLauncher(invPlayer, tedf));
|
||||
launcher = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 222;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
/*launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 88 - 52, 16, 52);
|
||||
launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 88 - 52, 16, 52);
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 88 - 52, 16, 52, new String[] { "Solid Fuel: " + launcher.solid + "l" });
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 113, 34, 6, launcher.power, launcher.maxPower);
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 7, guiTop + 98, 18, 18, new String[] { "Size 10 & 10/15" });
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 25, guiTop + 98, 18, 18, new String[] { "Size 15 & 15/20" });
|
||||
this.drawCustomInfo(this, mouseX, mouseY, guiLeft + 43, guiTop + 98, 18, 18, new String[] { "Size 20" });
|
||||
|
||||
String[] text = new String[] { "Acepts custom missiles", "of all sizes, as long as the", "correct size setting is selected." };
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
|
||||
|
||||
String[] text1 = new String[] { "Detonator can only trigger center block." };
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1);*/
|
||||
}
|
||||
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
/*if(guiLeft + 7 <= x && guiLeft + 7 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_10.ordinal(), 0));
|
||||
}
|
||||
|
||||
if(guiLeft + 25 <= x && guiLeft + 25 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_15.ordinal(), 0));
|
||||
}
|
||||
|
||||
if(guiLeft + 43 <= x && guiLeft + 43 + 18 > x && guiTop + 98 < y && guiTop + 98 + 18 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, PartSize.SIZE_20.ordinal(), 0));
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
@ -11,7 +11,10 @@ import com.hbm.handler.guncfg.Gun50AEFactory;
|
||||
import com.hbm.handler.guncfg.Gun50BMGFactory;
|
||||
import com.hbm.handler.guncfg.Gun5mmFactory;
|
||||
import com.hbm.handler.guncfg.Gun9mmFactory;
|
||||
import com.hbm.handler.guncfg.GunFatmanFactory;
|
||||
import com.hbm.handler.guncfg.GunGaussFactory;
|
||||
import com.hbm.handler.guncfg.GunGrenadeFactory;
|
||||
import com.hbm.handler.guncfg.GunOSIPRFactory;
|
||||
import com.hbm.handler.guncfg.GunRocketFactory;
|
||||
import com.hbm.items.bomb.*;
|
||||
import com.hbm.items.food.*;
|
||||
@ -1046,12 +1049,14 @@ public class ModItems {
|
||||
public static Item ammo_44_du;
|
||||
public static Item ammo_44_pip;
|
||||
public static Item ammo_44_bj;
|
||||
public static Item ammo_44_rocket;
|
||||
public static Item ammo_5mm;
|
||||
public static Item ammo_5mm_explosive;
|
||||
public static Item ammo_5mm_du;
|
||||
public static Item ammo_9mm;
|
||||
public static Item ammo_9mm_ap;
|
||||
public static Item ammo_9mm_du;
|
||||
public static Item ammo_9mm_rocket;
|
||||
public static Item ammo_22lr;
|
||||
public static Item ammo_22lr_ap;
|
||||
public static Item ammo_50ae;
|
||||
@ -2729,6 +2734,7 @@ public class ModItems {
|
||||
ammo_9mm = new ItemAmmo().setUnlocalizedName("ammo_9mm").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm");
|
||||
ammo_9mm_ap = new ItemAmmo().setUnlocalizedName("ammo_9mm_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_ap");
|
||||
ammo_9mm_du = new ItemAmmo().setUnlocalizedName("ammo_9mm_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_du");
|
||||
ammo_9mm_rocket = new ItemAmmo().setUnlocalizedName("ammo_9mm_rocket").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_9mm_rocket");
|
||||
ammo_50ae = new ItemAmmo().setUnlocalizedName("ammo_50ae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae");
|
||||
ammo_50ae_ap = new ItemAmmo().setUnlocalizedName("ammo_50ae_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae_ap");
|
||||
ammo_50ae_du = new ItemAmmo().setUnlocalizedName("ammo_50ae_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_50ae_du");
|
||||
@ -2742,6 +2748,7 @@ public class ModItems {
|
||||
ammo_44_du = new ItemAmmo().setUnlocalizedName("ammo_44_du").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_du");
|
||||
ammo_44_pip = new ItemAmmo().setUnlocalizedName("ammo_44_pip").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_pip");
|
||||
ammo_44_bj = new ItemAmmo().setUnlocalizedName("ammo_44_bj").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_bj");
|
||||
ammo_44_rocket = new ItemAmmo().setUnlocalizedName("ammo_44_rocket").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_44_rocket");
|
||||
ammo_22lr = new ItemAmmo().setUnlocalizedName("ammo_22lr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_22lr");
|
||||
ammo_22lr_ap = new ItemAmmo().setUnlocalizedName("ammo_22lr_ap").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_22lr_ap");
|
||||
ammo_folly = new ItemAmmo().setUnlocalizedName("ammo_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_folly");
|
||||
@ -2808,12 +2815,12 @@ public class ModItems {
|
||||
gun_lacunae = new ItemGunBase(Gun5mmFactory.getLacunaeConfig()).setUnlocalizedName("gun_lacunae").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lacunae");
|
||||
gun_folly = new GunFolly().setUnlocalizedName("gun_folly").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_folly");
|
||||
gun_fatman_ammo = new Item().setUnlocalizedName("gun_fatman_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman_ammo");
|
||||
gun_fatman = new GunFatman().setMaxDamage(2500).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman");
|
||||
gun_proto = new GunProtoMirv().setMaxDamage(2500).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman");
|
||||
gun_fatman = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_fatman").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman");
|
||||
gun_proto = new ItemGunBase(GunFatmanFactory.getProtoConfig()).setUnlocalizedName("gun_proto").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman");
|
||||
gun_mirv_ammo = new Item().setUnlocalizedName("gun_mirv_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv_ammo");
|
||||
gun_mirv = new GunMIRV().setMaxDamage(2500).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv");
|
||||
gun_mirv = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mirv");
|
||||
gun_bf_ammo = new Item().setUnlocalizedName("gun_bf_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf_ammo");
|
||||
gun_bf = new GunBaleFlare().setMaxDamage(2500).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf");
|
||||
gun_bf = new ItemGunBase(GunFatmanFactory.getFatmanConfig()).setUnlocalizedName("gun_bf").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bf");
|
||||
gun_mp40_ammo = new Item().setUnlocalizedName("gun_mp40_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_mp40_ammo");
|
||||
gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40");
|
||||
gun_uzi_ammo = new Item().setUnlocalizedName("gun_uzi_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_uzi_ammo");
|
||||
@ -2830,15 +2837,15 @@ public class ModItems {
|
||||
gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo");
|
||||
gun_bolt_action = new ItemGunBase(Gun20GaugeFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action");
|
||||
gun_bolt_action_green = new ItemGunBase(Gun20GaugeFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green");
|
||||
gun_bolt_action_saturnite = new GunBoltAction().setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite");
|
||||
gun_bolt_action_saturnite = new ItemGunBase(Gun20GaugeFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite");
|
||||
gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt");
|
||||
gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92");
|
||||
gun_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93");
|
||||
gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo");
|
||||
gun_xvl1456 = new GunXVL1456().setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456");
|
||||
gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456");
|
||||
gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo");
|
||||
gun_osipr_ammo2 = new Item().setUnlocalizedName("gun_osipr_ammo2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo2");
|
||||
gun_osipr = new GunOSIPR().setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr");
|
||||
gun_osipr = new ItemGunOSIPR(GunOSIPRFactory.getOSIPRConfig(), GunOSIPRFactory.getAltConfig()).setUnlocalizedName("gun_osipr").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr");
|
||||
gun_immolator_ammo = new Item().setUnlocalizedName("gun_immolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator_ammo");
|
||||
gun_immolator = new GunImmolator().setUnlocalizedName("gun_immolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_immolator");
|
||||
gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo");
|
||||
@ -4670,12 +4677,14 @@ public class ModItems {
|
||||
GameRegistry.registerItem(ammo_44_du, ammo_44_du.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_44_pip, ammo_44_pip.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_44_bj, ammo_44_bj.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_44_rocket, ammo_44_rocket.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_5mm, ammo_5mm.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_5mm_explosive, ammo_5mm_explosive.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_5mm_du, ammo_5mm_du.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_9mm, ammo_9mm.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_9mm_ap, ammo_9mm_ap.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_9mm_du, ammo_9mm_du.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_9mm_rocket, ammo_9mm_rocket.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_22lr, ammo_22lr.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_22lr_ap, ammo_22lr_ap.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ammo_50ae, ammo_50ae.getUnlocalizedName());
|
||||
|
||||
@ -83,6 +83,10 @@ public class ItemAmmo extends Item {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Boat");
|
||||
list.add(EnumChatFormatting.RED + "- Highly decreased damage");
|
||||
}
|
||||
if(this == ModItems.ammo_44_rocket) {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Rocket");
|
||||
list.add(EnumChatFormatting.YELLOW + "* Uhhhh");
|
||||
}
|
||||
|
||||
//5mm
|
||||
if(this == ModItems.ammo_5mm_explosive) {
|
||||
@ -106,6 +110,10 @@ public class ItemAmmo extends Item {
|
||||
list.add(EnumChatFormatting.YELLOW + "* Heavy metal");
|
||||
list.add(EnumChatFormatting.RED + "- Highly increased wear");
|
||||
}
|
||||
if(this == ModItems.ammo_9mm_rocket) {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Rocket");
|
||||
list.add(EnumChatFormatting.YELLOW + "* Uhhhh");
|
||||
}
|
||||
|
||||
//.22LR
|
||||
if(this == ModItems.ammo_22lr_ap) {
|
||||
@ -129,6 +137,17 @@ public class ItemAmmo extends Item {
|
||||
list.add(EnumChatFormatting.RED + "- Highly increased wear");
|
||||
}
|
||||
|
||||
//.50 AE
|
||||
if(this == ModItems.ammo_50ae_ap) {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Increased damage");
|
||||
list.add(EnumChatFormatting.RED + "- Increased wear");
|
||||
}
|
||||
if(this == ModItems.ammo_50ae_du) {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Highly increased damage");
|
||||
list.add(EnumChatFormatting.YELLOW + "* Heavy metal");
|
||||
list.add(EnumChatFormatting.RED + "- Highly increased wear");
|
||||
}
|
||||
|
||||
//84mm ROCKETS
|
||||
if(this == ModItems.ammo_rocket_he) {
|
||||
list.add(EnumChatFormatting.BLUE + "+ Increased blast radius");
|
||||
|
||||
@ -61,6 +61,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
// return;
|
||||
|
||||
if(entity instanceof EntityPlayer) {
|
||||
|
||||
isCurrentItem = ((EntityPlayer)entity).getHeldItem() == stack;
|
||||
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && world.isRemote) {
|
||||
updateClient(stack, world, (EntityPlayer)entity, slot, isCurrentItem);
|
||||
} else if(isCurrentItem) {
|
||||
@ -71,7 +74,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) {
|
||||
protected void updateClient(ItemStack stack, World world, EntityPlayer entity, int slot, boolean isCurrentItem) {
|
||||
|
||||
boolean clickLeft = Mouse.isButtonDown(0);
|
||||
boolean clickRight = Mouse.isButtonDown(1);
|
||||
@ -88,6 +91,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
m2 = false;
|
||||
}
|
||||
|
||||
/// HANDLED IN MODEVENTHANDLERCLIENT.JAVA ///
|
||||
/*if(!left && !right) {
|
||||
if(clickLeft) {
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 0));
|
||||
@ -104,12 +108,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 0));
|
||||
//setIsMouseDown(stack, false);
|
||||
m1 = false;
|
||||
endActionClient(stack, world, entity, true);
|
||||
}
|
||||
|
||||
if(right && !clickRight) {
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 1));
|
||||
//setIsAltDown(stack, false);
|
||||
m2 = false;
|
||||
endActionClient(stack, world, entity, false);
|
||||
}
|
||||
|
||||
if(mainConfig.reloadType != mainConfig.RELOAD_NONE || (altConfig != null && altConfig.reloadType != 0)) {
|
||||
@ -125,15 +131,17 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
if(left) {
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 0));
|
||||
m1 = false;
|
||||
endActionClient(stack, world, entity, true);
|
||||
}
|
||||
if(right) {
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(false, (byte) 1));
|
||||
m2 = false;
|
||||
endActionClient(stack, world, entity, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) {
|
||||
protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) {
|
||||
|
||||
if(getDelay(stack) > 0 && isCurrentItem)
|
||||
setDelay(stack, getDelay(stack) - 1);
|
||||
@ -147,14 +155,14 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
|
||||
if(getIsReloading(stack) && isCurrentItem) {
|
||||
reload(stack, world, player);
|
||||
reload2(stack, world, player);
|
||||
}
|
||||
}
|
||||
|
||||
//tries to shoot, bullet checks are done here
|
||||
private boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
//whether or not the gun can shoot in its current state
|
||||
protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
if(getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) {
|
||||
if(main && getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) {
|
||||
|
||||
if(mainConfig.reloadType == mainConfig.RELOAD_NONE) {
|
||||
return getBeltSize(player, getBeltType(player, stack)) > 0;
|
||||
@ -164,11 +172,17 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
}
|
||||
|
||||
if(!main && getDelay(stack) == 0 && !getIsReloading(stack) && getItemWear(stack) < mainConfig.durability) {
|
||||
|
||||
//no extra conditions, alt fire has to be handled by every weapon individually in the altFire() method
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//called every time the gun shoots, overridden to change bullet entity/special additions
|
||||
private void fire(ItemStack stack, World world, EntityPlayer player) {
|
||||
//called every time the gun shoots successfully, calls spawnProjectile(), sets item wear
|
||||
protected void fire(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
BulletConfiguration config = null;
|
||||
|
||||
@ -191,34 +205,47 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
setItemWear(stack, getItemWear(stack) + config.wear);
|
||||
}
|
||||
world.playSoundAtEntity(player, mainConfig.firingSound, 1.0F, mainConfig.firingPitch);
|
||||
|
||||
//player.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_revolver_gold_ammo));
|
||||
}
|
||||
|
||||
private void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) {
|
||||
//unlike fire(), being called does not automatically imply success, some things may still have to be handled before spawning the projectile
|
||||
protected void altFire(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(!altConfig.firingSound.isEmpty())
|
||||
world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch);
|
||||
}
|
||||
|
||||
//spawns the actual projectile, can be overridden to change projectile entity
|
||||
protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) {
|
||||
|
||||
EntityBulletBase bullet = new EntityBulletBase(world, config, player);
|
||||
world.spawnEntityInWorld(bullet);
|
||||
}
|
||||
|
||||
//called on click (server side, called by mouse packet)
|
||||
//called on click (server side, called by mouse packet) for semi-automatics and specific events
|
||||
public void startAction(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
if(mainConfig.firingMode == mainConfig.FIRE_MANUAL && getIsMouseDown(stack) && tryShoot(stack, world, player, main)) {
|
||||
if(mainConfig.firingMode == mainConfig.FIRE_MANUAL && main && tryShoot(stack, world, player, main)) {
|
||||
fire(stack, world, player);
|
||||
setDelay(stack, mainConfig.rateOfFire);
|
||||
//setMag(stack, getMag(stack) - 1);
|
||||
useUpAmmo(player, stack);
|
||||
}
|
||||
|
||||
if(!main && altConfig != null)
|
||||
altFire(stack, world, player);
|
||||
}
|
||||
|
||||
//called on click release
|
||||
public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
//called on click (client side, called by update cylce)
|
||||
public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { }
|
||||
|
||||
}
|
||||
//called on click release (server side, called by mouse packet) for release actions like charged shots
|
||||
public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { }
|
||||
|
||||
//called on click release (client side, called by update cylce)
|
||||
public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { }
|
||||
|
||||
//reload action, if existent
|
||||
private void reload(ItemStack stack, World world, EntityPlayer player) {
|
||||
protected void reload(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(getReloadCycle(stack) < 0 && stack == player.getHeldItem()) {
|
||||
|
||||
@ -227,6 +254,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
|
||||
Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo;
|
||||
|
||||
//how many bullets to load
|
||||
int count = 1;
|
||||
|
||||
if(mainConfig.reloadType == 1) {
|
||||
@ -275,7 +303,6 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
setMagType(stack, mainConfig.config.indexOf(config));
|
||||
break;
|
||||
}
|
||||
setIsReloading(stack, false);
|
||||
}
|
||||
|
||||
//load new type if bullets are present
|
||||
@ -322,6 +349,108 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
}
|
||||
|
||||
//martin 2 reload algorithm
|
||||
//now with less WET and more DRY
|
||||
//compact, readable and most importantly, FUNCTIONAL
|
||||
protected void reload2(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(getReloadCycle(stack) < 0) {
|
||||
|
||||
if(getMag(stack) == 0)
|
||||
resetAmmoType(stack, world, player);
|
||||
|
||||
|
||||
int count = 1;
|
||||
|
||||
if(mainConfig.reloadType == mainConfig.RELOAD_FULL) {
|
||||
|
||||
count = mainConfig.ammoCap - getMag(stack);
|
||||
}
|
||||
|
||||
boolean hasLoaded = false;
|
||||
Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo;
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
|
||||
if(player.inventory.hasItem(ammo)) {
|
||||
player.inventory.consumeInventoryItem(ammo);
|
||||
setMag(stack, getMag(stack) + 1);
|
||||
hasLoaded = true;
|
||||
} else {
|
||||
setIsReloading(stack, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(getMag(stack) == mainConfig.ammoCap) {
|
||||
setIsReloading(stack, false);
|
||||
} else {
|
||||
resetReloadCycle(stack);
|
||||
}
|
||||
|
||||
if(hasLoaded && mainConfig.reloadSoundEnd)
|
||||
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
||||
|
||||
} else {
|
||||
setReloadCycle(stack, getReloadCycle(stack) - 1);
|
||||
}
|
||||
|
||||
if(stack != player.getHeldItem()) {
|
||||
setReloadCycle(stack, 0);
|
||||
setIsReloading(stack, false);
|
||||
}
|
||||
}
|
||||
|
||||
//initiates a reload
|
||||
public void startReloadAction(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(getIsReloading(stack))
|
||||
return;
|
||||
|
||||
if(!mainConfig.reloadSoundEnd)
|
||||
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
||||
|
||||
setIsReloading(stack, true);
|
||||
resetReloadCycle(stack);
|
||||
}
|
||||
|
||||
public boolean canReload(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(getMag(stack) == 0) {
|
||||
|
||||
for(Integer config : mainConfig.config) {
|
||||
|
||||
BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config);
|
||||
|
||||
if(player.inventory.hasItem(cfg.ammo)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Item ammo = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))).ammo;
|
||||
if(player.inventory.hasItem(ammo))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//searches the player's inv for next fitting ammo type and changes the gun's mag
|
||||
protected void resetAmmoType(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
for(Integer config : mainConfig.config) {
|
||||
|
||||
BulletConfiguration cfg = BulletConfigSyncingUtil.pullConfig(config);
|
||||
|
||||
if(player.inventory.hasItem(cfg.ammo)) {
|
||||
setMagType(stack, mainConfig.config.indexOf(config));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//item mouseover text
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
@ -357,6 +486,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
}
|
||||
|
||||
//returns ammo item of belt-weapons
|
||||
public static Item getBeltType(EntityPlayer player, ItemStack stack) {
|
||||
|
||||
ItemGunBase gun = (ItemGunBase)stack.getItem();
|
||||
@ -375,6 +505,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
return ammo;
|
||||
}
|
||||
|
||||
//returns BCFG of belt-weapons
|
||||
public static BulletConfiguration getBeltCfg(EntityPlayer player, ItemStack stack) {
|
||||
|
||||
ItemGunBase gun = (ItemGunBase)stack.getItem();
|
||||
@ -392,6 +523,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
return BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(0));
|
||||
}
|
||||
|
||||
//returns ammo capacity of belt-weapons for current ammo
|
||||
public static int getBeltSize(EntityPlayer player, Item ammo) {
|
||||
|
||||
int amount = 0;
|
||||
@ -404,6 +536,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
return amount;
|
||||
}
|
||||
|
||||
//reduces ammo count for mag and belt-based weapons, should be called AFTER firing
|
||||
public void useUpAmmo(EntityPlayer player, ItemStack stack) {
|
||||
|
||||
if(mainConfig.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0)
|
||||
@ -514,7 +647,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
}
|
||||
|
||||
/// NBT utility ///
|
||||
private static void writeNBT(ItemStack stack, String key, int value) {
|
||||
protected static void writeNBT(ItemStack stack, String key, int value) {
|
||||
|
||||
if(!stack.hasTagCompound())
|
||||
stack.stackTagCompound = new NBTTagCompound();
|
||||
@ -522,7 +655,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon {
|
||||
stack.stackTagCompound.setInteger(key, value);
|
||||
}
|
||||
|
||||
private static int readNBT(ItemStack stack, String key) {
|
||||
protected static int readNBT(ItemStack stack, String key) {
|
||||
|
||||
if(!stack.hasTagCompound())
|
||||
return 0;
|
||||
|
||||
124
com/hbm/items/weapon/ItemGunGauss.java
Normal file
@ -0,0 +1,124 @@
|
||||
package com.hbm.items.weapon;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
import com.hbm.entity.projectile.EntityCombineBall;
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.interfaces.IHoldableWeapon;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.GunButtonPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.MouseEvent;
|
||||
|
||||
public class ItemGunGauss extends ItemGunBase {
|
||||
|
||||
private AudioWrapper chargeLoop;
|
||||
|
||||
public ItemGunGauss(GunConfiguration config, GunConfiguration alt) {
|
||||
super(config, alt);
|
||||
}
|
||||
|
||||
public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
if(getHasShot(stack)) {
|
||||
world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 1.0F, 1.0F);
|
||||
setHasShot(stack, false);
|
||||
}
|
||||
}
|
||||
|
||||
public void endActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
if(chargeLoop != null) {
|
||||
chargeLoop.stopSound();
|
||||
chargeLoop = null;
|
||||
}
|
||||
//setCharge(stack, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
if(!main) {
|
||||
setCharge(stack, 1);
|
||||
chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 0.75F);
|
||||
world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F);
|
||||
|
||||
if(chargeLoop != null) {
|
||||
chargeLoop.startSound();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) {
|
||||
super.updateClient(stack, world, player, slot, isCurrentItem);
|
||||
|
||||
/*if(!isCurrentItem) {
|
||||
setCharge(stack, 0);
|
||||
if(chargeLoop != null) {
|
||||
chargeLoop.stopSound();
|
||||
chargeLoop = null;
|
||||
}
|
||||
return;
|
||||
}*/
|
||||
|
||||
int c = getCharge(stack);
|
||||
|
||||
if(c > 0) {
|
||||
setCharge(stack, c + 1);
|
||||
System.out.println(c);
|
||||
}
|
||||
|
||||
if(chargeLoop != null) {
|
||||
chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ);
|
||||
chargeLoop.updatePitch(1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) {
|
||||
|
||||
super.spawnProjectile(world, player, stack, config);
|
||||
setHasShot(stack, true);
|
||||
}
|
||||
|
||||
public static void setHasShot(ItemStack stack, boolean b) {
|
||||
writeNBT(stack, "hasShot", b ? 1 : 0);
|
||||
}
|
||||
|
||||
public static boolean getHasShot(ItemStack stack) {
|
||||
return readNBT(stack, "hasShot") == 1;
|
||||
}
|
||||
|
||||
/// gauss charge state ///
|
||||
public static void setCharge(ItemStack stack, int i) {
|
||||
writeNBT(stack, "gauss_charge", i);
|
||||
}
|
||||
|
||||
public static int getCharge(ItemStack stack) {
|
||||
return readNBT(stack, "gauss_charge");
|
||||
}
|
||||
}
|
||||
88
com/hbm/items/weapon/ItemGunOSIPR.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.hbm.items.weapon;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBase;
|
||||
import com.hbm.entity.projectile.EntityCombineBall;
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.interfaces.IHoldableWeapon;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.GunButtonPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.render.misc.RenderScreenOverlay.Crosshair;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.MouseEvent;
|
||||
|
||||
public class ItemGunOSIPR extends ItemGunBase {
|
||||
|
||||
public ItemGunOSIPR(GunConfiguration config, GunConfiguration alt) {
|
||||
super(config, alt);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void altFire(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(player.inventory.hasItem(ModItems.gun_osipr_ammo2)) {
|
||||
setCharge(stack, 1);
|
||||
world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F);
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) {
|
||||
super.updateServer(stack, world, player, slot, isCurrentItem);
|
||||
|
||||
if(!isCurrentItem || !player.inventory.hasItem(ModItems.gun_osipr_ammo2)) {
|
||||
setCharge(stack, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
int i = getCharge(stack);
|
||||
|
||||
if(i >= 20) {
|
||||
EntityCombineBall entityarrow = new EntityCombineBall(player.worldObj, player, 3.0F);
|
||||
entityarrow.setDamage(1000);
|
||||
world.spawnEntityInWorld(entityarrow);
|
||||
world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, 1F);
|
||||
setCharge(stack, 0);
|
||||
setDelay(stack, altConfig.rateOfFire);
|
||||
player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2);
|
||||
|
||||
} else if(i > 0)
|
||||
setCharge(stack, i + 1);
|
||||
}
|
||||
|
||||
protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) {
|
||||
|
||||
return super.tryShoot(stack, world, player, main) && getCharge(stack) == 0;
|
||||
}
|
||||
|
||||
/// CMB charge state ///
|
||||
public static void setCharge(ItemStack stack, int i) {
|
||||
writeNBT(stack, "cmb_charge", i);
|
||||
}
|
||||
|
||||
public static int getCharge(ItemStack stack) {
|
||||
return readNBT(stack, "cmb_charge");
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ import net.minecraft.client.particle.EntityCloudFX;
|
||||
import net.minecraft.client.renderer.entity.RenderSnowball;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
@ -32,6 +33,8 @@ import com.hbm.render.item.*;
|
||||
import com.hbm.render.misc.MissilePart;
|
||||
import com.hbm.render.tileentity.*;
|
||||
import com.hbm.render.util.HmfModelLoader;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
import com.hbm.sound.AudioWrapperClient;
|
||||
import com.hbm.tileentity.bomb.*;
|
||||
import com.hbm.tileentity.conductor.*;
|
||||
import com.hbm.tileentity.deco.*;
|
||||
@ -524,5 +527,13 @@ public class ClientProxy extends ServerProxy
|
||||
Minecraft.getMinecraft().effectRenderer.addEffect(contrail);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) {
|
||||
|
||||
AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound));
|
||||
audio.updatePosition(x, y, z);
|
||||
return audio;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -139,12 +139,12 @@ public class ModEventHandlerClient {
|
||||
if(event.button == 0 && !item.m1 && !item.m2) {
|
||||
item.m1 = true;
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 0));
|
||||
//System.out.println("M1");
|
||||
item.startActionClient(player.getHeldItem(), player.worldObj, player, true);
|
||||
}
|
||||
else if(event.button == 1 && !item.m2 && !item.m1) {
|
||||
item.m2 = true;
|
||||
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 1));
|
||||
//System.out.println("M2");
|
||||
item.startActionClient(player.getHeldItem(), player.worldObj, player, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.main;
|
||||
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
|
||||
public class ServerProxy
|
||||
{
|
||||
public void registerRenderInfo()
|
||||
@ -14,4 +16,6 @@ public class ServerProxy
|
||||
public void spawnParticle(double x, double y, double z, String type, float[] args) { }
|
||||
|
||||
public void registerMissileItems() { }
|
||||
|
||||
public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; }
|
||||
}
|
||||
@ -87,8 +87,10 @@ public class GunButtonPacket implements IMessage {
|
||||
item.endAction(p.getHeldItem(), p.worldObj, p, false);
|
||||
break;
|
||||
|
||||
case 2: ItemGunBase.setIsReloading(p.getHeldItem(), true);
|
||||
ItemGunBase.resetReloadCycle(p.getHeldItem());
|
||||
case 2:
|
||||
if(item.canReload(p.getHeldItem(), p.worldObj, p)) {
|
||||
item.startReloadAction(p.getHeldItem(), p.worldObj, p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,9 +8,12 @@ import com.hbm.entity.projectile.EntityBullet;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.model.ModelBaleflare;
|
||||
import com.hbm.render.model.ModelBuckshot;
|
||||
import com.hbm.render.model.ModelBullet;
|
||||
import com.hbm.render.model.ModelGrenade;
|
||||
import com.hbm.render.model.ModelMIRV;
|
||||
import com.hbm.render.model.ModelMiniNuke;
|
||||
import com.hbm.render.model.ModelRocket;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
@ -24,12 +27,18 @@ public class RenderBullet extends Render {
|
||||
private ModelBuckshot buckshot;
|
||||
private ModelRocket rocket;
|
||||
private ModelGrenade grenade;
|
||||
private ModelMiniNuke nuke;
|
||||
private ModelMIRV mirv;
|
||||
private ModelBaleflare bf;
|
||||
|
||||
public RenderBullet() {
|
||||
bullet = new ModelBullet();
|
||||
buckshot = new ModelBuckshot();
|
||||
rocket = new ModelRocket();
|
||||
grenade = new ModelGrenade();
|
||||
nuke = new ModelMiniNuke();
|
||||
mirv = new ModelMIRV();
|
||||
bf = new ModelBaleflare();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -56,6 +65,9 @@ public class RenderBullet extends Render {
|
||||
case BulletConfiguration.STYLE_PELLET: renderBuckshot(); break;
|
||||
case BulletConfiguration.STYLE_ROCKET: renderRocket(trail); break;
|
||||
case BulletConfiguration.STYLE_GRENADE: renderGrenade(trail); break;
|
||||
case BulletConfiguration.STYLE_NUKE: renderNuke(0); break;
|
||||
case BulletConfiguration.STYLE_MIRV: renderNuke(1); break;
|
||||
case BulletConfiguration.STYLE_BF: renderNuke(2); break;
|
||||
default: renderBullet(trail); break;
|
||||
}
|
||||
|
||||
@ -135,6 +147,24 @@ public class RenderBullet extends Render {
|
||||
grenade.renderAll(0.0625F);
|
||||
}
|
||||
|
||||
private void renderNuke(int type) {
|
||||
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
|
||||
switch(type) {
|
||||
case 0:
|
||||
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/MiniNuke.png"));
|
||||
nuke.renderAll(0.0625F); break;
|
||||
case 1:
|
||||
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/Mirv.png"));
|
||||
mirv.renderAll(0.0625F); break;
|
||||
case 2:
|
||||
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/models/BaleFlare.png"));
|
||||
bf.renderAll(0.0625F); break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void renderFlechette() {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
@ -41,11 +41,11 @@ public class ItemRenderBFLauncher implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/BFLauncher.png"));
|
||||
GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.5F, 0.0F, -0.2F);
|
||||
GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.6F, -0.1F, -0.2F);
|
||||
//GL11.glScalef(2.0F, 2.0F, 2.0F);
|
||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
break;
|
||||
case EQUIPPED:
|
||||
@ -60,7 +60,7 @@ public class ItemRenderBFLauncher implements IItemRenderer {
|
||||
GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0.5F, -0.2F, 0.0F);
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
default: break;
|
||||
}
|
||||
|
||||
@ -42,11 +42,11 @@ public class ItemRenderFatMan implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/FatmanLauncher.png"));
|
||||
GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.5F, 0.0F, -0.2F);
|
||||
GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.6F, -0.1F, -0.2F);
|
||||
//GL11.glScalef(2.0F, 2.0F, 2.0F);
|
||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
break;
|
||||
case EQUIPPED:
|
||||
@ -61,7 +61,7 @@ public class ItemRenderFatMan implements IItemRenderer {
|
||||
GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0.5F, -0.2F, 0.0F);
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
default: break;
|
||||
}
|
||||
|
||||
@ -125,7 +125,8 @@ public class ItemRenderGunAnim implements IItemRenderer {
|
||||
}
|
||||
|
||||
if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green ||
|
||||
item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) {
|
||||
item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark
|
||||
|| item.getItem() == ModItems.gun_bolt_action_saturnite) {
|
||||
GL11.glTranslatef(0.0F, -0.4F, 0.0F);
|
||||
GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F);
|
||||
|
||||
@ -42,11 +42,11 @@ public class ItemRenderMIRVLauncher implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/MIRVLauncher.png"));
|
||||
GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.5F, 0.0F, -0.2F);
|
||||
GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.6F, -0.1F, -0.2F);
|
||||
//GL11.glScalef(2.0F, 2.0F, 2.0F);
|
||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
break;
|
||||
case EQUIPPED:
|
||||
@ -61,7 +61,7 @@ public class ItemRenderMIRVLauncher implements IItemRenderer {
|
||||
GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(0.5F, -0.2F, 0.0F);
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item);
|
||||
GL11.glPopMatrix();
|
||||
default: break;
|
||||
}
|
||||
|
||||
@ -46,7 +46,8 @@ public class ItemRenderOSIPR implements IItemRenderer {
|
||||
GL11.glTranslatef(-0.5F, 0.0F, -0.2F);
|
||||
//GL11.glScalef(2.0F, 2.0F, 2.0F);
|
||||
GL11.glScalef(0.5F, 0.5F, 0.5F);
|
||||
GL11.glTranslatef(-0.4F, -0.1F, -0.1F);
|
||||
GL11.glTranslatef(-0.4F, -0.2F, -0.1F);
|
||||
GL11.glRotatef(-15.0F, 0.0F, 0.0F, 1.0F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
|
||||
GL11.glPopMatrix();
|
||||
break;
|
||||
|
||||
@ -48,8 +48,8 @@ public class ItemRenderXVL1456 implements IItemRenderer {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelXVL1456.png"));
|
||||
GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.9F, 0.0F, -0.2F);
|
||||
GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glTranslatef(-0.9F, -0.1F, -0.1F);
|
||||
GL11.glScalef(0.3F, 0.3F, 0.3F);
|
||||
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
@ -8,9 +8,12 @@ package com.hbm.render.model;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.ItemGunBase;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ModelBFLauncher extends ModelBase {
|
||||
// fields
|
||||
@ -203,8 +206,7 @@ public class ModelBFLauncher extends ModelBase {
|
||||
setRotation(Shape20, 0F, 0F, 0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) {
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
Shape1.render(f5);
|
||||
@ -231,6 +233,9 @@ public class ModelBFLauncher extends ModelBase {
|
||||
Shape31.render(f5);
|
||||
Shape32.render(f5);
|
||||
Shape33.render(f5);
|
||||
|
||||
int ammo = ItemGunBase.getMag(item);
|
||||
if(ammo > 0) {
|
||||
Shape13.render(f5);
|
||||
Shape14.render(f5);
|
||||
Shape15.render(f5);
|
||||
@ -240,6 +245,7 @@ public class ModelBFLauncher extends ModelBase {
|
||||
Shape19.render(f5);
|
||||
Shape20.render(f5);
|
||||
}
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z) {
|
||||
model.rotateAngleX = x;
|
||||
|
||||
@ -202,8 +202,6 @@ public class ModelBoltAction extends ModelBase {
|
||||
HandleBottom.render(f5);
|
||||
HandleGrip.render(f5);
|
||||
|
||||
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
@ -4,21 +4,18 @@
|
||||
// Keep in mind that you still need to fill in some blanks
|
||||
// - ZeuX
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
package com.hbm.render.model;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.ItemGunBase;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ModelFatman extends ModelBase
|
||||
{
|
||||
public class ModelFatman extends ModelBase {
|
||||
// fields
|
||||
ModelRenderer Shape1;
|
||||
ModelRenderer Shape2;
|
||||
@ -54,8 +51,7 @@ public class ModelFatman extends ModelBase
|
||||
ModelRenderer Shape32;
|
||||
ModelRenderer Shape33;
|
||||
|
||||
public ModelFatman()
|
||||
{
|
||||
public ModelFatman() {
|
||||
textureWidth = 128;
|
||||
textureHeight = 64;
|
||||
|
||||
@ -259,9 +255,7 @@ public class ModelFatman extends ModelBase
|
||||
setRotation(Shape33, 0F, 0F, 0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
|
||||
{
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) {
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
Shape1.render(f5);
|
||||
@ -288,6 +282,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f
|
||||
Shape16.render(f5);
|
||||
Shape17.render(f5);
|
||||
Shape18.render(f5);
|
||||
|
||||
int ammo = ItemGunBase.getMag(item);
|
||||
if(ammo > 0) {
|
||||
Shape19.render(f5);
|
||||
Shape20.render(f5);
|
||||
Shape21.render(f5);
|
||||
@ -296,6 +293,8 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f
|
||||
Shape24.render(f5);
|
||||
Shape25.render(f5);
|
||||
Shape26.render(f5);
|
||||
}
|
||||
|
||||
Shape27.render(f5);
|
||||
Shape28.render(f5);
|
||||
Shape29.render(f5);
|
||||
@ -305,16 +304,14 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f
|
||||
Shape33.render(f5);
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z)
|
||||
{
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z) {
|
||||
model.rotateAngleX = x;
|
||||
model.rotateAngleY = y;
|
||||
model.rotateAngleZ = z;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
|
||||
{
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
}
|
||||
|
||||
|
||||
@ -4,21 +4,18 @@
|
||||
// Keep in mind that you still need to fill in some blanks
|
||||
// - ZeuX
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
package com.hbm.render.model;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.weapon.ItemGunBase;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ModelMIRVLauncher extends ModelBase
|
||||
{
|
||||
public class ModelMIRVLauncher extends ModelBase {
|
||||
// fields
|
||||
ModelRenderer Shape1;
|
||||
ModelRenderer Shape2;
|
||||
@ -50,8 +47,7 @@ public class ModelMIRVLauncher extends ModelBase
|
||||
ModelRenderer Shape21;
|
||||
ModelRenderer Shape22;
|
||||
|
||||
public ModelMIRVLauncher()
|
||||
{
|
||||
public ModelMIRVLauncher() {
|
||||
textureWidth = 128;
|
||||
textureHeight = 64;
|
||||
|
||||
@ -231,9 +227,7 @@ public class ModelMIRVLauncher extends ModelBase
|
||||
setRotation(Shape22, 0F, 0F, 0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
|
||||
{
|
||||
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) {
|
||||
super.render(entity, f, f1, f2, f3, f4, f5);
|
||||
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
Shape1.render(f5);
|
||||
@ -267,6 +261,9 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f
|
||||
Shape31.render(f5);
|
||||
Shape32.render(f5);
|
||||
Shape33.render(f5);
|
||||
|
||||
int ammo = ItemGunBase.getMag(item);
|
||||
if(ammo > 0) {
|
||||
Shape19.render(f5);
|
||||
Shape20.render(f5);
|
||||
Shape21.render(f5);
|
||||
@ -274,17 +271,16 @@ public void render(Entity entity, float f, float f1, float f2, float f3, float f
|
||||
Shape22.render(f5);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z)
|
||||
{
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z) {
|
||||
model.rotateAngleX = x;
|
||||
model.rotateAngleY = y;
|
||||
model.rotateAngleZ = z;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
|
||||
{
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ import com.hbm.items.weapon.ItemGunBase;
|
||||
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@ -231,6 +232,23 @@ public class ModelNightmare2 extends ModelBase {
|
||||
Bullet5.render(f5);
|
||||
if(ammo > 5)
|
||||
Bullet6.render(f5);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
int color = 0xFF0000;
|
||||
|
||||
tessellator.startDrawing(3);
|
||||
tessellator.setColorOpaque_I(color);
|
||||
tessellator.addVertex(-19F / 16F, -3F / 16F, -1F / 16F);
|
||||
tessellator.addVertex(-150, 0, 0);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z) {
|
||||
|
||||
43
com/hbm/sound/AudioDynamic.java
Normal file
@ -0,0 +1,43 @@
|
||||
package com.hbm.sound;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.MovingSound;
|
||||
import net.minecraft.client.audio.PositionedSound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class AudioDynamic extends MovingSound {
|
||||
|
||||
protected AudioDynamic(ResourceLocation loc) {
|
||||
super(loc);
|
||||
this.repeat = true;
|
||||
}
|
||||
|
||||
public void setPosition(float x, float y, float z) {
|
||||
this.xPosF = x;
|
||||
this.yPosF = y;
|
||||
this.zPosF = z;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() { }
|
||||
|
||||
public void start() {
|
||||
Minecraft.getMinecraft().getSoundHandler().playSound(this);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
Minecraft.getMinecraft().getSoundHandler().stopSound(this);
|
||||
}
|
||||
|
||||
public void setVolume(float volume) {
|
||||
this.volume = volume;
|
||||
}
|
||||
|
||||
public void setPitch(float pitch) {
|
||||
this.field_147663_c = pitch;
|
||||
}
|
||||
|
||||
}
|
||||
17
com/hbm/sound/AudioWrapper.java
Normal file
@ -0,0 +1,17 @@
|
||||
package com.hbm.sound;
|
||||
|
||||
public class AudioWrapper {
|
||||
|
||||
public void updatePosition(float x, float y, float z) { }
|
||||
|
||||
public void updateVolume(float pitch) { }
|
||||
|
||||
public void updatePitch(float pitch) { }
|
||||
|
||||
public void setDoesRepeat(boolean repeats) { }
|
||||
|
||||
public void startSound() { }
|
||||
|
||||
public void stopSound() { }
|
||||
|
||||
}
|
||||
37
com/hbm/sound/AudioWrapperClient.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.hbm.sound;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.audio.MovingSound;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class AudioWrapperClient extends AudioWrapper {
|
||||
|
||||
AudioDynamic sound;
|
||||
|
||||
public AudioWrapperClient(ResourceLocation source) {
|
||||
sound = new AudioDynamic(source);
|
||||
}
|
||||
|
||||
public void updatePosition(float x, float y, float z) {
|
||||
sound.setPosition(x, y, z);
|
||||
}
|
||||
|
||||
public void updateVolume(float volume) {
|
||||
sound.setVolume(volume);
|
||||
}
|
||||
|
||||
public void updatePitch(float pitch) {
|
||||
sound.setPitch(pitch);
|
||||
}
|
||||
|
||||
public void startSound() {
|
||||
sound.start();
|
||||
}
|
||||
|
||||
public void stopSound() {
|
||||
sound.stop();
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +1,289 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.entity.missile.EntityMissileCustom;
|
||||
import com.hbm.handler.MissileStruct;
|
||||
import com.hbm.handler.FluidTypeHandler.FluidType;
|
||||
import com.hbm.interfaces.IConsumer;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.inventory.FluidTank;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.weapon.ItemCustomMissile;
|
||||
import com.hbm.items.weapon.ItemMissile;
|
||||
import com.hbm.items.weapon.ItemMissile.FuelType;
|
||||
import com.hbm.items.weapon.ItemMissile.PartSize;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxElectricityPacket;
|
||||
import com.hbm.packet.AuxGaugePacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.TEMissileMultipartPacket;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
|
||||
public class TileEntitySoyuzLauncher extends TileEntity {
|
||||
public class TileEntitySoyuzLauncher extends TileEntity implements ISidedInventory, IConsumer, IFluidContainer, IFluidAcceptor {
|
||||
|
||||
private ItemStack slots[];
|
||||
|
||||
public long power;
|
||||
public static final long maxPower = 100000;
|
||||
public FluidTank[] tanks;
|
||||
|
||||
public MissileStruct load;
|
||||
|
||||
private static final int[] access = new int[] { 0 };
|
||||
|
||||
private String customName;
|
||||
|
||||
public TileEntitySoyuzLauncher() {
|
||||
slots = new ItemStack[27];
|
||||
tanks = new FluidTank[2];
|
||||
tanks[0] = new FluidTank(FluidType.KEROSENE, 100000, 0);
|
||||
tanks[1] = new FluidTank(FluidType.ACID, 100000, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSizeInventory() {
|
||||
return slots.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlot(int i) {
|
||||
return slots[i];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlotOnClosing(int i) {
|
||||
if (slots[i] != null) {
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInventorySlotContents(int i, ItemStack itemStack) {
|
||||
slots[i] = itemStack;
|
||||
if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
|
||||
itemStack.stackSize = getInventoryStackLimit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryName() {
|
||||
return this.hasCustomInventoryName() ? this.customName : "container.launchTable";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInventoryName() {
|
||||
return this.customName != null && this.customName.length() > 0;
|
||||
}
|
||||
|
||||
public void setCustomName(String name) {
|
||||
this.customName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInventoryStackLimit() {
|
||||
return 64;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||
if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
|
||||
return false;
|
||||
} else {
|
||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64;
|
||||
}
|
||||
}
|
||||
|
||||
// You scrubs aren't needed for anything (right now)
|
||||
@Override
|
||||
public void openInventory() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int i, ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack decrStackSize(int i, int j) {
|
||||
if (slots[i] != null) {
|
||||
if (slots[i].stackSize <= j) {
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
}
|
||||
ItemStack itemStack1 = slots[i].splitStack(j);
|
||||
if (slots[i].stackSize == 0) {
|
||||
slots[i] = null;
|
||||
}
|
||||
|
||||
return itemStack1;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public long getPowerScaled(long i) {
|
||||
return (power * i) / maxPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if (!worldObj.isRemote) {
|
||||
|
||||
tanks[0].loadTank(2, 3, slots);
|
||||
tanks[1].loadTank(2, 3, slots);
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
tanks[i].updateTank(xCoord, yCoord, zCoord);
|
||||
|
||||
power = Library.chargeTEFromItems(slots, 5, power, maxPower);
|
||||
|
||||
PacketDispatcher.wrapper.sendToAll(new AuxElectricityPacket(xCoord, yCoord, zCoord, power));
|
||||
|
||||
} else {
|
||||
|
||||
List<Entity> entities = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.5, yCoord, zCoord - 0.5, xCoord + 1.5, yCoord + 10, zCoord + 1.5));
|
||||
|
||||
for(Entity e : entities) {
|
||||
|
||||
if(e instanceof EntityMissileCustom) {
|
||||
|
||||
for(int i = 0; i < 15; i++)
|
||||
MainRegistry.proxy.spawnParticle(xCoord + 0.5, yCoord + 0.25, zCoord + 0.5, "largelaunchsmoke", null);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
NBTTagList list = nbt.getTagList("items", 10);
|
||||
|
||||
tanks[0].readFromNBT(nbt, "fuel");
|
||||
tanks[1].readFromNBT(nbt, "oxidizer");
|
||||
power = nbt.getLong("power");
|
||||
|
||||
slots = new ItemStack[getSizeInventory()];
|
||||
|
||||
for (int i = 0; i < list.tagCount(); i++) {
|
||||
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
||||
byte b0 = nbt1.getByte("slot");
|
||||
if (b0 >= 0 && b0 < slots.length) {
|
||||
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
tanks[0].writeToNBT(nbt, "fuel");
|
||||
tanks[1].writeToNBT(nbt, "oxidizer");
|
||||
nbt.setLong("power", power);
|
||||
|
||||
for (int i = 0; i < slots.length; i++) {
|
||||
if (slots[i] != null) {
|
||||
NBTTagCompound nbt1 = new NBTTagCompound();
|
||||
nbt1.setByte("slot", (byte) i);
|
||||
slots[i].writeToNBT(nbt1);
|
||||
list.appendTag(nbt1);
|
||||
}
|
||||
}
|
||||
nbt.setTag("items", list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
||||
return access;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
|
||||
return this.isItemValidForSlot(i, itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxFluidFill(FluidType type) {
|
||||
if (type.name().equals(tanks[0].getTankType().name()))
|
||||
return tanks[0].getMaxFill();
|
||||
else if (type.name().equals(tanks[1].getTankType().name()))
|
||||
return tanks[1].getMaxFill();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFillstate(int fill, int index) {
|
||||
if (index < 2 && tanks[index] != null)
|
||||
tanks[index].setFill(fill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFluidFill(int fill, FluidType type) {
|
||||
if (type.name().equals(tanks[0].getTankType().name()))
|
||||
tanks[0].setFill(fill);
|
||||
else if (type.name().equals(tanks[1].getTankType().name()))
|
||||
tanks[1].setFill(fill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(FluidType type, int index) {
|
||||
if (index < 2 && tanks[index] != null)
|
||||
tanks[index].setTankType(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FluidTank> getTanks() {
|
||||
List<FluidTank> list = new ArrayList();
|
||||
list.add(tanks[0]);
|
||||
list.add(tanks[1]);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFluidFill(FluidType type) {
|
||||
if (type.name().equals(tanks[0].getTankType().name()))
|
||||
return tanks[0].getFill();
|
||||
else if (type.name().equals(tanks[1].getTankType().name()))
|
||||
return tanks[1].getFill();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
@ -18,4 +296,19 @@ public class TileEntitySoyuzLauncher extends TileEntity {
|
||||
{
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long i) {
|
||||
this.power = i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return this.power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxPower() {
|
||||
return this.maxPower;
|
||||
}
|
||||
}
|
||||
|
||||