QBZ95添加部分配件

This commit is contained in:
Atsuihsio 2024-11-10 21:26:58 +08:00
parent 5557fb3136
commit af597faa24
18 changed files with 10525 additions and 5554 deletions

View file

@ -4,4 +4,4 @@ org.gradle.daemon=false
mc_version=1.20.1
jei_version=15.2.0.27
cloth_config_version=11.1.106
mod_version=0.2.1
mod_version=0.2.2

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-11-08T20:57:48.1853892 Tags for minecraft:item mod id superbwarfare
// 1.20.1 2024-11-10T16:23:58.1652762 Tags for minecraft:item mod id superbwarfare
cf8d49a8d2872286d1a9c3d4a7e1c2b7690db0b8 data/forge/tags/items/dusts.json
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json
295ddf906b7133a0558d03e9a60eea18281fe430 data/forge/tags/items/dusts/iron.json
@ -27,12 +27,12 @@ af6fd64b4a685c353f243763db268f7b2304c009 data/forge/tags/items/storage_blocks/le
3743c2790deca7e779d3e4b82f092de39b446988 data/forge/tags/items/storage_blocks/steel.json
144e54d908121dee498b2ebba3b24b09fd6f18d9 data/forge/tags/items/storage_blocks/tungsten.json
4d4dfd25a2a749e000e1bb742c2f984d4e094e5d data/superbwarfare/tags/items/cannot_reload.json
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_barrel.json
7b922f49ed3e2e2489a998b76f31ba0369e2cee0 data/superbwarfare/tags/items/can_apply_grip.json
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_magazine.json
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_scope.json
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_barrel.json
ed9c76fb81272f65c6b7976d5aada8781f67f3c1 data/superbwarfare/tags/items/can_apply_grip.json
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_magazine.json
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_scope.json
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_stock.json
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_custom_gun.json
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_custom_gun.json
dff9ff6d6637951191906cb55a210ae5a3ad5cd6 data/superbwarfare/tags/items/extra_one_ammo.json
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json

View file

@ -3,6 +3,7 @@
"superbwarfare:ak_12",
"superbwarfare:ak_47",
"superbwarfare:m_4",
"superbwarfare:hk_416"
"superbwarfare:hk_416",
"superbwarfare:qbz_95"
]
}

View file

@ -2,6 +2,7 @@
"values": [
"superbwarfare:ak_12",
"superbwarfare:m_4",
"superbwarfare:hk_416"
"superbwarfare:hk_416",
"superbwarfare:qbz_95"
]
}

View file

@ -3,6 +3,7 @@
"superbwarfare:ak_12",
"superbwarfare:ak_47",
"superbwarfare:m_4",
"superbwarfare:hk_416"
"superbwarfare:hk_416",
"superbwarfare:qbz_95"
]
}

View file

@ -3,6 +3,7 @@
"superbwarfare:ak_12",
"superbwarfare:ak_47",
"superbwarfare:m_4",
"superbwarfare:hk_416"
"superbwarfare:hk_416",
"superbwarfare:qbz_95"
]
}

View file

@ -3,6 +3,7 @@
"superbwarfare:ak_12",
"superbwarfare:ak_47",
"superbwarfare:m_4",
"superbwarfare:hk_416"
"superbwarfare:hk_416",
"superbwarfare:qbz_95"
]
}

View file

@ -5,6 +5,7 @@ import net.mcreator.superbwarfare.client.AnimationHelper;
import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
@ -16,6 +17,10 @@ import software.bernie.geckolib.model.GeoModel;
public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
public static float fireRotY = 0f;
public static float fireRotZ = 0f;
public static float rotXBipod = 0f;
@Override
public ResourceLocation getAnimationResource(Qbz95Item animatable) {
return ModUtils.loc("animations/qbz95.animation.json");
@ -34,8 +39,13 @@ public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
@Override
public void setCustomAnimations(Qbz95Item animatable, long instanceId, AnimationState animationState) {
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
CoreGeoBone bolt = getAnimationProcessor().getBone("bolt2");
CoreGeoBone scope = getAnimationProcessor().getBone("Scope1");
// CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2");
// CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3");
CoreGeoBone cross1 = getAnimationProcessor().getBone("Cross1");
// CoreGeoBone cross2 = getAnimationProcessor().getBone("Cross2");
// CoreGeoBone cross3 = getAnimationProcessor().getBone("Cross3");
Player player = Minecraft.getInstance().player;
if (player == null) return;
@ -60,30 +70,74 @@ public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
double fp = ClientEventHandler.firePos;
double fr = ClientEventHandler.fireRot;
gun.setPosX(3.73f * (float) zp);
gun.setPosY(-0.5f * (float) zp - (float) (0.2f * zpz));
gun.setPosZ(13f * (float) zp + (float) (0.3f * zpz));
int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
float posY = switch (type) {
case 0 -> 0.535f;
case 1 -> -0.155f;
case 2 -> 0.5001f;
case 3 -> 0.5002f;
default -> 0f;
};
float posZ = switch (type) {
case 0 -> 9f;
case 1 -> 8.9f;
case 2 -> 13.01f;
case 3 -> 13.00f;
default -> 0f;
};
float scaleZ = switch (type) {
case 0 -> 0.5f;
case 1 -> 0.51f;
case 2 -> 0.692f;
case 3 -> 0.691f;
default -> 0f;
};
gun.setPosX(3.71f * (float) zp);
gun.setPosY(posY * (float) zp - (float) (0.2f * zpz));
gun.setPosZ(posZ * (float) zp + (float) (0.3f * zpz));
gun.setRotZ((float) (0.05f * zpz));
gun.setScaleZ(1f - (0.7f * (float) zp));
gun.setScaleZ(1f - (scaleZ * (float) zp));
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 3.1));
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz));
shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz));
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
CoreGeoBone shen;
if (zt < 0.5) {
shen = getAnimationProcessor().getBone("fireRootNormal");
} else {
shen = switch (type) {
case 0 -> getAnimationProcessor().getBone("fireRoot0");
case 1 -> getAnimationProcessor().getBone("fireRoot1");
case 2 -> getAnimationProcessor().getBone("fireRoot2");
case 3 -> getAnimationProcessor().getBone("fireRoot3");
default -> getAnimationProcessor().getBone("fireRootNormal");
};
}
shen.setPosX((float) (shen.getPosX() * (1 - 0.5 * zt)));
shen.setPosY((float) (shen.getPosY() * (-1 + 0.4 * zt)));
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt)));
shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt)));
shen.setRotY((float) (shen.getRotY() * (1 - 0.9 * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt)));
fireRotY = (float) Mth.lerp(0.3f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz);
fireRotZ = (float) Mth.lerp(2f * times, fireRotZ, (0.4f + 0.5 * fpz) * ClientEventHandler.recoilHorizon);
shen.setPosX(-0.4f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread)));
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
shen.setPosZ((float) (0.375 * fp + 0.44f * fr + 0.75 * fpz));
shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz));
shen.setRotY(fireRotY);
shen.setRotZ(fireRotZ);
shen.setPosX((float) (shen.getPosX() * (1 - 0.1 * zt)));
shen.setPosY((float) (shen.getPosY() * (-1 + 0.8 * zt)));
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.1 * zt)));
shen.setRotX((float) (shen.getRotX() * (1 - (type == 3 ? 0.96 : type == 1 ? 0.8 : 0.9) * zt)));
shen.setRotY((float) (shen.getRotY() * (1 - (type == 3 ? 0.95 : 0.9) * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt)));
bolt.setPosZ(5f * (float) fp);
cross1.setPosY(-0.75f * (float) fpz);
// cross2.setPosY(-0.7f * (float) fpz);
// cross3.setPosY(-0.2f * (float) fpz);
if (stack.getOrCreateTag().getBoolean("HoldOpen")) {
bolt.setPosZ(5f);
}

View file

@ -3,10 +3,12 @@ package net.mcreator.superbwarfare.client.renderer.item;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.superbwarfare.client.AnimationHelper;
import net.mcreator.superbwarfare.client.ItemModelHelper;
import net.mcreator.superbwarfare.client.layer.Qbz95Layer;
import net.mcreator.superbwarfare.client.model.item.Qbz95ItemModel;
import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.player.AbstractClientPlayer;
@ -84,20 +86,55 @@ public class Qbz95ItemRenderer extends GeoItemRenderer<Qbz95Item> {
if (player != null) {
ItemStack itemStack = player.getMainHandItem();
if (name.equals("holo")) {
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden") || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS);
if (name.equals("Cross1")) {
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|| GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 1);
}
if (name.equals("tiba")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 0);
}
if (name.equals("longbow")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 0);
}
// if (name.equals("Cross2")) {
// bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
// || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
// || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 2);
// }
//
// if (name.equals("Cross3")) {
// bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
// || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
// || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 3);
// }
// if (GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 2
// && (name.equals("hidden"))) {
// bone.setHidden(!itemStack.getOrCreateTag().getBoolean("HoloHidden") && GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) == GLFW.GLFW_PRESS);
// }
//
// if (GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 3
// && (name.equals("jing") || name.equals("Barrel") || name.equals("yugu") || name.equals("qiangguan"))) {
// bone.setHidden(!itemStack.getOrCreateTag().getBoolean("HoloHidden") && GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) == GLFW.GLFW_PRESS);
// }
if (name.equals("flare")) {
if (ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5) {
if (ClientEventHandler.firePosTimer == 0 || ClientEventHandler.firePosTimer > 0.5 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 2) {
bone.setHidden(true);
} else {
bone.setHidden(false);
bone.setScaleX((float) (0.75 + 0.5 * (Math.random() - 0.5)));
bone.setScaleY((float) (0.75 + 0.5 * (Math.random() - 0.5)));
bone.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
bone.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5)));
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
}
}
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
}
if (this.transformType.firstPerson() && renderingArms) {

View file

@ -116,15 +116,15 @@ public class ModItemTagProvider extends ItemTagsProvider {
this.tag(ModTags.Items.MILITARY_ARMOR).add(ModItems.RU_CHEST_6B43.get(), ModItems.US_CHEST_IOTV.get());
this.tag(ModTags.Items.CAN_CUSTOM_GUN).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
this.tag(ModTags.Items.CAN_CUSTOM_GUN).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.CAN_APPLY_BARREL).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
this.tag(ModTags.Items.CAN_APPLY_BARREL).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.CAN_APPLY_GRIP).add(ModItems.AK_12.get(), ModItems.M_4.get(), ModItems.HK_416.get());
this.tag(ModTags.Items.CAN_APPLY_GRIP).add(ModItems.AK_12.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.CAN_APPLY_SCOPE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
this.tag(ModTags.Items.CAN_APPLY_SCOPE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.CAN_APPLY_MAGAZINE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
this.tag(ModTags.Items.CAN_APPLY_MAGAZINE).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.CAN_APPLY_STOCK).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());

View file

@ -1,6 +1,7 @@
package net.mcreator.superbwarfare.item.gun.rifle;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.client.PoseTool;
import net.mcreator.superbwarfare.client.renderer.item.Qbz95ItemRenderer;
import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.init.ModItems;
@ -8,10 +9,10 @@ import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.AnimatedItem;
import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.network.ModVariables;
import net.mcreator.superbwarfare.perk.Perk;
import net.mcreator.superbwarfare.perk.PerkHelper;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.mcreator.superbwarfare.client.PoseTool;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.player.LocalPlayer;
@ -20,10 +21,12 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
@ -73,29 +76,81 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
boolean drum = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.MAGAZINE) == 2;
boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 2;
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
if (drum) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_empty_drum_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_empty_drum"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_empty_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_empty"));
}
}
}
if (stack.getOrCreateTag().getBoolean("is_normal_reloading")) {
if (drum) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_normal_drum_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_normal_drum"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_normal_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_normal"));
}
}
}
if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.run_fast"));
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.run_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.run"));
}
}
}
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.idle_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.idle"));
}
}
private PlayState editPredicate(AnimationState<Qbz95Item> event) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 1 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) == 2;
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.edit"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.idle"));
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var idleController = new AnimationController<>(this, "idleController", 4, this::idlePredicate);
var idleController = new AnimationController<>(this, "idleController", 3, this::idlePredicate);
data.add(idleController);
var editController = new AnimationController<>(this, "editController", 1, this::editPredicate);
data.add(editController);
}
@Override
@ -103,6 +158,34 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
return this.cache;
}
@Override
public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) {
super.inventoryTick(stack, world, entity, slot, selected);
int scopeType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
int barrelType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.BARREL);
int magType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.MAGAZINE);
int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
int customMag = switch (magType) {
case 1 -> 15;
case 2 -> 30;
default -> 0;
};
double customZoom = switch (scopeType) {
case 0, 1 -> 0;
case 2 -> 1.75;
default -> stack.getOrCreateTag().getDouble("CustomZoom");
};
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
stack.getOrCreateTag().putDouble("CustomZoom", customZoom);
stack.getOrCreateTag().putInt("customMag", customMag);
}
@Override
public Set<SoundEvent> getReloadSound() {
return Set.of(ModSounds.QBZ_95_RELOAD_EMPTY.get(), ModSounds.QBZ_95_RELOAD_NORMAL.get());

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -1,4 +1,6 @@
{
"MinZoom": 1.25,
"MaxZoom": 6,
"spread": 3.7,
"recoil_x": 0.0013,
"recoil_y": 0.009,