重构json格式

This commit is contained in:
17146 2025-05-07 17:40:53 +08:00 committed by Light_Quanta
parent 0de1cc2967
commit 1641592eef
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
65 changed files with 476 additions and 367 deletions

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -110,11 +108,6 @@ public class Glock17Item extends GunItem implements GeoItem {
return "GLOCK-17";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -3,12 +3,9 @@ package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -113,11 +110,6 @@ public class Glock18Item extends GunItem implements GeoItem {
return "GLOCK-18";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get();
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -112,11 +110,6 @@ public class M1911Item extends GunItem implements GeoItem {
return "M-1911";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -109,11 +107,6 @@ public class Mp443Item extends GunItem implements GeoItem {
return "MP-443";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
@ -296,11 +294,6 @@ public class Trachelium extends GunItem implements GeoItem {
return "TRACHELIUM";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -9,8 +9,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -157,11 +155,6 @@ public class Ntw20Item extends GunItem implements GeoItem {
return "NTW-20";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -13,7 +13,6 @@ import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -191,11 +190,6 @@ public class JavelinItem extends GunItem implements GeoItem {
return "FGM-148";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk);
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack));

View file

@ -5,13 +5,11 @@ import com.atsuishio.superbwarfare.client.renderer.item.M79ItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.LauncherImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -101,11 +99,6 @@ public class M79Item extends GunItem implements GeoItem {
return "M79 LAUNCHER";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack));

View file

@ -5,13 +5,11 @@ import com.atsuishio.superbwarfare.client.renderer.item.RpgItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.LauncherImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -129,11 +127,6 @@ public class RpgItem extends GunItem implements GeoItem {
return "RPG-7";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(pStack));

View file

@ -7,14 +7,12 @@ import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.EnergyStorageItem;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -187,11 +185,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag
return "SECONDARY CATACLYSM";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get() || perk == ModPerks.REGENERATION.get();
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new SecondaryCataclysmImageComponent(pStack));

View file

@ -3,12 +3,9 @@ package com.atsuishio.superbwarfare.item.gun.machinegun;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.DevotionItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -95,11 +92,6 @@ public class DevotionItem extends GunItem implements GeoItem {
return "Devotion";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get() || perk == ModPerks.TURBO_CHARGER.get();
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -3,12 +3,9 @@ package com.atsuishio.superbwarfare.item.gun.machinegun;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.M60ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -131,11 +128,6 @@ public class M60Item extends GunItem implements GeoItem {
return "M60";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get();
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -4,10 +4,8 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.MinigunItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -23,10 +21,6 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.function.Supplier;
public class MinigunItem extends GunItem implements GeoItem {
@Override
public int getCustomRPM(ItemStack stack) {
return GunData.from(stack).data().getInt("CustomRPM");
}
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType;
@ -35,6 +29,11 @@ public class MinigunItem extends GunItem implements GeoItem {
super(new Properties().stacksTo(1).rarity(ModEnumExtensions.getLegendary()));
}
@Override
public int getCustomRPM(ItemStack stack) {
return GunData.from(stack).data().getInt("CustomRPM");
}
@Override
public Supplier<GeoItemRenderer<? extends Item>> getRenderer() {
return MinigunItemRenderer::new;
@ -81,15 +80,6 @@ public class MinigunItem extends GunItem implements GeoItem {
return "M134 MINIGUN";
}
@Override
public boolean canApplyPerk(Perk perk) {
return switch (perk.type) {
case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
};
}
@Override
public boolean isAutoWeapon(ItemStack stack) {
return true;

View file

@ -4,13 +4,10 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.ClickHandler;
import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -178,11 +175,6 @@ public class RpkItem extends GunItem implements GeoItem {
return "RPK";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.MACHINE_GUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get();
}
@Override
@ParametersAreNonnullByDefault
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) {

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -90,11 +88,6 @@ public class InsidiousItem extends GunItem implements GeoItem {
return "INSIDIOUS";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -180,11 +178,6 @@ public class M4Item extends GunItem implements GeoItem {
return "M4A1";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -130,11 +128,6 @@ public class MarlinItem extends GunItem implements GeoItem {
return "MARLIN-1894";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -176,11 +174,6 @@ public class Mk14Item extends GunItem implements GeoItem {
return "MK-14";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -189,11 +187,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
return "QBZ-95-1";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -114,11 +112,6 @@ public class SksItem extends GunItem implements GeoItem {
return "SKS";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -5,12 +5,9 @@ import com.atsuishio.superbwarfare.client.renderer.item.Aa12ItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.ShotgunImageComponent;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -120,11 +117,6 @@ public class Aa12Item extends GunItem implements GeoItem {
return "AA-12";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get();
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(pStack));

View file

@ -7,8 +7,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
@ -60,7 +58,7 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
}
@Override
public int getBarColor(ItemStack stack) {
public int getBarColor(@NotNull ItemStack stack) {
float stackMaxDamage = (float) this.getMaxDamage(stack);
float f = Math.max(0.0F, (stackMaxDamage - (float) stack.getDamageValue()) / stackMaxDamage);
return Mth.hsvToRgb(f / 3.0F, 1.0F, 1.0F);
@ -121,11 +119,6 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
return "Homemade Shotgun";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk);
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(pStack));

View file

@ -7,8 +7,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -135,11 +133,6 @@ public class M870Item extends GunItem implements GeoItem {
return "M870 MCS";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(pStack));

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -157,11 +155,6 @@ public class VectorItem extends GunItem implements GeoItem {
return "VECTOR";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -89,11 +87,6 @@ public class HuntingRifleItem extends GunItem implements GeoItem {
return "Hunting Rifle";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -139,11 +137,6 @@ public class K98Item extends GunItem implements GeoItem {
return "KAR-98K";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
}
@Override
public boolean isClipReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -113,11 +111,6 @@ public class M98bItem extends GunItem implements GeoItem {
return "M98-B";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isMagazineReload(ItemStack stack) {
return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -137,11 +135,6 @@ public class MosinNagantItem extends GunItem implements GeoItem {
return "MOSIN NAGANT";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
}
@Override
public boolean isIterativeReload(ItemStack stack) {
return true;

View file

@ -5,13 +5,10 @@ import com.atsuishio.superbwarfare.client.renderer.item.SentinelItemRenderer;
import com.atsuishio.superbwarfare.client.tooltip.component.SentinelImageComponent;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.EnergyStorageItem;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
@ -172,11 +169,6 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem
return "SENTINEL";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.REGENERATION.get();
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new SentinelImageComponent(pStack));

View file

@ -8,8 +8,6 @@ import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType;
import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft;
@ -140,11 +138,6 @@ public class SvdItem extends GunItem implements GeoItem {
return "SVD";
}
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override
public boolean isCustomizable(ItemStack stack) {
return true;

View file

@ -140,15 +140,6 @@ public class BocekItem extends GunItem implements GeoItem {
return "Bocek";
}
@Override
public boolean canApplyPerk(Perk perk) {
return switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get();
case FUNCTIONAL -> perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
};
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new BocekImageComponent(pStack));

View file

@ -150,16 +150,6 @@ public class TaserItem extends GunItem implements GeoItem, EnergyStorageItem {
return "TASER";
}
@Override
public boolean canApplyPerk(Perk perk) {
return switch (perk.type) {
case AMMO -> perk == ModPerks.LONGER_WIRE.get();
case FUNCTIONAL ->
perk == ModPerks.REGENERATION.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.VOLT_OVERLOAD.get();
};
}
@Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new EnergyImageComponent(pStack));

View file

@ -1,92 +0,0 @@
package com.atsuishio.superbwarfare.perk;
import com.atsuishio.superbwarfare.init.ModPerks;
import java.util.function.Predicate;
public class PerkHelper {
public static final Predicate<Perk> SHOTGUN_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FIELD_DOCTOR.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.GUTSHOT_STRAIGHT.get()
|| perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.KILL_CLIP.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> RIFLE_PERKS = perk -> switch (perk.type) {
case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() ||
perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() ||
perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE ->
perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get() || perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> HANDGUN_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FIELD_DOCTOR.get()
|| perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.KILL_CLIP.get()
|| perk == ModPerks.GUTSHOT_STRAIGHT.get()
|| perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> SNIPER_RIFLE_PERKS = perk -> switch (perk.type) {
case AMMO -> !perk.descriptionId.equals("butterfly_bullet") && perk != ModPerks.MICRO_MISSILE.get()
&& perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.KILL_CLIP.get()
|| perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> SMG_PERKS = perk -> switch (perk.type) {
case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.HEAL_CLIP.get()
|| perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.KILL_CLIP.get()
|| perk == ModPerks.GUTSHOT_STRAIGHT.get()
|| perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.HEAD_SEEKER.get()
|| perk == ModPerks.DESPERADO.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> MACHINE_GUN_PERKS = perk -> switch (perk.type) {
case AMMO -> perk != ModPerks.MICRO_MISSILE.get() && perk != ModPerks.LONGER_WIRE.get();
case FUNCTIONAL -> perk == ModPerks.FOURTH_TIMES_CHARM.get()
|| perk == ModPerks.SUBSISTENCE.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get();
case DAMAGE -> perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.KILLING_TALLY.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
};
public static final Predicate<Perk> MAGAZINE_PERKS = perk -> false;
public static final Predicate<Perk> LAUNCHER_PERKS = perk -> perk == ModPerks.MONSTER_HUNTER.get()
|| perk == ModPerks.POWERFUL_ATTRACTION.get()
|| perk == ModPerks.INTELLIGENT_CHIP.get()
|| perk == ModPerks.VORPAL_WEAPON.get();
}

View file

@ -14,5 +14,21 @@
"BypassesArmor": 0.05,
"SoundRadius": 18,
"RPM": 360,
"AmmoType": "@ShotgunAmmo"
"AmmoType": "@ShotgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:heal_clip",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:desperado",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -6,5 +6,13 @@
"BypassesArmor": 0.25,
"Magazine": 1,
"EmptyReloadTime": 6,
"AmmoType": "minecraft:arrow"
"AmmoType": "minecraft:arrow",
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"!superbwarfare:micro_missile",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -14,5 +14,19 @@
"BypassesArmor": 0.25,
"SoundRadius": 13,
"RPM": 400,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:killing_tally",
"superbwarfare:desperado",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:turbo_charger",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -12,5 +12,21 @@
"BypassesArmor": 0.15,
"SoundRadius": 8,
"RPM": 400,
"AmmoType": "@HandgunAmmo"
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -13,5 +13,22 @@
"BypassesArmor": 0.15,
"SoundRadius": 8,
"RPM": 1300,
"AmmoType": "@HandgunAmmo"
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:desperado",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -13,5 +13,20 @@
"BypassesArmor": 0.01,
"SoundRadius": 16,
"RPM": 600,
"AmmoType": "@ShotgunAmmo"
"AmmoType": "@ShotgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:heal_clip",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -10,5 +10,19 @@
"EmptyReloadTime": 64,
"BypassesArmor": 0.7,
"SoundRadius": 20,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -13,5 +13,22 @@
"BypassesArmor": 0.4,
"SoundRadius": 12,
"RPM": 900,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -7,5 +7,11 @@
"Damage": 700,
"ExplosionDamage": 60,
"ExplosionRadius": 5,
"AmmoType": "superbwarfare:javelin_missile"
"AmmoType": "superbwarfare:javelin_missile",
"AvailablePerks": [
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon"
]
}

View file

@ -15,5 +15,19 @@
"FinishTime": 18,
"BypassesArmor": 0.5,
"SoundRadius": 18,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -12,5 +12,21 @@
"BypassesArmor": 0.2,
"SoundRadius": 10,
"RPM": 400,
"AmmoType": "@HandgunAmmo"
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -15,5 +15,22 @@
"BypassesArmor": 0.25,
"SoundRadius": 14,
"RPM": 850,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -13,5 +13,18 @@
"BypassesArmor": 0.25,
"SoundRadius": 15,
"RPM": 600,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:killing_tally",
"superbwarfare:desperado",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -10,5 +10,12 @@
"Weight": 4,
"EmptyReloadTime": 64,
"RPM": 180,
"AmmoType": "superbwarfare:grenade_40mm"
"AmmoType": "superbwarfare:grenade_40mm",
"AvailablePerks": [
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:micro_missile"
]
}

View file

@ -15,5 +15,20 @@
"BypassesArmor": 0.05,
"SoundRadius": 16,
"BoltActionTime": 11,
"AmmoType": "@ShotgunAmmo"
"AmmoType": "@ShotgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:heal_clip",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -15,5 +15,19 @@
"EmptyReloadTime": 78,
"BypassesArmor": 0.6,
"SoundRadius": 18,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -13,5 +13,22 @@
"BypassesArmor": 0.3,
"SoundRadius": 15,
"BoltActionTime": 12,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -12,5 +12,15 @@
"FireMode": 2,
"AmmoType": "@RifleAmmo",
"ShootDelay": 20,
"HeatPerShoot": 0.5
"HeatPerShoot": 0.5,
"AvailablePerks": [
"@Ammo",
"superbwarfare:field_doctor",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -15,5 +15,22 @@
"BypassesArmor": 0.4,
"SoundRadius": 16,
"RPM": 700,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -15,5 +15,19 @@
"FinishTime": 18,
"BypassesArmor": 0.54,
"SoundRadius": 18,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -12,5 +12,21 @@
"BypassesArmor": 0.15,
"SoundRadius": 8,
"RPM": 400,
"AmmoType": "@HandgunAmmo"
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -14,5 +14,19 @@
"EmptyReloadTime": 112,
"BypassesArmor": 1,
"SoundRadius": 22,
"AmmoType": "@HeavyAmmo"
"AmmoType": "@HeavyAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -15,5 +15,22 @@
"BypassesArmor": 0.28,
"SoundRadius": 13,
"RPM": 650,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -10,5 +10,12 @@
"Weight": 7,
"EmptyReloadTime": 103,
"RPM": 120,
"AmmoType": "superbwarfare:rocket"
"AmmoType": "superbwarfare:rocket",
"AvailablePerks": [
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:micro_missile"
]
}

View file

@ -15,5 +15,18 @@
"BypassesArmor": 0.23,
"SoundRadius": 14,
"RPM": 600,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:killing_tally",
"superbwarfare:desperado",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -13,5 +13,13 @@
"FinishTime": 19,
"SoundRadius": 8,
"RPM": 300,
"AmmoType": "superbwarfare:grenade_40mm"
"AmmoType": "superbwarfare:grenade_40mm",
"AvailablePerks": [
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"superbwarfare:micro_missile",
"superbwarfare:regeneration"
]
}

View file

@ -13,5 +13,20 @@
"EmptyReloadTime": 89,
"BypassesArmor": 0.8,
"SoundRadius": 20,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:regeneration",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -12,5 +12,22 @@
"BypassesArmor": 0.23,
"SoundRadius": 16,
"RPM": 400,
"AmmoType": "@RifleAmmo"
"AmmoType": "@RifleAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}

View file

@ -14,5 +14,19 @@
"BypassesArmor": 0.45,
"SoundRadius": 17,
"RPM": 300,
"AmmoType": "@SniperAmmo"
"AmmoType": "@SniperAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -8,5 +8,12 @@
"Weight": 1,
"EmptyReloadTime": 58,
"RPM": 240,
"AmmoType": "superbwarfare:taser_electrode"
"AmmoType": "superbwarfare:taser_electrode",
"AvailablePerks": [
"superbwarfare:longer_wire",
"superbwarfare:regeneration",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:volt_overload"
]
}

View file

@ -12,5 +12,21 @@
"SoundRadius": 10,
"RPM": 240,
"AmmoType": "@RifleAmmo",
"ShootDelay": 6
"ShootDelay": 6,
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire",
"!superbwarfare:butterfly_bullet"
]
}

View file

@ -14,5 +14,22 @@
"BypassesArmor": 0.15,
"SoundRadius": 11,
"RPM": 1200,
"AmmoType": "@HandgunAmmo"
"AmmoType": "@HandgunAmmo",
"AvailablePerks": [
"@Ammo",
"superbwarfare:heal_clip",
"superbwarfare:field_doctor",
"superbwarfare:fourth_times_charm",
"superbwarfare:subsistence",
"superbwarfare:powerful_attraction",
"superbwarfare:intelligent_chip",
"superbwarfare:kill_clip",
"superbwarfare:gutshot_straight",
"superbwarfare:monster_hunter",
"superbwarfare:head_seeker",
"superbwarfare:desperado",
"superbwarfare:vorpal_weapon",
"!superbwarfare:micro_missile",
"!superbwarfare:longer_wire"
]
}