glunch maintainer

This commit is contained in:
HbmMods 2026-05-14 21:34:24 +02:00
parent bdcaa4199e
commit be2f003aa6
50 changed files with 4604 additions and 3232 deletions

View File

@ -2,6 +2,9 @@
* Redstone-over-Radio Terminal
* Allows commands to be sent manually, command line style
* Supports single commands and repeated ones (polling)
* Grenade machinegun
* 30rnd automatic 40mm grenade weapon firing at 120 RPS
* Can be upgraded with an auxiliary electric engine to double the firerate
## Changed
* RoR graphs can now have their min and max bounds set to a fixed number
@ -20,6 +23,8 @@
* All fluid tanks larger than barrels now have dynamic IO speed instead of providing their entire contents instantly
* Tank fill will slow down the fuller the tank becomes, tank drain also slow downs as it gets emptier
* This means that multiple tanks in IO mode in the same network will still ping pong, but instead of firing their entire contents over the network, they will even out
* The stinger is now classified as a special weapon
* The carbine can now take a scope
## Fixed
* Fixed RoR graph showing the wrong name in the GUI

View File

@ -84,6 +84,7 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3_zebra, 1), new Object[] { " M ", "MPM", " M ", 'M', BIGMT.mechanism(), 'P', ModItems.gun_g3 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "BBB", "PGM", 'B', WEAPONSTEEL.heavyBarrel(), 'P', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'G', WEAPONSTEEL.grip(), 'M', WEAPONSTEEL.mechanism() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_mk108, 1), new Object[] { " GG", "BRM", " D ", 'G', ANY_PLASTIC.grip(), 'B', WEAPONSTEEL.heavyBarrel(), 'R', WEAPONSTEEL.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'D', WEAPONSTEEL.shell() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_amat, 1), new Object[] { " C ", "BRS", " MG", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'C', DictFrame.fromOne(ModItems.weapon_mod_special, EnumModSpecial.SCOPE), 'S', WOOD.stock() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() });

View File

@ -1396,6 +1396,7 @@ public class ModItems {
public static Item gun_g3;
public static Item gun_g3_zebra;
public static Item gun_stinger;
public static Item gun_mk108;
public static Item gun_chemthrower;
public static Item gun_amat;
public static Item gun_amat_subtlety;
@ -5778,7 +5779,7 @@ public class ModItems {
GameRegistry.registerItem(gun_star_f_akimbo, gun_star_f_akimbo.getUnlocalizedName());
GameRegistry.registerItem(gun_g3, gun_g3.getUnlocalizedName());
GameRegistry.registerItem(gun_g3_zebra, gun_g3_zebra.getUnlocalizedName());
GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName());
GameRegistry.registerItem(gun_mk108, gun_mk108.getUnlocalizedName());
GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName());
GameRegistry.registerItem(gun_amat, gun_amat.getUnlocalizedName());
GameRegistry.registerItem(gun_amat_subtlety, gun_amat_subtlety.getUnlocalizedName());
@ -5802,6 +5803,7 @@ public class ModItems {
GameRegistry.registerItem(gun_tau, gun_tau.getUnlocalizedName());
GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName());
GameRegistry.registerItem(gun_lasrifle, gun_lasrifle.getUnlocalizedName());
GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName());
GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName());
GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName());
GameRegistry.registerItem(gun_mas36, gun_mas36.getUnlocalizedName());

View File

@ -73,6 +73,7 @@ public class GunFactoryClient {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3(ResourceManager.g3_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3_zebra, new ItemRenderG3(ResourceManager.g3_zebra_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_mk108, new ItemRenderMK108());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderChemthrower());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat, new ItemRenderAmat(ResourceManager.amat_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_amat_subtlety, new ItemRenderAmat(ResourceManager.amat_subtlety_tex));
@ -278,6 +279,7 @@ public class GunFactoryClient {
((ItemGunBaseNT) ModItems.gun_g3) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_g3_zebra) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_stinger) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_mk108) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_chemthrower) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_amat) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_amat_subtlety) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);

View File

@ -912,6 +912,41 @@ public class Orchestras {
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_MK108 = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
if(entity.worldObj.isRemote) return;
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == GunAnimation.CYCLE) {
if(timer == 0) {
PacketDispatcher.wrapper.sendToAllAround(new MuzzleFlashPacket(entity), new TargetPoint(entity.worldObj.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 100));
}
if(timer == 2) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory);
if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? -0.125 : -0.3125, aiming ? -0.375 : -0.3125D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, (float)entity.getRNG().nextGaussian() * -20F + 15F, casing.getName(), true, 60, 0.5D, 10);
}
}
if(type == GunAnimation.CYCLE_DRY) {
if(timer == 0) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_DRY_FIRE, 1F, 0.75F);
}
if(type == GunAnimation.RELOAD) {
if(timer == 0) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_REVOLVER_CLOSE, 1F, 0.65F);
if(timer == 10) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_MAG_SMALL_REMOVE, 1F, 0.75F);
if(timer == 40) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_MAG_REMOVE, 1F, 0.75F);
if(timer == 60) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_IMPACT, 0.5F, 1F);
if(timer == 90) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_MAG_INSERT, 1F, 0.75F);
if(timer == 100) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_MAG_SMALL_INSERT, 1F, 0.75F);
if(timer == 125) entity.worldObj.playSoundAtEntity(entity, NTMSounds.GUN_REVOLVER_CLOSE, 1F, 0.65F);
if(timer == 60) ctx.config.getReceivers(stack)[0].getMagazine(stack).reloadAction(stack, ctx.inventory);
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_CHEMTHROWER = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);

View File

@ -25,6 +25,7 @@ import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.main.MainRegistry;
import com.hbm.main.NTMSounds;
@ -175,6 +176,17 @@ public class XFactory40mm {
.setupStandardConfiguration()
.anim(LAMBDA_CONGOLAKE_ANIMS).orchestra(Orchestras.ORCHESTRA_CONGOLAKE)
).setDefaultAmmo(EnumAmmo.G40_HE, 8).setUnlocalizedName("gun_congolake");
ModItems.gun_mk108 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig()
.dura(5_000).draw(20).inspect(65).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false)
.rec(new Receiver(0)
.dmg(25F).delay(10).auto(true).dryfireAfterAuto(true).reload(135).jam(25).sound(NTMSounds.GUN_MK108_FIRE, 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 30).addConfigs(g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus))
.offset(0.75, -0.125, -0.125)
.setupStandardFire().recoil(LAMBDA_RECOIL_MK108))
.setupStandardConfiguration()
.anim(LAMBDA_MK108_ANIMS).orchestra(Orchestras.ORCHESTRA_MK108)
).setDefaultAmmo(EnumAmmo.G40_HE, 50).setUnlocalizedName("gun_mk108");
}
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
@ -185,6 +197,10 @@ public class XFactory40mm {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_MK108 = (stack, ctx) -> {
ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 1.0) + 1F, (float) (ctx.getPlayer().getRNG().nextGaussian()));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_FLAREGUN_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
@ -222,4 +238,30 @@ public class XFactory40mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MK108_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().setPos(45, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN));
case CYCLE:
int amount = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null);
return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().hold(50).addPos(0, 0, -0.25, 100, IType.SIN_DOWN).addPos(0, 0, 0, 150, IType.SIN_FULL))
.addBus("BARREL", new BusAnimationSequence().addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL))
.addBus("CYCLE", new BusAnimationSequence().addPos(0, 0, 0, 100).addPos(1, 0, 0, 150))
.addBus("SHELLS", new BusAnimationSequence().setPos(amount - 1, 0, 0));
case CYCLE_DRY: return new BusAnimation()
.addBus("HAMMER", new BusAnimationSequence().addPos(15, 0, 0, 50).addPos(15, 0, 0, 550).addPos(0, 0, 0, 100));
case RELOAD: return new BusAnimation()
.addBus("LIFT", new BusAnimationSequence().addPos(10, 0, 0, 500, IType.SIN_FULL).holdUntil(1250).addPos(-50, 0, 0, 750, IType.SIN_FULL).holdUntil(5500).addPos(0, 0, 0, 500, IType.SIN_FULL).hold(500).addPos(1, 0, 0, 100, IType.SIN_UP).addPos(0, 0, 0, 150, IType.SIN_FULL))
.addBus("LID", new BusAnimationSequence().addPos(60, 0, 0, 500, IType.SIN_FULL).holdUntil(6000).addPos(0, 0, 0, 500, IType.SIN_UP))
.addBus("BELT", new BusAnimationSequence().setPos(1, 0, 0).hold(500).addPos(0, 0, 0, 750, IType.SIN_UP).holdUntil(4500).addPos(1, 0, 0, 750, IType.SIN_UP))
.addBus("DRUM", new BusAnimationSequence().hold(2000).addPos(2.5, 0, 0, 500, IType.SIN_DOWN).addPos(2.5, -2, -8, 500, IType.SIN_UP).setPos(4, -3, -8).addPos(2.5, 0, 0, 1000, IType.SIN_FULL).addPos(0, 0, 0, 500, IType.SIN_UP));
case JAMMED: return new BusAnimation()
.addBus("LID", new BusAnimationSequence().hold(250).addPos(45, 0, 0, 500, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_UP))
.addBus("LIFT", new BusAnimationSequence().hold(1000).addPos(1, 0, 0, 100, IType.SIN_UP).addPos(0, 0, 0, 150, IType.SIN_FULL));
case INSPECT: return new BusAnimation();
}
return null;
};
}

View File

@ -194,7 +194,7 @@ public class XFactoryRocket {
.anim(LAMBDA_PANZERSCHRECK_ANIMS).orchestra(Orchestras.ORCHESTRA_PANERSCHRECK)
).setDefaultAmmo(EnumAmmo.ROCKET_HE, 3).setUnlocalizedName("gun_panzerschreck");
ModItems.gun_stinger = new ItemGunStinger(WeaponQuality.A_SIDE, new GunConfig()
ModItems.gun_stinger = new ItemGunStinger(WeaponQuality.SPECIAL, new GunConfig()
.dura(300).draw(7).inspect(40).crosshair(Crosshair.L_BOX_OUTLINE)
.rec(new Receiver(0)
.dmg(35F).delay(5).reload(50).jam(40).sound(NTMSounds.GUN_ROCKET_FIRE, 1.0F, 1.0F)

View File

@ -94,6 +94,7 @@ public class XWeaponModManager {
ModItems.gun_star_f, ModItems.gun_star_f_akimbo,
ModItems.gun_g3, ModItems.gun_g3_zebra,
ModItems.gun_stinger,
ModItems.gun_mk108,
ModItems.gun_chemthrower };
Item[] ferroGuns = new Item[] {
ModItems.gun_amat,
@ -132,7 +133,7 @@ public class XWeaponModManager {
new WeaponModDefinition(EnumModSpecial.SPEEDLOADER).addMod(ModItems.gun_liberator, new WeaponModLiberatorSpeedloader(200));
new WeaponModDefinition(EnumModSpecial.SILENCER).addMod(new Item[] {ModItems.gun_am180, ModItems.gun_uzi, ModItems.gun_uzi_akimbo, ModItems.gun_star_f, ModItems.gun_star_f_akimbo, ModItems.gun_g3, ModItems.gun_amat}, new WeaponModSilencer(ID_SILENCER));
new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_g3, ModItems.gun_mas36, ModItems.gun_charge_thrower}, new WeaponModScope(ID_SCOPE));
new WeaponModDefinition(EnumModSpecial.SCOPE).addMod(new Item[] {ModItems.gun_heavy_revolver, ModItems.gun_carbine, ModItems.gun_g3, ModItems.gun_mas36, ModItems.gun_charge_thrower}, new WeaponModScope(ID_SCOPE));
new WeaponModDefinition(EnumModSpecial.SAW)
.addMod(new Item[] {ModItems.gun_maresleg, ModItems.gun_double_barrel}, new WeaponModSawedOff(ID_SAWED_OFF))
.addMod(ModItems.gun_panzerschreck, new WeaponModPanzerschreckSawedOff(ID_NO_SHIELD))
@ -141,7 +142,7 @@ public class XWeaponModManager {
new WeaponModDefinition(EnumModSpecial.SLOWDOWN).addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModSlowdown(207));
new WeaponModDefinition(EnumModSpecial.SPEEDUP)
.addMod(new Item[] {ModItems.gun_minigun, ModItems.gun_minigun_dual}, new WeaponModMinigunSpeedup(ID_MINIGUN_SPEED))
.addMod(new Item[] {ModItems.gun_autoshotgun, ModItems.gun_autoshotgun_shredder}, new WeaponModShredderSpeedup(209));
.addMod(new Item[] {ModItems.gun_autoshotgun, ModItems.gun_autoshotgun_shredder, ModItems.gun_mk108}, new WeaponModShredderSpeedup(209));
new WeaponModDefinition(EnumModSpecial.CHOKE).addMod(new Item[] {ModItems.gun_pepperbox, ModItems.gun_maresleg, ModItems.gun_double_barrel, ModItems.gun_liberator, ModItems.gun_spas12, ModItems.gun_autoshotgun_sexy, ModItems.gun_autoshotgun_heretic}, new WeaponModChoke(210));
new WeaponModDefinition(EnumModSpecial.FURNITURE_GREEN).addMod(ModItems.gun_g3, new WeaponModPolymerFurniture(ID_FURNITURE_GREEN));
new WeaponModDefinition(EnumModSpecial.FURNITURE_BLACK).addMod(ModItems.gun_g3, new WeaponModPolymerFurniture(ID_FURNITURE_BLACK));

View File

@ -78,6 +78,7 @@ public class NTMSounds {
public static final String GUN_TAU_LOOP = "hbm:weapon.fire.tauLoop";
public static final String GUN_TESLA_FIRE = "hbm:weapon.fire.tesla";
public static final String GUN_TESLA_BLAST = "hbm:entity.ufoBlast"; // electric crackle sound explosion
public static final String GUN_MK108_FIRE = "hbm:weapon.fire.mk108";
public static final String GUN_ROCKET_FIRE = "hbm:weapon.rpgShoot";
public static final String GUN_EXTINGUISHER_FIRE = "hbm:weapon.extinguisher";
public static final String GUN_PLEASE_REMOVE_MY_EARDRUMS_THANKS = "hbm:weapon.fire.loudestNoiseOnEarth"; // folly fires

View File

@ -909,6 +909,7 @@ public class ResourceManager {
public static final IModelCustom star_f = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/star_f.obj")).asVBO();
public static final IModelCustom g3 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/g3.obj")).asVBO();
public static final IModelCustom stinger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/stinger.obj")).asVBO();
public static final IModelCustom mk108 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mk108.obj")).asVBO();
public static final IModelCustom chemthrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chemthrower.obj")).asVBO();
public static final IModelCustom amat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/amat.obj")).asVBO();
public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asVBO();
@ -1021,6 +1022,7 @@ public class ResourceManager {
public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png");
public static final ResourceLocation carbine_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/huntsman.png");
public static final ResourceLocation carbine_bayonet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/carbine_bayonet.png");
public static final ResourceLocation carbine_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/carbine_scope.png");
public static final ResourceLocation am180_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/am180.png");
public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png");
public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png");
@ -1037,6 +1039,7 @@ public class ResourceManager {
public static final ResourceLocation g3_green_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3_polymer_green.png");
public static final ResourceLocation g3_black_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3_polymer_black.png");
public static final ResourceLocation g3_attachments = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3_attachments.png");
public static final ResourceLocation mk108_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/mk108.png");
public static final ResourceLocation amat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat.png");
public static final ResourceLocation amat_subtlety_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat_subtlety.png");
public static final ResourceLocation amat_penance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/amat_penance.png");

View File

@ -19,7 +19,7 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase {
@Override
public float getViewFOV(ItemStack stack, float fov) {
float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp;
return fov * (1 - aimingProgress * 0.33F);
return fov * (1 - aimingProgress * (isScoped(stack) ? 0.66F : 0.33F));
}
@Override
@ -27,13 +27,22 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
if(this.isScoped(stack)) {
standardAimingTransform(stack,
-1.5F * offset, -1.5F * offset, 0.875F * offset,
0, -8 / 8D, 0.25);
} else {
standardAimingTransform(stack,
-1.5F * offset, -1.5F * offset, 0.875F * offset,
0, -6.25 / 8D, 0.25);
}
}
@Override
public void renderFirstPerson(ItemStack stack) {
boolean isScoped = isScoped(stack);
if(isScoped && ItemGunBaseNT.prevAimingProgress == 1 && ItemGunBaseNT.aimingProgress == 1) return;
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_tex);
@ -77,6 +86,13 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase {
if(bullet[0] != 1) ResourceManager.carbine.renderPart("Bullet");
GL11.glPopMatrix();
if(!isScoped(stack)) {
ResourceManager.carbine.renderPart("IronSight");
} else {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_scope_tex);
ResourceManager.carbine.renderPart("Scope");
}
if(hasBayonet(stack)) {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_bayonet_tex);
ResourceManager.carbine.renderPart("Bayonet");
@ -143,6 +159,12 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase {
ResourceManager.carbine.renderPart("Gun");
ResourceManager.carbine.renderPart("Slide");
ResourceManager.carbine.renderPart("Magazine");
if(!isScoped(stack)) {
ResourceManager.carbine.renderPart("IronSight");
} else {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_scope_tex);
ResourceManager.carbine.renderPart("Scope");
}
if(hasBayonet(stack)) {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.carbine_bayonet_tex);
ResourceManager.carbine.renderPart("Bayonet");
@ -172,6 +194,10 @@ public class ItemRenderCarbine extends ItemRenderWeaponBase {
}
}
public boolean isScoped(ItemStack stack) {
return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_SCOPE);
}
public boolean hasBayonet(ItemStack stack) {
return XWeaponModManager.hasUpgrade(stack, 0, XWeaponModManager.ID_CARBINE_BAYONET);
}

View File

@ -0,0 +1,231 @@
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 com.hbm.util.BobMathUtil;
import com.hbm.util.Vec3NT;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
public class ItemRenderMK108 extends ItemRenderWeaponBase {
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
@Override
public float getViewFOV(ItemStack stack, float fov) {
float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp;
return fov * (1 - aimingProgress * 0.33F);
}
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
standardAimingTransform(stack,
-1F * offset, -1.5F * offset, 2.5F * offset,
-0.75F, -0.75F, 1.5F);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mk108_tex);
double scale = 0.375D;
GL11.glScaled(scale, scale, scale);
boolean doesCycle = HbmAnimations.getRelevantAnim(0) != null && HbmAnimations.getRelevantAnim(0).animation.getBus("CYCLE") != null;
boolean reloading = HbmAnimations.getRelevantAnim(0) != null && HbmAnimations.getRelevantAnim(0).animation.getBus("BELT") != null;
boolean useShellCount = HbmAnimations.getRelevantAnim(0) != null && HbmAnimations.getRelevantAnim(0).animation.getBus("SHELLS") != null;
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] cycle = HbmAnimations.getRelevantTransformation("CYCLE");
double[] barrel = HbmAnimations.getRelevantTransformation("BARREL");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
double[] lid = HbmAnimations.getRelevantTransformation("LID");
double[] belt = HbmAnimations.getRelevantTransformation("BELT");
double[] drum = HbmAnimations.getRelevantTransformation("DRUM");
double[] lift = HbmAnimations.getRelevantTransformation("LIFT");
double[] shellCount = HbmAnimations.getRelevantTransformation("SHELLS");
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glTranslated(0, -1, -8);
GL11.glRotated(equip[0], 1, 0, 0);
GL11.glTranslated(0, 1, 8);
GL11.glTranslated(0, 1, -4);
GL11.glRotated(lift[0], 1, 0, 0);
GL11.glTranslated(0, -1, 4);
GL11.glTranslated(0, 0, recoil[2]);
ResourceManager.mk108.renderPart("Gun");
GL11.glPushMatrix();
GL11.glTranslated(0, 0, barrel[2] * 2);
ResourceManager.mk108.renderPart("Barrel");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, 0.6875, -1);
GL11.glRotated(lid[0], 1, 0, 0);
GL11.glTranslated(0, -0.6875, 1);
ResourceManager.mk108.renderPart("Lid");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(drum[0], drum[1], drum[2]);
ResourceManager.mk108.renderPart("Drum");
double p = 0.0625D;
double x = p * 22;
double y = p * -46;
double angle = 0;
Vec3NT vec = new Vec3NT(0, 0.53125, 0);
double[] anglesLoaded = new double[] {0, 0, -5, 0, -5, 60, 45, -10, 0};
double[] anglesUnloaded = new double[] {0, -30, -60, -45, -45, 0, 0, 0, 0};
double[][] shells = new double[anglesLoaded.length][3];
double reloadProgress = !reloading ? 1D : belt[0];
double cycleProgress = !doesCycle ? 1 : cycle[0];
for(int i = 0; i < anglesLoaded.length; i++) {
shells[i][0] = x;
shells[i][1] = y;
shells[i][2] = angle - 90;
double delta = BobMathUtil.interp(anglesUnloaded[i], anglesLoaded[i], reloadProgress);
angle += delta;
vec.rotateAroundZDeg(-delta);
x += vec.xCoord;
y += vec.yCoord;
}
int shellAmount = useShellCount ? (int) shellCount[0] : gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null);
// draw belt, interp used for cycling (shells will transform towards the position/rotation of the next shell)
for(int i = 0; i < shells.length - 1; i++) {
double[] prevShell = shells[i];
double[] nextShell = shells[i + 1];
renderShell(prevShell[0], nextShell[0], prevShell[1], nextShell[1], prevShell[2], nextShell[2], shells.length - i < shellAmount + 2, cycleProgress);
}
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 0, 8.125);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
this.renderMuzzleFlash(gun.lastShot[0], 50, 5);
GL11.glPopMatrix();
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
double scale = 2.0D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(1, -2.5, 4);
}
@Override
public void setupInv(ItemStack stack) {
super.setupInv(stack);
double scale = 1.375D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(0, 0.5, 0.25);
}
@Override
public void setupModTable(ItemStack stack) {
double scale = -9.5D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(90, 0, 1, 0);
GL11.glTranslated(0, 0.5, -0.25);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type, Object... data) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mk108_tex);
ResourceManager.mk108.renderPart("Gun");
ResourceManager.mk108.renderPart("Barrel");
ResourceManager.mk108.renderPart("Lid");
ResourceManager.mk108.renderPart("Drum");
GL11.glPushMatrix();
double p = 0.0625D;
double x = p * 22;
double y = p * -46;
double angle = 0;
Vec3NT vec = new Vec3NT(0, 0.53125, 0);
double[] anglesLoaded = new double[] { 0, 0, -5, 0, -5, 60, 45, -10, 0 };
double[][] shells = new double[anglesLoaded.length][3];
for(int i = 0; i < anglesLoaded.length; i++) {
shells[i][0] = x;
shells[i][1] = y;
shells[i][2] = angle - 90;
double delta = anglesLoaded[i];
angle += delta;
vec.rotateAroundZDeg(-delta);
x += vec.xCoord;
y += vec.yCoord;
}
// draw belt, interp used for cycling (shells will transform towards the position/rotation of the next shell)
for(int i = 0; i < shells.length - 1; i++) {
double[] prevShell = shells[i];
double[] nextShell = shells[i + 1];
renderShell(prevShell[0], nextShell[0], prevShell[1], nextShell[1], prevShell[2], nextShell[2], true, 0F);
}
GL11.glPopMatrix();
if(type == ItemRenderType.EQUIPPED) {
EntityLivingBase ent = (EntityLivingBase) data[1];
long shot;
double shotRand = 0;
if(ent == Minecraft.getMinecraft().thePlayer) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
shot = gun.lastShot[0];
shotRand = gun.shotRand;
} else {
shot = ItemRenderWeaponBase.flashMap.getOrDefault(ent, (long) -1);
if(shot < 0) return;
}
GL11.glPushMatrix();
GL11.glTranslated(0, 0, 8.125);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * shotRand, 1, 0, 0);
this.renderMuzzleFlash(shot, 50, 5);
GL11.glPopMatrix();
}
}
public static void renderShell(double x0, double x1, double y0, double y1, double rot0, double rot1, boolean shell, double interp) {
renderShell(BobMathUtil.interp(x0, x1, interp), BobMathUtil.interp(y0, y1, interp), BobMathUtil.interp(rot0, rot1, interp), shell);
}
public static void renderShell(double x, double y, double rot, boolean shell) {
GL11.glPushMatrix();
GL11.glTranslated(x, y, 0);
GL11.glRotated(rot, 0, 0, 1);
ResourceManager.mk108.renderPart("Belt");
if(shell) ResourceManager.mk108.renderPart("Grenade");
GL11.glPopMatrix();
}
}

View File

@ -117,7 +117,7 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu
if(!doesTilt) { this.tilted = false; return; }
if(this.getFloorCount() <= 0) { this.tilted = false; return; }
if(this.worldObj.getTotalWorldTime() + BlockPos.getIdentity(xCoord, yCoord, zCoord) % 20 != 0) return;
if((this.worldObj.getTotalWorldTime() + BlockPos.getIdentity(xCoord, yCoord, zCoord)) % 20 != 0) return;
if(this.tiltBlocksChecked >= this.getFloorCount()) {

View File

@ -2122,6 +2122,7 @@ item.gun_minigun.name=Minigun
item.gun_minigun_dual.name=Doppelete Miniguns
item.gun_minigun_lacunae.name=Lacunae
item.gun_missile_launcher.name=Raketenwerfer
item.gun_mk108.name=Granaten-MG
item.gun_n_i_4_n_i.name=N I 4 N I
item.gun_pa_melee.name=Powerrüstung - Nahkampfcontroller
item.gun_pa_ranged.name=Powerrüstung - Fernkampfcontroller

View File

@ -2948,6 +2948,7 @@ item.gun_minigun.name=Minigun
item.gun_minigun_dual.name=Dual Miniguns
item.gun_minigun_lacunae.name=Lacunae
item.gun_missile_launcher.name=Missile Launcher
item.gun_mk108.name=Grenade Machinegun
item.gun_n_i_4_n_i.name=N I 4 N I
item.gun_pa_melee.name=Power Armor - Melee Controller
item.gun_pa_ranged.name=Power Armor - Ranged Controller

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -132,28 +132,18 @@
"weapon.tauChargeLoop2": {"category": "player", "sounds": [{"name": "weapon/tauChargeLoop2", "stream": true}]},
"weapon.revolverShoot": {"category": "player", "sounds": [{"name": "weapon/revolverShoot", "stream": false}]},
"weapon.revolverShootAlt": {"category": "player", "sounds": [{"name": "weapon/revolverShootAlt", "stream": false}]},
"weapon.heavyShoot": {"category": "player", "sounds": [{"name": "weapon/heavyShoot", "stream": false}]},
"weapon.shotgunShoot": {"category": "player", "sounds": [{"name": "weapon/shotgunShoot", "stream": false}]},
"weapon.shottyShoot": {"category": "player", "sounds": [{"name": "weapon/shottyShoot", "stream": false}]},
"weapon.schrabidiumShoot": {"category": "player", "sounds": [{"name": "weapon/schrabidiumShoot", "stream": false}]},
"weapon.osiprShoot": {"category": "player", "sounds": [{"name": "weapon/osiprShoot", "stream": false}]},
"weapon.osiprAltFire": {"category": "player", "sounds": [{"name": "weapon/osiprAltFire", "stream": false}]},
"weapon.osiprCharging": {"category": "player", "sounds": [{"name": "weapon/osiprCharging", "stream": false}]},
"weapon.osiprReload": {"category": "player", "sounds": [{"name": "weapon/osiprReload", "stream": false}]},
"weapon.singFlyby": {"category": "player", "sounds": [{"name": "weapon/singFlyby", "stream": false}]},
"weapon.rifleShoot": {"category": "player", "sounds": [{"name": "weapon/rifleShoot", "stream": false}]},
"weapon.rpgShoot": {"category": "player", "sounds": [{"name": "weapon/rpgShoot", "stream": false}]},
"weapon.fatmanShoot": {"category": "player", "sounds": [{"name": "weapon/fatmanShoot", "stream": false}]},
"weapon.fatmanReload": {"category": "player", "sounds": [{"name": "weapon/fatmanReload", "stream": false}]},
"weapon.zomgShoot": {"category": "player", "sounds": [{"name": "weapon/zomgShoot", "stream": false}]},
"weapon.flamethrowerIgnite": {"category": "player", "sounds": [{"name": "weapon/flamethrowerIgnite", "stream": false}]},
"weapon.flamethrowerShoot": {"category": "player", "sounds": [{"name": "weapon/flamethrowerShoot", "stream": false}]},
"weapon.immolatorIgnite": {"category": "player", "sounds": [{"name": "weapon/immolatorIgnite", "stream": false}]},
"weapon.immolatorShoot": {"category": "player", "sounds": [{"name": "weapon/immolatorShoot", "stream": false}]},
"weapon.cryolatorShoot": {"category": "player", "sounds": [{"name": "weapon/cryolatorShoot", "stream": false}]},
"weapon.missileTakeOff": {"category": "player", "sounds": [{"name": "weapon/missileTakeOff", "stream": false}]},
"weapon.defabSpinup": {"category": "player", "sounds": [{"name": "weapon/defabSpinup", "stream": false}]},
"weapon.defabShoot": {"category": "player", "sounds": [{"name": "weapon/defabShoot", "stream": false}]},
"weapon.sparkShoot": {"category": "player", "sounds": ["weapon/sparkShoot1", "weapon/sparkShoot2", "weapon/sparkShoot3"]},
"weapon.bang": {"category": "player", "sounds": [{"name": "weapon/bang", "stream": false}]},
"weapon.slice": {"category": "player", "sounds": [{"name": "weapon/slice", "stream": false}]},
@ -164,23 +154,11 @@
"weapon.sawShoot": {"category": "player", "sounds": [{"name": "weapon/sawShoot", "stream": false}]},
"weapon.spinup": {"category": "player", "sounds": [{"name": "weapon/spinup", "stream": false}]},
"weapon.spindown": {"category": "player", "sounds": [{"name": "weapon/spindown", "stream": false}]},
"weapon.ciwsFiringLoop": {"category": "player", "sounds": [{"name": "weapon/ciwsFiringLoop", "stream": false}]},
"weapon.ciwsSpinup": {"category": "player", "sounds": [{"name": "weapon/ciwsSpinup", "stream": false}]},
"weapon.ciwsSpindown": {"category": "player", "sounds": [{"name": "weapon/ciwsSpindown", "stream": false}]},
"weapon.laserBang": {"category": "player", "sounds": ["weapon/laserBang1", "weapon/laserBang2", "weapon/laserBang3", "weapon/laserBang4"]},
"weapon.uziShoot": {"category": "player", "sounds": [{"name": "weapon/uziShoot", "stream": false}]},
"weapon.silencerShoot": {"category": "player", "sounds": [{"name": "weapon/silencerShoot", "stream": false}]},
"weapon.gBounce": {"category": "player", "sounds": ["weapon/gBounce1", "weapon/gBounce2", "weapon/gBounce3"]},
"weapon.calShoot": {"category": "player", "sounds": ["weapon/cal1", "weapon/cal2", "weapon/cal3"]},
"weapon.lacunaeSpinup": {"category": "player", "sounds": [{"name": "weapon/lacunaeSpinup", "stream": false}]},
"weapon.lacunaeSpindown": {"category": "player", "sounds": [{"name": "weapon/lacunaeSpindown", "stream": false}]},
"weapon.lacunaeShoot": {"category": "player", "sounds": [{"name": "weapon/lacunaeShoot", "stream": false}]},
"weapon.follyOpen": {"category": "player", "sounds": [{"name": "weapon/follyOpen", "stream": false}]},
"weapon.follyClose": {"category": "player", "sounds": [{"name": "weapon/follyClose", "stream": false}]},
"weapon.follyReload": {"category": "player", "sounds": [{"name": "weapon/follyReload", "stream": false}]},
"weapon.follyBuzzer": {"category": "player", "sounds": [{"name": "weapon/follyBuzzer", "stream": false}]},
"weapon.follyAquired": {"category": "player", "sounds": [{"name": "weapon/follyAquiredAlt", "stream": false}]},
"weapon.follyFire": {"category": "player", "sounds": [{"name": "weapon/follyFire", "stream": false}]},
"weapon.ricochet": {"category": "player", "sounds": ["weapon/ric1", "weapon/ric2", "weapon/ric3", "weapon/ric4", "weapon/ric5"]},
"weapon.revolverReload": {"category": "player", "sounds": [{"name": "weapon/revolverReload", "stream": false}]},
"weapon.shotgunReload": {"category": "player", "sounds": ["weapon/shotgunReload1", "weapon/shotgunReload2", "weapon/shotgunReload3"]},
@ -188,19 +166,16 @@
"weapon.magReloadBolt": {"category": "player", "sounds": [{"name": "weapon/magReloadBolt", "stream": false}]},
"weapon.rpgReload": {"category": "player", "sounds": [{"name": "weapon/rpgReload", "stream": false}]},
"weapon.boat": {"category": "player", "sounds": [{"name": "weapon/boat", "stream": false}]},
"weapon.deagleShoot": {"category": "player", "sounds": [{"name": "weapon/deagleShoot", "stream": false}]},
"weapon.tesla": {"category": "block", "sounds": ["weapon/tesla1", "weapon/tesla2", "weapon/tesla3", "weapon/tesla4"]},
"weapon.teslaShoot": {"category": "player", "sounds": [{"name": "weapon/teslaShoot", "stream": false}]},
"weapon.flamerReload": {"category": "player", "sounds": [{"name": "weapon/flamerReload", "stream": false}]},
"weapon.stop": {"category": "player", "sounds": ["weapon/stop1", "weapon/stop2"]},
"weapon.bonk": {"category": "player", "sounds": [{"name": "weapon/bonk", "stream": false}]},
"weapon.hksShoot": {"category": "player", "sounds": ["weapon/hksShoot1", "weapon/hksShoot2", "weapon/hksShoot3"]},
"weapon.glauncher": {"category": "player", "sounds": ["weapon/glauncher1", "weapon/glauncher2"]},
"weapon.bodysplat": {"category": "player", "sounds": [{"name": "weapon/bodysplat", "stream": false}]},
"weapon.quadroReload": {"category": "player", "sounds": [{"name": "weapon/quadroReload", "stream": false}]},
"weapon.fstbmbStart": {"category": "player", "sounds": [{"name": "weapon/fstbmbStart", "stream": false}]},
"weapon.fstbmbPing": {"category": "player", "sounds": [{"name": "weapon/fstbmbPing", "stream": false}]},
"weapon.sauergun": {"category": "player", "sounds": ["weapon/sauergun1", "weapon/sauergun2", "weapon/sauergun3"]},
"weapon.whack": {"category": "player", "sounds": [{"name": "weapon/whack", "stream": false}]},
"weapon.chainsaw": {"category": "player", "sounds": [{"name": "weapon/chainsaw", "stream": false}]},
"weapon.rocketFlame": {"category": "block", "sounds": [{"name": "weapon/rocketFlame", "stream": false}]},
@ -234,7 +209,6 @@
"weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]},
"weapon.reloadTurret": {"category": "player", "sounds": [{"name": "weapon/reloadTurret", "stream": false}]},
"weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]},
"weapon.switchmode2": {"category": "player", "sounds": [{"name": "weapon/switchmode2", "stream": false}]},
@ -269,6 +243,7 @@
"weapon.fire.grenade": {"category": "player", "sounds": ["weapon/fire/grenade"]},
"weapon.fire.amat": {"category": "player", "sounds": ["weapon/fire/amat"]},
"weapon.fire.pistolLight": {"category": "player", "sounds": ["weapon/fire/pistolLight"]},
"weapon.fire.mk108": {"category": "player", "sounds": ["weapon/fire/mk108"]},
"weapon.reload.boltClose": {"category": "player", "sounds": ["weapon/reload/boltClose"]},
"weapon.reload.boltOpen": {"category": "player", "sounds": ["weapon/reload/boltOpen"]},

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB