添加夕雾花左轮的配件适配

This commit is contained in:
Atsuihsio 2024-11-24 04:54:40 +08:00
parent 24287b7328
commit 123e7bf075
30 changed files with 16402 additions and 1628 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-11-17T15:53:56.1798981 Tags for minecraft:item mod id superbwarfare // 1.20.1 2024-11-23T23:05:38.8366049 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
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_barrel.json 61eb85190c6bd4373fe3f033dfdf4659a1c70744 data/superbwarfare/tags/items/can_apply_barrel.json
25f2401d6f8c466b44274bcb6eddad6fa6f6d94f data/superbwarfare/tags/items/can_apply_grip.json d2176acdd2d0337c17bd99b71f6afc812d21afdd data/superbwarfare/tags/items/can_apply_grip.json
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_magazine.json 785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_magazine.json
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_apply_scope.json 61eb85190c6bd4373fe3f033dfdf4659a1c70744 data/superbwarfare/tags/items/can_apply_scope.json
92e3d5c30f3d6893d64dddc24d748250a6760ba4 data/superbwarfare/tags/items/can_apply_stock.json d6eaee42f107abb373a5c30759232b218a25635d data/superbwarfare/tags/items/can_apply_stock.json
785859aa510afdd9153a306eda6acfac71eefa9f data/superbwarfare/tags/items/can_custom_gun.json 61eb85190c6bd4373fe3f033dfdf4659a1c70744 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
@ -48,7 +48,7 @@ aaa533157491a82b8e23b2914deef67c4078cbed data/superbwarfare/tags/items/rifle.jso
acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/shotgun.json acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/shotgun.json
4aca0fa3f8b9f2a4920041e35e46dae7e93d5482 data/superbwarfare/tags/items/smg.json 4aca0fa3f8b9f2a4920041e35e46dae7e93d5482 data/superbwarfare/tags/items/smg.json
13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/sniper_rifle.json 13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/sniper_rifle.json
89139144b7557cfd8fdeca93b0af28e69bb18d76 data/superbwarfare/tags/items/use_handgun_ammo.json 202756a5a9085f5883ca34424a79c1b7831101a9 data/superbwarfare/tags/items/use_handgun_ammo.json
cb6859a204e1601f93895960caa5cefda0b78b08 data/superbwarfare/tags/items/use_rifle_ammo.json 2899774c6325135847a85b09121ce25587aa275e data/superbwarfare/tags/items/use_rifle_ammo.json
acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/use_shotgun_ammo.json acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/use_shotgun_ammo.json
13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/use_sniper_ammo.json 13a23684e04832bea5dfbd2c0a9d9ed52dcb3422 data/superbwarfare/tags/items/use_sniper_ammo.json

View file

@ -5,6 +5,7 @@
"superbwarfare:m_4", "superbwarfare:m_4",
"superbwarfare:hk_416", "superbwarfare:hk_416",
"superbwarfare:qbz_95", "superbwarfare:qbz_95",
"superbwarfare:vector" "superbwarfare:vector",
"superbwarfare:trachelium"
] ]
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:hk_416", "superbwarfare:hk_416",
"superbwarfare:qbz_95", "superbwarfare:qbz_95",
"superbwarfare:ak_47", "superbwarfare:ak_47",
"superbwarfare:vector" "superbwarfare:vector",
"superbwarfare:trachelium"
] ]
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:m_4", "superbwarfare:m_4",
"superbwarfare:hk_416", "superbwarfare:hk_416",
"superbwarfare:qbz_95", "superbwarfare:qbz_95",
"superbwarfare:vector" "superbwarfare:vector",
"superbwarfare:trachelium"
] ]
} }

View file

@ -4,6 +4,7 @@
"superbwarfare:ak_47", "superbwarfare:ak_47",
"superbwarfare:m_4", "superbwarfare:m_4",
"superbwarfare:hk_416", "superbwarfare:hk_416",
"superbwarfare:vector" "superbwarfare:vector",
"superbwarfare:trachelium"
] ]
} }

View file

@ -5,6 +5,7 @@
"superbwarfare:m_4", "superbwarfare:m_4",
"superbwarfare:hk_416", "superbwarfare:hk_416",
"superbwarfare:qbz_95", "superbwarfare:qbz_95",
"superbwarfare:vector" "superbwarfare:vector",
"superbwarfare:trachelium"
] ]
} }

View file

@ -1,6 +1,5 @@
{ {
"values": [ "values": [
"superbwarfare:trachelium",
"superbwarfare:glock_17", "superbwarfare:glock_17",
"superbwarfare:glock_18", "superbwarfare:glock_18",
"superbwarfare:m_1911", "superbwarfare:m_1911",

View file

@ -11,6 +11,7 @@
"superbwarfare:ak_47", "superbwarfare:ak_47",
"superbwarfare:ak_12", "superbwarfare:ak_12",
"superbwarfare:qbz_95", "superbwarfare:qbz_95",
"superbwarfare:rpk" "superbwarfare:rpk",
"superbwarfare:trachelium"
] ]
} }

View file

@ -116,7 +116,8 @@ public class ClickHandler {
if (player.getMainHandItem().is(ModTags.Items.GUN) if (player.getMainHandItem().is(ModTags.Items.GUN)
|| stack.is(ModItems.MONITOR.get()) || stack.is(ModItems.MONITOR.get())
|| (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem)) { || (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem)
|| (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) {
if (button == ModKeyMappings.FIRE.getKey().getValue()) { if (button == ModKeyMappings.FIRE.getKey().getValue()) {
handleWeaponFirePress(player, stack); handleWeaponFirePress(player, stack);
} }
@ -236,7 +237,8 @@ public class ClickHandler {
if (player.getMainHandItem().is(ModTags.Items.GUN) if (player.getMainHandItem().is(ModTags.Items.GUN)
|| stack.is(ModItems.MONITOR.get()) || stack.is(ModItems.MONITOR.get())
|| (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem)) { || (player.getVehicle() != null && player.getVehicle() instanceof ICannonEntity && player.getMainHandItem().getItem() instanceof CannonShellItem)
|| (stack.is(Items.SPYGLASS) && player.isScoping() && player.getOffhandItem().is(ModItems.FIRING_PARAMETERS.get()))) {
if (key == ModKeyMappings.FIRE.getKey().getValue()) { if (key == ModKeyMappings.FIRE.getKey().getValue()) {
handleWeaponFirePress(player, stack); handleWeaponFirePress(player, stack);
} }

View file

@ -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.handgun.Trachelium; import net.mcreator.superbwarfare.item.gun.handgun.Trachelium;
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;
@ -14,8 +15,18 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState; import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel; import software.bernie.geckolib.model.GeoModel;
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
public class TracheliumItemModel extends GeoModel<Trachelium> { public class TracheliumItemModel extends GeoModel<Trachelium> {
public static float posYAlt = -0.83f;
public static float scaleZAlt = 0.8f;
public static float posZAlt = 13.7f;
public static float fireRotY = 0f;
public static float fireRotZ = 0f;
public static float rotXBipod = 0f;
@Override @Override
public ResourceLocation getAnimationResource(Trachelium animatable) { public ResourceLocation getAnimationResource(Trachelium animatable) {
return ModUtils.loc("animations/trachelium.animation.json"); return ModUtils.loc("animations/trachelium.animation.json");
@ -36,6 +47,13 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone hammer = getAnimationProcessor().getBone("jichui"); CoreGeoBone hammer = getAnimationProcessor().getBone("jichui");
CoreGeoBone lun = getAnimationProcessor().getBone("lun"); CoreGeoBone lun = getAnimationProcessor().getBone("lun");
CoreGeoBone barrel1 = getAnimationProcessor().getBone("Barrel1");
CoreGeoBone barrel2 = getAnimationProcessor().getBone("Barrel2");
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
CoreGeoBone camera = getAnimationProcessor().getBone("camera");
CoreGeoBone main = getAnimationProcessor().getBone("0");
CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2");
// CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3");
Player player = Minecraft.getInstance().player; Player player = Minecraft.getInstance().player;
if (player == null) return; if (player == null) return;
@ -60,38 +78,79 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
double fp = ClientEventHandler.firePos; double fp = ClientEventHandler.firePos;
double fr = ClientEventHandler.fireRot; double fr = ClientEventHandler.fireRot;
gun.setPosX(1.26f * (float) zp); int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
gun.setPosY(1.1f * (float) zp - (float) (0.6f * zpz)); int barrelType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.BARREL);
gun.setPosZ((float) zp + (float) (0.2f * zpz)); int scopeType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
gun.setScaleZ(1f - (0.2f * (float) zp)); int gripType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP);
posYAlt = Mth.lerp(times, posYAlt, stack.getOrCreateTag().getBoolean("ScopeAlt") ? -1.98f : -0.83f);
scaleZAlt = Mth.lerp(times, scaleZAlt, stack.getOrCreateTag().getBoolean("ScopeAlt") ? 0.4f : 0.8f);
posZAlt = Mth.lerp(times, posZAlt, stack.getOrCreateTag().getBoolean("ScopeAlt") ? 7.5f : 13.7f);
float posY = switch (scopeType) {
case 0 -> 1.1f;
case 1 -> -0.18f;
case 2 -> posYAlt;
case 3 -> 1.1f;
default -> 0f;
};
float scaleZ = switch (scopeType) {
case 0 -> 0.2f;
case 1 -> 0.6f;
case 2 -> scaleZAlt;
case 3 -> 0.2f;
default -> 0f;
};
float posZ = switch (scopeType) {
case 0 -> 1f;
case 1 -> 6f;
case 2 -> posZAlt;
case 3 -> 1f;
default -> 0f;
};
float posZAlt = stockType == 2 ? 1 : 0;
gun.setPosX((float) (3.48f * zp));
gun.setPosY((float) (posY * zp - 0.2f * zpz));
gun.setPosZ((float)(posZ * zp + 0.2f * zpz) + posZAlt);
gun.setScaleZ((float) (1f - scaleZ * zp));
scope2.setScaleZ(1f - (0.7f * (float) zp));
CoreGeoBone shen; CoreGeoBone shen;
if (zt < 0.5) { if (zt < 0.5) {
shen = getAnimationProcessor().getBone("fireRootNormal"); shen = getAnimationProcessor().getBone("fireRootNormal");
} else { } else {
shen = getAnimationProcessor().getBone("fireRoot0"); shen = switch (scopeType) {
// shen = switch (type) { case 0 -> getAnimationProcessor().getBone("fireRoot0");
// case 0 -> getAnimationProcessor().getBone("fireRoot0"); case 1 -> getAnimationProcessor().getBone("fireRoot1");
// case 1 -> getAnimationProcessor().getBone("fireRoot1"); case 2 -> getAnimationProcessor().getBone("fireRoot2");
// case 2 -> getAnimationProcessor().getBone("fireRoot2"); case 3 -> getAnimationProcessor().getBone("fireRoot3");
// default -> getAnimationProcessor().getBone("fireRootNormal"); default -> getAnimationProcessor().getBone("fireRootNormal");
// }; };
} }
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((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp)); shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
shen.setPosY((float) (0.2f * fp + 0.24f * fr)); shen.setPosY((float) (0.2f * fp + 0.24f * fr));
shen.setPosZ((float) (1.225 * fp + 0.1f * fr + 0.55 * fpz)); shen.setPosZ((float) (1.225 * fp + 0.1f * fr + 0.55 * fpz));
shen.setRotX((float) (0.2f * fp + 0.2f * fr + 0.2f * fpz)); shen.setRotX((float) (0.2f * fp + 0.2f * fr + 0.2f * fpz));
shen.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz)); shen.setRotY(fireRotY);
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon)); shen.setRotZ(fireRotZ);
shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt))); shen.setPosX((float) (shen.getPosX() * (1 - 0.4 * zt)));
shen.setPosY((float) (shen.getPosY() * (1 - 0.5 * zt))); shen.setPosY((float) (shen.getPosY() * (1 - 0.5 * zt) * (isProne(player) ? 0.03 : 1)));
shen.setPosZ((float) (shen.getPosZ() * (1 - 0.7 * zt))); shen.setPosZ((float) (shen.getPosZ() * (1 - 0.7 * zt) * (isProne(player) ? 0.4 : 1)));
shen.setRotX((float) (shen.getRotX() * (1 - 0.27 * zt))); shen.setRotX((float) (shen.getRotX() * (1 - 0.27 * zt) * (barrelType == 1 ? 0.4 : 1) * (stockType == 1 ? 0.6 : 1) * (gripType == 1 ? 0.8 : 1) * (isProne(player) ? 0.03 : 1)));
shen.setRotY((float) (shen.getRotY() * (1 - 0.7 * zt))); shen.setRotY((float) (shen.getRotY() * (1 - 0.7 * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.65 * zt))); shen.setRotZ((float) (shen.getRotZ() * (1 - 0.65 * zt)));
stack.getOrCreateTag().putBoolean("HoloHidden", (gun.getPosX() <= 3 || Mth.abs(shen.getRotX()) > (scopeType == 2 ? 3 : 1) * Mth.DEG_TO_RAD || Mth.abs(main.getRotX()) > (scopeType == 2 ? 5.7 : 1) * Mth.DEG_TO_RAD || Mth.abs(main.getRotY()) > 3 * Mth.DEG_TO_RAD));
hammer.setRotX(50 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverPreTime); hammer.setRotX(50 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverPreTime);
lun.setRotZ(-60 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverWheelPreTime); lun.setRotZ(-60 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverWheelPreTime);
CoreGeoBone ammo = getAnimationProcessor().getBone("ammo"); CoreGeoBone ammo = getAnimationProcessor().getBone("ammo");
@ -103,17 +162,37 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph)); root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY)); root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY));
root.setPosZ(!stack.getOrCreateTag().getBoolean("DA") && !stack.getOrCreateTag().getBoolean("canImmediatelyShoot")? 0.2f * (float) ClientEventHandler.revolverPreTime : 0); root.setPosZ(!stack.getOrCreateTag().getBoolean("DA") && !stack.getOrCreateTag().getBoolean("canImmediatelyShoot")? 0.2f * (float) ClientEventHandler.revolverPreTime : 0);
root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY) + (!stack.getOrCreateTag().getBoolean("DA") && !stack.getOrCreateTag().getBoolean("canImmediatelyShoot") ? 2 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverPreTime : 0)); root.setRotX((float) ((swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY)));
root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY)); root.setRotY((float) (0.2f * movePosX + Mth.DEG_TO_RAD * 300 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotY));
root.setRotZ((float) (0.2f * movePosX + moveRotZ + Mth.DEG_TO_RAD * 90 * ClientEventHandler.drawTime + 2.7f * mph + Mth.DEG_TO_RAD * turnRotZ)); root.setRotZ((float) (0.2f * movePosX + moveRotZ + Mth.DEG_TO_RAD * 90 * ClientEventHandler.drawTime + 2.7f * mph + Mth.DEG_TO_RAD * turnRotZ));
CoreGeoBone camera = getAnimationProcessor().getBone("camera"); CoreGeoBone l = getAnimationProcessor().getBone("l");
CoreGeoBone main = getAnimationProcessor().getBone("0"); CoreGeoBone r = getAnimationProcessor().getBone("r");
rotXBipod = Mth.lerp(1.5f * times, rotXBipod, isProne(player) ? -90 : 0);
l.setRotX(rotXBipod * Mth.DEG_TO_RAD);
r.setRotX(rotXBipod * Mth.DEG_TO_RAD);
float numR = (float) (1 - 0.22 * zt); float numR = (float) (1 - 0.22 * zt);
float numP = (float) (1 - 0.48 * zt); float numP = (float) (1 - 0.48 * zt);
AnimationHelper.handleReloadShakeAnimation(stack, main, camera, numR, numP); AnimationHelper.handleReloadShakeAnimation(stack, main, camera, numR, numP);
ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ()); ClientEventHandler.shake(Mth.RAD_TO_DEG * camera.getRotX(), Mth.RAD_TO_DEG * camera.getRotY(), Mth.RAD_TO_DEG * camera.getRotZ());
barrel1.setPosZ((scopeType == 0 && gripType == 0) ? 17.9f : 0);
barrel2.setPosZ((scopeType == 0 && gripType == 0) ? 15.3f : 3);
float flarePosZ = 0;
if (scopeType > 0 || gripType > 0) {
if (barrelType == 1) {
flarePosZ = -21;
} else {
flarePosZ = -18;
}
} else if (barrelType == 1) {
flarePosZ = -3;
}
flare.setPosZ(flarePosZ);
} }
} }

View file

@ -43,11 +43,7 @@ public class VectorItemModel extends GeoModel<VectorItem> {
public void setCustomAnimations(VectorItem animatable, long instanceId, AnimationState animationState) { public void setCustomAnimations(VectorItem animatable, long instanceId, AnimationState animationState) {
CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone scope = getAnimationProcessor().getBone("Scope1"); CoreGeoBone scope = getAnimationProcessor().getBone("Scope1");
// CoreGeoBone scope2 = getAnimationProcessor().getBone("Scope2");
// CoreGeoBone scope3 = getAnimationProcessor().getBone("Scope3");
CoreGeoBone cross1 = getAnimationProcessor().getBone("Cross1"); CoreGeoBone cross1 = getAnimationProcessor().getBone("Cross1");
// CoreGeoBone cross2 = getAnimationProcessor().getBone("Cross2");
// CoreGeoBone cross3 = getAnimationProcessor().getBone("Cross3");
CoreGeoBone kmj = getAnimationProcessor().getBone("kuaimanji"); CoreGeoBone kmj = getAnimationProcessor().getBone("kuaimanji");
CoreGeoBone sight1fold = getAnimationProcessor().getBone("SightFold1"); CoreGeoBone sight1fold = getAnimationProcessor().getBone("SightFold1");
CoreGeoBone sight2fold = getAnimationProcessor().getBone("SightFold2"); CoreGeoBone sight2fold = getAnimationProcessor().getBone("SightFold2");
@ -110,7 +106,6 @@ public class VectorItemModel extends GeoModel<VectorItem> {
case 0 -> getAnimationProcessor().getBone("fireRoot0"); case 0 -> getAnimationProcessor().getBone("fireRoot0");
case 1 -> getAnimationProcessor().getBone("fireRoot1"); case 1 -> getAnimationProcessor().getBone("fireRoot1");
case 2 -> getAnimationProcessor().getBone("fireRoot2"); case 2 -> getAnimationProcessor().getBone("fireRoot2");
case 3 -> getAnimationProcessor().getBone("fireRoot3");
default -> getAnimationProcessor().getBone("fireRootNormal"); default -> getAnimationProcessor().getBone("fireRootNormal");
}; };
} }
@ -133,8 +128,6 @@ public class VectorItemModel extends GeoModel<VectorItem> {
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt))); shen.setRotZ((float) (shen.getRotZ() * (1 - 0.4 * zt)));
cross1.setPosY(-0.25f * (float) fpz); cross1.setPosY(-0.25f * (float) fpz);
// cross2.setPosY(-0.7f * (float) fpz);
// cross3.setPosY(-0.2f * (float) fpz);
rotXSight = Mth.lerp(1.5f * times, rotXSight, type == 0 ? 0 : 90); rotXSight = Mth.lerp(1.5f * times, rotXSight, type == 0 ? 0 : 90);
sight1fold.setRotX(rotXSight * Mth.DEG_TO_RAD); sight1fold.setRotX(rotXSight * Mth.DEG_TO_RAD);

View file

@ -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.TracheliumLayer; import net.mcreator.superbwarfare.client.layer.TracheliumLayer;
import net.mcreator.superbwarfare.client.model.item.TracheliumItemModel; import net.mcreator.superbwarfare.client.model.item.TracheliumItemModel;
import net.mcreator.superbwarfare.event.ClientEventHandler; import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.item.gun.handgun.Trachelium; import net.mcreator.superbwarfare.item.gun.handgun.Trachelium;
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;
@ -80,14 +82,57 @@ public class TracheliumItemRenderer extends GeoItemRenderer<Trachelium> {
Player player = mc.player; Player player = mc.player;
if (player != null) { if (player != null) {
ItemStack itemStack = player.getMainHandItem();
if (name.equals("humu")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 0 && GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.GRIP) == 0);
}
if (name.equals("qianzhunxing1")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) > 0 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.GRIP) > 0);
}
if (name.equals("railup")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 0);
}
if (name.equals("raildown")) {
bone.setHidden(GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.GRIP) == 0);
}
if (name.equals("Cross1")) {
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|| !ClientEventHandler.zoom
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 1);
}
if (name.equals("Cross2")) {
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|| !ClientEventHandler.zoom
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 2
|| itemStack.getOrCreateTag().getBoolean("ScopeAlt"));
}
if (name.equals("CrossAlt")) {
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|| !ClientEventHandler.zoom
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 2
|| !(itemStack.getOrCreateTag().getBoolean("ScopeAlt")));
}
if (GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) == 2 && !itemStack.getOrCreateTag().getBoolean("ScopeAlt") && (name.equals("hidden"))) {
bone.setHidden(!itemStack.getOrCreateTag().getBoolean("HoloHidden") && ClientEventHandler.zoom);
}
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
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)));
} }
} }

View file

@ -88,10 +88,10 @@ public class ModItemTagProvider extends ItemTagsProvider {
ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.NTW_20.get(), ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.NTW_20.get(),
ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get()); ModItems.M_98B.get(), ModItems.SENTINEL.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get());
this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(ModItems.TRACHELIUM.get(), ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.get()); this.tag(ModTags.Items.USE_HANDGUN_AMMO).add(ModItems.GLOCK_17.get(), ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.VECTOR.get());
this.tag(ModTags.Items.USE_RIFLE_AMMO).add(ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.SKS.get(), ModItems.MINIGUN.get(), ModItems.DEVOTION.get(), ModItems.M_60.get(), this.tag(ModTags.Items.USE_RIFLE_AMMO).add(ModItems.M_4.get(), ModItems.HK_416.get(), ModItems.SKS.get(), ModItems.MINIGUN.get(), ModItems.DEVOTION.get(), ModItems.M_60.get(),
ModItems.MK_14.get(), ModItems.MARLIN.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.QBZ_95.get(), ModItems.RPK.get()); ModItems.MK_14.get(), ModItems.MARLIN.get(), ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.QBZ_95.get(), ModItems.RPK.get(), ModItems.TRACHELIUM.get());
this.tag(ModTags.Items.USE_SHOTGUN_AMMO).add(ModItems.ABEKIRI.get(), ModItems.M_870.get(), ModItems.AA_12.get()); this.tag(ModTags.Items.USE_SHOTGUN_AMMO).add(ModItems.ABEKIRI.get(), ModItems.M_870.get(), ModItems.AA_12.get());
@ -118,17 +118,17 @@ 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(), ModItems.QBZ_95.get(), ModItems.VECTOR.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(), ModItems.VECTOR.get(), ModItems.TRACHELIUM.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(), ModItems.VECTOR.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(), ModItems.VECTOR.get(), ModItems.TRACHELIUM.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(), ModItems.AK_47.get(), ModItems.VECTOR.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(), ModItems.AK_47.get(), ModItems.VECTOR.get(), ModItems.TRACHELIUM.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(), ModItems.VECTOR.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(), ModItems.VECTOR.get(), ModItems.TRACHELIUM.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(), ModItems.VECTOR.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(), ModItems.VECTOR.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(), ModItems.VECTOR.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(), ModItems.VECTOR.get(), ModItems.TRACHELIUM.get());
} }

View file

@ -16,6 +16,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@ -27,6 +28,7 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PacketDistributor;
import net.minecraftforge.network.PlayMessages; import net.minecraftforge.network.PlayMessages;
@ -137,6 +139,15 @@ public class HandGrenadeEntity extends ThrowableItemProjectile {
1, 0, 0, 0, 0.01, true); 1, 0, 0, 0, 0.01, true);
} }
} }
@Override
public void shootFromRotation(Entity pShooter, float pX, float pY, float pZ, float pVelocity, float pInaccuracy) {
float f = -Mth.sin(pY * 0.017453292F) * Mth.cos(pX * 0.017453292F);
float f1 = -Mth.sin((pX + pZ) * 0.017453292F);
float f2 = Mth.cos(pY * 0.017453292F) * Mth.cos(pX * 0.017453292F);
this.shoot((double)f, (double)f1, (double)f2, pVelocity, pInaccuracy);
Vec3 vec3 = pShooter.getDeltaMovement();
this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, pShooter.onGround() ? 0.0 : -vec3.y, vec3.z));
}
@Override @Override
protected float getGravity() { protected float getGravity() {

View file

@ -585,7 +585,7 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa
public void shoot(Player player, double vecX, double vecY, double vecZ, float velocity, float spread) { public void shoot(Player player, double vecX, double vecY, double vecZ, float velocity, float spread) {
Vec3 vec3 = (new Vec3(vecX, vecY, vecZ)).normalize(). Vec3 vec3 = (new Vec3(vecX, vecY, vecZ)).normalize().
add(this.random.triangle(0.0D, 0.0172275D * (double) spread), this.random.triangle(0.0D, 0.0172275D * (double) spread), this.random.triangle(0.0D, 0.0172275D * (double) spread)). add(this.random.triangle(0.0D, 0.0172275D * (double) spread), this.random.triangle(0.0D, 0.0172275D * (double) spread), this.random.triangle(0.0D, 0.0172275D * (double) spread)).
add(player.getDeltaMovement().x, player.getDeltaMovement().y() + 0.078, player.getDeltaMovement().z). add(player.getDeltaMovement().x, player.onGround() ? 0.0 : 0.05 * player.getDeltaMovement().y, player.getDeltaMovement().z).
scale(velocity); scale(velocity);
this.setDeltaMovement(vec3); this.setDeltaMovement(vec3);
double d0 = vec3.horizontalDistance(); double d0 = vec3.horizontalDistance();

View file

@ -165,4 +165,14 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEnti
this.yRotO = this.getYRot(); this.yRotO = this.getYRot();
this.xRotO = this.getXRot(); this.xRotO = this.getXRot();
} }
@Override
public void shootFromRotation(Entity pShooter, float pX, float pY, float pZ, float pVelocity, float pInaccuracy) {
float f = -Mth.sin(pY * 0.017453292F) * Mth.cos(pX * 0.017453292F);
float f1 = -Mth.sin((pX + pZ) * 0.017453292F);
float f2 = Mth.cos(pY * 0.017453292F) * Mth.cos(pX * 0.017453292F);
this.shoot((double)f, (double)f1, (double)f2, pVelocity, pInaccuracy);
Vec3 vec3 = pShooter.getDeltaMovement();
this.setDeltaMovement(this.getDeltaMovement().add(vec3.x, pShooter.onGround() ? 0.0 : -vec3.y, vec3.z));
}
} }

View file

@ -180,7 +180,7 @@ public class GunEventHandler {
if (!player.level().isClientSide()) { if (!player.level().isClientSide()) {
float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot"); float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot");
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) perkDamage(heldItem); float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) perkDamage(heldItem);
float velocity = (float) heldItem.getOrCreateTag().getDouble("velocity") * (float) perkSpeed(heldItem); float velocity = (float) ((heldItem.getOrCreateTag().getDouble("velocity") + heldItem.getOrCreateTag().getDouble("CustomVelocity")) * perkSpeed(heldItem));
int projectileAmount = (int) heldItem.getOrCreateTag().getDouble("projectile_amount"); int projectileAmount = (int) heldItem.getOrCreateTag().getDouble("projectile_amount");
float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor"); float bypassArmorRate = (float) heldItem.getOrCreateTag().getDouble("BypassesArmor");
boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom; boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom;

View file

@ -22,6 +22,10 @@ public class ModSounds {
public static final RegistryObject<SoundEvent> TRACHELIUM_FIRE_3P = REGISTRY.register("trachelium_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_fire_3p"))); public static final RegistryObject<SoundEvent> TRACHELIUM_FIRE_3P = REGISTRY.register("trachelium_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_fire_3p")));
public static final RegistryObject<SoundEvent> TRACHELIUM_FAR = REGISTRY.register("trachelium_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_far"))); public static final RegistryObject<SoundEvent> TRACHELIUM_FAR = REGISTRY.register("trachelium_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_far")));
public static final RegistryObject<SoundEvent> TRACHELIUM_VERYFAR = REGISTRY.register("trachelium_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_veryfar"))); public static final RegistryObject<SoundEvent> TRACHELIUM_VERYFAR = REGISTRY.register("trachelium_veryfar", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_veryfar")));
public static final RegistryObject<SoundEvent> TRACHELIUM_FIRE_1P_S = REGISTRY.register("trachelium_fire_1p_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_fire_1p_s")));
public static final RegistryObject<SoundEvent> TRACHELIUM_FIRE_3P_S = REGISTRY.register("trachelium_fire_3p_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_fire_3p_s")));
public static final RegistryObject<SoundEvent> TRACHELIUM_FAR_S = REGISTRY.register("trachelium_far_s", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_far_s")));
public static final RegistryObject<SoundEvent> TRACHELIUM_RELOAD_EMPTY = REGISTRY.register("trachelium_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_reload_empty"))); public static final RegistryObject<SoundEvent> TRACHELIUM_RELOAD_EMPTY = REGISTRY.register("trachelium_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_reload_empty")));
public static final RegistryObject<SoundEvent> TRACHELIUM_BOLT = REGISTRY.register("trachelium_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_bolt"))); public static final RegistryObject<SoundEvent> TRACHELIUM_BOLT = REGISTRY.register("trachelium_bolt", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "trachelium_bolt")));

View file

@ -9,6 +9,7 @@ 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;
@ -18,6 +19,7 @@ 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;
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style; import net.minecraft.network.chat.Style;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -85,11 +87,38 @@ public class Trachelium 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 stock = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK) == 2;
boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) > 0 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE) > 0;
if (ClientEventHandler.firePosTimer > 0 && ClientEventHandler.firePosTimer < 1.7) { if (ClientEventHandler.firePosTimer > 0 && ClientEventHandler.firePosTimer < 1.7) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire")); if (stock) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire_stock"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire"));
}
}
} }
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle")); if (stock) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_stock"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle"));
}
}
} }
private PlayState idlePredicate(AnimationState<Trachelium> event) { private PlayState idlePredicate(AnimationState<Trachelium> event) {
@ -98,22 +127,98 @@ public class Trachelium 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 stock = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK) == 2;
boolean grip = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP) > 0 || GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE) > 0;
if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) { if (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action")); if (stock) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action_stock"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action"));
}
}
} }
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) { if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload")); if (stock) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload_stock"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload"));
}
}
} }
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 (stock) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_fast")); if (grip) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_fast_stock"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_stock_grip"));
}
} else {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_fast_stock"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_stock"));
}
}
} else { } else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run")); if (grip) {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_fast"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_grip"));
}
} else {
if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run_fast"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.run"));
}
}
} }
} }
if (stock) {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_stock_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_stock"));
}
} else {
if (grip) {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle_grip"));
} else {
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle"));
}
}
}
private PlayState editPredicate(AnimationState<Trachelium> 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;
if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).edit) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.edit"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle")); return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle"));
} }
@ -121,8 +226,10 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
public void registerControllers(AnimatableManager.ControllerRegistrar data) { public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var fireAnimController = new AnimationController<>(this, "fireAnimController", 0, this::fireAnimPredicate); var fireAnimController = new AnimationController<>(this, "fireAnimController", 0, this::fireAnimPredicate);
data.add(fireAnimController); data.add(fireAnimController);
AnimationController<Trachelium> idleController = new AnimationController<>(this, "idleController", 3, this::idlePredicate); var idlePredicate = new AnimationController<>(this, "idlePredicate", 3, this::idlePredicate);
data.add(idleController); data.add(idlePredicate);
var editController = new AnimationController<>(this, "editController", 1, this::editPredicate);
data.add(editController);
} }
@Override @Override
@ -148,10 +255,46 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
} }
@Override @Override
public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int slot, boolean selected) { public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) {
super.inventoryTick(itemStack, world, entity, slot, selected); super.inventoryTick(stack, world, entity, slot, selected);
var tag = itemStack.getOrCreateTag(); var tag = stack.getOrCreateTag();
tag.putInt("bolt_action_time", tag.getBoolean("DA") ? 12 : 0); tag.putInt("bolt_action_time", tag.getBoolean("DA") ? 12 : 0);
int scopeType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
int gripType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.GRIP);
int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
CompoundTag tags = stack.getOrCreateTag().getCompound("Attachments");
if (stockType == 1) {
tags.putInt("Stock", 2);
}
if (scopeType == 3) {
tags.putInt("Scope", 0);
}
if (scopeType > 0 || gripType > 0) {
tag.putDouble("CustomVelocity", 15);
tag.putDouble("BypassesArmor", 0.4);
tag.putDouble("damage", 21);
tag.putDouble("headshot", 2.5);
} else {
tag.putDouble("CustomVelocity", 0);
tag.putDouble("BypassesArmor", 0.3);
tag.putDouble("damage", 19);
tag.putDouble("headshot", 2);
}
double customZoom = switch (scopeType) {
case 0, 1 -> 0;
case 2 -> stack.getOrCreateTag().getBoolean("ScopeAlt") ? 0 : 2.75;
default -> 1;
};
stack.getOrCreateTag().putBoolean("CanSwitchScope", scopeType == 2);
stack.getOrCreateTag().putDouble("CustomZoom", customZoom);
} }
@Override @Override

View file

@ -137,9 +137,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
super.inventoryTick(stack, world, entity, slot, selected); super.inventoryTick(stack, world, entity, slot, selected);
int scopeType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE); 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 magType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.MAGAZINE);
int stockType = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.STOCK);
int customMag = switch (magType) { int customMag = switch (magType) {
case 1 -> 20; case 1 -> 20;

File diff suppressed because it is too large Load diff

View file

@ -8,9 +8,9 @@
"display": { "display": {
"firstperson_righthand": { "firstperson_righthand": {
"translation": [ "translation": [
-7.7, -5.5,
4.2, 4.2,
0.75 1.75
] ]
}, },
"firstperson_lefthand": { "firstperson_lefthand": {

View file

@ -55,6 +55,30 @@
} }
] ]
}, },
"trachelium_fire_1p_s": {
"sounds": [
{
"name": "superbwarfare:trachelium/trachelium_fire_1p_s",
"stream": false
}
]
},
"trachelium_fire_3p_s": {
"sounds": [
{
"name": "superbwarfare:trachelium/trachelium_fire_3p_s",
"stream": false
}
]
},
"trachelium_far_s": {
"sounds": [
{
"name": "superbwarfare:trachelium/trachelium_far_s",
"stream": false
}
]
},
"trachelium_reload_empty": { "trachelium_reload_empty": {
"sounds": [ "sounds": [
{ {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -3,7 +3,7 @@
"recoil_x": 0.005, "recoil_x": 0.005,
"recoil_y": 0.032, "recoil_y": 0.032,
"damage": 19, "damage": 19,
"headshot": 3, "headshot": 2,
"velocity": 24, "velocity": 24,
"mag": 6, "mag": 6,
"projectile_amount": 1, "projectile_amount": 1,