QBZ95添加部分配件
This commit is contained in:
parent
5557fb3136
commit
af597faa24
18 changed files with 10525 additions and 5554 deletions
|
@ -4,4 +4,4 @@ org.gradle.daemon=false
|
||||||
mc_version=1.20.1
|
mc_version=1.20.1
|
||||||
jei_version=15.2.0.27
|
jei_version=15.2.0.27
|
||||||
cloth_config_version=11.1.106
|
cloth_config_version=11.1.106
|
||||||
mod_version=0.2.1
|
mod_version=0.2.2
|
|
@ -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
|
cf8d49a8d2872286d1a9c3d4a7e1c2b7690db0b8 data/forge/tags/items/dusts.json
|
||||||
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json
|
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json
|
||||||
295ddf906b7133a0558d03e9a60eea18281fe430 data/forge/tags/items/dusts/iron.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
|
3743c2790deca7e779d3e4b82f092de39b446988 data/forge/tags/items/storage_blocks/steel.json
|
||||||
144e54d908121dee498b2ebba3b24b09fd6f18d9 data/forge/tags/items/storage_blocks/tungsten.json
|
144e54d908121dee498b2ebba3b24b09fd6f18d9 data/forge/tags/items/storage_blocks/tungsten.json
|
||||||
4d4dfd25a2a749e000e1bb742c2f984d4e094e5d data/superbwarfare/tags/items/cannot_reload.json
|
4d4dfd25a2a749e000e1bb742c2f984d4e094e5d data/superbwarfare/tags/items/cannot_reload.json
|
||||||
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_barrel.json
|
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_barrel.json
|
||||||
7b922f49ed3e2e2489a998b76f31ba0369e2cee0 data/superbwarfare/tags/items/can_apply_grip.json
|
ed9c76fb81272f65c6b7976d5aada8781f67f3c1 data/superbwarfare/tags/items/can_apply_grip.json
|
||||||
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_magazine.json
|
d1fe14a7d67387be04db7b0b2de6eba51721de27 data/superbwarfare/tags/items/can_apply_magazine.json
|
||||||
4076a1feed311ef566e890e64f70c1c79a8feb49 data/superbwarfare/tags/items/can_apply_scope.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_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
|
dff9ff6d6637951191906cb55a210ae5a3ad5cd6 data/superbwarfare/tags/items/extra_one_ammo.json
|
||||||
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
|
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
|
||||||
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json
|
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
"superbwarfare:ak_12",
|
"superbwarfare:ak_12",
|
||||||
"superbwarfare:ak_47",
|
"superbwarfare:ak_47",
|
||||||
"superbwarfare:m_4",
|
"superbwarfare:m_4",
|
||||||
"superbwarfare:hk_416"
|
"superbwarfare:hk_416",
|
||||||
|
"superbwarfare:qbz_95"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
"values": [
|
"values": [
|
||||||
"superbwarfare:ak_12",
|
"superbwarfare:ak_12",
|
||||||
"superbwarfare:m_4",
|
"superbwarfare:m_4",
|
||||||
"superbwarfare:hk_416"
|
"superbwarfare:hk_416",
|
||||||
|
"superbwarfare:qbz_95"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
"superbwarfare:ak_12",
|
"superbwarfare:ak_12",
|
||||||
"superbwarfare:ak_47",
|
"superbwarfare:ak_47",
|
||||||
"superbwarfare:m_4",
|
"superbwarfare:m_4",
|
||||||
"superbwarfare:hk_416"
|
"superbwarfare:hk_416",
|
||||||
|
"superbwarfare:qbz_95"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
"superbwarfare:ak_12",
|
"superbwarfare:ak_12",
|
||||||
"superbwarfare:ak_47",
|
"superbwarfare:ak_47",
|
||||||
"superbwarfare:m_4",
|
"superbwarfare:m_4",
|
||||||
"superbwarfare:hk_416"
|
"superbwarfare:hk_416",
|
||||||
|
"superbwarfare:qbz_95"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
"superbwarfare:ak_12",
|
"superbwarfare:ak_12",
|
||||||
"superbwarfare:ak_47",
|
"superbwarfare:ak_47",
|
||||||
"superbwarfare:m_4",
|
"superbwarfare:m_4",
|
||||||
"superbwarfare:hk_416"
|
"superbwarfare:hk_416",
|
||||||
|
"superbwarfare:qbz_95"
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -5,6 +5,7 @@ import net.mcreator.superbwarfare.client.AnimationHelper;
|
||||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||||
import net.mcreator.superbwarfare.init.ModTags;
|
import net.mcreator.superbwarfare.init.ModTags;
|
||||||
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
|
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
|
||||||
|
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
@ -16,6 +17,10 @@ import software.bernie.geckolib.model.GeoModel;
|
||||||
|
|
||||||
public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
|
public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
|
||||||
|
|
||||||
|
public static float fireRotY = 0f;
|
||||||
|
public static float fireRotZ = 0f;
|
||||||
|
public static float rotXBipod = 0f;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getAnimationResource(Qbz95Item animatable) {
|
public ResourceLocation getAnimationResource(Qbz95Item animatable) {
|
||||||
return ModUtils.loc("animations/qbz95.animation.json");
|
return ModUtils.loc("animations/qbz95.animation.json");
|
||||||
|
@ -34,8 +39,13 @@ public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
|
||||||
@Override
|
@Override
|
||||||
public void setCustomAnimations(Qbz95Item animatable, long instanceId, AnimationState animationState) {
|
public void setCustomAnimations(Qbz95Item animatable, long instanceId, AnimationState animationState) {
|
||||||
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
||||||
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
|
||||||
CoreGeoBone bolt = getAnimationProcessor().getBone("bolt2");
|
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;
|
Player player = Minecraft.getInstance().player;
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
@ -60,30 +70,74 @@ public class Qbz95ItemModel extends GeoModel<Qbz95Item> {
|
||||||
double fp = ClientEventHandler.firePos;
|
double fp = ClientEventHandler.firePos;
|
||||||
double fr = ClientEventHandler.fireRot;
|
double fr = ClientEventHandler.fireRot;
|
||||||
|
|
||||||
gun.setPosX(3.73f * (float) zp);
|
int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
|
||||||
gun.setPosY(-0.5f * (float) zp - (float) (0.2f * zpz));
|
|
||||||
gun.setPosZ(13f * (float) zp + (float) (0.3f * zpz));
|
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.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));
|
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 3.1));
|
||||||
|
|
||||||
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
|
CoreGeoBone shen;
|
||||||
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
|
if (zt < 0.5) {
|
||||||
shen.setPosZ((float) (0.275 * fp + 0.34f * fr + 0.65 * fpz));
|
shen = getAnimationProcessor().getBone("fireRootNormal");
|
||||||
shen.setRotX((float) (0.01f * fp + 0.05f * fr + 0.01f * fpz));
|
} else {
|
||||||
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
|
shen = switch (type) {
|
||||||
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
|
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)));
|
fireRotY = (float) Mth.lerp(0.3f * times, fireRotY, 0.2f * ClientEventHandler.recoilHorizon * fpz);
|
||||||
shen.setPosY((float) (shen.getPosY() * (-1 + 0.4 * zt)));
|
fireRotZ = (float) Mth.lerp(2f * times, fireRotZ, (0.4f + 0.5 * fpz) * ClientEventHandler.recoilHorizon);
|
||||||
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.6 * zt)));
|
|
||||||
shen.setRotX((float) (shen.getRotX() * (1 - 0.9 * zt)));
|
shen.setPosX(-0.4f * (float) (ClientEventHandler.recoilHorizon * (0.5 + 0.4 * ClientEventHandler.fireSpread)));
|
||||||
shen.setRotY((float) (shen.getRotY() * (1 - 0.9 * zt)));
|
shen.setPosY((float) (0.15f * fp + 0.18f * fr));
|
||||||
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.9 * zt)));
|
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);
|
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")) {
|
if (stack.getOrCreateTag().getBoolean("HoldOpen")) {
|
||||||
bolt.setPosZ(5f);
|
bolt.setPosZ(5f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,12 @@ package net.mcreator.superbwarfare.client.renderer.item;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
import net.mcreator.superbwarfare.client.AnimationHelper;
|
import net.mcreator.superbwarfare.client.AnimationHelper;
|
||||||
|
import net.mcreator.superbwarfare.client.ItemModelHelper;
|
||||||
import net.mcreator.superbwarfare.client.layer.Qbz95Layer;
|
import net.mcreator.superbwarfare.client.layer.Qbz95Layer;
|
||||||
import net.mcreator.superbwarfare.client.model.item.Qbz95ItemModel;
|
import net.mcreator.superbwarfare.client.model.item.Qbz95ItemModel;
|
||||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||||
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
|
import net.mcreator.superbwarfare.item.gun.rifle.Qbz95Item;
|
||||||
|
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.model.PlayerModel;
|
import net.minecraft.client.model.PlayerModel;
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
|
@ -84,20 +86,55 @@ public class Qbz95ItemRenderer extends GeoItemRenderer<Qbz95Item> {
|
||||||
if (player != null) {
|
if (player != null) {
|
||||||
ItemStack itemStack = player.getMainHandItem();
|
ItemStack itemStack = player.getMainHandItem();
|
||||||
|
|
||||||
if (name.equals("holo")) {
|
if (name.equals("Cross1")) {
|
||||||
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden") || GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS);
|
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 (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);
|
bone.setHidden(true);
|
||||||
} else {
|
} else {
|
||||||
bone.setHidden(false);
|
bone.setHidden(false);
|
||||||
bone.setScaleX((float) (0.75 + 0.5 * (Math.random() - 0.5)));
|
bone.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||||
bone.setScaleY((float) (0.75 + 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)));
|
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.transformType.firstPerson() && renderingArms) {
|
if (this.transformType.firstPerson() && renderingArms) {
|
||||||
|
|
|
@ -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.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());
|
this.tag(ModTags.Items.CAN_APPLY_STOCK).add(ModItems.AK_12.get(), ModItems.AK_47.get(), ModItems.M_4.get(), ModItems.HK_416.get());
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package net.mcreator.superbwarfare.item.gun.rifle;
|
package net.mcreator.superbwarfare.item.gun.rifle;
|
||||||
|
|
||||||
import net.mcreator.superbwarfare.ModUtils;
|
import net.mcreator.superbwarfare.ModUtils;
|
||||||
|
import net.mcreator.superbwarfare.client.PoseTool;
|
||||||
import net.mcreator.superbwarfare.client.renderer.item.Qbz95ItemRenderer;
|
import net.mcreator.superbwarfare.client.renderer.item.Qbz95ItemRenderer;
|
||||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||||
import net.mcreator.superbwarfare.init.ModItems;
|
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.init.ModTags;
|
||||||
import net.mcreator.superbwarfare.item.AnimatedItem;
|
import net.mcreator.superbwarfare.item.AnimatedItem;
|
||||||
import net.mcreator.superbwarfare.item.gun.GunItem;
|
import net.mcreator.superbwarfare.item.gun.GunItem;
|
||||||
|
import net.mcreator.superbwarfare.network.ModVariables;
|
||||||
import net.mcreator.superbwarfare.perk.Perk;
|
import net.mcreator.superbwarfare.perk.Perk;
|
||||||
import net.mcreator.superbwarfare.perk.PerkHelper;
|
import net.mcreator.superbwarfare.perk.PerkHelper;
|
||||||
import net.mcreator.superbwarfare.tools.GunsTool;
|
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||||
import net.mcreator.superbwarfare.client.PoseTool;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.model.HumanoidModel;
|
import net.minecraft.client.model.HumanoidModel;
|
||||||
import net.minecraft.client.player.LocalPlayer;
|
import net.minecraft.client.player.LocalPlayer;
|
||||||
|
@ -20,10 +21,12 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.item.ItemDisplayContext;
|
import net.minecraft.world.item.ItemDisplayContext;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Rarity;
|
import net.minecraft.world.item.Rarity;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
import software.bernie.geckolib.animatable.GeoItem;
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||||
|
@ -73,29 +76,81 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
if (!stack.is(ModTags.Items.GUN)) return PlayState.STOP;
|
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 (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_empty"));
|
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 (stack.getOrCreateTag().getBoolean("is_normal_reloading")) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.qbz95.reload_normal"));
|
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.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0 && ClientEventHandler.drawTime < 0.01) {
|
||||||
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
|
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.run_fast"));
|
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.run_fast"));
|
||||||
} else {
|
} else {
|
||||||
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.run"));
|
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"));
|
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.qbz95.idle"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
|
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);
|
data.add(idleController);
|
||||||
|
var editController = new AnimationController<>(this, "editController", 1, this::editPredicate);
|
||||||
|
data.add(editController);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -103,6 +158,34 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
||||||
return this.cache;
|
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
|
@Override
|
||||||
public Set<SoundEvent> getReloadSound() {
|
public Set<SoundEvent> getReloadSound() {
|
||||||
return Set.of(ModSounds.QBZ_95_RELOAD_EMPTY.get(), ModSounds.QBZ_95_RELOAD_NORMAL.get());
|
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
File diff suppressed because it is too large
Load diff
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 |
|
@ -1,4 +1,6 @@
|
||||||
{
|
{
|
||||||
|
"MinZoom": 1.25,
|
||||||
|
"MaxZoom": 6,
|
||||||
"spread": 3.7,
|
"spread": 3.7,
|
||||||
"recoil_x": 0.0013,
|
"recoil_x": 0.0013,
|
||||||
"recoil_y": 0.009,
|
"recoil_y": 0.009,
|
||||||
|
|
Loading…
Add table
Reference in a new issue