优化rpg和加特林

This commit is contained in:
Atsuihsio 2024-06-12 15:29:56 +08:00
parent 2cd5efbdee
commit 15c6251e2c
9 changed files with 126 additions and 63 deletions

View file

@ -54,28 +54,17 @@ public class MinigunItemModel extends GeoModel<Minigun> {
double fp = player.getPersistentData().getDouble("fire_pos"); double fp = player.getPersistentData().getDouble("fire_pos");
double fr = player.getPersistentData().getDouble("fire_rot"); double fr = player.getPersistentData().getDouble("fire_rot");
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) { shen.setPosY(0.1f * (float) (fp + 2 * fr));
shen.setPosY(0.02f * (float) (fp + 2 * fr)); shen.setPosZ(2.2f * (float) (0.5 * fp + 1.54f * fr));
shen.setPosZ(0.6f * (float) (fp + 0.54f * fr)); shen.setRotX(0.05f * (float) (0.18f * fp + fr));
shen.setRotX(0.003f * (float) (fp + fr)); shen.setRotZ(-0.02f * (float) (fp + 1.3 * fr));
shen.setRotZ(0f); if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) {
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) { shen.setRotY(0.055f * (float) fr);
shen.setRotY(0.015f * (float) fr);
} else {
shen.setRotY(-0.015f * (float) fr);
}
} else { } else {
shen.setPosY(0.04f * (float) (fp + 2 * fr)); shen.setRotY(-0.055f * (float) fr);
shen.setPosZ(1.2f * (float) (fp + 0.54f * fr));
shen.setRotX(0.03f * (float) (0.18f * fp + fr));
shen.setRotZ(-0.01f * (float) (fp + 1.3 * fr));
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) {
shen.setRotY(0.045f * (float) fr);
} else {
shen.setRotY(-0.045f * (float) fr);
}
} }
if (stack.getOrCreateTag().getInt("fire_animation") > 0) { if (stack.getOrCreateTag().getInt("fire_animation") > 0) {
flare.setHidden(false); flare.setHidden(false);
light.setHidden(false); light.setHidden(false);

View file

@ -32,14 +32,19 @@ public class RpgItemModel extends GeoModel<RpgItem> {
CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone rocket = getAnimationProcessor().getBone("Rockets"); CoreGeoBone rocket = getAnimationProcessor().getBone("Rockets");
CoreGeoBone shen = getAnimationProcessor().getBone("rpg"); CoreGeoBone shen = getAnimationProcessor().getBone("rpg");
CoreGeoBone hammer = getAnimationProcessor().getBone("hammer");
Player player = Minecraft.getInstance().player; Player player = Minecraft.getInstance().player;
ItemStack stack = player.getMainHandItem(); ItemStack stack = player.getMainHandItem();
if (stack.getOrCreateTag().getDouble("empty") == 1) { if (stack.getOrCreateTag().getBoolean("empty")) {
rocket.setScaleX(0); rocket.setHidden(true);
rocket.setScaleY(0); } else {
rocket.setScaleZ(0); rocket.setHidden(false);
}
if (stack.getOrCreateTag().getBoolean("close_hammer")) {
hammer.setRotX(-90 * Mth.DEG_TO_RAD);
} }
double fp = player.getPersistentData().getDouble("fire_pos"); double fp = player.getPersistentData().getDouble("fire_pos");
@ -84,13 +89,12 @@ public class RpgItemModel extends GeoModel<RpgItem> {
CoreGeoBone flare = getAnimationProcessor().getBone("flare"); CoreGeoBone flare = getAnimationProcessor().getBone("flare");
if (stack.getOrCreateTag().getInt("fire_animation") > 0) { if (stack.getOrCreateTag().getInt("fire_animation") > 0) {
flare.setHidden(false);
flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5))); flare.setScaleX((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5))); flare.setScaleY((float) (1.0 + 0.5 * (Math.random() - 0.5)));
flare.setRotZ((float) (0.5 * (Math.random() - 0.5))); flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
} else { } else {
flare.setScaleX(0); flare.setHidden(true);
flare.setScaleY(0);
flare.setRotZ(0);
} }
CoreGeoBone root = getAnimationProcessor().getBone("root"); CoreGeoBone root = getAnimationProcessor().getBone("root");

View file

@ -186,7 +186,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0); tag.putDouble("reload_time", 0);
} }
if (tag.getBoolean("reloading")) { if (tag.getBoolean("reloading")) {
if (tag.getDouble("reload_time") == 91) { if (tag.getDouble("reload_time") == 97) {
entity.getPersistentData().putDouble("id", id); entity.getPersistentData().putDouble("id", id);
if (entity.getServer() != null) { if (entity.getServer() != null) {
SoundTool.playLocalSound(player, TargetModSounds.RPG_RELOAD.get(), 100, 1); SoundTool.playLocalSound(player, TargetModSounds.RPG_RELOAD.get(), 100, 1);
@ -203,7 +203,10 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
tag.putBoolean("empty_reload", false); tag.putBoolean("empty_reload", false);
} }
if (tag.getDouble("reload_time") == 84) { if (tag.getDouble("reload_time") == 84) {
tag.putDouble("empty", 0); tag.putBoolean("empty", false);
}
if (tag.getDouble("reload_time") == 7) {
tag.putBoolean("close_hammer", false);
} }
if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) {
if (tag.getInt("max_ammo") >= 0) { if (tag.getInt("max_ammo") >= 0) {

View file

@ -65,7 +65,7 @@ public class PlayerReloadProcedure {
tag.putBoolean("reloading", true); tag.putBoolean("reloading", true);
tag.putDouble("empty_reload", 1); tag.putDouble("empty_reload", 1);
tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810))); tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810)));
tag.putDouble("reload_time", 91); tag.putDouble("reload_time", 97);
} }
if (player.getMainHandItem().getItem() == TargetModItems.ABEKIRI.get() if (player.getMainHandItem().getItem() == TargetModItems.ABEKIRI.get()
&& !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem())) && !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem()))

View file

@ -52,7 +52,8 @@ public class RpgFireProcedure {
} }
if (tag.getInt("ammo") == 1) { if (tag.getInt("ammo") == 1) {
tag.putDouble("empty", 1); tag.putBoolean("empty", true);
tag.putBoolean("close_hammer", true);
} }
player.getCooldowns().addCooldown(mainHandItem.getItem(), 10); player.getCooldowns().addCooldown(mainHandItem.getItem(), 10);

View file

@ -160,7 +160,8 @@
"animation_length": 0.1 "animation_length": 0.1
}, },
"animation.rpg.reload": { "animation.rpg.reload": {
"animation_length": 4.5, "loop": "hold_on_last_frame",
"animation_length": 5,
"bones": { "bones": {
"0": { "0": {
"rotation": { "rotation": {
@ -213,7 +214,20 @@
"4.0": { "4.0": {
"vector": [25.6001, -5.50887, 2.34743] "vector": [25.6001, -5.50887, 2.34743]
}, },
"4.2": {
"vector": [0, 0, -8],
"easing": "easeInOutSine"
},
"4.3": {
"vector": [3, 0, -3.24]
},
"4.4": { "4.4": {
"vector": [-1, 0, 6.38]
},
"4.6": {
"vector": [0, 0, -0.81]
},
"4.8": {
"vector": [0, 0, 0], "vector": [0, 0, 0],
"easing": "easeInOutSine" "easing": "easeInOutSine"
} }
@ -256,10 +270,17 @@
"3.8": { "3.8": {
"vector": [-3.07, -10.12, 0] "vector": [-3.07, -10.12, 0]
}, },
"4.0": { "4.1": {
"vector": [-1.7, -5.79, 0] "vector": [-0.1, 0.1, 0],
"easing": "easeInOutSine"
},
"4.3": {
"vector": [-0.09, -0.61, 0]
}, },
"4.4": { "4.4": {
"vector": [-0.08, -0.19, 0]
},
"4.8": {
"vector": [0, 0, 0], "vector": [0, 0, 0],
"easing": "easeInOutSine" "easing": "easeInOutSine"
} }
@ -562,6 +583,30 @@
} }
} }
}, },
"Righthand": {
"rotation": {
"4.2": {
"vector": [0, 0, 0]
},
"4.3": {
"vector": [-4, 3, 8]
},
"4.5": {
"vector": [0, 0, 0]
}
},
"position": {
"4.2": {
"vector": [0, 0, 0]
},
"4.3": {
"vector": [0, 0, 0]
},
"4.5": {
"vector": [0, 0, 0]
}
}
},
"camera": { "camera": {
"rotation": { "rotation": {
"0.1": { "0.1": {
@ -609,15 +654,29 @@
"3.6": { "3.6": {
"vector": [0.5, -2, -2] "vector": [0.5, -2, -2]
}, },
"4.0": { "4.2": {
"vector": [1, -0.59, -0.59] "vector": [1, -0.59, -0.59]
}, },
"4.5": { "4.3": {
"vector": [0.44, -0.26, 1.5]
},
"4.4": {
"vector": [0.18, -0.11, -0.5]
},
"4.6": {
"vector": [0.05, -0.03, 0.2]
},
"4.8": {
"vector": [0, 0, 0], "vector": [0, 0, 0],
"easing": "easeOutSine" "easing": "easeOutSine"
} }
} }
} }
},
"sound_effects": {
"0.0": {
"effect": "rpg_reload"
}
} }
} }
}, },

View file

@ -58,6 +58,41 @@
"parent": "0", "parent": "0",
"pivot": [0, 0, 0] "pivot": [0, 0, 0]
}, },
{
"name": "hammer",
"parent": "rpg",
"pivot": [0, -0.60982, -1.98992],
"cubes": [
{
"origin": [-0.2625, -1.18829, -1.90006],
"size": [0.525, 0.62499, 0.30845],
"pivot": [0, -0.6606, -1.71883],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [74, 7], "uv_size": [0.5, 0.5]},
"east": {"uv": [77, 61], "uv_size": [0.25, 0.5]},
"south": {"uv": [8, 74], "uv_size": [0.5, 0.5]},
"west": {"uv": [62, 77], "uv_size": [0.25, 0.5]},
"up": {"uv": [77, 62], "uv_size": [0.5, 0.25]},
"down": {"uv": [63, 77.25], "uv_size": [0.5, -0.25]}
}
},
{
"origin": [-0.2625, -0.80184, -2.10613],
"size": [0.525, 0.62499, 0.30845],
"pivot": [0, -0.6606, -1.81883],
"rotation": [-135, 0, 0],
"uv": {
"north": {"uv": [23, 75], "uv_size": [0.5, 0.5]},
"east": {"uv": [30, 78], "uv_size": [0.25, 0.5]},
"south": {"uv": [75, 23], "uv_size": [0.5, 0.5]},
"west": {"uv": [78, 30], "uv_size": [0.25, 0.5]},
"up": {"uv": [31, 78], "uv_size": [0.5, 0.25]},
"down": {"uv": [78, 31.25], "uv_size": [0.5, -0.25]}
}
}
]
},
{ {
"name": "gun", "name": "gun",
"parent": "rpg", "parent": "rpg",
@ -3773,34 +3808,6 @@
"west": {"uv": [64, 75], "uv_size": [0.25, 0.75]} "west": {"uv": [64, 75], "uv_size": [0.25, 0.75]}
} }
}, },
{
"origin": [-0.2625, -0.99385, -1.93825],
"size": [0.525, 0.62499, 0.30845],
"pivot": [0, -0.53136, -1.78402],
"rotation": [-45, 0, 0],
"uv": {
"north": {"uv": [74, 7], "uv_size": [0.5, 0.5]},
"east": {"uv": [77, 61], "uv_size": [0.25, 0.5]},
"south": {"uv": [8, 74], "uv_size": [0.5, 0.5]},
"west": {"uv": [62, 77], "uv_size": [0.25, 0.5]},
"up": {"uv": [77, 62], "uv_size": [0.5, 0.25]},
"down": {"uv": [63, 77.25], "uv_size": [0.5, -0.25]}
}
},
{
"origin": [-0.2625, 0.06622, -2.4518],
"size": [0.525, 0.62499, 0.30845],
"pivot": [0, -0.37128, -2.29757],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [23, 75], "uv_size": [0.5, 0.5]},
"east": {"uv": [30, 78], "uv_size": [0.25, 0.5]},
"south": {"uv": [75, 23], "uv_size": [0.5, 0.5]},
"west": {"uv": [78, 30], "uv_size": [0.25, 0.5]},
"up": {"uv": [31, 78], "uv_size": [0.5, 0.25]},
"down": {"uv": [78, 31.25], "uv_size": [0.5, -0.25]}
}
},
{ {
"origin": [-0.4, -1.50777, -3.66146], "origin": [-0.4, -1.50777, -3.66146],
"size": [0.8, 0.22426, 1.47574], "size": [0.8, 0.22426, 1.47574],