mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-02-24 15:00:48 +00:00
back mounted rocket launcher time
This commit is contained in:
parent
04708e8c90
commit
f62fcc89cb
@ -5,11 +5,16 @@
|
|||||||
* NCR Ranger Power Armor
|
* NCR Ranger Power Armor
|
||||||
* Legendary set, like the remnants power armor
|
* Legendary set, like the remnants power armor
|
||||||
* Stats are largely similar, but has a speed boost when sprinting
|
* Stats are largely similar, but has a speed boost when sprinting
|
||||||
|
* Red room exclusive
|
||||||
* Comes with the power armor - melee controller item
|
* Comes with the power armor - melee controller item
|
||||||
* If the full set is equipped, the melee controller allows for powerful melee attacks
|
* If the full set is equipped, the melee controller allows for powerful melee attacks
|
||||||
* Left click does two rapid swings, right click causes both arms to swing at once
|
* Left click does two rapid swings, right click causes both arms to swing at once
|
||||||
* The NCRPA's blades are armor-piercing and gib enemies on death
|
* The NCRPA's blades are armor-piercing and gib enemies on death
|
||||||
* The blades do 250% damage on large enemies, i.e. ones with 100 or more max health
|
* The blades do 250% damage on large enemies, i.e. ones with 100 or more max health
|
||||||
|
* And also the power armor - ranged controller
|
||||||
|
* Allows the NCRPA to fire rockets straight from the intentory
|
||||||
|
* Left click fires guided rockets and right click unguided ones
|
||||||
|
* Only does 25 damage max, but has no reload and a fire rate of 120 per minute
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
* Reworked the industrial turbine
|
* Reworked the industrial turbine
|
||||||
|
|||||||
@ -205,10 +205,18 @@ public class BlockKeyhole extends BlockStone {
|
|||||||
if(rand == 0) {
|
if(rand == 0) {
|
||||||
world.setBlock(x, y + 1, z, ModBlocks.deco_loot);
|
world.setBlock(x, y + 1, z, ModBlocks.deco_loot);
|
||||||
TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y + 1, z);
|
TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y + 1, z);
|
||||||
|
|
||||||
|
if(world.rand.nextInt(5) == 0) {
|
||||||
|
loot.addItem(new ItemStack(ModItems.ncrpa_helmet), 0, 0, 0);
|
||||||
|
loot.addItem(new ItemStack(ModItems.ncrpa_plate), 0, 0, 0);
|
||||||
|
loot.addItem(new ItemStack(ModItems.ncrpa_legs), 0, 0, 0);
|
||||||
|
loot.addItem(new ItemStack(ModItems.ncrpa_boots), 0, 0, 0);
|
||||||
|
} else {
|
||||||
loot.addItem(new ItemStack(ModItems.trenchmaster_helmet), 0, 0, 0);
|
loot.addItem(new ItemStack(ModItems.trenchmaster_helmet), 0, 0, 0);
|
||||||
loot.addItem(new ItemStack(ModItems.trenchmaster_plate), 0, 0, 0);
|
loot.addItem(new ItemStack(ModItems.trenchmaster_plate), 0, 0, 0);
|
||||||
loot.addItem(new ItemStack(ModItems.trenchmaster_legs), 0, 0, 0);
|
loot.addItem(new ItemStack(ModItems.trenchmaster_legs), 0, 0, 0);
|
||||||
loot.addItem(new ItemStack(ModItems.trenchmaster_boots), 0, 0, 0);
|
loot.addItem(new ItemStack(ModItems.trenchmaster_boots), 0, 0, 0);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
spawnPedestalItem(world, x, y + 1, z);
|
spawnPedestalItem(world, x, y + 1, z);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -103,6 +103,9 @@ public class WeaponRecipes {
|
|||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_charge_thrower, 1), new Object[] { "MMM", "BBL", "GG ", 'M', GUNMETAL.mechanism(), 'B', STEEL.heavyBarrel(), 'G', STEEL.grip(), 'L', ANY_RUBBER.ingot() });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_charge_thrower, 1), new Object[] { "MMM", "BBL", "GG ", 'M', GUNMETAL.mechanism(), 'B', STEEL.heavyBarrel(), 'G', STEEL.grip(), 'L', ANY_RUBBER.ingot() });
|
||||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_drill, 1), new Object[] { " GL", "IBP", " GL", 'G', GUNMETAL.ingot(), 'L', ANY_RUBBER.ingot(), 'I', TI.ingot(), 'B', STEEL.block(), 'P', ModItems.piston_selenium });
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_drill, 1), new Object[] { " GL", "IBP", " GL", 'G', GUNMETAL.ingot(), 'L', ANY_RUBBER.ingot(), 'I', TI.ingot(), 'B', STEEL.block(), 'P', ModItems.piston_selenium });
|
||||||
|
|
||||||
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_pa_melee, 1), new Object[] { " C ", "MWM", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'M', ModItems.motor, 'W', GOLD.wireDense() });
|
||||||
|
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_pa_ranged, 1), new Object[] { "C", "W", "P", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'P', ANY_PLASTIC.ingot(), 'W', GOLD.wireDense() });
|
||||||
|
|
||||||
//SEDNA Ammo
|
//SEDNA Ammo
|
||||||
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder });
|
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder });
|
||||||
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_AP, 6), new Object[] { "C", "P", "G", 'C', Items.flint, 'P', Items.paper, 'G', Items.gunpowder });
|
CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE_AP, 6), new Object[] { "C", "P", "G", 'C', Items.flint, 'P', Items.paper, 'G', Items.gunpowder });
|
||||||
|
|||||||
@ -1440,6 +1440,7 @@ public class ModItems {
|
|||||||
public static Item gun_charge_thrower;
|
public static Item gun_charge_thrower;
|
||||||
public static Item gun_drill;
|
public static Item gun_drill;
|
||||||
public static Item gun_pa_melee;
|
public static Item gun_pa_melee;
|
||||||
|
public static Item gun_pa_ranged;
|
||||||
|
|
||||||
public static Item ammo_standard;
|
public static Item ammo_standard;
|
||||||
public static Item ammo_secret;
|
public static Item ammo_secret;
|
||||||
@ -6330,6 +6331,7 @@ public class ModItems {
|
|||||||
GameRegistry.registerItem(gun_charge_thrower, gun_charge_thrower.getUnlocalizedName());
|
GameRegistry.registerItem(gun_charge_thrower, gun_charge_thrower.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(gun_drill, gun_drill.getUnlocalizedName());
|
GameRegistry.registerItem(gun_drill, gun_drill.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(gun_pa_melee, gun_pa_melee.getUnlocalizedName());
|
GameRegistry.registerItem(gun_pa_melee, gun_pa_melee.getUnlocalizedName());
|
||||||
|
GameRegistry.registerItem(gun_pa_ranged, gun_pa_ranged.getUnlocalizedName());
|
||||||
|
|
||||||
GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName());
|
GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName());
|
GameRegistry.registerItem(ammo_secret, ammo_secret.getUnlocalizedName());
|
||||||
|
|||||||
@ -21,6 +21,8 @@ import net.minecraft.entity.ai.attributes.AttributeModifier;
|
|||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.potion.Potion;
|
||||||
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.IItemRenderer;
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
|
||||||
@ -53,8 +55,6 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider
|
|||||||
|
|
||||||
if(this != ModItems.ncrpa_plate) return;
|
if(this != ModItems.ncrpa_plate) return;
|
||||||
|
|
||||||
HbmPlayerProps props = HbmPlayerProps.getData(player);
|
|
||||||
|
|
||||||
/// SPEED ///
|
/// SPEED ///
|
||||||
Multimap multimap = super.getAttributeModifiers(stack);
|
Multimap multimap = super.getAttributeModifiers(stack);
|
||||||
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "NCRPA SPEED", 0.1, 0));
|
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "NCRPA SPEED", 0.1, 0));
|
||||||
@ -63,6 +63,9 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider
|
|||||||
if(player.isSprinting()) {
|
if(player.isSprinting()) {
|
||||||
player.getAttributeMap().applyAttributeModifiers(multimap);
|
player.getAttributeMap().applyAttributeModifiers(multimap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(world.getTotalWorldTime() % 20 != 0) return;
|
||||||
|
if(HbmPlayerProps.getData(player).enableHUD) player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 300, 0, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override public Item getItemForRenderer() { return this; }
|
@Override public Item getItemForRenderer() { return this; }
|
||||||
@ -81,10 +84,17 @@ public class ArmorNCRPA extends ArmorFSBPowered implements IItemRendererProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static final ArmorNCRPAMelee meleeComponent = new ArmorNCRPAMelee();
|
public static final ArmorNCRPAMelee meleeComponent = new ArmorNCRPAMelee();
|
||||||
|
public static final ArmorNCRPARanged rangedComponent = new ArmorNCRPARanged();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPAMelee getMeleeComponent(EntityPlayer entity) {
|
public IPAMelee getMeleeComponent(EntityPlayer entity) {
|
||||||
if(this.hasFSBArmorIgnoreCharge(entity)) return meleeComponent;
|
if(this.hasFSBArmorIgnoreCharge(entity)) return meleeComponent;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPARanged getRangedComponent(EntityPlayer entity) {
|
||||||
|
if(this.hasFSBArmorIgnoreCharge(entity)) return rangedComponent;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
51
src/main/java/com/hbm/items/armor/ArmorNCRPARanged.java
Normal file
51
src/main/java/com/hbm/items/armor/ArmorNCRPARanged.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package com.hbm.items.armor;
|
||||||
|
|
||||||
|
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||||
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||||
|
import com.hbm.items.weapon.sedna.factory.XFactoryRocket;
|
||||||
|
import com.hbm.items.weapon.sedna.mags.MagazineBelt;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ArmorNCRPARanged implements IPARanged {
|
||||||
|
|
||||||
|
public static MagazineBelt rocketSteerMag = new MagazineBelt();
|
||||||
|
public static MagazineBelt rocketMag = new MagazineBelt();
|
||||||
|
|
||||||
|
@Override public void clickPrimary(ItemStack stack, LambdaContext ctx) { fireRocket(stack, ctx, true); }
|
||||||
|
@Override public void clickSecondary(ItemStack stack, LambdaContext ctx) { fireRocket(stack, ctx, false); }
|
||||||
|
|
||||||
|
public static void fireRocket(ItemStack stack, LambdaContext ctx, boolean steer) {
|
||||||
|
|
||||||
|
EntityPlayer player = ctx.getPlayer();
|
||||||
|
GunState state = ItemGunBaseNT.getState(stack, 0);
|
||||||
|
MagazineBelt mag = steer ? rocketSteerMag : rocketMag;
|
||||||
|
|
||||||
|
if(state == GunState.IDLE) {
|
||||||
|
if(mag.acceptedBullets.isEmpty()) {
|
||||||
|
mag.addConfigs(steer ? XFactoryRocket.rocket_ncrpa_steer : XFactoryRocket.rocket_ncrpa);
|
||||||
|
}
|
||||||
|
BulletConfig cfg = mag.getType(stack, player.inventory);
|
||||||
|
int amount = mag.getAmount(stack, player.inventory);
|
||||||
|
|
||||||
|
if(amount > 0) {
|
||||||
|
mag.useUpAmmo(stack, player.inventory, 1);
|
||||||
|
EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(player, cfg, 25, 0, 0.25F * (player.getRNG().nextBoolean() ? - 1 : 1), 0, 0);
|
||||||
|
player.worldObj.spawnEntityInWorld(mk4);
|
||||||
|
ItemGunBaseNT.setState(stack, 0, GunState.COOLDOWN);
|
||||||
|
ItemGunBaseNT.setTimer(stack, 0, 10);
|
||||||
|
player.worldObj.playSoundAtEntity(player, "hbm:weapon.rpgShoot", 0.5F, 0.9F + player.getRNG().nextFloat() * 0.2F);
|
||||||
|
player.inventoryContainer.detectAndSendChanges();
|
||||||
|
} else {
|
||||||
|
ItemGunBaseNT.setState(stack, 0, GunState.COOLDOWN);
|
||||||
|
ItemGunBaseNT.setTimer(stack, 0, 10);
|
||||||
|
player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -61,4 +61,6 @@ public class ArmorRPA extends ArmorFSBPowered implements IItemRendererProvider,
|
|||||||
if(this.hasFSBArmorIgnoreCharge(entity)) return meleeComponent;
|
if(this.hasFSBArmorIgnoreCharge(entity)) return meleeComponent;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public IPARanged getRangedComponent(EntityPlayer entity) { return null; }
|
||||||
}
|
}
|
||||||
|
|||||||
11
src/main/java/com/hbm/items/armor/IPARanged.java
Normal file
11
src/main/java/com/hbm/items/armor/IPARanged.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package com.hbm.items.armor;
|
||||||
|
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IPARanged {
|
||||||
|
|
||||||
|
public void clickPrimary(ItemStack stack, LambdaContext ctx);
|
||||||
|
public void clickSecondary(ItemStack stack, LambdaContext ctx);
|
||||||
|
}
|
||||||
@ -19,4 +19,18 @@ public interface IPAWeaponsProvider {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IPARanged getRangedComponent(EntityPlayer entity);
|
||||||
|
|
||||||
|
public static IPARanged getRangedComponentClient() {
|
||||||
|
return getRangedComponentCommon(MainRegistry.proxy.me());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IPARanged getRangedComponentCommon(EntityPlayer player) {
|
||||||
|
if(player.inventory.armorInventory[2] != null && player.inventory.armorInventory[2].getItem() instanceof IPAWeaponsProvider) {
|
||||||
|
IPAWeaponsProvider prov = (IPAWeaponsProvider) player.inventory.armorInventory[2].getItem();
|
||||||
|
return prov.getRangedComponent(player);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,6 +211,8 @@ public class GunFactoryClient {
|
|||||||
setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb);
|
setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb);
|
||||||
setRendererBulk(LegoClient.RENDER_QD, rocket_qd);
|
setRendererBulk(LegoClient.RENDER_QD, rocket_qd);
|
||||||
setRendererBulk(LegoClient.RENDER_ML, rocket_ml);
|
setRendererBulk(LegoClient.RENDER_ML, rocket_ml);
|
||||||
|
setRendererBulk(LegoClient.RENDER_RPZB, rocket_ncrpa_steer);
|
||||||
|
setRendererBulk(LegoClient.RENDER_RPZB, rocket_ncrpa);
|
||||||
|
|
||||||
setRendererBulk(LegoClient.RENDER_NUKE, nuke_standard, nuke_demo, nuke_high);
|
setRendererBulk(LegoClient.RENDER_NUKE, nuke_standard, nuke_demo, nuke_high);
|
||||||
nuke_tots.setRenderer(LegoClient.RENDER_GRENADE);
|
nuke_tots.setRenderer(LegoClient.RENDER_GRENADE);
|
||||||
|
|||||||
@ -6,10 +6,12 @@ import java.util.function.BiFunction;
|
|||||||
|
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.armor.IPAMelee;
|
import com.hbm.items.armor.IPAMelee;
|
||||||
|
import com.hbm.items.armor.IPARanged;
|
||||||
import com.hbm.items.armor.IPAWeaponsProvider;
|
import com.hbm.items.armor.IPAWeaponsProvider;
|
||||||
import com.hbm.items.weapon.sedna.Crosshair;
|
import com.hbm.items.weapon.sedna.Crosshair;
|
||||||
import com.hbm.items.weapon.sedna.GunConfig;
|
import com.hbm.items.weapon.sedna.GunConfig;
|
||||||
import com.hbm.items.weapon.sedna.Receiver;
|
import com.hbm.items.weapon.sedna.Receiver;
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
||||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||||
@ -26,14 +28,18 @@ public class XFactoryPA {
|
|||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
|
||||||
ModItems.gun_pa_melee = new ItemGunMelee(WeaponQuality.UTILITY, new GunConfig()
|
ModItems.gun_pa_melee = new ItemGunPA(WeaponQuality.UTILITY, new GunConfig()
|
||||||
.draw(10).inspect(55).crosshair(Crosshair.NONE)
|
.draw(10).crosshair(Crosshair.NONE)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0))
|
||||||
.dmg(10F).delay(20).jam(0)
|
.pp(LAMBDA_CLICK_MELEE_PRIMARY).ps(LAMBDA_CLICK_MELEE_SENONDARY).decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
||||||
.offset(1, -0.0625 * 2.5, -0.25D))
|
|
||||||
.pp(LAMBDA_CLICK_PRIMARY).ps(LAMBDA_CLICK_SENONDARY).decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
|
||||||
.anim(LAMBDA_MELEE_ANIMS).orchestra(ORCHESTRA)
|
.anim(LAMBDA_MELEE_ANIMS).orchestra(ORCHESTRA)
|
||||||
).setUnlocalizedName("gun_pa_melee");
|
).setUnlocalizedName("gun_pa_melee");
|
||||||
|
|
||||||
|
ModItems.gun_pa_ranged = new ItemGunPA(WeaponQuality.UTILITY, new GunConfig()
|
||||||
|
.draw(0).crosshair(Crosshair.CROSS)
|
||||||
|
.rec(new Receiver(0))
|
||||||
|
.pp(LAMBDA_CLICK_RANGED_PRIMARY).ps(LAMBDA_CLICK_RANGED_SENONDARY).decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
||||||
|
).setUnlocalizedName("gun_pa_ranged").setFull3D().setTextureName(RefStrings.MODID + ":gun_pa_ranged");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA = (stack, ctx) -> {
|
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA = (stack, ctx) -> {
|
||||||
@ -47,11 +53,11 @@ public class XFactoryPA {
|
|||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_PRIMARY = (stack, ctx) -> {
|
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_MELEE_PRIMARY = (stack, ctx) -> {
|
||||||
IPAMelee component = IPAWeaponsProvider.getMeleeComponentClient();
|
IPAMelee component = IPAWeaponsProvider.getMeleeComponentClient();
|
||||||
if(component != null) component.clickPrimary(stack, ctx);
|
if(component != null) component.clickPrimary(stack, ctx);
|
||||||
};
|
};
|
||||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_SENONDARY = (stack, ctx) -> {
|
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_MELEE_SENONDARY = (stack, ctx) -> {
|
||||||
IPAMelee component = IPAWeaponsProvider.getMeleeComponentClient();
|
IPAMelee component = IPAWeaponsProvider.getMeleeComponentClient();
|
||||||
if(component != null) component.clickSecondary(stack, ctx);
|
if(component != null) component.clickSecondary(stack, ctx);
|
||||||
};
|
};
|
||||||
@ -69,9 +75,18 @@ public class XFactoryPA {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ItemGunMelee extends ItemGunBaseNT {
|
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_RANGED_PRIMARY = (stack, ctx) -> {
|
||||||
|
IPARanged component = IPAWeaponsProvider.getRangedComponentClient();
|
||||||
|
if(component != null) component.clickPrimary(stack, ctx);
|
||||||
|
};
|
||||||
|
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_CLICK_RANGED_SENONDARY = (stack, ctx) -> {
|
||||||
|
IPARanged component = IPAWeaponsProvider.getRangedComponentClient();
|
||||||
|
if(component != null) component.clickSecondary(stack, ctx);
|
||||||
|
};
|
||||||
|
|
||||||
public ItemGunMelee(WeaponQuality quality, GunConfig... cfg) {
|
public static class ItemGunPA extends ItemGunBaseNT {
|
||||||
|
|
||||||
|
public ItemGunPA(WeaponQuality quality, GunConfig... cfg) {
|
||||||
super(quality, cfg);
|
super(quality, cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,8 @@ public class XFactoryRocket {
|
|||||||
public static BulletConfig[] rocket_rpzb;
|
public static BulletConfig[] rocket_rpzb;
|
||||||
public static BulletConfig[] rocket_qd;
|
public static BulletConfig[] rocket_qd;
|
||||||
public static BulletConfig[] rocket_ml;
|
public static BulletConfig[] rocket_ml;
|
||||||
|
public static BulletConfig[] rocket_ncrpa;
|
||||||
|
public static BulletConfig[] rocket_ncrpa_steer;
|
||||||
|
|
||||||
// FLYING
|
// FLYING
|
||||||
public static Consumer<Entity> LAMBDA_STANDARD_ACCELERATE = (entity) -> {
|
public static Consumer<Entity> LAMBDA_STANDARD_ACCELERATE = (entity) -> {
|
||||||
@ -57,13 +59,25 @@ public class XFactoryRocket {
|
|||||||
if(bullet.accel < 7) bullet.accel += 0.4D;
|
if(bullet.accel < 7) bullet.accel += 0.4D;
|
||||||
};
|
};
|
||||||
public static Consumer<Entity> LAMBDA_STEERING_ACCELERATE = (entity) -> {
|
public static Consumer<Entity> LAMBDA_STEERING_ACCELERATE = (entity) -> {
|
||||||
|
EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity;
|
||||||
|
if(!(entity instanceof EntityPlayer)) {
|
||||||
|
if(bullet.accel < 7) bullet.accel += 0.4D;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
||||||
|
steeringAccelerate(entity, player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem()));
|
||||||
|
};
|
||||||
|
public static Consumer<Entity> LAMBDA_NCR_ACCELERATE = (entity) -> {
|
||||||
|
steeringAccelerate(entity, false);
|
||||||
|
};
|
||||||
|
public static void steeringAccelerate(Entity entity, boolean noSteer) {
|
||||||
EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity;
|
EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity;
|
||||||
if(bullet.accel < 4) bullet.accel += 0.4D;
|
if(bullet.accel < 4) bullet.accel += 0.4D;
|
||||||
if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return;
|
if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return;
|
||||||
|
|
||||||
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
EntityPlayer player = (EntityPlayer) bullet.getThrower();
|
||||||
if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return;
|
if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return;
|
||||||
if(player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem())) return;
|
if(noSteer) return;
|
||||||
|
|
||||||
MovingObjectPosition mop = Library.rayTrace(player, 200, 1);
|
MovingObjectPosition mop = Library.rayTrace(player, 200, 1);
|
||||||
if(mop == null || mop.hitVec == null) return;
|
if(mop == null || mop.hitVec == null) return;
|
||||||
@ -76,7 +90,7 @@ public class XFactoryRocket {
|
|||||||
bullet.motionX = vec.xCoord * speed;
|
bullet.motionX = vec.xCoord * speed;
|
||||||
bullet.motionY = vec.yCoord * speed;
|
bullet.motionY = vec.yCoord * speed;
|
||||||
bullet.motionZ = vec.zCoord * speed;
|
bullet.motionZ = vec.zCoord * speed;
|
||||||
};
|
}
|
||||||
|
|
||||||
// IMPACT
|
// IMPACT
|
||||||
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
|
||||||
@ -138,6 +152,7 @@ public class XFactoryRocket {
|
|||||||
|
|
||||||
public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); }
|
public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); }
|
||||||
public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); }
|
public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); }
|
||||||
|
public static BulletConfig makeNCR(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_NCR_ACCELERATE); }
|
||||||
public static BulletConfig makeML(BulletConfig original) { return original.clone(); }
|
public static BulletConfig makeML(BulletConfig original) { return original.clone(); }
|
||||||
|
|
||||||
//this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help
|
//this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help
|
||||||
@ -156,11 +171,15 @@ public class XFactoryRocket {
|
|||||||
rocket_rpzb = new BulletConfig[rocket_template.length];
|
rocket_rpzb = new BulletConfig[rocket_template.length];
|
||||||
rocket_qd = new BulletConfig[rocket_template.length];
|
rocket_qd = new BulletConfig[rocket_template.length];
|
||||||
rocket_ml = new BulletConfig[rocket_template.length];
|
rocket_ml = new BulletConfig[rocket_template.length];
|
||||||
|
rocket_ncrpa_steer = new BulletConfig[rocket_template.length];
|
||||||
|
rocket_ncrpa = new BulletConfig[rocket_template.length];
|
||||||
|
|
||||||
for(int i = 0; i < rocket_template.length; i++) {
|
for(int i = 0; i < rocket_template.length; i++) {
|
||||||
rocket_rpzb[i] = makeRPZB(rocket_template[i]);
|
rocket_rpzb[i] = makeRPZB(rocket_template[i]);
|
||||||
rocket_qd[i] = makeQD(rocket_template[i]);
|
rocket_qd[i] = makeQD(rocket_template[i]);
|
||||||
rocket_ml[i] = makeML(rocket_template[i]);
|
rocket_ml[i] = makeML(rocket_template[i]);
|
||||||
|
rocket_ncrpa_steer[i] = makeNCR(rocket_template[i]);
|
||||||
|
rocket_ncrpa[i] = makeRPZB(rocket_template[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
|
||||||
|
|||||||
@ -268,6 +268,7 @@ public class XWeaponModManager {
|
|||||||
/** Saves the state on receiver 0 so that if the mag changes through upgrading, the state may potentially be restored, if compatible */
|
/** Saves the state on receiver 0 so that if the mag changes through upgrading, the state may potentially be restored, if compatible */
|
||||||
private static void saveMagState(ItemStack stack, int cfg) {
|
private static void saveMagState(ItemStack stack, int cfg) {
|
||||||
IMagazine mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, cfg).getReceivers(stack)[0].getMagazine(stack);
|
IMagazine mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, cfg).getReceivers(stack)[0].getMagazine(stack);
|
||||||
|
if(mag == null) return;
|
||||||
prevMagType = mag.getType(stack, null);
|
prevMagType = mag.getType(stack, null);
|
||||||
prevMagCount = mag.getAmount(stack, null);
|
prevMagCount = mag.getAmount(stack, null);
|
||||||
}
|
}
|
||||||
@ -285,6 +286,7 @@ public class XWeaponModManager {
|
|||||||
changedMagState = false;
|
changedMagState = false;
|
||||||
|
|
||||||
IMagazine mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, cfg).getReceivers(stack)[0].getMagazine(stack);
|
IMagazine mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, cfg).getReceivers(stack)[0].getMagazine(stack);
|
||||||
|
if(mag == null) return;
|
||||||
if(mag.getType(stack, null) == prevMagType) {
|
if(mag.getType(stack, null) == prevMagType) {
|
||||||
mag.setAmount(stack, MathHelper.clamp_int(prevMagCount, 0, mag.getCapacity(stack)));
|
mag.setAmount(stack, MathHelper.clamp_int(prevMagCount, 0, mag.getCapacity(stack)));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -73,4 +73,27 @@ public class ItemRenderPAMelee extends ItemRenderWeaponBase {
|
|||||||
|
|
||||||
GL11.glShadeModel(GL11.GL_FLAT);
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void renderOther(ItemStack stack, ItemRenderType type, Object... data) {
|
||||||
|
if(type == type.EQUIPPED) return;
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ncrpa_arm);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
double scale = 0.3125D;
|
||||||
|
GL11.glScaled(scale, scale, scale);
|
||||||
|
|
||||||
|
GL11.glRotated(90, 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -5.5, 0);
|
||||||
|
GL11.glTranslated(-2, 0, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("Leftarm");
|
||||||
|
GL11.glTranslated(4, 0, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("RightArm");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL12;
|
|||||||
|
|
||||||
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
|
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.armor.ArmorNCRPA;
|
||||||
import com.hbm.items.armor.ArmorTrenchmaster;
|
import com.hbm.items.armor.ArmorTrenchmaster;
|
||||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||||
import com.hbm.main.ResourceManager;
|
import com.hbm.main.ResourceManager;
|
||||||
@ -47,6 +48,8 @@ public class RenderLoot extends TileEntitySpecialRenderer {
|
|||||||
|
|
||||||
} else if(stack.getItem() instanceof ArmorTrenchmaster) {
|
} else if(stack.getItem() instanceof ArmorTrenchmaster) {
|
||||||
renderTrenchmaster(stack);
|
renderTrenchmaster(stack);
|
||||||
|
} else if(stack.getItem() instanceof ArmorNCRPA) {
|
||||||
|
renderNCR(stack);
|
||||||
} else {
|
} else {
|
||||||
renderStandardItem(item.getW());
|
renderStandardItem(item.getW());
|
||||||
}
|
}
|
||||||
@ -108,6 +111,57 @@ public class RenderLoot extends TileEntitySpecialRenderer {
|
|||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void renderNCR(ItemStack stack) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0.5, 1.5, 0.5);
|
||||||
|
GL11.glScaled(0.0625, 0.0625, 0.0625);
|
||||||
|
GL11.glRotated(180, 1, 0, 0);
|
||||||
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||||
|
if(stack.getItem() == ModItems.ncrpa_helmet) {
|
||||||
|
bindTexture(ResourceManager.ncrpa_helmet);
|
||||||
|
GL11.glEnable(GL11.GL_BLEND);
|
||||||
|
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("Helmet");
|
||||||
|
GL11.glDisable(GL11.GL_BLEND);
|
||||||
|
float lastX = OpenGlHelper.lastBrightnessX;
|
||||||
|
float lastY = OpenGlHelper.lastBrightnessY;
|
||||||
|
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||||||
|
ResourceManager.armor_ncr.renderPart("Eyes");
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
GL11.glPopAttrib();
|
||||||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY);
|
||||||
|
}
|
||||||
|
if(stack.getItem() == ModItems.ncrpa_plate) {
|
||||||
|
bindTexture(ResourceManager.ncrpa_chest);
|
||||||
|
ResourceManager.armor_ncr.renderPart("Chest");
|
||||||
|
bindTexture(ResourceManager.ncrpa_arm);
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotated(-3, 1, 0, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("LeftArm");
|
||||||
|
ResourceManager.armor_ncr.renderPart("RightArm");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
if(stack.getItem() == ModItems.ncrpa_legs) {
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ncrpa_leg);
|
||||||
|
ResourceManager.armor_ncr.renderPart("LeftLeg");
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotated(-0.1, 1, 0, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("RightLeg");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
if(stack.getItem() == ModItems.ncrpa_boots) {
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ncrpa_leg);
|
||||||
|
ResourceManager.armor_ncr.renderPart("LeftBoot");
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotated(-0.1, 1, 0, 0);
|
||||||
|
ResourceManager.armor_ncr.renderPart("RightBoot");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
private void renderNuke() {
|
private void renderNuke() {
|
||||||
GL11.glScaled(0.5, 0.5, 0.5);
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
GL11.glTranslated(1, 0.5, 1);
|
GL11.glTranslated(1, 0.5, 1);
|
||||||
|
|||||||
@ -2221,6 +2221,7 @@ item.gun_minigun_lacunae.name=Lacunae
|
|||||||
item.gun_missile_launcher.name=Raketenwerfer
|
item.gun_missile_launcher.name=Raketenwerfer
|
||||||
item.gun_n_i_4_n_i.name=N I 4 N I
|
item.gun_n_i_4_n_i.name=N I 4 N I
|
||||||
item.gun_pa_melee.name=Powerrüstung - Nahkampfcontroller
|
item.gun_pa_melee.name=Powerrüstung - Nahkampfcontroller
|
||||||
|
item.gun_pa_ranged.name=Powerrüstung - Fernkampfcontroller
|
||||||
item.gun_panzerschreck.name=Panzerschreck
|
item.gun_panzerschreck.name=Panzerschreck
|
||||||
item.gun_pepperbox.name=Bündelrevolver
|
item.gun_pepperbox.name=Bündelrevolver
|
||||||
item.gun_quadro.name=Vierfachraketenwerfer
|
item.gun_quadro.name=Vierfachraketenwerfer
|
||||||
|
|||||||
@ -3064,6 +3064,7 @@ item.gun_minigun_lacunae.name=Lacunae
|
|||||||
item.gun_missile_launcher.name=Missile Launcher
|
item.gun_missile_launcher.name=Missile Launcher
|
||||||
item.gun_n_i_4_n_i.name=N I 4 N I
|
item.gun_n_i_4_n_i.name=N I 4 N I
|
||||||
item.gun_pa_melee.name=Power Armor - Melee Controller
|
item.gun_pa_melee.name=Power Armor - Melee Controller
|
||||||
|
item.gun_pa_ranged.name=Power Armor - Ranged Controller
|
||||||
item.gun_panzerschreck.name=Panzerschreck
|
item.gun_panzerschreck.name=Panzerschreck
|
||||||
item.gun_pepperbox.name=Pepperbox
|
item.gun_pepperbox.name=Pepperbox
|
||||||
item.gun_quadro.name=Quad Rocket Launcher
|
item.gun_quadro.name=Quad Rocket Launcher
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/textures/items/gun_pa_ranged.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/gun_pa_ranged.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 235 B |
Loading…
x
Reference in New Issue
Block a user