mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
the gloach
This commit is contained in:
parent
6fa00c5771
commit
e776b4c8d9
@ -1,9 +1,14 @@
|
||||
## Changed
|
||||
* Updated russian localization
|
||||
* Rad absorbers now use metadata, existing blocks will be converted automatically
|
||||
* Fissure bombs that go off in crater biomes now create fissures with metadata 1 which creates radioactive volcanic lava
|
||||
* If a crater biome is created on top of an existing fissue, it will keep producing normal volcanic lava
|
||||
* Simplified the battery socket's client packets, reducing CPU load
|
||||
* Muzzle flashes on guns now work in third person mode, including on other players and on NPCs, making it more apparent when you're being fired at
|
||||
* This includes non-standard special effects like the .44 gap flash and the .35-800 ejector plume
|
||||
|
||||
# Fixed
|
||||
* Potentially fixed yet another issue regarding crates
|
||||
* Fixed battery socket `fillpercent` RoR function always assuming a max power of 1
|
||||
* Fixed battery socket `fillpercent` RoR function always assuming a max power of 1
|
||||
* Fixed issue where multiblock ports would generate many OpenComputers component entries
|
||||
* Fixed RBMK automatic control rods having incorrect settings when using the copy tool
|
||||
@ -459,9 +459,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
||||
|
||||
for(int i = 0; i < confNo; i++) {
|
||||
IHUDComponent[] components = gun.getConfig(stack, i).getHUDComponents(stack);
|
||||
int bottomOffset = 0;
|
||||
|
||||
if(components != null) for(IHUDComponent component : components) {
|
||||
int bottomOffset = 0;
|
||||
component.renderHUDComponent(event, type, player, stack, bottomOffset, i);
|
||||
bottomOffset += component.getComponentHeight(player, stack);
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.items.weapon.sedna.factory;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import com.hbm.interfaces.IOrderedEnum;
|
||||
import com.hbm.items.ItemEnumMulti;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -8,6 +10,8 @@ import com.hbm.items.weapon.sedna.Crosshair;
|
||||
import com.hbm.items.weapon.sedna.GunConfig;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
|
||||
import com.hbm.items.weapon.sedna.Receiver;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
|
||||
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
|
||||
import com.hbm.lib.RefStrings;
|
||||
@ -16,10 +20,12 @@ import com.hbm.particle.SpentCasing;
|
||||
import com.hbm.particle.SpentCasing.CasingType;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class GunFactory {
|
||||
|
||||
public static BulletConfig ammo_debug;
|
||||
public static BulletConfig ammo_debug_shot;
|
||||
|
||||
public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setColor(SpentCasing.COLOR_CASE_44);
|
||||
|
||||
@ -32,6 +38,7 @@ public class GunFactory {
|
||||
|
||||
/// BULLLET CFGS ///
|
||||
ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.01F).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG0"));
|
||||
ammo_debug_shot = new BulletConfig().setItem(ModItems.ammo_debug).setSpread(0.05F).setProjectiles(6).setRicochetAngle(45).setCasing(CASING44.clone().register("DEBUG1"));
|
||||
|
||||
/// GUNS ///
|
||||
ModItems.gun_debug = new ItemGunBaseNT(WeaponQuality.DEBUG, new GunConfig()
|
||||
@ -40,9 +47,15 @@ public class GunFactory {
|
||||
.dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
|
||||
.mag(new MagazineFullReload(0, 12).addConfigs(ammo_debug))
|
||||
.offset(0.75, -0.0625, -0.3125D)
|
||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE))
|
||||
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM)
|
||||
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
|
||||
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE),
|
||||
new Receiver(1)
|
||||
.dmg(5F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
|
||||
.mag(new MagazineFullReload(1, 12).addConfigs(ammo_debug_shot))
|
||||
.offset(0.75, -0.0625, -0.3125D)
|
||||
.canFire(Lego.LAMBDA_SECOND_CAN_FIRE).fire(Lego.LAMBDA_SECOND_FIRE))
|
||||
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).ps((stack, ctx) -> { Lego.clickReceiver(stack, ctx, 1); })
|
||||
.pr(Lego.LAMBDA_STANDARD_RELOAD).pt(Lego.LAMBDA_TOGGLE_AIM)
|
||||
.decider(LAMBDA_DEBUG_DECIDER)
|
||||
.anim(Lego.LAMBDA_DEBUG_ANIMS)
|
||||
).setUnlocalizedName("gun_debug");
|
||||
|
||||
@ -79,6 +92,17 @@ public class GunFactory {
|
||||
MainRegistry.proxy.registerGunCfg();
|
||||
}
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_DEBUG_DECIDER = (stack, ctx) -> {
|
||||
int index = ctx.configIndex;
|
||||
GunState lastState = ItemGunBaseNT.getState(stack, index);
|
||||
GunStateDecider.deciderStandardFinishDraw(stack, lastState, index);
|
||||
GunStateDecider.deciderStandardClearJam(stack, lastState, index);
|
||||
GunStateDecider.deciderStandardReload(stack, ctx, lastState, 0, index);
|
||||
GunStateDecider.deciderStandardReload(stack, ctx, lastState, 1, index);
|
||||
GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getPrimary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
|
||||
GunStateDecider.deciderAutoRefire(stack, ctx, lastState, 1, index, () -> { return ItemGunBaseNT.getSecondary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
|
||||
};
|
||||
|
||||
public static enum EnumAmmo implements IOrderedEnum {
|
||||
STONE, STONE_AP, STONE_IRON, STONE_SHOT,
|
||||
M357_BP, M357_SP, M357_FMJ, M357_JHP, M357_AP, M357_EXPRESS,
|
||||
|
||||
@ -106,6 +106,7 @@ public class GunFactoryClient {
|
||||
|
||||
//PROJECTILES
|
||||
ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
ammo_debug_shot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
|
||||
stone.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
flint.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
|
||||
@ -238,7 +239,8 @@ public class GunFactoryClient {
|
||||
setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots
|
||||
|
||||
//HUDS
|
||||
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO, LegoClient.HUD_COMPONENT_AMMO_SECOND);
|
||||
|
||||
((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_light_revolver) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
((ItemGunBaseNT) ModItems.gun_light_revolver_atlas) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
|
||||
|
||||
@ -20,7 +20,8 @@ public class GunStateDecider {
|
||||
/**
|
||||
* The meat and bones of the gun system's state machine.
|
||||
* This standard decider can handle guns with an automatic primary receiver, as well as one receiver's reloading state.
|
||||
* It supports draw delays as well as semi and auto fire
|
||||
* It supports draw delays as well as semi and auto fire with a standard left click refire check.
|
||||
* Only handles single receiver weapons!
|
||||
*/
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_DECIDER = (stack, ctx) -> {
|
||||
int index = ctx.configIndex;
|
||||
|
||||
@ -175,6 +175,7 @@ public class Lego {
|
||||
|
||||
/** Returns true if the mag has ammo in it. Used by keybind functions on whether to fire, and deciders on whether to trigger a refire. */
|
||||
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_STANDARD_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; };
|
||||
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_SECOND_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[1].getMagazine(stack).getAmount(stack, ctx.inventory) > 0; };
|
||||
|
||||
/** Returns true if the mag has ammo in it, and the gun is in the locked on state */
|
||||
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_LOCKON_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0 && ItemGunBaseNT.getIsLockedOn(stack); };
|
||||
@ -187,26 +188,29 @@ public class Lego {
|
||||
|
||||
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg */
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_FIRE = (stack, ctx) -> {
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, 0, true);
|
||||
};
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SECOND_FIRE = (stack, ctx) -> {
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, 1, true);
|
||||
};
|
||||
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, ignores wear */
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_NOWEAR_FIRE = (stack, ctx) -> {
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, false);
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, 0, false);
|
||||
};
|
||||
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, then resets lockon progress */
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_LOCKON_FIRE = (stack, ctx) -> {
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
|
||||
doStandardFire(stack, ctx, GunAnimation.CYCLE, 0, true);
|
||||
ItemGunBaseNT.setIsLockedOn(stack, false);
|
||||
};
|
||||
|
||||
public static void doStandardFire(ItemStack stack, LambdaContext ctx, GunAnimation anim, boolean calcWear) {
|
||||
public static void doStandardFire(ItemStack stack, LambdaContext ctx, GunAnimation anim, int receiver, boolean calcWear) {
|
||||
EntityLivingBase entity = ctx.entity;
|
||||
EntityPlayer player = ctx.getPlayer();
|
||||
int index = ctx.configIndex;
|
||||
if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex);
|
||||
|
||||
boolean aim = ItemGunBaseNT.getIsAiming(stack);
|
||||
Receiver primary = ctx.config.getReceivers(stack)[0];
|
||||
Receiver primary = ctx.config.getReceivers(stack)[receiver];
|
||||
IMagazine mag = primary.getMagazine(stack);
|
||||
BulletConfig config = (BulletConfig) mag.getType(stack, ctx.inventory);
|
||||
|
||||
|
||||
@ -35,6 +35,7 @@ public class LegoClient {
|
||||
public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO = new HUDComponentAmmoCounter(0);
|
||||
public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO_MIRROR = new HUDComponentAmmoCounter(0).mirror();
|
||||
public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO_NOCOUNTER = new HUDComponentAmmoCounter(0).noCounter();
|
||||
public static HUDComponentAmmoCounter HUD_COMPONENT_AMMO_SECOND = new HUDComponentAmmoCounter(1);
|
||||
|
||||
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_STANDARD_BULLET = (bullet, interp) -> {
|
||||
double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp;
|
||||
|
||||
@ -154,7 +154,7 @@ public class XFactory9mm {
|
||||
ItemGunBaseNT.setTimer(stack, index, primary.getDelayAfterFire(stack));
|
||||
EntityDamageUtil.attackEntityFromNT(player, BulletConfig.getDamage(player, player, DamageClass.PHYSICAL), 1_000F, true, false, 1D, 5F, 0F);
|
||||
} else {
|
||||
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
|
||||
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, 0, true);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -124,7 +124,7 @@ public class XFactoryFolly {
|
||||
};
|
||||
|
||||
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_FIRE = (stack, ctx) -> {
|
||||
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, false);
|
||||
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, 0, false);
|
||||
};
|
||||
|
||||
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_CAN_FIRE = (stack, ctx) -> {
|
||||
|
||||
@ -41,7 +41,7 @@ public class HUDComponentAmmoCounter implements IHUDComponent {
|
||||
|
||||
@Override
|
||||
public int getComponentHeight(EntityPlayer player, ItemStack stack){
|
||||
return 24;
|
||||
return 19;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -52,7 +52,7 @@ public class HUDComponentAmmoCounter implements IHUDComponent {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
|
||||
int pX = resolution.getScaledWidth() / 2 + (mirrored ? -(62 + 36 + 52) : (62 + 36)) + (noCounter ? 14 : 0);
|
||||
int pZ = resolution.getScaledHeight() - bottomOffset - 23;
|
||||
int pZ = resolution.getScaledHeight() - bottomOffset - 18;
|
||||
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
|
||||
IMagazine mag = gun.getConfig(stack, gunIndex).getReceivers(stack)[this.receiver].getMagazine(stack);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user