优化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 fr = player.getPersistentData().getDouble("fire_rot");
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) {
shen.setPosY(0.02f * (float) (fp + 2 * fr));
shen.setPosZ(0.6f * (float) (fp + 0.54f * fr));
shen.setRotX(0.003f * (float) (fp + fr));
shen.setRotZ(0f);
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) {
shen.setRotY(0.015f * (float) fr);
} else {
shen.setRotY(-0.015f * (float) fr);
}
shen.setPosY(0.1f * (float) (fp + 2 * fr));
shen.setPosZ(2.2f * (float) (0.5 * fp + 1.54f * fr));
shen.setRotX(0.05f * (float) (0.18f * fp + fr));
shen.setRotZ(-0.02f * (float) (fp + 1.3 * fr));
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).recoilHorizon > 0) {
shen.setRotY(0.055f * (float) fr);
} else {
shen.setPosY(0.04f * (float) (fp + 2 * 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);
}
shen.setRotY(-0.055f * (float) fr);
}
if (stack.getOrCreateTag().getInt("fire_animation") > 0) {
flare.setHidden(false);
light.setHidden(false);

View file

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

View file

@ -186,7 +186,7 @@ public class RpgItem extends GunItem implements GeoItem, AnimatedItem {
tag.putDouble("reload_time", 0);
}
if (tag.getBoolean("reloading")) {
if (tag.getDouble("reload_time") == 91) {
if (tag.getDouble("reload_time") == 97) {
entity.getPersistentData().putDouble("id", id);
if (entity.getServer() != null) {
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);
}
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.getInt("max_ammo") >= 0) {

View file

@ -65,7 +65,7 @@ public class PlayerReloadProcedure {
tag.putBoolean("reloading", true);
tag.putDouble("empty_reload", 1);
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()
&& !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem()))

View file

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

View file

@ -160,7 +160,8 @@
"animation_length": 0.1
},
"animation.rpg.reload": {
"animation_length": 4.5,
"loop": "hold_on_last_frame",
"animation_length": 5,
"bones": {
"0": {
"rotation": {
@ -213,7 +214,20 @@
"4.0": {
"vector": [25.6001, -5.50887, 2.34743]
},
"4.2": {
"vector": [0, 0, -8],
"easing": "easeInOutSine"
},
"4.3": {
"vector": [3, 0, -3.24]
},
"4.4": {
"vector": [-1, 0, 6.38]
},
"4.6": {
"vector": [0, 0, -0.81]
},
"4.8": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
@ -256,10 +270,17 @@
"3.8": {
"vector": [-3.07, -10.12, 0]
},
"4.0": {
"vector": [-1.7, -5.79, 0]
"4.1": {
"vector": [-0.1, 0.1, 0],
"easing": "easeInOutSine"
},
"4.3": {
"vector": [-0.09, -0.61, 0]
},
"4.4": {
"vector": [-0.08, -0.19, 0]
},
"4.8": {
"vector": [0, 0, 0],
"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": {
"rotation": {
"0.1": {
@ -609,15 +654,29 @@
"3.6": {
"vector": [0.5, -2, -2]
},
"4.0": {
"4.2": {
"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],
"easing": "easeOutSine"
}
}
}
},
"sound_effects": {
"0.0": {
"effect": "rpg_reload"
}
}
}
},

View file

@ -58,6 +58,41 @@
"parent": "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",
"parent": "rpg",
@ -3773,34 +3808,6 @@
"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],
"size": [0.8, 0.22426, 1.47574],