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

View file

@ -3,12 +3,9 @@ package com.atsuishio.superbwarfare.item.gun.handgun;
import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.Glock18ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -113,11 +110,6 @@ public class Glock18Item extends GunItem implements GeoItem {
return "GLOCK-18"; 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 @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; return true;

View file

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

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -109,11 +107,6 @@ public class Mp443Item extends GunItem implements GeoItem {
return "MP-443"; return "MP-443";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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 com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -296,11 +294,6 @@ public class Trachelium extends GunItem implements GeoItem {
return "TRACHELIUM"; return "TRACHELIUM";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.HANDGUN_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -157,11 +155,6 @@ public class Ntw20Item extends GunItem implements GeoItem {
return "NTW-20"; return "NTW-20";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.item.gun.data.GunData;
import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage; import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.*; import com.atsuishio.superbwarfare.tools.*;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -191,11 +190,6 @@ public class JavelinItem extends GunItem implements GeoItem {
return "FGM-148"; return "FGM-148";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk);
}
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(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.client.tooltip.component.LauncherImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity; import com.atsuishio.superbwarfare.entity.projectile.GunGrenadeEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool; import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -101,11 +99,6 @@ public class M79Item extends GunItem implements GeoItem {
return "M79 LAUNCHER"; return "M79 LAUNCHER";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
}
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(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.client.tooltip.component.LauncherImageComponent;
import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity; import com.atsuishio.superbwarfare.entity.projectile.RpgRocketEntity;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool; import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -129,11 +127,6 @@ public class RpgItem extends GunItem implements GeoItem {
return "RPG-7"; return "RPG-7";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.LAUNCHER_PERKS.test(perk) || perk == ModPerks.MICRO_MISSILE.get();
}
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new LauncherImageComponent(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.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions; import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModItems; import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.EnergyStorageItem; import com.atsuishio.superbwarfare.item.EnergyStorageItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.AmmoPerk;
import com.atsuishio.superbwarfare.perk.Perk; import com.atsuishio.superbwarfare.perk.Perk;
import com.atsuishio.superbwarfare.perk.PerkHelper;
import com.atsuishio.superbwarfare.tools.ParticleTool; import com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -187,11 +185,6 @@ public class SecondaryCataclysm extends GunItem implements GeoItem, EnergyStorag
return "SECONDARY CATACLYSM"; 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 @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new SecondaryCataclysmImageComponent(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.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.DevotionItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.DevotionItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -95,11 +92,6 @@ public class DevotionItem extends GunItem implements GeoItem {
return "Devotion"; 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 @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; return true;

View file

@ -3,12 +3,9 @@ package com.atsuishio.superbwarfare.item.gun.machinegun;
import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.renderer.item.M60ItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.M60ItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -131,11 +128,6 @@ public class M60Item extends GunItem implements GeoItem {
return "M60"; 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 @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.client.renderer.item.MinigunItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.perk.Perk;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -23,10 +21,6 @@ import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.function.Supplier; import java.util.function.Supplier;
public class MinigunItem extends GunItem implements GeoItem { 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); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
@ -35,6 +29,11 @@ public class MinigunItem extends GunItem implements GeoItem {
super(new Properties().stacksTo(1).rarity(ModEnumExtensions.getLegendary())); super(new Properties().stacksTo(1).rarity(ModEnumExtensions.getLegendary()));
} }
@Override
public int getCustomRPM(ItemStack stack) {
return GunData.from(stack).data().getInt("CustomRPM");
}
@Override @Override
public Supplier<GeoItemRenderer<? extends Item>> getRenderer() { public Supplier<GeoItemRenderer<? extends Item>> getRenderer() {
return MinigunItemRenderer::new; return MinigunItemRenderer::new;
@ -81,15 +80,6 @@ public class MinigunItem extends GunItem implements GeoItem {
return "M134 MINIGUN"; 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 @Override
public boolean isAutoWeapon(ItemStack stack) { public boolean isAutoWeapon(ItemStack stack) {
return true; return true;

View file

@ -4,13 +4,10 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.ClickHandler; import com.atsuishio.superbwarfare.client.ClickHandler;
import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer; import com.atsuishio.superbwarfare.client.renderer.item.RpkItemRenderer;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -178,11 +175,6 @@ public class RpkItem extends GunItem implements GeoItem {
return "RPK"; 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 @Override
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) { 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.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -90,11 +88,6 @@ public class InsidiousItem extends GunItem implements GeoItem {
return "INSIDIOUS"; return "INSIDIOUS";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -180,11 +178,6 @@ public class M4Item extends GunItem implements GeoItem {
return "M4A1"; return "M4A1";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -130,11 +128,6 @@ public class MarlinItem extends GunItem implements GeoItem {
return "MARLIN-1894"; return "MARLIN-1894";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isIterativeReload(ItemStack stack) { public boolean isIterativeReload(ItemStack stack) {
return true; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -176,11 +174,6 @@ public class Mk14Item extends GunItem implements GeoItem {
return "MK-14"; return "MK-14";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -189,11 +187,6 @@ public class Qbz95Item extends GunItem implements GeoItem {
return "QBZ-95-1"; return "QBZ-95-1";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; return true;

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -114,11 +112,6 @@ public class SksItem extends GunItem implements GeoItem {
return "SKS"; return "SKS";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; 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.client.tooltip.component.ShotgunImageComponent;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions; import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -120,11 +117,6 @@ public class Aa12Item extends GunItem implements GeoItem {
return "AA-12"; 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 @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(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.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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 com.atsuishio.superbwarfare.tools.ParticleTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -60,7 +58,7 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
} }
@Override @Override
public int getBarColor(ItemStack stack) { public int getBarColor(@NotNull ItemStack stack) {
float stackMaxDamage = (float) this.getMaxDamage(stack); float stackMaxDamage = (float) this.getMaxDamage(stack);
float f = Math.max(0.0F, (stackMaxDamage - (float) stack.getDamageValue()) / stackMaxDamage); float f = Math.max(0.0F, (stackMaxDamage - (float) stack.getDamageValue()) / stackMaxDamage);
return Mth.hsvToRgb(f / 3.0F, 1.0F, 1.0F); return Mth.hsvToRgb(f / 3.0F, 1.0F, 1.0F);
@ -121,11 +119,6 @@ public class HomemadeShotgunItem extends GunItem implements GeoItem {
return "Homemade Shotgun"; return "Homemade Shotgun";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk);
}
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(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.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -135,11 +133,6 @@ public class M870Item extends GunItem implements GeoItem {
return "M870 MCS"; return "M870 MCS";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SHOTGUN_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new ShotgunImageComponent(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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -157,11 +155,6 @@ public class VectorItem extends GunItem implements GeoItem {
return "VECTOR"; return "VECTOR";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isMagazineReload(ItemStack stack) { public boolean isMagazineReload(ItemStack stack) {
return true; return true;

View file

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

View file

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

View file

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

View file

@ -6,8 +6,6 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -137,11 +135,6 @@ public class MosinNagantItem extends GunItem implements GeoItem {
return "MOSIN NAGANT"; return "MOSIN NAGANT";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk);
}
@Override @Override
public boolean isIterativeReload(ItemStack stack) { public boolean isIterativeReload(ItemStack stack) {
return true; 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.client.tooltip.component.SentinelImageComponent;
import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.init.ModEnumExtensions; import com.atsuishio.superbwarfare.init.ModEnumExtensions;
import com.atsuishio.superbwarfare.init.ModPerks;
import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModSounds;
import com.atsuishio.superbwarfare.item.EnergyStorageItem; import com.atsuishio.superbwarfare.item.EnergyStorageItem;
import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; 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.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -172,11 +169,6 @@ public class SentinelItem extends GunItem implements GeoItem, EnergyStorageItem
return "SENTINEL"; 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 @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new SentinelImageComponent(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.GunItem;
import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.data.GunData;
import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; 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.GunsTool;
import com.atsuishio.superbwarfare.tools.NBTTool; import com.atsuishio.superbwarfare.tools.NBTTool;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -140,11 +138,6 @@ public class SvdItem extends GunItem implements GeoItem {
return "SVD"; return "SVD";
} }
@Override
public boolean canApplyPerk(Perk perk) {
return PerkHelper.SNIPER_RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
}
@Override @Override
public boolean isCustomizable(ItemStack stack) { public boolean isCustomizable(ItemStack stack) {
return true; return true;

View file

@ -140,15 +140,6 @@ public class BocekItem extends GunItem implements GeoItem {
return "Bocek"; 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 @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new BocekImageComponent(pStack)); return Optional.of(new BocekImageComponent(pStack));

View file

@ -150,16 +150,6 @@ public class TaserItem extends GunItem implements GeoItem, EnergyStorageItem {
return "TASER"; 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 @Override
public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) { public @NotNull Optional<TooltipComponent> getTooltipImage(@NotNull ItemStack pStack) {
return Optional.of(new EnergyImageComponent(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, "BypassesArmor": 0.05,
"SoundRadius": 18, "SoundRadius": 18,
"RPM": 360, "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, "BypassesArmor": 0.25,
"Magazine": 1, "Magazine": 1,
"EmptyReloadTime": 6, "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, "BypassesArmor": 0.25,
"SoundRadius": 13, "SoundRadius": 13,
"RPM": 400, "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, "BypassesArmor": 0.15,
"SoundRadius": 8, "SoundRadius": 8,
"RPM": 400, "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, "BypassesArmor": 0.15,
"SoundRadius": 8, "SoundRadius": 8,
"RPM": 1300, "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, "BypassesArmor": 0.01,
"SoundRadius": 16, "SoundRadius": 16,
"RPM": 600, "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, "EmptyReloadTime": 64,
"BypassesArmor": 0.7, "BypassesArmor": 0.7,
"SoundRadius": 20, "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, "BypassesArmor": 0.4,
"SoundRadius": 12, "SoundRadius": 12,
"RPM": 900, "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, "Damage": 700,
"ExplosionDamage": 60, "ExplosionDamage": 60,
"ExplosionRadius": 5, "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, "FinishTime": 18,
"BypassesArmor": 0.5, "BypassesArmor": 0.5,
"SoundRadius": 18, "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, "BypassesArmor": 0.2,
"SoundRadius": 10, "SoundRadius": 10,
"RPM": 400, "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, "BypassesArmor": 0.25,
"SoundRadius": 14, "SoundRadius": 14,
"RPM": 850, "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, "BypassesArmor": 0.25,
"SoundRadius": 15, "SoundRadius": 15,
"RPM": 600, "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, "Weight": 4,
"EmptyReloadTime": 64, "EmptyReloadTime": 64,
"RPM": 180, "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, "BypassesArmor": 0.05,
"SoundRadius": 16, "SoundRadius": 16,
"BoltActionTime": 11, "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, "EmptyReloadTime": 78,
"BypassesArmor": 0.6, "BypassesArmor": 0.6,
"SoundRadius": 18, "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, "BypassesArmor": 0.3,
"SoundRadius": 15, "SoundRadius": 15,
"BoltActionTime": 12, "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, "FireMode": 2,
"AmmoType": "@RifleAmmo", "AmmoType": "@RifleAmmo",
"ShootDelay": 20, "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, "BypassesArmor": 0.4,
"SoundRadius": 16, "SoundRadius": 16,
"RPM": 700, "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, "FinishTime": 18,
"BypassesArmor": 0.54, "BypassesArmor": 0.54,
"SoundRadius": 18, "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, "BypassesArmor": 0.15,
"SoundRadius": 8, "SoundRadius": 8,
"RPM": 400, "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, "EmptyReloadTime": 112,
"BypassesArmor": 1, "BypassesArmor": 1,
"SoundRadius": 22, "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, "BypassesArmor": 0.28,
"SoundRadius": 13, "SoundRadius": 13,
"RPM": 650, "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, "Weight": 7,
"EmptyReloadTime": 103, "EmptyReloadTime": 103,
"RPM": 120, "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, "BypassesArmor": 0.23,
"SoundRadius": 14, "SoundRadius": 14,
"RPM": 600, "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, "FinishTime": 19,
"SoundRadius": 8, "SoundRadius": 8,
"RPM": 300, "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, "EmptyReloadTime": 89,
"BypassesArmor": 0.8, "BypassesArmor": 0.8,
"SoundRadius": 20, "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, "BypassesArmor": 0.23,
"SoundRadius": 16, "SoundRadius": 16,
"RPM": 400, "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, "BypassesArmor": 0.45,
"SoundRadius": 17, "SoundRadius": 17,
"RPM": 300, "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, "Weight": 1,
"EmptyReloadTime": 58, "EmptyReloadTime": 58,
"RPM": 240, "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, "SoundRadius": 10,
"RPM": 240, "RPM": 240,
"AmmoType": "@RifleAmmo", "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, "BypassesArmor": 0.15,
"SoundRadius": 11, "SoundRadius": 11,
"RPM": 1200, "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"
]
} }