添加可用FireMode字段

This commit is contained in:
17146 2025-05-11 13:17:40 +08:00 committed by Light_Quanta
parent f7b93a8a88
commit e6b6559be7
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
46 changed files with 23 additions and 155 deletions

View file

@ -332,13 +332,6 @@ public abstract class GunItem extends Item implements CustomRendererItem {
return false;
}
/**
* 获取武器可用的开火模式
*/
public int getAvailableFireModes() {
return 0;
}
/**
* 获取额外伤害加成
*/

View file

@ -87,4 +87,7 @@ public class DefaultGunData {
"!superbwarfare:longer_wire",
"!superbwarfare:cupid_arrow"
);
@SerializedName("AvailableFireModes")
public int availableFireModes = 1;
}

View file

@ -501,6 +501,10 @@ public class GunData {
return availablePerks().contains(perk);
}
public int getAvailableFireModes() {
return defaultGunData().availableFireModes;
}
// 可持久化属性开始
public final IntValue ammo;
public final IntValue fireMode;

View file

@ -128,11 +128,6 @@ public class Glock17Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -135,11 +135,6 @@ public class Glock18Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -130,11 +130,6 @@ public class M1911Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -127,11 +127,6 @@ public class Mp443Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -323,9 +323,4 @@ public class Trachelium extends GunItem implements GeoItem {
public boolean hasCustomStock(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -189,9 +189,4 @@ public class Ntw20Item extends GunItem implements GeoItem {
public boolean hasBipod(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -215,11 +215,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public String getAmmoDisplayName(GunData data) {
return "40mm Grenade";

View file

@ -116,9 +116,4 @@ public class DevotionItem extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.AUTO.flag;
}
}

View file

@ -148,11 +148,6 @@ public class M60Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.AUTO.flag;
}
@Override
public void beforeShoot(GunData data, Player player, double spread, boolean zoom) {
super.beforeShoot(data, player, spread, zoom);

View file

@ -253,9 +253,4 @@ public class RpkItem extends GunItem implements GeoItem {
public boolean hasBipod(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -218,9 +218,4 @@ public class AK12Item extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -226,9 +226,4 @@ public class AK47Item extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -226,9 +226,4 @@ public class Hk416Item extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -92,9 +92,4 @@ public class InsidiousItem extends GunItem implements GeoItem {
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.BURST.flag;
}
}

View file

@ -232,9 +232,4 @@ public class M4Item extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -132,9 +132,4 @@ public class MarlinItem extends GunItem implements GeoItem {
public boolean isIterativeReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -229,11 +229,6 @@ public class Mk14Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -237,11 +237,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -132,11 +132,6 @@ public class SksItem extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -146,9 +146,4 @@ public class Aa12Item extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.AUTO.flag;
}
}

View file

@ -53,7 +53,7 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
}
@Override
public int getBarWidth(ItemStack stack) {
public int getBarWidth(@NotNull ItemStack stack) {
return Math.round(13.0F - (float) stack.getDamageValue() * 13.0F / (float) this.getMaxDamage(stack));
}
@ -152,9 +152,4 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
stack.hurtAndBreak(1, (ServerLevel) player.level(), player, p -> {
});
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -142,9 +142,4 @@ public class M870Item extends GunItem implements GeoItem {
public boolean isIterativeReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -209,9 +209,4 @@ public class VectorItem extends GunItem implements GeoItem {
public boolean canEjectShell(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag + FireMode.BURST.flag + FireMode.AUTO.flag;
}
}

View file

@ -91,9 +91,4 @@ public class HuntingRifleItem extends GunItem implements GeoItem {
public boolean isMagazineReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -146,9 +146,4 @@ public class K98Item extends GunItem implements GeoItem {
public boolean isIterativeReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -125,9 +125,4 @@ public class M98bItem extends GunItem implements GeoItem {
public boolean hasBulletInBarrel(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -139,9 +139,4 @@ public class MosinNagantItem extends GunItem implements GeoItem {
public boolean isIterativeReload(ItemStack stack) {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
}

View file

@ -189,11 +189,6 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void afterShoot(GunData data, Player player) {
super.afterShoot(data, player);

View file

@ -183,11 +183,6 @@ public class SvdItem extends GunItem implements GeoItem {
return true;
}
@Override
public int getAvailableFireModes() {
return FireMode.SEMI.flag;
}
@Override
public void addReloadTimeBehavior(Map<Integer, Consumer<GunData>> behaviors) {
super.addReloadTimeBehavior(behaviors);

View file

@ -32,12 +32,12 @@ public record FireModeMessage(int msgType) implements CustomPacketPayload {
public static void changeFireMode(Player player) {
ItemStack stack = player.getMainHandItem();
if (stack.getItem() instanceof GunItem gunItem) {
if (stack.getItem() instanceof GunItem) {
var data = GunData.from(stack);
var tag = data.tag();
int fireMode = data.fireMode.get();
int mode = gunItem.getAvailableFireModes();
int mode = data.getAvailableFireModes();
mode &= 0b111;
if (fireMode == 0) {

View file

@ -14,6 +14,7 @@
"BypassesArmor": 0.05,
"SoundRadius": 18,
"RPM": 360,
"AvailableFireModes": 5,
"AmmoType": "@ShotgunAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.23,
"SoundRadius": 12,
"RPM": 700,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.2,
"SoundRadius": 14,
"RPM": 600,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -14,6 +14,7 @@
"BypassesArmor": 0.25,
"SoundRadius": 13,
"RPM": 400,
"AvailableFireModes": 4,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -13,6 +13,7 @@
"BypassesArmor": 0.15,
"SoundRadius": 8,
"RPM": 1300,
"AvailableFireModes": 5,
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.25,
"SoundRadius": 14,
"RPM": 900,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -13,6 +13,7 @@
"BypassesArmor": 0.4,
"SoundRadius": 12,
"RPM": 900,
"AvailableFireModes": 2,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.25,
"SoundRadius": 14,
"RPM": 850,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -13,6 +13,7 @@
"BypassesArmor": 0.25,
"SoundRadius": 15,
"RPM": 600,
"AvailableFireModes": 4,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.4,
"SoundRadius": 16,
"RPM": 700,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.28,
"SoundRadius": 13,
"RPM": 650,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -15,6 +15,7 @@
"BypassesArmor": 0.23,
"SoundRadius": 14,
"RPM": 600,
"AvailableFireModes": 5,
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",

View file

@ -14,6 +14,7 @@
"BypassesArmor": 0.15,
"SoundRadius": 11,
"RPM": 1200,
"AvailableFireModes": 7,
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",