From a3c56e0a11970fc017f11405a3a69a65a2caadf8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 3 Sep 2024 16:00:41 +0200 Subject: [PATCH] gun stuff --- changelog | 1 + .../hbm/items/weapon/sedna/BulletConfig.java | 20 +++++++ .../com/hbm/items/weapon/sedna/GunConfig.java | 5 ++ .../hbm/items/weapon/sedna/ItemGunBase.java | 54 +++++++++++++++++++ .../items/weapon/sedna/mags/IMagazine.java | 5 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- 7 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/GunConfig.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java diff --git a/changelog b/changelog index 767fe5efe..575a54ee4 100644 --- a/changelog +++ b/changelog @@ -5,6 +5,7 @@ * Removed forgotten bricks * Updated CMB brick texture * The ICF machine block now renders with its 3d model in the creative inventory +* "Toggle backpack" keybind is now called "toggle jetpack" to reduce confusion ## Fixed * Fixed pumpjack gauges not syncing properly diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java new file mode 100644 index 000000000..4d1be717c --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -0,0 +1,20 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.inventory.RecipesCommon.ComparableStack; + +public class BulletConfig { + + public ComparableStack ammo; + public int ammoCount = 1; + public float velocity = 5F; + public float spread = 0F; + public float wear = 1F; + public int projectilesMin; + public int projectilesMax; + + public float damageMult = 1.0F; + public float headshotMult = 1.0F; + + public double gravity = 0; + public int expires = 100; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java new file mode 100644 index 000000000..02edce2a9 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -0,0 +1,5 @@ +package com.hbm.items.weapon.sedna; + +public class GunConfig { + // ??? +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java new file mode 100644 index 000000000..666c92bde --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -0,0 +1,54 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.IKeybindReceiver; +import com.hbm.util.EnumUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemGunBase implements IKeybindReceiver { + + public static final String KEY_TIMER = "timer"; + public static final String KEY_STATE = "state"; + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_TYPE = "magtype"; + + public static enum GunState { + IDLE, //gun can be fired or reloaded + WINDUP, //fire button is down, added delay before fire + JUST_FIRED, //gun has been fired, cooldown + RELOADING //gun is currently reloading + } + + @Override + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { + + } + + //TODO: move into the IMagazine impl + /*// MAG TYPE // + public static int getMagType(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_TYPE + index); } + public static void setMagType(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_TYPE + index, value); } + + // MAG COUNT // + public static int getMagCount(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_COUNT + index, value); }*/ + + // GUN STATE TIMER // + public static int getTimer(ItemStack stack) { return getValueInt(stack, KEY_TIMER); } + public static void setTimer(ItemStack stack, int value) { setValueInt(stack, KEY_TIMER, value); } + + // GUN STATE // + public static GunState getState(ItemStack stack) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE)); } + public static void setState(ItemStack stack, GunState value) { setValueByte(stack, KEY_STATE, (byte) value.ordinal()); } + + + /// UTIL /// + public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getInteger(name); return 0; } + public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); } + + public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getByte(name); return 0; } + public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java new file mode 100644 index 000000000..85998ca8f --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -0,0 +1,5 @@ +package com.hbm.items.weapon.sedna.mags; + +public interface IMagazine { + +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 026f86d95..9a0f2e0cc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -654,7 +654,7 @@ hbm.key.craneMoveDown=Kran rückwärts hbm.key.craneMoveLeft=Kran nach links hbm.key.craneMoveRight=Kran nach rechts hbm.key.craneMoveUp=Kran vorwärts -hbm.key.toggleBack=Rucksack umschalten +hbm.key.toggleBack=Jetpack umschalten hbm.key.toggleHUD=HUD umschalten hbm.key.reload=Nachladen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 336ad59dc..2e7c34e4a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1350,7 +1350,7 @@ hbm.key.craneMoveLeft=Move Crane Left hbm.key.craneMoveRight=Move Crane Right hbm.key.craneMoveUp=Move Crane Forward hbm.key.dash=Dash (Unbind from Crouch in config) -hbm.key.toggleBack=Toggle Backpack +hbm.key.toggleBack=Toggle Jetpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload