yet more gun stuff!

This commit is contained in:
Boblet 2024-09-20 15:03:52 +02:00
parent ca14f47cbc
commit fcf0f0d2d9
28 changed files with 454 additions and 252 deletions

View File

@ -11,6 +11,8 @@ import net.minecraft.world.World;
public class EntityBulletBaseMK4 extends EntityThrowableInterp { public class EntityBulletBaseMK4 extends EntityThrowableInterp {
public BulletConfig config; public BulletConfig config;
public double velocity;
public double prevVelocity;
public EntityBulletBaseMK4(World world) { public EntityBulletBaseMK4(World world) {
super(world); super(world);
@ -69,16 +71,25 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
return; return;
} }
this.prevPosX = posX; this.prevPosX = this.posX;
this.prevPosY = posY; this.prevPosY = this.posY;
this.prevPosZ = posZ; this.prevPosZ = this.posZ;
super.onUpdate(); super.onUpdate();
double dX = this.posX - this.prevPosX;
double dY = this.posY - this.prevPosY;
double dZ = this.posZ - this.prevPosZ;
this.prevVelocity = this.velocity;
this.velocity = Math.sqrt(dX * dX + dY * dY + dZ * dZ);
} }
@Override @Override
protected void onImpact(MovingObjectPosition mop) { protected void onImpact(MovingObjectPosition mop) {
this.setDead(); if(!worldObj.isRemote) {
this.setDead();
}
} }
@Override protected double headingForceMult() { return 1D; } @Override protected double headingForceMult() { return 1D; }

View File

@ -70,13 +70,13 @@ public class Gun12GaugeFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL_TRANSLATE", new BusAnimationSequence() .addBus("RECOIL_TRANSLATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, -2, 100) .addPos(0, 0, -2, 100)
.addKeyframePosition(0, 0, 0, 200) .addPos(0, 0, 0, 200)
) )
.addBus("PUMP", new BusAnimationSequence() .addBus("PUMP", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 450) .addPos(0, 0, 0, 450)
.addKeyframePosition(0, 0, -1.8, 200) .addPos(0, 0, -1.8, 200)
.addKeyframePosition(0, 0, 0, 200) .addPos(0, 0, 0, 200)
) )
); );

View File

@ -49,16 +49,16 @@ public class Gun20GaugeFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("LEVER_ROTATE", new BusAnimationSequence() .addBus("LEVER_ROTATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 250) .addPos(0, 0, 0, 250)
.addKeyframePosition(0, 0, 45, 500) .addPos(0, 0, 45, 500)
.addKeyframePosition(0, 0, 0, 500) .addPos(0, 0, 0, 500)
) )
.addBus("LEVER_RECOIL", new BusAnimationSequence() .addBus("LEVER_RECOIL", new BusAnimationSequence()
.addKeyframePosition(0.5, 0, 0, 50) .addPos(0.5, 0, 0, 50)
.addKeyframePosition(0, 0, 0, 50) .addPos(0, 0, 0, 50)
.addKeyframePosition(0, 0, 0, 150) .addPos(0, 0, 0, 150)
.addKeyframePosition(0, -0.5, 0, 500) .addPos(0, -0.5, 0, 500)
.addKeyframePosition(0, 0, 0, 500) .addPos(0, 0, 0, 500)
) )
); );

View File

@ -80,12 +80,12 @@ public class Gun45ACPFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("SLIDE", new BusAnimationSequence() .addBus("SLIDE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 10)// Wait for hammer .addPos(0, 0, 0, 10)// Wait for hammer
.addKeyframePosition(0, 0, -3.5, 40)// Slide back .addPos(0, 0, -3.5, 40)// Slide back
.addKeyframePosition(0, 0, 0, 40))// Return .addPos(0, 0, 0, 40))// Return
.addBus("HAMMER", new BusAnimationSequence() .addBus("HAMMER", new BusAnimationSequence()
.addKeyframePosition(15, 0, 0, 10) .addPos(15, 0, 0, 10)
.addKeyframePosition(0, 0, 0, 40))); .addPos(0, 0, 0, 40)));
return config; return config;
} }

View File

@ -123,25 +123,25 @@ public class Gun4GaugeFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("SAUER_RECOIL", new BusAnimationSequence() .addBus("SAUER_RECOIL", new BusAnimationSequence()
.addKeyframePosition(0.5, 0, 0, 50) .addPos(0.5, 0, 0, 50)
.addKeyframePosition(0, 0, 0, 50) .addPos(0, 0, 0, 50)
) )
.addBus("SAUER_TILT", new BusAnimationSequence() .addBus("SAUER_TILT", new BusAnimationSequence()
.addKeyframePosition(0.0, 0, 0, 200) // do nothing for 200ms .addPos(0.0, 0, 0, 200) // do nothing for 200ms
.addKeyframePosition(0, 0, 30, 150) //tilt forward .addPos(0, 0, 30, 150) //tilt forward
.addKeyframePosition(45, 0, 30, 150) //tilt sideways .addPos(45, 0, 30, 150) //tilt sideways
.addKeyframePosition(45, 0, 30, 200) //do nothing for 200ms (eject) .addPos(45, 0, 30, 200) //do nothing for 200ms (eject)
.addKeyframePosition(0, 0, 30, 150) //restore sideways .addPos(0, 0, 30, 150) //restore sideways
.addKeyframePosition(0, 0, 0, 150) //restore forward .addPos(0, 0, 0, 150) //restore forward
) )
.addBus("SAUER_COCK", new BusAnimationSequence() .addBus("SAUER_COCK", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 500) //do nothing for 500ms .addPos(0, 0, 0, 500) //do nothing for 500ms
.addKeyframePosition(1, 0, 0, 100) //pull back lever for 100ms .addPos(1, 0, 0, 100) //pull back lever for 100ms
.addKeyframePosition(0, 0, 0, 100) //release lever for 100ms .addPos(0, 0, 0, 100) //release lever for 100ms
) )
.addBus("SAUER_SHELL_EJECT", new BusAnimationSequence() .addBus("SAUER_SHELL_EJECT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 500) //do nothing for 500ms .addPos(0, 0, 0, 500) //do nothing for 500ms
.addKeyframePosition(0, 0, 1, 500) //FLING! .addPos(0, 0, 1, 500) //FLING!
) )
); );

View File

@ -137,20 +137,20 @@ public class Gun50BMGFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
); );
config.animations.put(AnimType.RELOAD, new BusAnimation() config.animations.put(AnimType.RELOAD, new BusAnimation()
.addBus("TILT", new BusAnimationSequence() .addBus("TILT", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 125) .addPos(1, 0, 0, 125)
.addKeyframePosition(1, 0, 0, 750) .addPos(1, 0, 0, 750)
.addKeyframePosition(0, 0, 0, 125) .addPos(0, 0, 0, 125)
) )
.addBus("MAG", new BusAnimationSequence() .addBus("MAG", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 200) .addPos(0, 0, 1, 200)
.addKeyframePosition(1, 0, 1, 200) .addPos(1, 0, 1, 200)
.addKeyframePosition(0, 0, 0, 200) .addPos(0, 0, 0, 200)
) )
); );
@ -190,8 +190,8 @@ public class Gun50BMGFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
); );
@ -237,10 +237,10 @@ public class Gun50BMGFactory {
config.animations.put(AnimType.CYCLE, config.animations.put(AnimType.CYCLE,
new BusAnimation() new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(-0.45, 0.15, 0, 40) // Moves back and raise slightly .addPos(-0.45, 0.15, 0, 40) // Moves back and raise slightly
.addKeyframePosition(0, 0, 0, 75)) // Then forward again .addPos(0, 0, 0, 75)) // Then forward again
.addBus("EJECT", new BusAnimationSequence().addKeyframePosition(0, 0, 0, 30) // Wait .addBus("EJECT", new BusAnimationSequence().addPos(0, 0, 0, 30) // Wait
.addKeyframePosition(50, 0, 0, 120))); // Fly // out .addPos(50, 0, 0, 120))); // Fly // out
config.ejector = EJECTOR_SNIPER; config.ejector = EJECTOR_SNIPER;
return config; return config;

View File

@ -92,8 +92,8 @@ public class Gun556mmFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(0.5, 0, 0, 25) .addPos(0.5, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
); );

View File

@ -47,25 +47,25 @@ public class Gun75BoltFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
.addBus("EJECT", new BusAnimationSequence() .addBus("EJECT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 25) .addPos(0, 0, 0, 25)
.addKeyframePosition(0, 0, 1, 75) .addPos(0, 0, 1, 75)
) )
); );
config.animations.put(AnimType.RELOAD, new BusAnimation() config.animations.put(AnimType.RELOAD, new BusAnimation()
.addBus("TILT", new BusAnimationSequence() .addBus("TILT", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 250) .addPos(1, 0, 0, 250)
.addKeyframePosition(1, 0, 0, 1500) .addPos(1, 0, 0, 1500)
.addKeyframePosition(0, 0, 0, 250) .addPos(0, 0, 0, 250)
) )
.addBus("MAG", new BusAnimationSequence() .addBus("MAG", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 500) .addPos(0, 0, 1, 500)
.addKeyframePosition(1, 0, 1, 500) .addPos(1, 0, 1, 500)
.addKeyframePosition(0, 0, 0, 500) .addPos(0, 0, 0, 500)
) )
); );

View File

@ -57,15 +57,15 @@ public class Gun762mmFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
); );
config.animations.put(AnimType.RELOAD, new BusAnimation() config.animations.put(AnimType.RELOAD, new BusAnimation()
.addBus("MAG", new BusAnimationSequence() .addBus("MAG", new BusAnimationSequence()
.addKeyframePosition(0, -1, 0, 500) .addPos(0, -1, 0, 500)
.addKeyframePosition(0, 0, 0, 500) .addPos(0, 0, 0, 500)
) )
); );
@ -176,19 +176,19 @@ public class Gun762mmFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
.addBus("LEVER_PULL", new BusAnimationSequence() .addBus("LEVER_PULL", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick .addPos(0, 0, 0, 375) //wait out recoil and lever flick
.addKeyframePosition(-1, 0, 0, 375) //pull back bolt .addPos(-1, 0, 0, 375) //pull back bolt
.addKeyframePosition(0, 0, 0, 375) //release bolt .addPos(0, 0, 0, 375) //release bolt
) )
.addBus("LEVER_ROTATE", new BusAnimationSequence() .addBus("LEVER_ROTATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 250) //wait out recoil .addPos(0, 0, 0, 250) //wait out recoil
.addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms .addPos(1, 0, 0, 125) //flick up lever in 125ms
.addKeyframePosition(1, 0, 0, 750) //pull action .addPos(1, 0, 0, 750) //pull action
.addKeyframePosition(0, 0, 0, 125) //flick down lever again .addPos(0, 0, 0, 125) //flick down lever again
) )
); );
@ -215,19 +215,19 @@ public class Gun762mmFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
.addBus("LEVER_PULL", new BusAnimationSequence() .addBus("LEVER_PULL", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick .addPos(0, 0, 0, 375) //wait out recoil and lever flick
.addKeyframePosition(-1, 0, 0, 375) //pull back bolt .addPos(-1, 0, 0, 375) //pull back bolt
.addKeyframePosition(0, 0, 0, 375) //release bolt .addPos(0, 0, 0, 375) //release bolt
) )
.addBus("LEVER_ROTATE", new BusAnimationSequence() .addBus("LEVER_ROTATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 250) //wait out recoil .addPos(0, 0, 0, 250) //wait out recoil
.addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms .addPos(1, 0, 0, 125) //flick up lever in 125ms
.addKeyframePosition(1, 0, 0, 750) //pull action .addPos(1, 0, 0, 750) //pull action
.addKeyframePosition(0, 0, 0, 125) //flick down lever again .addPos(0, 0, 0, 125) //flick down lever again
) )
); );
@ -258,19 +258,19 @@ public class Gun762mmFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
.addBus("LEVER_PULL", new BusAnimationSequence() .addBus("LEVER_PULL", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 375) //wait out recoil and lever flick .addPos(0, 0, 0, 375) //wait out recoil and lever flick
.addKeyframePosition(-1, 0, 0, 375) //pull back bolt .addPos(-1, 0, 0, 375) //pull back bolt
.addKeyframePosition(0, 0, 0, 375) //release bolt .addPos(0, 0, 0, 375) //release bolt
) )
.addBus("LEVER_ROTATE", new BusAnimationSequence() .addBus("LEVER_ROTATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 250) //wait out recoil .addPos(0, 0, 0, 250) //wait out recoil
.addKeyframePosition(1, 0, 0, 125) //flick up lever in 125ms .addPos(1, 0, 0, 125) //flick up lever in 125ms
.addKeyframePosition(1, 0, 0, 750) //pull action .addPos(1, 0, 0, 750) //pull action
.addKeyframePosition(0, 0, 0, 125) //flick down lever again .addPos(0, 0, 0, 125) //flick down lever again
) )
); );

View File

@ -41,8 +41,8 @@ public class GunGaussFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 25) .addPos(1, 0, 0, 25)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
); );

View File

@ -82,23 +82,23 @@ public class GunRocketFactory {
config.animations.put(AnimType.CYCLE, new BusAnimation() config.animations.put(AnimType.CYCLE, new BusAnimation()
.addBus("QUADRO_RECOIL", new BusAnimationSequence() .addBus("QUADRO_RECOIL", new BusAnimationSequence()
.addKeyframePosition(0, 0, -0.5, 50) .addPos(0, 0, -0.5, 50)
.addKeyframePosition(0, 0, 0, 50) .addPos(0, 0, 0, 50)
) )
); );
config.animations.put(AnimType.RELOAD, new BusAnimation() config.animations.put(AnimType.RELOAD, new BusAnimation()
.addBus("QUADRO_RELOAD_ROTATE", new BusAnimationSequence() .addBus("QUADRO_RELOAD_ROTATE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 60, 750) .addPos(0, 0, 60, 750)
.addKeyframePosition(0, 0, 60, 3500) .addPos(0, 0, 60, 3500)
.addKeyframePosition(0, 0, 0, 750) .addPos(0, 0, 0, 750)
) )
.addBus("QUADRO_RELOAD_PUSH", new BusAnimationSequence() .addBus("QUADRO_RELOAD_PUSH", new BusAnimationSequence()
.addKeyframePosition(-1, -1, 0, 0) .addPos(-1, -1, 0, 0)
.addKeyframePosition(-1, -1, 0, 750) .addPos(-1, -1, 0, 750)
.addKeyframePosition(-1, 0, 0, 500) .addPos(-1, 0, 0, 500)
.addKeyframePosition(0, 0, 0, 3000) .addPos(0, 0, 0, 3000)
.addKeyframePosition(0, 0, 0, 750) .addPos(0, 0, 0, 750)
) )
); );

View File

@ -127,7 +127,7 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack) { public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack) {
return new BusAnimation() return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 1, 50) .addPos(1, 0, 1, 50)
.addKeyframePosition(0, 0, 1, 100)); .addPos(0, 0, 1, 100));
} }
} }

View File

@ -22,16 +22,16 @@ public class ItemCoilgun extends ItemGunBase {
if(type == AnimType.CYCLE) { if(type == AnimType.CYCLE) {
return new BusAnimation() return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 100) .addPos(1, 0, 0, 100)
.addKeyframePosition(0, 0, 0, 200)); .addPos(0, 0, 0, 200));
} }
if(type == AnimType.RELOAD) { if(type == AnimType.RELOAD) {
return new BusAnimation() return new BusAnimation()
.addBus("RELOAD", new BusAnimationSequence() .addBus("RELOAD", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 250) .addPos(1, 0, 0, 250)
.addKeyframePosition(1, 0, 0, 500) .addPos(1, 0, 0, 500)
.addKeyframePosition(0, 0, 0, 250)); .addPos(0, 0, 0, 250));
} }
GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig;

View File

@ -69,54 +69,54 @@ public class ItemGunBio extends ItemGunBase {
lastShot = System.currentTimeMillis(); lastShot = System.currentTimeMillis();
return new BusAnimation() return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 50) .addPos(0, 0, 0, 50)
.addKeyframePosition(0, 0, -3, 50) .addPos(0, 0, -3, 50)
.addKeyframePosition(0, 0, 0, 250) .addPos(0, 0, 0, 250)
) )
.addBus("HAMMER", new BusAnimationSequence() .addBus("HAMMER", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 50) .addPos(0, 0, 1, 50)
.addKeyframePosition(0, 0, 1, 300) .addPos(0, 0, 1, 300)
.addKeyframePosition(0, 0, 0, 200) .addPos(0, 0, 0, 200)
) )
.addBus("DRUM", new BusAnimationSequence() .addBus("DRUM", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 50) .addPos(0, 0, 1, 50)
); );
} }
if(type == AnimType.RELOAD) { if(type == AnimType.RELOAD) {
return new BusAnimation() return new BusAnimation()
.addBus("LATCH", new BusAnimationSequence() .addBus("LATCH", new BusAnimationSequence()
.addKeyframePosition(0, 0, 90, 300) .addPos(0, 0, 90, 300)
.addKeyframePosition(0, 0, 90, 2000) .addPos(0, 0, 90, 2000)
.addKeyframePosition(0, 0, 0, 150) .addPos(0, 0, 0, 150)
) )
.addBus("FRONT", new BusAnimationSequence() .addBus("FRONT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 200) .addPos(0, 0, 0, 200)
.addKeyframePosition(0, 0, 45, 150) .addPos(0, 0, 45, 150)
.addKeyframePosition(0, 0, 45, 2000) .addPos(0, 0, 45, 2000)
.addKeyframePosition(0, 0, 0, 75) .addPos(0, 0, 0, 75)
) )
.addBus("RELOAD_ROT", new BusAnimationSequence() .addBus("RELOAD_ROT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 300) .addPos(0, 0, 0, 300)
.addKeyframePosition(60, 0, 0, 500) .addPos(60, 0, 0, 500)
.addKeyframePosition(60, 0, 0, 500) .addPos(60, 0, 0, 500)
.addKeyframePosition(0, -90, -90, 0) .addPos(0, -90, -90, 0)
.addKeyframePosition(0, -90, -90, 600) .addPos(0, -90, -90, 600)
.addKeyframePosition(0, 0, 0, 300) .addPos(0, 0, 0, 300)
.addKeyframePosition(0, 0, 0, 100) .addPos(0, 0, 0, 100)
.addKeyframePosition(-45, 0, 0, 50) .addPos(-45, 0, 0, 50)
.addKeyframePosition(-45, 0, 0, 100) .addPos(-45, 0, 0, 100)
.addKeyframePosition(0, 0, 0, 300) .addPos(0, 0, 0, 300)
) )
.addBus("RELOAD_MOVE", new BusAnimationSequence() .addBus("RELOAD_MOVE", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 300) .addPos(0, 0, 0, 300)
.addKeyframePosition(0, -15, 0, 1000) .addPos(0, -15, 0, 1000)
.addKeyframePosition(0, 0, 0, 450) .addPos(0, 0, 0, 450)
) )
.addBus("DRUM_PUSH", new BusAnimationSequence() .addBus("DRUM_PUSH", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 1600) .addPos(0, 0, 0, 1600)
.addKeyframePosition(0, 0, -5, 0) .addPos(0, 0, -5, 0)
.addKeyframePosition(0, 0, 0, 300) .addPos(0, 0, 0, 300)
); );
} }

View File

@ -64,7 +64,7 @@ public class ItemGunPip extends ItemGunBase {
if(type == AnimType.EQUIP) { if(type == AnimType.EQUIP) {
return new BusAnimation() return new BusAnimation()
.addBus("ROTATE", new BusAnimationSequence() .addBus("ROTATE", new BusAnimationSequence()
.addKeyframePosition(-360, 0, 0, 350) .addPos(-360, 0, 0, 350)
); );
} }
@ -73,17 +73,17 @@ public class ItemGunPip extends ItemGunBase {
int s = 1; int s = 1;
return new BusAnimation() return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence() .addBus("RECOIL", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 50 * s) .addPos(0, 0, 0, 50 * s)
.addKeyframePosition(0, 0, -3, 50 * s) .addPos(0, 0, -3, 50 * s)
.addKeyframePosition(0, 0, 0, 250 * s) .addPos(0, 0, 0, 250 * s)
) )
.addBus("HAMMER", new BusAnimationSequence() .addBus("HAMMER", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 50 * s) .addPos(0, 0, 1, 50 * s)
.addKeyframePosition(0, 0, 1, 300 * s) .addPos(0, 0, 1, 300 * s)
.addKeyframePosition(0, 0, 0, 200 * s) .addPos(0, 0, 0, 200 * s)
) )
.addBus("DRUM", new BusAnimationSequence() .addBus("DRUM", new BusAnimationSequence()
.addKeyframePosition(0, 0, 1, 50 * s) .addPos(0, 0, 1, 50 * s)
); );
} }
@ -91,44 +91,44 @@ public class ItemGunPip extends ItemGunBase {
int s = 1; int s = 1;
return new BusAnimation() return new BusAnimation()
.addBus("RELAOD_TILT", new BusAnimationSequence() .addBus("RELAOD_TILT", new BusAnimationSequence()
.addKeyframePosition(-15, 0, 0, 100 * s) .addPos(-15, 0, 0, 100 * s)
.addKeyframePosition(65, 0, 0, 100 * s) //200 .addPos(65, 0, 0, 100 * s) //200
.addKeyframePosition(45, 0, 0, 50 * s) //250 .addPos(45, 0, 0, 50 * s) //250
.addKeyframePosition(0, 0, 0, 200 * s) //450 .addPos(0, 0, 0, 200 * s) //450
.addKeyframePosition(0, 0, 0, 1450 * s) //1900 .addPos(0, 0, 0, 1450 * s) //1900
.addKeyframePosition(-80, 0, 0, 100 * s) //2000 .addPos(-80, 0, 0, 100 * s) //2000
.addKeyframePosition(-80, 0, 0, 100 * s) //2100 .addPos(-80, 0, 0, 100 * s) //2100
.addKeyframePosition(0, 0, 0, 200 * s) //2300 .addPos(0, 0, 0, 200 * s) //2300
) )
.addBus("RELOAD_CYLINDER", new BusAnimationSequence() .addBus("RELOAD_CYLINDER", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 200 * s) .addPos(0, 0, 0, 200 * s)
.addKeyframePosition(90, 0, 0, 100 * s) //300 .addPos(90, 0, 0, 100 * s) //300
.addKeyframePosition(90, 0, 0, 1700 * s) //2000 .addPos(90, 0, 0, 1700 * s) //2000
.addKeyframePosition(0, 0, 0, 70 * s) //2100 .addPos(0, 0, 0, 70 * s) //2100
) )
.addBus("RELOAD_LIFT", new BusAnimationSequence() .addBus("RELOAD_LIFT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 350 * s) .addPos(0, 0, 0, 350 * s)
.addKeyframePosition(-45, 0, 0, 250 * s) //600 .addPos(-45, 0, 0, 250 * s) //600
.addKeyframePosition(-45, 0, 0, 350 * s) //950 .addPos(-45, 0, 0, 350 * s) //950
.addKeyframePosition(-15, 0, 0, 200 * s) //1150 .addPos(-15, 0, 0, 200 * s) //1150
.addKeyframePosition(-15, 0, 0, 1050 * s) //2200 .addPos(-15, 0, 0, 1050 * s) //2200
.addKeyframePosition(0, 0, 0, 100 * s) //2300 .addPos(0, 0, 0, 100 * s) //2300
) )
.addBus("RELOAD_JOLT", new BusAnimationSequence() .addBus("RELOAD_JOLT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 600 * s) .addPos(0, 0, 0, 600 * s)
.addKeyframePosition(2, 0, 0, 50 * s) //650 .addPos(2, 0, 0, 50 * s) //650
.addKeyframePosition(0, 0, 0, 100 * s) //750 .addPos(0, 0, 0, 100 * s) //750
) )
.addBus("RELOAD_BULLETS", new BusAnimationSequence() .addBus("RELOAD_BULLETS", new BusAnimationSequence()
.addKeyframePosition(0, 0, 0, 650 * s) .addPos(0, 0, 0, 650 * s)
.addKeyframePosition(10, 0, 0, 300 * s) //950 .addPos(10, 0, 0, 300 * s) //950
.addKeyframePosition(10, 0, 0, 200 * s) //1150 .addPos(10, 0, 0, 200 * s) //1150
.addKeyframePosition(0, 0, 0, 700 * s) //1850 .addPos(0, 0, 0, 700 * s) //1850
) )
.addBus("RELOAD_BULLETS_CON", new BusAnimationSequence() .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence()
.addKeyframePosition(1, 0, 0, 0 * s) .addPos(1, 0, 0, 0 * s)
.addKeyframePosition(1, 0, 0, 950 * s) .addPos(1, 0, 0, 950 * s)
.addKeyframePosition(0, 0, 0, 1 * s) .addPos(0, 0, 0, 1 * s)
); );
} }

View File

@ -2,7 +2,9 @@ package com.hbm.items.weapon.sedna;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.function.BiConsumer;
import com.hbm.entity.projectile.EntityBulletBaseMK4;
import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.ComparableStack;
import net.minecraft.item.Item; import net.minecraft.item.Item;
@ -27,19 +29,24 @@ public class BulletConfig {
public double gravity = 0; public double gravity = 0;
public int expires = 100; public int expires = 100;
public boolean renderRotations = true;
public BiConsumer<EntityBulletBaseMK4, Float> renderer;
public BulletConfig() { public BulletConfig() {
this.id = configs.size(); this.id = configs.size();
configs.add(this); configs.add(this);
} }
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 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 setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; } public BulletConfig setHeadshot(float headshotMult) { this.headshotMult = headshotMult; return this; }
public BulletConfig setGrav(double gravity) { this.gravity = gravity; return this; } public BulletConfig setGrav(double gravity) { this.gravity = gravity; return this; }
public BulletConfig setLife(int expires) { this.expires = expires; return this; } public BulletConfig setLife(int expires) { this.expires = expires; return this; }
public BulletConfig setRenderRotations(boolean rot) { this.renderRotations = rot; return this; }
public BulletConfig setRenderer(BiConsumer<EntityBulletBaseMK4, Float> renderer) { this.renderer = renderer; return this; }
} }

View File

@ -51,6 +51,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
public ItemGunBaseNT(GunConfig cfg) { public ItemGunBaseNT(GunConfig cfg) {
this.setMaxStackSize(1); this.setMaxStackSize(1);
this.config_DNA = cfg; this.config_DNA = cfg;
this.setCreativeTab(MainRegistry.weaponTab);
} }
public static enum GunState { public static enum GunState {

View File

@ -24,6 +24,9 @@ public class Receiver {
public static final String B_REFIREONHOLD = "B_REFIREONHOLD"; public static final String B_REFIREONHOLD = "B_REFIREONHOLD";
public static final String O_EJECTOR = "O_EJECTOR"; public static final String O_EJECTOR = "O_EJECTOR";
public static final String I_RELOADDURATION = "I_RELOADDURATION"; public static final String I_RELOADDURATION = "I_RELOADDURATION";
public static final String S_FIRESOUND = "S_FIRESOUND";
public static final String F_FIREVOLUME = "F_FIREVOLUME";
public static final String F_FIREPITCH = "F_FIREPITCH";
public static final String O_MAGAZINE = "O_MAGAZINE"; public static final String O_MAGAZINE = "O_MAGAZINE";
public static final String FUN_CANFIRE = "FUN_CANFIRE"; public static final String FUN_CANFIRE = "FUN_CANFIRE";
public static final String CON_ONFIRE = "CON_ONFIRE"; public static final String CON_ONFIRE = "CON_ONFIRE";
@ -40,6 +43,9 @@ public class Receiver {
protected boolean refireOnHold_DNA = false; protected boolean refireOnHold_DNA = false;
protected CasingEjector ejector_DNA = null; protected CasingEjector ejector_DNA = null;
protected int reloadDuration_DNA; protected int reloadDuration_DNA;
protected String fireSound_DNA;
protected float fireVolume_DNA = 1.0F;
protected float firePitch_DNA = 1.0F;
protected IMagazine magazine_DNA; protected IMagazine magazine_DNA;
protected BiFunction<ItemStack, LambdaContext, Boolean> canFire_DNA; protected BiFunction<ItemStack, LambdaContext, Boolean> canFire_DNA;
protected BiConsumer<ItemStack, LambdaContext> onFire_DNA; protected BiConsumer<ItemStack, LambdaContext> onFire_DNA;
@ -52,6 +58,9 @@ public class Receiver {
public boolean getRefireOnHold(ItemStack stack) { return WeaponUpgradeManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this); } public boolean getRefireOnHold(ItemStack stack) { return WeaponUpgradeManager.eval(this.refireOnHold_DNA, stack, B_REFIREONHOLD, this); }
public CasingEjector getEjector(ItemStack stack) { return WeaponUpgradeManager.eval(this.ejector_DNA, stack, O_EJECTOR, this); } public CasingEjector getEjector(ItemStack stack) { return WeaponUpgradeManager.eval(this.ejector_DNA, stack, O_EJECTOR, this); }
public int getReloadDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadDuration_DNA, stack, I_RELOADDURATION, this); } public int getReloadDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadDuration_DNA, stack, I_RELOADDURATION, this); }
public String getFireSound(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this); }
public float getFireVolume(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this); }
public float getFirePitch(ItemStack stack) { return WeaponUpgradeManager.eval(this.firePitch_DNA, stack, F_FIREPITCH, this); }
public IMagazine getMagazine(ItemStack stack) { return WeaponUpgradeManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this); } public IMagazine getMagazine(ItemStack stack) { return WeaponUpgradeManager.eval(this.magazine_DNA, stack, O_MAGAZINE, this); }
public BiFunction<ItemStack, LambdaContext, Boolean> getCanFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this); } public BiFunction<ItemStack, LambdaContext, Boolean> getCanFire(ItemStack stack) { return WeaponUpgradeManager.eval(this.canFire_DNA, stack, FUN_CANFIRE, this); }
@ -69,4 +78,11 @@ public class Receiver {
public Receiver canFire(BiFunction<ItemStack, LambdaContext, Boolean> lambda) { this.canFire_DNA = lambda; return this; } public Receiver canFire(BiFunction<ItemStack, LambdaContext, Boolean> lambda) { this.canFire_DNA = lambda; return this; }
public Receiver fire(BiConsumer<ItemStack, LambdaContext> lambda) { this.onFire_DNA = lambda; return this; } public Receiver fire(BiConsumer<ItemStack, LambdaContext> lambda) { this.onFire_DNA = lambda; return this; }
public Receiver sound(String sound, float volume, float pitch) {
this.fireSound_DNA = sound;
this.fireVolume_DNA = volume;
this.firePitch_DNA = pitch;
return this;
}
} }

View File

@ -10,6 +10,9 @@ import net.minecraft.item.ItemStack;
*/ */
public class WeaponUpgradeManager { public class WeaponUpgradeManager {
//TODO: add caching so this doesn't have to run 15 times per single action
public static ItemStack[] getUpgrades(ItemStack stack) { public static ItemStack[] getUpgrades(ItemStack stack) {
return null; // TBI return null; // TBI
} }

View File

@ -13,23 +13,30 @@ import com.hbm.main.MainRegistry;
import net.minecraft.item.Item; import net.minecraft.item.Item;
public class GunFactory { public class GunFactory {
public static BulletConfig ammo_debug;
public static void init() { public static void init() {
/// 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");
BulletConfig ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F); /// BULLLET CFGS ///
ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F);
/// GUNS ///
ModItems.gun_debug = new ItemGunBaseNT(new GunConfig() ModItems.gun_debug = new ItemGunBaseNT(new GunConfig()
.dura(600).draw(15).crosshair(Crosshair.L_CLASSIC) .dura(600).draw(15).crosshair(Crosshair.L_CLASSIC)
.rec(new Receiver(0) .rec(new Receiver(0)
.dmg(10F).delay(12).mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug)) .dmg(10F).delay(12).reload(20).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
.canFire(Lego.LAMBDA_DEBUG_CAN_FIRE).fire(Lego.LAMBDA_DEBUG_FIRE)) .mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug))
.pr(Lego.LAMBDA_STANDARD_RELOAD) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE))
.pp(Lego.LAMBDA_STANDARD_FIRE) .pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM)
.pt(Lego.LAMBDA_TOGGLE_AIM)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(Lego.LAMBDA_DEBUG_ANIMS) .anim(Lego.LAMBDA_DEBUG_ANIMS)
).setUnlocalizedName("gun_debug").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); ).setUnlocalizedName("gun_debug").setTextureName(RefStrings.MODID + ":gun_darter");
/// PROXY BULLSHIT ///
MainRegistry.proxy.registerGunCfg();
} }
} }

View File

@ -0,0 +1,75 @@
package com.hbm.items.weapon.sedna.factory;
import static com.hbm.items.weapon.sedna.factory.GunFactory.*;
import java.util.function.BiConsumer;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.projectile.EntityBulletBaseMK4;
import net.minecraft.client.renderer.Tessellator;
public class GunFactoryClient {
public static void init() {
ammo_debug.setRenderer(RENDER_STANDARD_BULLET);
}
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_STANDARD_BULLET = (bullet, interp) -> {
Tessellator tess = Tessellator.instance;
double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp;
if(length <= 0) return;
renderBulletStandard(tess, 0xFFBF00, 0xFFFFFF, length, false);
};
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_TRACER_BULLET = (bullet, interp) -> {
Tessellator tess = Tessellator.instance;
double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp;
if(length <= 0) return;
renderBulletStandard(tess, 0x9E082E, 0xFF8A79, length, true);
};
public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, boolean fullbright) { renderBulletStandard(tess, dark, light, length, 0.03125D, 0.03125D * 0.25D, fullbright); }
public static void renderBulletStandard(Tessellator tess, int dark, int light, double length, double widthF, double widthB, boolean fullbright) {
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glColor4f(1F, 1F, 1F, 1F);
tess.startDrawingQuads();
if(fullbright) tess.setBrightness(240);
tess.setNormal(0F, 1F, 0F);
tess.setColorOpaque_I(dark);
tess.addVertex(length, widthB, -widthB); tess.addVertex(length, widthB, widthB);
tess.setColorOpaque_I(light);
tess.addVertex(0, widthF, widthF); tess.addVertex(0, widthF, -widthF);
tess.setColorOpaque_I(dark);
tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, -widthB, widthB);
tess.setColorOpaque_I(light);
tess.addVertex(0, -widthF, widthF); tess.addVertex(0, -widthF, -widthF);
tess.setColorOpaque_I(dark);
tess.addVertex(length, -widthB, widthB); tess.addVertex(length, widthB, widthB);
tess.setColorOpaque_I(light);
tess.addVertex(0, widthF, widthF); tess.addVertex(0, -widthF, widthF);
tess.setColorOpaque_I(dark);
tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, widthB, -widthB);
tess.setColorOpaque_I(light);
tess.addVertex(0, widthF, -widthF); tess.addVertex(0, -widthF, -widthF);
tess.setColorOpaque_I(dark);
tess.addVertex(length, widthB, widthB); tess.addVertex(length, widthB, -widthB);
tess.addVertex(length, -widthB, -widthB); tess.addVertex(length, -widthB, widthB);
tess.setColorOpaque_I(light);
tess.addVertex(0, widthF, widthF); tess.addVertex(0, widthF, -widthF);
tess.addVertex(0, -widthF, -widthF); tess.addVertex(0, -widthF, widthF);
tess.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
}

View File

@ -1,5 +1,6 @@
package com.hbm.items.weapon.sedna.factory; package com.hbm.items.weapon.sedna.factory;
import java.util.Random;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.BiFunction; import java.util.function.BiFunction;
@ -9,6 +10,7 @@ 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;
import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.packet.toclient.GunAnimationPacket;
import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimation;
@ -26,24 +28,42 @@ import net.minecraft.item.ItemStack;
*/ */
public class Lego { public class Lego {
public static final Random ANIM_RAND = new Random();
/** /**
* If IDLE and the mag of receiver 0 can be loaded, set state to RELOADING. Used by keybinds. */ * If IDLE and the mag of receiver 0 can be loaded, set state to RELOADING. Used by keybinds. */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_RELOAD = (stack, ctx) -> { public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_RELOAD = (stack, ctx) -> {
if(ItemGunBaseNT.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getMagazine(stack).canReload(stack, ctx.player)) { EntityPlayer player = ctx.player;
ItemGunBaseNT.setState(stack, GunState.RELOADING); Receiver rec = ctx.config.getReceivers(stack)[0];
ItemGunBaseNT.setTimer(stack, ctx.config.getReceivers(stack)[0].getReloadDuration(stack));
if(ItemGunBaseNT.getState(stack) == GunState.IDLE) {
ItemGunBaseNT.setIsAiming(stack, false);
if(rec.getMagazine(stack).canReload(stack, ctx.player)) {
ItemGunBaseNT.setState(stack, GunState.RELOADING);
ItemGunBaseNT.setTimer(stack, rec.getReloadDuration(stack));
if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD.ordinal()), (EntityPlayerMP) player);
} else {
if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.INSPECT.ordinal()), (EntityPlayerMP) player);
}
} }
}; };
/** /**
* If IDLE and ammo is loaded, fire and set to JUST_FIRED. */ * If IDLE and ammo is loaded, fire and set to JUST_FIRED. */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_FIRE = (stack, ctx) -> { public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_CLICK_PRIMARY = (stack, ctx) -> {
if(ItemGunBaseNT.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getCanFire(stack).apply(stack, ctx)) { Receiver rec = ctx.config.getReceivers(stack)[0];
if(ItemGunBaseNT.getState(stack) == GunState.IDLE && rec.getCanFire(stack).apply(stack, ctx)) {
ItemGunBaseNT.setState(stack, GunState.COOLDOWN); ItemGunBaseNT.setState(stack, GunState.COOLDOWN);
ItemGunBaseNT.setTimer(stack, ctx.config.getReceivers(stack)[0].getDelayAfterFire(stack)); ItemGunBaseNT.setTimer(stack, rec.getDelayAfterFire(stack));
ctx.config.getReceivers(stack)[0].getOnFire(stack).accept(stack, ctx); rec.getOnFire(stack).accept(stack, ctx);
int remaining = rec.getRoundsPerCycle(stack) - 1;
for(int i = 0; i < remaining; i++) if(rec.getCanFire(stack).apply(stack, ctx)) rec.getOnFire(stack).accept(stack, ctx);
} }
}; };
@ -59,18 +79,21 @@ public class Lego {
/** JUMPER - bypasses mag testing and just allows constant fire */ /** JUMPER - bypasses mag testing and just allows constant fire */
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_DEBUG_CAN_FIRE = (stack, ctx) -> { return true; }; public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_DEBUG_CAN_FIRE = (stack, ctx) -> { return true; };
/** simply plays a sound to indicate that the keybind has triggered */ /** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_DEBUG_FIRE = (stack, ctx) -> { public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_FIRE = (stack, ctx) -> {
EntityPlayer player = ctx.player; EntityPlayer player = ctx.player;
if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player);
double sideOffset = ItemGunBaseNT.getIsAiming(stack) ? 0 : -0.2D; double sideOffset = ItemGunBaseNT.getIsAiming(stack) ? 0 : -0.3125D;
float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F; float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F;
Receiver primary = ctx.config.getReceivers(stack)[0]; Receiver primary = ctx.config.getReceivers(stack)[0];
IMagazine mag = primary.getMagazine(stack);
EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(player, (BulletConfig) primary.getMagazine(stack).getType(stack), primary.getBaseDamage(stack), primary.getSpreadMod(stack) * aim, sideOffset, -0.1, 0.75); EntityBulletBaseMK4 mk4 = new EntityBulletBaseMK4(player, (BulletConfig) mag.getType(stack), primary.getBaseDamage(stack), primary.getSpreadMod(stack) * aim, sideOffset, -0.0625, 0.75);
player.worldObj.spawnEntityInWorld(mk4); player.worldObj.spawnEntityInWorld(mk4);
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.shotgunShoot", 1F, 1F); player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, primary.getFireSound(stack), primary.getFireVolume(stack), primary.getFirePitch(stack));
mag.setAmount(stack, mag.getAmount(stack) - 1);;
}; };
/** No reload, simply play inspect animation */ /** No reload, simply play inspect animation */
@ -80,23 +103,24 @@ public class Lego {
}; };
/** anims for the DEBUG revolver, mostly a copy of the li'lpip but with some fixes regarding the cylinder movement */ /** anims for the DEBUG revolver, mostly a copy of the li'lpip but with some fixes regarding the cylinder movement */
public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DEBUG_ANIMS = (stack, type) -> { @SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DEBUG_ANIMS = (stack, type) -> {
switch(type) { switch(type) {
case CYCLE: case CYCLE: return new BusAnimation()
return new BusAnimation() .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250))
.addBus("RECOIL", new BusAnimationSequence().addKeyframePosition(0, 0, 0, 50).addKeyframePosition(0, 0, -3, 50).addKeyframePosition(0, 0, 0, 250)) .addBus("HAMMER", new BusAnimationSequence().addPos(0, 0, 1, 50).addPos(0, 0, 1, 300 + 100).addPos(0, 0, 0, 200))
.addBus("HAMMER", new BusAnimationSequence().addKeyframePosition(0, 0, 1, 50).addKeyframePosition(0, 0, 1, 300 + 100).addKeyframePosition(0, 0, 0, 200)) .addBus("DRUM", new BusAnimationSequence().addPos(0, 0, 0, 350 + 100).addPos(0, 0, 1, 200));
.addBus("DRUM", new BusAnimationSequence().addKeyframePosition(0, 0, 0, 350 + 100).addKeyframePosition(0, 0, 1, 200)); case EQUIP: return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addPos(-360, 0, 0, 350));
case CYCLE_EMPTY: break; case RELOAD: return new BusAnimation()
case ALT_CYCLE: break; .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 1450).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200))
case EQUIP: return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addKeyframePosition(-360, 0, 0, 350)); .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 1700).addPos(0, 0, 0, 70))
case RELOAD: break; .addBus("RELOAD_LIFT", new BusAnimationSequence().addPos(0, 0, 0, 350).addPos(-45, 0, 0, 250).addPos(-45, 0, 0, 350).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 1050).addPos(0, 0, 0, 100))
case RELOAD_CYCLE: break; .addBus("RELOAD_JOLT", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(2, 0, 0, 50).addPos(0, 0, 0, 100))
case RELOAD_EMPTY: break; .addBus("RELOAD_BULLETS", new BusAnimationSequence().addPos(0, 0, 0, 650).addPos(10, 0, 0, 300).addPos(10, 0, 0, 200).addPos(0, 0, 0, 700))
case RELOAD_END: break; .addBus("RELOAD_BULLETS_CON", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(1, 0, 0, 950).addPos(0, 0, 0, 1 ) );
case SPINDOWN: break; case INSPECT: if(ANIM_RAND.nextBoolean()) return new BusAnimation()
case SPINUP: break; .addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 1450 - 1250).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200))
case INSPECT: break; .addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 1700 - 1250).addPos(0, 0, 0, 70));
else return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addPos(-360 * 5, 0, 0, 350 * 5));
} }
return null; return null;

View File

@ -16,6 +16,8 @@ public class MagazineRevolverDrum extends MagazineStandardBase {
@Override @Override
public boolean canReload(ItemStack stack, EntityPlayer player) { public boolean canReload(ItemStack stack, EntityPlayer player) {
if(this.getAmount(stack) >= this.getCapacity(stack)) return false;
for(ItemStack slot : player.inventory.mainInventory) { for(ItemStack slot : player.inventory.mainInventory) {
if(slot != null) { if(slot != null) {

View File

@ -86,6 +86,7 @@ import com.hbm.handler.ImpactWorldHandler;
import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.items.IAnimatedItem; import com.hbm.items.IAnimatedItem;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.GunFactoryClient;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.particle.*; import com.hbm.particle.*;
import com.hbm.particle.helper.ExplosionCreator; import com.hbm.particle.helper.ExplosionCreator;
@ -170,6 +171,11 @@ public class ClientProxy extends ServerProxy {
public void handleNHNEICompat(){ public void handleNHNEICompat(){
IMCHandlerNHNEI.IMCSender(); IMCHandlerNHNEI.IMCSender();
} }
@Override
public void registerGunCfg() {
GunFactoryClient.init();
}
@Override @Override
public void registerTileEntitySpecialRenderer() { public void registerTileEntitySpecialRenderer() {
@ -626,6 +632,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare());
RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket());
RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet());
RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseMK4.class, new RenderBulletMK4());
RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow());
RenderingRegistry.registerEntityRenderingHandler(EntityNightmareBlast.class, new RenderOminousBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityNightmareBlast.class, new RenderOminousBullet());
RenderingRegistry.registerEntityRenderingHandler(EntityFire.class, new RenderFireball(ModItems.nothing)); RenderingRegistry.registerEntityRenderingHandler(EntityFire.class, new RenderFireball(ModItems.nothing));
@ -1815,9 +1822,9 @@ public class ClientProxy extends ServerProxy {
BusAnimation animation = new BusAnimation() BusAnimation animation = new BusAnimation()
.addBus("GUARD_ROT", new BusAnimationSequence() .addBus("GUARD_ROT", new BusAnimationSequence()
.addKeyframePosition(90, 0, 1, 0) .addPos(90, 0, 1, 0)
.addKeyframePosition(90, 0, 1, 800) .addPos(90, 0, 1, 800)
.addKeyframePosition(0, 0, 1, 50)); .addPos(0, 0, 1, 50));
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
} }
@ -1831,13 +1838,13 @@ public class ClientProxy extends ServerProxy {
BusAnimation animation = new BusAnimation() BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence() .addBus("SWING_ROT", new BusAnimationSequence()
.addKeyframePosition(90 - offset, 90 - offset, 35, 75) .addPos(90 - offset, 90 - offset, 35, 75)
.addKeyframePosition(90 + offset, 90 - offset, -45, 150) .addPos(90 + offset, 90 - offset, -45, 150)
.addKeyframePosition(0, 0, 0, 500)) .addPos(0, 0, 0, 500))
.addBus("SWING_TRANS", new BusAnimationSequence() .addBus("SWING_TRANS", new BusAnimationSequence()
.addKeyframePosition(-3, 0, 0, 75) .addPos(-3, 0, 0, 75)
.addKeyframePosition(8, 0, 0, 150) .addPos(8, 0, 0, 150)
.addKeyframePosition(0, 0, 0, 500)); .addPos(0, 0, 0, 500));
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F)); Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F));
@ -1856,13 +1863,13 @@ public class ClientProxy extends ServerProxy {
BusAnimation animation = new BusAnimation() BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence() .addBus("SWING_ROT", new BusAnimationSequence()
.addKeyframePosition(0, 0, 90, forward) .addPos(0, 0, 90, forward)
.addKeyframePosition(45, 0, 90, sideways) .addPos(45, 0, 90, sideways)
.addKeyframePosition(0, 0, 0, retire)) .addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence() .addBus("SWING_TRANS", new BusAnimationSequence()
.addKeyframePosition(0, 0, 3, forward) .addPos(0, 0, 3, forward)
.addKeyframePosition(2, 0, 2, sideways) .addPos(2, 0, 2, sideways)
.addKeyframePosition(0, 0, 0, retire)); .addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
@ -1876,15 +1883,15 @@ public class ClientProxy extends ServerProxy {
BusAnimation animation = new BusAnimation() BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence() .addBus("SWING_ROT", new BusAnimationSequence()
.addKeyframePosition(rot[0], rot[1], rot[2], 0) .addPos(rot[0], rot[1], rot[2], 0)
.addKeyframePosition(0, 0, 90, forward) .addPos(0, 0, 90, forward)
.addKeyframePosition(45, 0, 90, sideways) .addPos(45, 0, 90, sideways)
.addKeyframePosition(0, 0, 0, retire)) .addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence() .addBus("SWING_TRANS", new BusAnimationSequence()
.addKeyframePosition(trans[0], trans[1], trans[2], 0) .addPos(trans[0], trans[1], trans[2], 0)
.addKeyframePosition(0, 0, 3, forward) .addPos(0, 0, 3, forward)
.addKeyframePosition(2, 0, 2, sideways) .addPos(2, 0, 2, sideways)
.addKeyframePosition(0, 0, 0, retire)); .addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
} }

View File

@ -34,6 +34,7 @@ public class ServerProxy {
public void registerItemRenderer() { } public void registerItemRenderer() { }
public void registerEntityRenderer() { } public void registerEntityRenderer() { }
public void registerBlockRenderer() { } public void registerBlockRenderer() { }
public void registerGunCfg() { }
public void handleNHNEICompat() { } public void handleNHNEICompat() { }
public void particleControl(double x, double y, double z, int type) { } public void particleControl(double x, double y, double z, int type) { }

View File

@ -49,7 +49,7 @@ public class BusAnimationSequence {
// Two helper methods for the old hard-coded animations // Two helper methods for the old hard-coded animations
public BusAnimationSequence addKeyframePosition(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)); addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration));
addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration)); addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration));
addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration)); addKeyframe(Dimension.TZ, new BusAnimationKeyframe(z, duration));
@ -57,7 +57,7 @@ public class BusAnimationSequence {
return this; return this;
} }
public BusAnimationSequence addKeyframeRotation(double x, double y, double z, int duration) { public BusAnimationSequence addRot(double x, double y, double z, int duration) {
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));

View File

@ -0,0 +1,36 @@
package com.hbm.render.entity.projectile;
import org.lwjgl.opengl.GL11;
import com.hbm.entity.projectile.EntityBulletBaseMK4;
import com.hbm.main.ResourceManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class RenderBulletMK4 extends Render {
@Override
public void doRender(Entity entity, double x, double y, double z, float f0, float interp) {
EntityBulletBaseMK4 bullet = (EntityBulletBaseMK4) entity;
if(bullet.config == null) bullet.config = bullet.getBulletConfig();
if(bullet.config == null) return;
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, (float) z);
if(bullet.config.renderRotations) {
GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * interp + 180, 0.0F, 0.0F, 1.0F);
}
if(bullet.config.renderer != null) {
bullet.config.renderer.accept(bullet, interp);
}
GL11.glPopMatrix();
}
@Override protected ResourceLocation getEntityTexture(Entity entity) { return ResourceManager.universal; }
}

View File

@ -30,25 +30,37 @@ public class ItemRenderDebug extends ItemRenderWeaponBase {
double scale = 0.125D; double scale = 0.125D;
GL11.glScaled(scale, scale, scale); GL11.glScaled(scale, scale, scale);
GL11.glRotated(90, 0, 1, 0); GL11.glRotated(90, 0, 1, 0);
double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
double[] reloadLift = HbmAnimations.getRelevantTransformation("RELOAD_LIFT");
double[] reloadJolt = HbmAnimations.getRelevantTransformation("RELOAD_JOLT");
double[] reloadTilt = HbmAnimations.getRelevantTransformation("RELAOD_TILT");
double[] cylinderFlip = HbmAnimations.getRelevantTransformation("RELOAD_CYLINDER");
double[] reloadBullets = HbmAnimations.getRelevantTransformation("RELOAD_BULLETS");
GL11.glRotated(equipSpin[0], 0, 0, 1); GL11.glRotated(equipSpin[0], 0, 0, 1);
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
standardAimingTransform(stack, 0, 0, recoil[2], -recoil[2], 0, 0); standardAimingTransform(stack, 0, 0, recoil[2], -recoil[2], 0, 0);
GL11.glRotated(recoil[2] * 10, 0, 0, 1); GL11.glRotated(recoil[2] * 10, 0, 0, 1);
GL11.glRotated(reloadLift[0], 0, 0, 1);
GL11.glTranslated(reloadJolt[0], 0, 0);
GL11.glRotated(reloadTilt[0], 1, 0, 0);
GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex);
ResourceManager.lilmac.renderPart("Gun"); ResourceManager.lilmac.renderPart("Gun");
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotated(cylinderFlip[0], 1, 0, 0);
ResourceManager.lilmac.renderPart("Pivot"); ResourceManager.lilmac.renderPart("Pivot");
GL11.glTranslated(0, 1.75, 0); GL11.glTranslated(0, 1.75, 0);
GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0);
GL11.glTranslated(0, -1.75, 0); GL11.glTranslated(0, -1.75, 0);
ResourceManager.lilmac.renderPart("Cylinder"); ResourceManager.lilmac.renderPart("Cylinder");
GL11.glTranslated(reloadBullets[0], reloadBullets[1], reloadBullets[2]);
if(HbmAnimations.getRelevantTransformation("RELOAD_BULLETS_CON")[0] != 1)
ResourceManager.lilmac.renderPart("Bullets"); ResourceManager.lilmac.renderPart("Bullets");
ResourceManager.lilmac.renderPart("Casings"); ResourceManager.lilmac.renderPart("Casings");
GL11.glPopMatrix(); GL11.glPopMatrix();