mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
ball and powder torture
This commit is contained in:
parent
36a02151bc
commit
1d92bcbf13
@ -1610,6 +1610,10 @@ public class ModItems {
|
|||||||
public static Item gun_debug;
|
public static Item gun_debug;
|
||||||
public static Item ammo_debug;
|
public static Item ammo_debug;
|
||||||
|
|
||||||
|
public static Item gun_pepperbox;
|
||||||
|
|
||||||
|
public static Item ammo_standard;
|
||||||
|
|
||||||
public static Item crucible;
|
public static Item crucible;
|
||||||
|
|
||||||
public static Item stick_dynamite;
|
public static Item stick_dynamite;
|
||||||
@ -6994,6 +6998,9 @@ public class ModItems {
|
|||||||
GameRegistry.registerItem(gun_debug, gun_debug.getUnlocalizedName());
|
GameRegistry.registerItem(gun_debug, gun_debug.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(ammo_debug, ammo_debug.getUnlocalizedName());
|
GameRegistry.registerItem(ammo_debug, ammo_debug.getUnlocalizedName());
|
||||||
|
|
||||||
|
GameRegistry.registerItem(gun_pepperbox, gun_pepperbox.getUnlocalizedName());
|
||||||
|
GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName());
|
||||||
|
|
||||||
//Ammo
|
//Ammo
|
||||||
GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName());
|
GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName());
|
||||||
GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName());
|
GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName());
|
||||||
|
|||||||
@ -6,6 +6,8 @@ import java.util.function.BiConsumer;
|
|||||||
|
|
||||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||||
import com.hbm.particle.SpentCasing;
|
import com.hbm.particle.SpentCasing;
|
||||||
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
@ -25,6 +27,7 @@ public class BulletConfig {
|
|||||||
public int projectilesMax = 1;
|
public int projectilesMax = 1;
|
||||||
|
|
||||||
public float damageMult = 1.0F;
|
public float damageMult = 1.0F;
|
||||||
|
public float armorPiercingPercent = 0.0F;
|
||||||
public float headshotMult = 1.0F;
|
public float headshotMult = 1.0F;
|
||||||
|
|
||||||
public float ricochetAngle = 5F;
|
public float ricochetAngle = 5F;
|
||||||
@ -43,12 +46,14 @@ public class BulletConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; }
|
||||||
|
public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; }
|
||||||
public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; }
|
public BulletConfig setReloadCount(int ammoReloadCount) { this.ammoReloadCount = ammoReloadCount; return this; }
|
||||||
public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; }
|
public BulletConfig setVel(float velocity) { this.velocity = velocity; return this; }
|
||||||
public BulletConfig setSpread(float spread) { this.spread = spread; return this; }
|
public BulletConfig setSpread(float spread) { this.spread = spread; return this; }
|
||||||
public BulletConfig setWear(float wear) { this.wear = wear; return this; }
|
public BulletConfig setWear(float wear) { this.wear = wear; return this; }
|
||||||
public BulletConfig setProjectiles(int min, int max) { this.projectilesMin = min; this.projectilesMax = max; return this; }
|
public BulletConfig setProjectiles(int min, int max) { this.projectilesMin = min; this.projectilesMax = max; return this; }
|
||||||
public BulletConfig setDamage(float damageMult) { this.damageMult = damageMult; return this; }
|
public BulletConfig setDamage(float damageMult) { this.damageMult = damageMult; return this; }
|
||||||
|
public BulletConfig setArmorPiercing(float armorPiercingPercent) { this.armorPiercingPercent = armorPiercingPercent; return this; }
|
||||||
public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; }
|
public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; }
|
||||||
public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; }
|
public BulletConfig setRicochetAngle(float angle) { this.ricochetAngle = angle; return this; }
|
||||||
public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; }
|
public BulletConfig setRicochetCount(int count) { this.maxRicochetCount = count; return this; }
|
||||||
|
|||||||
@ -1,26 +1,20 @@
|
|||||||
package com.hbm.items.weapon.sedna.factory;
|
package com.hbm.items.weapon.sedna.factory;
|
||||||
|
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
|
|
||||||
import com.hbm.handler.CasingEjector;
|
import com.hbm.handler.CasingEjector;
|
||||||
|
import com.hbm.items.ItemEnumMulti;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.items.weapon.sedna.BulletConfig;
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
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.ItemGunBaseNT;
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
import com.hbm.items.weapon.sedna.Receiver;
|
import com.hbm.items.weapon.sedna.Receiver;
|
||||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
|
||||||
import com.hbm.items.weapon.sedna.mags.IMagazine;
|
|
||||||
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.main.MainRegistry;
|
import com.hbm.main.MainRegistry;
|
||||||
import com.hbm.particle.SpentCasing;
|
import com.hbm.particle.SpentCasing;
|
||||||
import com.hbm.particle.SpentCasing.CasingType;
|
import com.hbm.particle.SpentCasing.CasingType;
|
||||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
|
|
||||||
public class GunFactory {
|
public class GunFactory {
|
||||||
|
|
||||||
@ -33,6 +27,7 @@ public class GunFactory {
|
|||||||
|
|
||||||
/// AMMO ITEMS ///
|
/// AMMO ITEMS ///
|
||||||
ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45");
|
ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45");
|
||||||
|
ModItems.ammo_standard = new ItemEnumMulti(EnumAmmo.class, true, true).setUnlocalizedName("ammo_standard").setTextureName(RefStrings.MODID + ":ammo_standard");
|
||||||
|
|
||||||
/// BULLLET CFGS ///
|
/// BULLLET CFGS ///
|
||||||
ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0"));
|
ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0"));
|
||||||
@ -40,7 +35,7 @@ public class GunFactory {
|
|||||||
|
|
||||||
/// GUNS ///
|
/// GUNS ///
|
||||||
ModItems.gun_debug = new ItemGunBaseNT(new GunConfig()
|
ModItems.gun_debug = new ItemGunBaseNT(new GunConfig()
|
||||||
.dura(600F).draw(15).inspect(23).crosshair(Crosshair.L_CLASSIC).hud(Lego.HUD_COMPONENT_DURABILITY, Lego.HUD_COMPONENT_AMMO).smoke(true).orchestra(DEBUG_ORCHESTRA)
|
.dura(600F).draw(15).inspect(23).crosshair(Crosshair.L_CLASSIC).hud(Lego.HUD_COMPONENT_DURABILITY, Lego.HUD_COMPONENT_AMMO).smoke(true).orchestra(Orchestras.DEBUG_ORCHESTRA)
|
||||||
.rec(new Receiver(0)
|
.rec(new Receiver(0)
|
||||||
.dmg(10F).delay(14).reload(46).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
|
.dmg(10F).delay(14).reload(46).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
|
||||||
.mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug, ammo_debug_buckshot))
|
.mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug, ammo_debug_buckshot))
|
||||||
@ -51,39 +46,15 @@ public class GunFactory {
|
|||||||
.anim(Lego.LAMBDA_DEBUG_ANIMS)
|
.anim(Lego.LAMBDA_DEBUG_ANIMS)
|
||||||
).setUnlocalizedName("gun_debug").setTextureName(RefStrings.MODID + ":gun_darter");
|
).setUnlocalizedName("gun_debug").setTextureName(RefStrings.MODID + ":gun_darter");
|
||||||
|
|
||||||
|
XFactoryBlackPowder.init();
|
||||||
|
|
||||||
/// PROXY BULLSHIT ///
|
/// PROXY BULLSHIT ///
|
||||||
MainRegistry.proxy.registerGunCfg();
|
MainRegistry.proxy.registerGunCfg();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BiConsumer<ItemStack, LambdaContext> DEBUG_ORCHESTRA = (stack, ctx) -> {
|
public static enum EnumAmmo {
|
||||||
EntityPlayer player = ctx.player;
|
STONE,
|
||||||
AnimType type = ItemGunBaseNT.getLastAnim(stack);
|
STONE_AP,
|
||||||
int timer = ItemGunBaseNT.getAnimTimer(stack);
|
STONE_SHOT,
|
||||||
|
}
|
||||||
if(type == AnimType.RELOAD) {
|
|
||||||
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
|
||||||
if(timer == 10) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallRemove", 1F, 1F);
|
|
||||||
if(timer == 34) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallInsert", 1F, 1F);
|
|
||||||
if(timer == 40) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
|
|
||||||
|
|
||||||
if(timer == 20) {
|
|
||||||
Receiver rec = ctx.config.getReceivers(stack)[0];
|
|
||||||
IMagazine mag = rec.getMagazine(stack);
|
|
||||||
CasingEjector ejector = rec.getEjector(stack);
|
|
||||||
BulletConfig bullet = (BulletConfig) mag.getType(stack);
|
|
||||||
for(int i = 0; i < mag.getCapacity(stack); i++) ItemGunBaseNT.trySpawnCasing(player, ejector, bullet, stack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(type == AnimType.CYCLE) {
|
|
||||||
if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
|
||||||
}
|
|
||||||
if(type == AnimType.CYCLE_DRY) {
|
|
||||||
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
|
|
||||||
if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
|
||||||
}
|
|
||||||
if(type == AnimType.INSPECT) {
|
|
||||||
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
|
||||||
if(timer == 16) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,12 +7,20 @@ import java.util.function.BiConsumer;
|
|||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.render.item.weapon.sedna.ItemRenderDebug;
|
||||||
|
import com.hbm.render.item.weapon.sedna.ItemRenderPepperbox;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
|
import net.minecraftforge.client.MinecraftForgeClient;
|
||||||
|
|
||||||
public class GunFactoryClient {
|
public class GunFactoryClient {
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
|
//GUNS
|
||||||
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug());
|
||||||
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_pepperbox, new ItemRenderPepperbox());
|
||||||
|
//PROJECTILES
|
||||||
ammo_debug.setRenderer(RENDER_STANDARD_BULLET);
|
ammo_debug.setRenderer(RENDER_STANDARD_BULLET);
|
||||||
ammo_debug_buckshot.setRenderer(RENDER_STANDARD_BULLET);
|
ammo_debug_buckshot.setRenderer(RENDER_STANDARD_BULLET);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,70 @@
|
|||||||
|
package com.hbm.items.weapon.sedna.factory;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
|
import com.hbm.handler.CasingEjector;
|
||||||
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
|
import com.hbm.items.weapon.sedna.Receiver;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||||
|
import com.hbm.items.weapon.sedna.mags.IMagazine;
|
||||||
|
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class Orchestras {
|
||||||
|
|
||||||
|
public static BiConsumer<ItemStack, LambdaContext> DEBUG_ORCHESTRA = (stack, ctx) -> {
|
||||||
|
EntityPlayer player = ctx.player;
|
||||||
|
AnimType type = ItemGunBaseNT.getLastAnim(stack);
|
||||||
|
int timer = ItemGunBaseNT.getAnimTimer(stack);
|
||||||
|
|
||||||
|
if(type == AnimType.RELOAD) {
|
||||||
|
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
if(timer == 10) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallRemove", 1F, 1F);
|
||||||
|
if(timer == 34) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallInsert", 1F, 1F);
|
||||||
|
if(timer == 40) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
|
||||||
|
|
||||||
|
if(timer == 20) {
|
||||||
|
Receiver rec = ctx.config.getReceivers(stack)[0];
|
||||||
|
IMagazine mag = rec.getMagazine(stack);
|
||||||
|
CasingEjector ejector = rec.getEjector(stack);
|
||||||
|
BulletConfig bullet = (BulletConfig) mag.getType(stack);
|
||||||
|
for(int i = 0; i < mag.getCapacity(stack); i++) ItemGunBaseNT.trySpawnCasing(player, ejector, bullet, stack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(type == AnimType.CYCLE) {
|
||||||
|
if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
}
|
||||||
|
if(type == AnimType.CYCLE_DRY) {
|
||||||
|
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
|
||||||
|
if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
}
|
||||||
|
if(type == AnimType.INSPECT) {
|
||||||
|
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
if(timer == 16) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_PEPPERBOX = (stack, ctx) -> {
|
||||||
|
EntityPlayer player = ctx.player;
|
||||||
|
AnimType type = ItemGunBaseNT.getLastAnim(stack);
|
||||||
|
int timer = ItemGunBaseNT.getAnimTimer(stack);
|
||||||
|
|
||||||
|
if(type == AnimType.RELOAD) {
|
||||||
|
if(timer == 20) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallInsert", 1F, 1F);
|
||||||
|
if(timer == 55) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverSpin", 1F, 1F);
|
||||||
|
}
|
||||||
|
if(type == AnimType.CYCLE) {
|
||||||
|
if(timer == 21) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
}
|
||||||
|
if(type == AnimType.CYCLE_DRY) {
|
||||||
|
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
|
||||||
|
if(timer == 11) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
|
||||||
|
}
|
||||||
|
if(type == AnimType.INSPECT) {
|
||||||
|
if(timer == 3) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverSpin", 1F, 1F);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
package com.hbm.items.weapon.sedna.factory;
|
||||||
|
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
|
import com.hbm.items.ModItems;
|
||||||
|
import com.hbm.items.weapon.sedna.BulletConfig;
|
||||||
|
import com.hbm.items.weapon.sedna.Crosshair;
|
||||||
|
import com.hbm.items.weapon.sedna.GunConfig;
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
|
import com.hbm.items.weapon.sedna.Receiver;
|
||||||
|
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||||
|
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||||
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.render.anim.BusAnimation;
|
||||||
|
import com.hbm.render.anim.BusAnimationSequence;
|
||||||
|
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||||
|
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class XFactoryBlackPowder {
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
|
||||||
|
BulletConfig stone = new BulletConfig().setItem(EnumAmmo.STONE).setSpread(0.025F).setRicochetAngle(15);
|
||||||
|
BulletConfig flint = new BulletConfig().setItem(EnumAmmo.STONE_AP).setSpread(0.01F).setRicochetAngle(5);
|
||||||
|
BulletConfig shot = new BulletConfig().setItem(EnumAmmo.STONE_SHOT).setSpread(0.1F).setRicochetAngle(45).setProjectiles(6, 6).setDamage(0.2F);
|
||||||
|
|
||||||
|
ModItems.gun_pepperbox = new ItemGunBaseNT(new GunConfig()
|
||||||
|
.dura(300).draw(4).inspect(23).crosshair(Crosshair.L_CLASSIC).hud(Lego.HUD_COMPONENT_DURABILITY, Lego.HUD_COMPONENT_AMMO).smoke(true).orchestra(Orchestras.ORCHESTRA_PEPPERBOX)
|
||||||
|
.rec(new Receiver(0)
|
||||||
|
.dmg(5F).delay(27).reload(67).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
|
||||||
|
.mag(new MagazineFullReload(0, 6).addConfigs(stone, flint, shot))
|
||||||
|
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE))
|
||||||
|
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM)
|
||||||
|
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
||||||
|
.anim(LAMBDA_PEPPERBOX_ANIMS)
|
||||||
|
).setUnlocalizedName("gun_pepperbox").setTextureName(RefStrings.MODID + ":gun_darter");
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_PEPPERBOX_ANIMS = (stack, type) -> {
|
||||||
|
switch(type) {
|
||||||
|
case CYCLE: return new BusAnimation()
|
||||||
|
.addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 1025).addPos(60, 0, 0, 250))
|
||||||
|
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(45, 0, 0, 150, IType.SIN_DOWN).addPos(45, 0, 0, 50).addPos(0, 0, 0, 500, IType.SIN_FULL))
|
||||||
|
.addBus("HAMMER", new BusAnimationSequence().addPos(80, 0, 0, 25).addPos(80, 0, 0, 1000).addPos(0, 0, 0, 250))
|
||||||
|
.addBus("TRIGGER", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(1, 0, 0, 250).addPos(0, 0, 0, 100));
|
||||||
|
case CYCLE_DRY: return new BusAnimation()
|
||||||
|
.addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 525).addPos(60, 0, 0, 250))
|
||||||
|
.addBus("HAMMER", new BusAnimationSequence().addPos(80, 0, 0, 25).addPos(80, 0, 0, 500).addPos(0, 0, 0, 250))
|
||||||
|
.addBus("TRIGGER", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(1, 0, 0, 250).addPos(0, 0, 0, 100));
|
||||||
|
case EQUIP: return new BusAnimation()
|
||||||
|
.addBus("RECOIL", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 200, IType.SIN_DOWN));
|
||||||
|
case RELOAD: return new BusAnimation()
|
||||||
|
.addBus("RECOIL", new BusAnimationSequence().addPos(90, 0, 0, 500, IType.SIN_FULL).addPos(90, 0, 0, 1600).addPos(0, 0, 0, 500, IType.SIN_FULL).addPos(-5, 0, 0, 200, IType.SIN_UP).addPos(0, 0, 0, 200, IType.SIN_DOWN))
|
||||||
|
.addBus("TRANSLATE", new BusAnimationSequence().addPos(0, -12, 5, 500, IType.SIN_FULL).addPos(0, -12, 5, 700).addPos(0, -13, 5, 200).addPos(0, -12, 5, 200).addPos(0, -12, 5, 500).addPos(0, 0, 0, 500, IType.SIN_FULL))
|
||||||
|
.addBus("LOADER", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 5, -5, 0).addPos(0, 0, -0.1, 500, IType.SIN_FULL).addPos(0, 0, -1, 200).addPos(0, 0, -1, 200).addPos(0, 0, -0.1, 200).addPos(0, 5, -5, 500, IType.SIN_FULL).addPos(0, 0, 0, 0))
|
||||||
|
.addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 2600).addPos(-360 * 1, 0, 0, 750, IType.SIN_FULL))
|
||||||
|
.addBus("SHOT", new BusAnimationSequence().addPos(1, 0, 0, 1400).addPos(0, 0, 0, 0));
|
||||||
|
case INSPECT: return new BusAnimation()
|
||||||
|
.addBus("ROTATE", new BusAnimationSequence().addPos(-360 * 1, 0, 0, 750, IType.SIN_FULL))
|
||||||
|
.addBus("RECOIL", new BusAnimationSequence().addPos(-5, 0, 0, 200, IType.SIN_UP).addPos(0, 0, 0, 200, IType.SIN_DOWN));
|
||||||
|
case JAMMED: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -105,7 +105,6 @@ import com.hbm.render.item.*;
|
|||||||
import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType;
|
import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType;
|
||||||
import com.hbm.render.item.block.*;
|
import com.hbm.render.item.block.*;
|
||||||
import com.hbm.render.item.weapon.*;
|
import com.hbm.render.item.weapon.*;
|
||||||
import com.hbm.render.item.weapon.sedna.*;
|
|
||||||
import com.hbm.render.loader.HmfModelLoader;
|
import com.hbm.render.loader.HmfModelLoader;
|
||||||
import com.hbm.render.model.ModelPigeon;
|
import com.hbm.render.model.ModelPigeon;
|
||||||
import com.hbm.render.tileentity.*;
|
import com.hbm.render.tileentity.*;
|
||||||
@ -608,8 +607,6 @@ public class ClientProxy extends ServerProxy {
|
|||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo());
|
||||||
//SEDNA
|
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug());
|
|
||||||
//multitool
|
//multitool
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool());
|
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool());
|
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool());
|
||||||
|
|||||||
@ -845,6 +845,8 @@ public class ResourceManager {
|
|||||||
public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asVBO();
|
public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asVBO();
|
||||||
public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asVBO();
|
public static final IModelCustom lilmac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lilmac.obj")).asVBO();
|
||||||
|
|
||||||
|
public static final IModelCustom pepperbox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/pepperbox.obj")).asVBO();
|
||||||
|
|
||||||
public static final HashMap<String, BusAnimation> python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json"));
|
public static final HashMap<String, BusAnimation> python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json"));
|
||||||
public static final HashMap<String, BusAnimation> cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json"));
|
public static final HashMap<String, BusAnimation> cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json"));
|
||||||
public static final HashMap<String, BusAnimation> novac_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/novac.json"));
|
public static final HashMap<String, BusAnimation> novac_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/novac.json"));
|
||||||
@ -953,7 +955,9 @@ public class ResourceManager {
|
|||||||
public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png");
|
public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png");
|
||||||
public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png");
|
public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png");
|
||||||
public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png");
|
public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png");
|
||||||
|
|
||||||
public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png");
|
public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png");
|
||||||
|
public static final ResourceLocation pepperbox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pepperbox.png");
|
||||||
|
|
||||||
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");
|
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import com.google.gson.JsonArray;
|
|||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
import com.hbm.render.anim.BusAnimationKeyframe.InterpolationType;
|
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||||
import com.hbm.render.anim.BusAnimationSequence.Dimension;
|
import com.hbm.render.anim.BusAnimationSequence.Dimension;
|
||||||
|
|
||||||
public class AnimationLoader {
|
public class AnimationLoader {
|
||||||
@ -143,7 +143,7 @@ public class AnimationLoader {
|
|||||||
|
|
||||||
double value = array.get(0).getAsDouble();
|
double value = array.get(0).getAsDouble();
|
||||||
int duration = array.get(1).getAsInt();
|
int duration = array.get(1).getAsInt();
|
||||||
InterpolationType interpolation = array.size() >= 3 ? InterpolationType.valueOf(array.get(2).getAsString()) : InterpolationType.LINEAR;
|
IType interpolation = array.size() >= 3 ? IType.valueOf(array.get(2).getAsString()) : IType.LINEAR;
|
||||||
|
|
||||||
return new BusAnimationKeyframe(value, duration, interpolation);
|
return new BusAnimationKeyframe(value, duration, interpolation);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,20 +6,23 @@ public class BusAnimationKeyframe {
|
|||||||
//whether the next frame "snaps" to the intended value or has interpolation
|
//whether the next frame "snaps" to the intended value or has interpolation
|
||||||
//it's an enum so stuff like accelerated animations between just
|
//it's an enum so stuff like accelerated animations between just
|
||||||
//two frames could be implemented
|
//two frames could be implemented
|
||||||
public static enum InterpolationType {
|
public static enum IType {
|
||||||
CONSTANT,
|
CONSTANT,
|
||||||
LINEAR
|
LINEAR,
|
||||||
|
SIN_UP,
|
||||||
|
SIN_DOWN,
|
||||||
|
SIN_FULL,
|
||||||
}
|
}
|
||||||
|
|
||||||
public double value;
|
public double value;
|
||||||
public InterpolationType interpolationType;
|
public IType interpolationType;
|
||||||
public int duration;
|
public int duration;
|
||||||
|
|
||||||
//this one can be used for "reset" type keyframes
|
//this one can be used for "reset" type keyframes
|
||||||
public BusAnimationKeyframe() {
|
public BusAnimationKeyframe() {
|
||||||
this.value = 0;
|
this.value = 0;
|
||||||
this.duration = 1;
|
this.duration = 1;
|
||||||
this.interpolationType = InterpolationType.LINEAR;
|
this.interpolationType = IType.LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BusAnimationKeyframe(double value, int duration) {
|
public BusAnimationKeyframe(double value, int duration) {
|
||||||
@ -28,7 +31,7 @@ public class BusAnimationKeyframe {
|
|||||||
this.duration = duration;
|
this.duration = duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BusAnimationKeyframe(double value, int duration, InterpolationType interpolation) {
|
public BusAnimationKeyframe(double value, int duration, IType interpolation) {
|
||||||
this(value, duration);
|
this(value, duration);
|
||||||
this.interpolationType = interpolation;
|
this.interpolationType = interpolation;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.hbm.render.anim;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.render.anim.BusAnimationKeyframe.InterpolationType;
|
import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||||
|
|
||||||
//the actual bus, a sequence of keyframes with their own behavior and such
|
//the actual bus, a sequence of keyframes with their own behavior and such
|
||||||
public class BusAnimationSequence {
|
public class BusAnimationSequence {
|
||||||
@ -50,10 +50,12 @@ public class BusAnimationSequence {
|
|||||||
|
|
||||||
// Two helper methods for the old hard-coded animations
|
// Two helper methods for the old hard-coded animations
|
||||||
public BusAnimationSequence addPos(double x, double y, double z, int duration) {
|
public BusAnimationSequence addPos(double x, double y, double z, int duration) {
|
||||||
addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration));
|
return addPos(x, y, z, duration, IType.LINEAR);
|
||||||
addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration));
|
}
|
||||||
addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration));
|
public BusAnimationSequence addPos(double x, double y, double z, int duration, IType type) {
|
||||||
|
addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration, type));
|
||||||
|
addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration, type));
|
||||||
|
addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration, type));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +63,6 @@ public class BusAnimationSequence {
|
|||||||
addKeyframe(Dimension.RX, new BusAnimationKeyframe(x, duration));
|
addKeyframe(Dimension.RX, new BusAnimationKeyframe(x, duration));
|
||||||
addKeyframe(Dimension.RY, new BusAnimationKeyframe(y, duration));
|
addKeyframe(Dimension.RY, new BusAnimationKeyframe(y, duration));
|
||||||
addKeyframe(Dimension.RZ, new BusAnimationKeyframe(z, duration));
|
addKeyframe(Dimension.RZ, new BusAnimationKeyframe(z, duration));
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,33 +78,33 @@ public class BusAnimationSequence {
|
|||||||
|
|
||||||
int startTime = 0;
|
int startTime = 0;
|
||||||
int endTime = 0;
|
int endTime = 0;
|
||||||
for (BusAnimationKeyframe keyframe: keyframes) {
|
for(BusAnimationKeyframe keyframe : keyframes) {
|
||||||
startTime = endTime;
|
startTime = endTime;
|
||||||
endTime += keyframe.duration;
|
endTime += keyframe.duration;
|
||||||
previousFrame = currentFrame;
|
previousFrame = currentFrame;
|
||||||
currentFrame = keyframe;
|
currentFrame = keyframe;
|
||||||
if (millis < endTime) break;
|
if(millis < endTime) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentFrame == null) {
|
if(currentFrame == null) {
|
||||||
// Scale defaults to 1, others are 0
|
// Scale defaults to 1, others are 0
|
||||||
transform[i] = i >= 6 ? 1 : 0;
|
transform[i] = i >= 6 ? 1 : 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (millis >= endTime) {
|
if(millis >= endTime) {
|
||||||
transform[i] = currentFrame.value;
|
transform[i] = currentFrame.value;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previousFrame != null && previousFrame.interpolationType == InterpolationType.CONSTANT) {
|
if(previousFrame != null && previousFrame.interpolationType == IType.CONSTANT) {
|
||||||
transform[i] = previousFrame.value;
|
transform[i] = previousFrame.value;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double a = currentFrame.value;
|
double a = currentFrame.value;
|
||||||
double b = previousFrame != null ? previousFrame.value : 0;
|
double b = previousFrame != null ? previousFrame.value : 0;
|
||||||
double t = (double)(millis - startTime) / (double)currentFrame.duration;
|
double t = interpolate(startTime, millis, currentFrame.duration, currentFrame.interpolationType);
|
||||||
|
|
||||||
transform[i] = (a - b) * t + b;
|
transform[i] = (a - b) * t + b;
|
||||||
}
|
}
|
||||||
@ -115,6 +116,14 @@ public class BusAnimationSequence {
|
|||||||
return transform;
|
return transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double interpolate(double start, double end, double duration, IType interp) {
|
||||||
|
if(interp == IType.LINEAR) return (end - start) / duration;
|
||||||
|
if(interp == IType.SIN_UP) return -Math.sin(((end - start) / duration * Math.PI + Math.PI) / 2) + 1;
|
||||||
|
if(interp == IType.SIN_DOWN) return Math.sin((end - start) / duration * Math.PI / 2);
|
||||||
|
if(interp == IType.SIN_FULL) return (-Math.cos((end - start) / duration * Math.PI) + 1) / 2D;
|
||||||
|
return end - start;
|
||||||
|
}
|
||||||
|
|
||||||
public int getTotalTime() {
|
public int getTotalTime() {
|
||||||
int highestTime = 0;
|
int highestTime = 0;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,129 @@
|
|||||||
|
package com.hbm.render.item.weapon.sedna;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.render.anim.HbmAnimations;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public class ItemRenderPepperbox extends ItemRenderWeaponBase {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setupFirstPerson(ItemStack stack) {
|
||||||
|
GL11.glTranslated(0, 0, 1.5);
|
||||||
|
|
||||||
|
float offset = 0.8F;
|
||||||
|
standardAimingTransform(stack,
|
||||||
|
-1.25F * offset, -0.75F * offset, 1F * offset,
|
||||||
|
0, -2.5 / 8D, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderFirstPerson(ItemStack stack) {
|
||||||
|
|
||||||
|
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||||
|
|
||||||
|
double scale = 0.25D;
|
||||||
|
GL11.glScaled(scale, scale, scale);
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
|
||||||
|
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
|
||||||
|
double[] cylinder = HbmAnimations.getRelevantTransformation("ROTATE");
|
||||||
|
double[] hammer = HbmAnimations.getRelevantTransformation("HAMMER");
|
||||||
|
double[] trigger = HbmAnimations.getRelevantTransformation("TRIGGER");
|
||||||
|
double[] translate = HbmAnimations.getRelevantTransformation("TRANSLATE");
|
||||||
|
double[] loader = HbmAnimations.getRelevantTransformation("LOADER");
|
||||||
|
double[] shot = HbmAnimations.getRelevantTransformation("SHOT");
|
||||||
|
|
||||||
|
GL11.glTranslated(translate[0], translate[1], translate[2]);
|
||||||
|
|
||||||
|
GL11.glTranslated(0, 0, -5);
|
||||||
|
GL11.glRotated(recoil[0], -1, 0, 0);
|
||||||
|
GL11.glTranslated(0, 0, 5);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, 0.5, 7);
|
||||||
|
GL11.glRotated(90, 0, 1, 0);
|
||||||
|
this.renderSmokeNodes(gun.smokeNodes, 0.5D);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.pepperbox_tex);
|
||||||
|
|
||||||
|
if(loader[0] != 0 || loader[1] != 0 || loader[2] != 0) {
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(loader[0], loader[1], loader[2]);
|
||||||
|
ResourceManager.pepperbox.renderPart("Speedloader");
|
||||||
|
if(shot[0] != 0) ResourceManager.pepperbox.renderPart("Shot");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
ResourceManager.pepperbox.renderPart("Grip");
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glRotated(cylinder[0], 0, 0, 1);
|
||||||
|
ResourceManager.pepperbox.renderPart("Cylinder");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, 0.375, -1.875);
|
||||||
|
GL11.glRotated(hammer[0], 1, 0, 0);
|
||||||
|
GL11.glTranslated(0, -0.375, 1.875);
|
||||||
|
ResourceManager.pepperbox.renderPart("Hammer");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, 0, -trigger[0] * 0.5);
|
||||||
|
ResourceManager.pepperbox.renderPart("Trigger");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glTranslated(0, 0.5, 7);
|
||||||
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
|
GL11.glRotated(90, 0, 1, 0);
|
||||||
|
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
|
||||||
|
this.renderMuzzleFlash(gun.lastShot);
|
||||||
|
GL11.glRotated(45, 1, 0, 0);
|
||||||
|
this.renderMuzzleFlash(gun.lastShot);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setupThirdPerson(ItemStack stack) {
|
||||||
|
super.setupThirdPerson(stack);
|
||||||
|
GL11.glTranslated(0, 1, 3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setupInv(ItemStack stack) {
|
||||||
|
super.setupInv(stack);
|
||||||
|
double scale = 1.5D;
|
||||||
|
GL11.glScaled(scale, scale, scale);
|
||||||
|
GL11.glRotated(25, 1, 0, 0);
|
||||||
|
GL11.glRotated(45, 0, 1, 0);
|
||||||
|
GL11.glTranslated(0.5, 0.5, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderOther(ItemStack stack, ItemRenderType type) {
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.pepperbox_tex);
|
||||||
|
ResourceManager.pepperbox.renderPart("Grip");
|
||||||
|
ResourceManager.pepperbox.renderPart("Cylinder");
|
||||||
|
ResourceManager.pepperbox.renderPart("Hammer");
|
||||||
|
ResourceManager.pepperbox.renderPart("Trigger");
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -53,6 +53,24 @@ public class EntityDamageUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static float getDamageAfterTax(EntityLivingBase living, DamageSource source, float amount) {
|
||||||
|
amount = ForgeHooks.onLivingHurt(living, source, amount);
|
||||||
|
if(amount <= 0) return 0;
|
||||||
|
amount = applyArmorCalculations(living, source, amount);
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean attackArmorPiercing(EntityLivingBase living, DamageSource sourceDamageCalc, DamageSource sourceArmorPiercing, float amount, float piercing) {
|
||||||
|
if(piercing <= 0) return living.attackEntityFrom(sourceDamageCalc, amount);
|
||||||
|
//damage intended to pass the armor
|
||||||
|
float afterTax = getDamageAfterTax(living, sourceDamageCalc, amount);
|
||||||
|
//damage removed by the calculation
|
||||||
|
float reduced = Math.max(amount - afterTax, 0F);
|
||||||
|
//damage that would pass + damage tthat wouldn't pass * AP percentage
|
||||||
|
return living.attackEntityFrom(sourceArmorPiercing, Math.max(afterTax + (reduced * piercing), 0F));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Currently just a copy of the vanilla damage code */
|
/** Currently just a copy of the vanilla damage code */
|
||||||
public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) {
|
public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) {
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -220,6 +220,8 @@
|
|||||||
"weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]},
|
"weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]},
|
||||||
"weapon.switchmode2": {"category": "player", "sounds": [{"name": "weapon/switchmode2", "stream": false}]},
|
"weapon.switchmode2": {"category": "player", "sounds": [{"name": "weapon/switchmode2", "stream": false}]},
|
||||||
|
|
||||||
|
"weapon.fire.blackPowder": {"category": "player", "sounds": [{"name": "weapon/fire/blackPowder", "stream": false}]},
|
||||||
|
|
||||||
"weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]},
|
"weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]},
|
||||||
"weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]},
|
"weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]},
|
||||||
"weapon.reload.closeClick": {"category": "player", "sounds": ["weapon/reload/closeClick"]},
|
"weapon.reload.closeClick": {"category": "player", "sounds": ["weapon/reload/closeClick"]},
|
||||||
|
|||||||
BIN
src/main/resources/assets/hbm/sounds/weapon/fire/blackPowder.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/fire/blackPowder.ogg
Normal file
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 276 B |
Binary file not shown.
|
After Width: | Height: | Size: 274 B |
Binary file not shown.
|
After Width: | Height: | Size: 248 B |
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.7 KiB |
Loading…
x
Reference in New Issue
Block a user