完成左轮的单双动射击模式,优化夕雾花模型贴图动画

This commit is contained in:
Atsuihsio 2024-11-20 08:32:42 +08:00
parent 318648c60b
commit b09ed41f02
19 changed files with 2694 additions and 2676 deletions

View file

@ -34,7 +34,6 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
@Override
public void setCustomAnimations(Trachelium animatable, long instanceId, AnimationState animationState) {
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
CoreGeoBone hammer = getAnimationProcessor().getBone("jichui");
CoreGeoBone lun = getAnimationProcessor().getBone("lun");
@ -61,16 +60,28 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
double fp = ClientEventHandler.firePos;
double fr = ClientEventHandler.fireRot;
gun.setPosX(1.48f * (float) zp);
gun.setPosY(3.2f * (float) zp - (float) (0.6f * zpz));
gun.setPosZ((float) zp + (float) (0.5f * zpz));
gun.setRotZ(-0.087f * (float) zp + (float) (0.05f * zpz));
gun.setPosX(1.26f * (float) zp);
gun.setPosY(1.1f * (float) zp - (float) (0.6f * zpz));
gun.setPosZ((float) zp + (float) (0.2f * zpz));
gun.setScaleZ(1f - (0.2f * (float) zp));
CoreGeoBone shen;
if (zt < 0.5) {
shen = getAnimationProcessor().getBone("fireRootNormal");
} else {
shen = getAnimationProcessor().getBone("fireRoot0");
// shen = switch (type) {
// case 0 -> getAnimationProcessor().getBone("fireRoot0");
// case 1 -> getAnimationProcessor().getBone("fireRoot1");
// case 2 -> getAnimationProcessor().getBone("fireRoot2");
// default -> getAnimationProcessor().getBone("fireRootNormal");
// };
}
shen.setPosX((float) (0.95f * ClientEventHandler.recoilHorizon * fpz * fp));
shen.setPosY((float) (0.4f * fp + 0.44f * fr));
shen.setPosZ((float) (5.825 * fp + 0.34f * fr + 2.35 * fpz));
shen.setRotX((float) (0.15f * fp + 0.3f * fr + 0.3f * fpz));
shen.setPosY((float) (0.2f * fp + 0.24f * fr));
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.setRotY((float) (0.1f * ClientEventHandler.recoilHorizon * fpz));
shen.setRotZ((float) ((0.08f + 0.1 * fr) * ClientEventHandler.recoilHorizon));
@ -81,13 +92,18 @@ public class TracheliumItemModel extends GeoModel<Trachelium> {
shen.setRotY((float) (shen.getRotY() * (1 - 0.7 * zt)));
shen.setRotZ((float) (shen.getRotZ() * (1 - 0.65 * zt)));
hammer.setRotX(60 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverPreTime);
lun.setRotZ(-60 * 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);
CoreGeoBone ammo = getAnimationProcessor().getBone("ammo");
CoreGeoBone ammohole = getAnimationProcessor().getBone("ammohole");
ammo.setRotZ(60 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverWheelPreTime);
ammohole.setRotZ(-60 * Mth.DEG_TO_RAD * (float) ClientEventHandler.revolverWheelPreTime);
CoreGeoBone root = getAnimationProcessor().getBone("root");
root.setPosX((float) (movePosX + 20 * ClientEventHandler.drawTime + 9.3f * mph));
root.setPosY((float) (swayY + movePosY - 40 * ClientEventHandler.drawTime - 2f * vY));
root.setRotX((float) (swayX - Mth.DEG_TO_RAD * 60 * ClientEventHandler.drawTime + Mth.DEG_TO_RAD * turnRotX - 0.15f * vY));
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.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));

View file

@ -9,7 +9,9 @@ import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.gun.GunItem;
import net.mcreator.superbwarfare.network.ModVariables;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
@ -110,6 +112,7 @@ public class AmmoBarOverlay {
12,
12);
} else {
if (stack.getItem() != ModItems.TRACHELIUM.get()) {
event.getGuiGraphics().blit(fireMode,
w - 95,
h - 21,
@ -119,9 +122,19 @@ public class AmmoBarOverlay {
8,
8,
8);
} else {
event.getGuiGraphics().drawString(
Minecraft.getInstance().font,
stack.getOrCreateTag().getBoolean("DA") ? Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD) : Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD),
w - 96,
h - 20,
0xFFFFFF,
false
);
}
}
if (stack.getItem() != ModItems.MINIGUN.get()) {
if (stack.getItem() != ModItems.MINIGUN.get() && stack.getItem() != ModItems.TRACHELIUM.get()) {
event.getGuiGraphics().blit(LINE,
w - 95,
h - 16,

View file

@ -125,6 +125,8 @@ public class ClientEventHandler {
public static double revolverPreTime = 0;
public static double revolverWheelPreTime = 0;
@SubscribeEvent
public static void handleWeaponTurn(RenderHandEvent event) {
@ -159,9 +161,10 @@ public class ClientEventHandler {
ItemStack stack = player.getMainHandItem();
if (!stack.is(ModTags.Items.REVOLVER)) {
return true;
}
else {
return revolverPreTime > 1;
} else if (stack.is(ModTags.Items.REVOLVER) && (stack.getOrCreateTag().getBoolean("DA") || stack.getOrCreateTag().getBoolean("canImmediatelyShoot"))){
return true;
}else {
return revolverPreTime >= 1;
}
}
@ -269,12 +272,14 @@ public class ClientEventHandler {
//左轮类
if (stack.is(ModTags.Items.REVOLVER) && holdFire) {
revolverPreTime = revolverPreTime + 0.3 * times;
} else {
revolverPreTime = Mth.clamp(revolverPreTime - 0.5 * times, 0 , 1.1);
if (clientTimer.getProgress() == 0 && stack.is(ModTags.Items.REVOLVER) && ((holdFire && !stack.getOrCreateTag().getBoolean("DA")) || (stack.getOrCreateTag().getInt("bolt_action_anim") < 7 && stack.getOrCreateTag().getInt("bolt_action_anim") > 2) || stack.getOrCreateTag().getBoolean("canImmediatelyShoot"))) {
revolverPreTime = Mth.clamp(revolverPreTime + 0.21 * times, 0 , 1);
revolverWheelPreTime = Mth.clamp(revolverWheelPreTime + 0.23 * times, 0 , revolverPreTime > 0.7 ? 1 : 0.55);
} else if (!stack.getOrCreateTag().getBoolean("DA") && !stack.getOrCreateTag().getBoolean("canImmediatelyShoot")) {
revolverPreTime = Mth.clamp(revolverPreTime - 1.2 * times, 0 , 1);
}
if ((holdFire || burstFireSize > 0)
&& (player.getMainHandItem().is(ModTags.Items.NORMAL_GUN)
&& cantFireTime == 0
@ -335,10 +340,6 @@ public class ClientEventHandler {
if (stack.getItem() == ModItems.DEVOTION.get() && (stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))) {
customRpm = 0;
}
if (revolverPreTime > 1) {
revolverPreTime = 0;
}
}
public static void shootClient(Player player) {
@ -373,6 +374,9 @@ public class ClientEventHandler {
actionMove = 1;
}
revolverPreTime = 0;
revolverWheelPreTime = 0;
playGunClientSounds(player);
handleClientShoot();
}

View file

@ -68,6 +68,9 @@ public class GunEventHandler {
if (stack.getOrCreateTag().getInt("bolt_action_anim") == 1) {
stack.getOrCreateTag().putBoolean("need_bolt_action", false);
if (stack.is(ModTags.Items.REVOLVER)) {
stack.getOrCreateTag().putBoolean("canImmediatelyShoot", true);
}
}
}
}
@ -156,6 +159,8 @@ public class GunEventHandler {
double shooterHeight = player.getEyePosition().distanceTo((Vec3.atLowerCornerOf(player.level().clip( new ClipContext(player.getEyePosition(), player.getEyePosition().add(new Vec3(0, -1 , 0).scale(10)),
ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, player)).getBlockPos())));
if (stack.is(ModTags.Items.REVOLVER)) return;
ModUtils.queueServerWork((int) (stack.getOrCreateTag().getDouble("bolt_action_time") / 2 + 1.5 * shooterHeight), () -> {
if (stack.is(ModTags.Items.SHOTGUN)) {
SoundTool.playLocalSound(serverPlayer, ModSounds.SHELL_CASING_SHOTGUN.get(), (float) Math.max(0.75 - 0.12 * shooterHeight, 0), 1);

View file

@ -23,6 +23,7 @@ public class ModSounds {
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_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> TRIGGER_CLICK = REGISTRY.register("triggerclick", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "triggerclick")));
public static final RegistryObject<SoundEvent> HIT = REGISTRY.register("hit", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "hit")));

View file

@ -24,6 +24,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.*;
import net.minecraft.world.level.Level;
@ -77,12 +78,29 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
transformType = type;
}
private PlayState fireAnimPredicate(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 (ClientEventHandler.firePosTimer > 0 && ClientEventHandler.firePosTimer < 1.7) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.fire"));
}
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.trachelium.idle"));
}
private PlayState idlePredicate(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 (stack.getOrCreateTag().getInt("bolt_action_anim") > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.action"));
}
if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.trachelium.reload"));
}
@ -100,6 +118,8 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
var fireAnimController = new AnimationController<>(this, "fireAnimController", 0, this::fireAnimPredicate);
data.add(fireAnimController);
AnimationController<Trachelium> idleController = new AnimationController<>(this, "idleController", 3, this::idlePredicate);
data.add(idleController);
}
@ -127,6 +147,13 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
return stack;
}
@Override
public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int slot, boolean selected) {
super.inventoryTick(itemStack, world, entity, slot, selected);
var tag = itemStack.getOrCreateTag();
tag.putInt("bolt_action_time", tag.getBoolean("DA") ? 12 : 0);
}
@Override
public void setAnimationProcedure(String procedure) {
}

View file

@ -149,7 +149,10 @@ public class FireMessage {
}
private static void handleGunBolt(Player player, ItemStack stack) {
if (stack.getOrCreateTag().getInt("bolt_action_time") > 0 && stack.getOrCreateTag().getInt("ammo") > 0 && stack.getOrCreateTag().getInt("bolt_action_anim") == 0) {
if (stack.getOrCreateTag().getInt("bolt_action_time") > 0 && stack.getOrCreateTag().getInt("ammo") > (stack.is(ModTags.Items.REVOLVER) ? -1 : 0) && stack.getOrCreateTag().getInt("bolt_action_anim") == 0
&& !(stack.getOrCreateTag().getBoolean("is_normal_reloading") || stack.getOrCreateTag().getBoolean("is_empty_reloading"))
&& !stack.getOrCreateTag().getBoolean("reloading")
&& !stack.getOrCreateTag().getBoolean("charging")) {
if (!player.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getBoolean("need_bolt_action")) {
stack.getOrCreateTag().putInt("bolt_action_anim", stack.getOrCreateTag().getInt("bolt_action_time") + 1);
GunEventHandler.playGunBoltSounds(player);

View file

@ -4,9 +4,11 @@ import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.tools.GunsTool;
import net.minecraft.ChatFormatting;
import net.minecraft.core.Holder;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.game.ClientboundSoundPacket;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
@ -121,6 +123,20 @@ public class FireModeMessage {
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 1f, 1f, serverPlayer.level().random.nextLong()));
}
}
if (stack.getItem() == ModItems.TRACHELIUM.get() && !tag.getBoolean("need_bolt_action")) {
if (!tag.getBoolean("DA")) {
tag.putBoolean("DA", true);
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD), true);
} else {
tag.putBoolean("DA", false);
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD), true);
}
if (!tag.getBoolean("canImmediatelyShoot")) {
tag.putBoolean("need_bolt_action", true);
}
}
}
private static void playChangeModeSound(Player player) {

View file

@ -59,6 +59,7 @@ public class ReloadMessage {
&& !stack.getOrCreateTag().getBoolean("sentinel_is_charging")
&& !(player.getCooldowns().isOnCooldown(stack.getItem()))
&& GunsTool.getGunIntTag(stack, "ReloadTime") == 0
&& stack.getOrCreateTag().getInt("bolt_action_anim") == 0
) {
CompoundTag tag = stack.getOrCreateTag();

View file

@ -72,10 +72,15 @@ public class ShootMessage {
stack.getOrCreateTag().putBoolean("HoldOpen", true);
}
if (stack.is(ModTags.Items.REVOLVER)) {
stack.getOrCreateTag().putBoolean("canImmediatelyShoot", false);
}
/*
判断是否为栓动武器bolt_action_time > 0并在开火后给一个需要上膛的状态
*/
if (stack.getOrCreateTag().getDouble("bolt_action_time") > 0 && stack.getOrCreateTag().getInt("ammo") > 1) {
if (stack.getOrCreateTag().getDouble("bolt_action_time") > 0 && stack.getOrCreateTag().getInt("ammo") > (stack.is(ModTags.Items.REVOLVER) ? 0 : 1)) {
stack.getOrCreateTag().putBoolean("need_bolt_action", true);
}

View file

@ -2,6 +2,7 @@ package net.mcreator.superbwarfare.tools;
import com.google.gson.stream.JsonReader;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.network.ModVariables;
import net.mcreator.superbwarfare.network.message.GunsDataMessage;
import net.minecraft.nbt.CompoundTag;
@ -108,8 +109,8 @@ public class GunsTool {
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
// 空仓换弹的栓动武器应该在换单后取消待上膛标记
if (ammo == 0 && tag.getDouble("bolt_action_time") > 0) {
tag.putDouble("need_bolt_action", 0);
if (ammo == 0 && tag.getDouble("bolt_action_time") > 0 && !stack.is(ModTags.Items.REVOLVER)) {
tag.putBoolean("need_bolt_action", false);
}
int playerAmmo = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) {

View file

@ -5,6 +5,186 @@
"loop": true,
"animation_length": 2
},
"animation.trachelium.fire": {
"loop": "hold_on_last_frame",
"animation_length": 0.3,
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.025": {
"vector": [-1.7, 0.3, -0.4]
},
"0.0583": {
"vector": [-1, 0.4, -1.3]
},
"0.075": {
"vector": [0.15, 0.9, -1.5]
},
"0.0917": {
"vector": [2.21, -0.1, 0.19]
},
"0.1167": {
"vector": [5.63, 0.6, -0.99]
},
"0.15": {
"vector": [4.32156, -0.4, 0.7]
},
"0.1667": {
"vector": [0.32453, 0.2, -0.4]
},
"0.2": {
"vector": [0, 0, 0]
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.0167": {
"vector": [0, 0, 2.36]
},
"0.0417": {
"vector": [0, 0, 3.9]
},
"0.075": {
"vector": [0, 0, 3.52]
},
"0.1167": {
"vector": [0, 0, 1.78]
},
"0.1333": {
"vector": [0, 0, 0.86]
},
"0.1583": {
"vector": [0, 0, -1.49]
},
"0.2": {
"vector": [0, 0, 0]
}
}
}
}
},
"animation.trachelium.action": {
"animation_length": 0.5083,
"bones": {
"0": {
"rotation": {
"0.05": {
"vector": [0, 0, 0]
},
"0.15": {
"vector": [0.5, 0, -2.9]
},
"0.175": {
"vector": [1, 0, -3.5]
},
"0.2583": {
"vector": [-2.53995, 0.20034, 2.24652]
},
"0.2833": {
"vector": [-1.93995, 0.20034, 2.94652]
},
"0.3333": {
"vector": [0.51005, 0.20034, 2.24652]
},
"0.3667": {
"vector": [0.28, 0.11, -0.25]
},
"0.4083": {
"vector": [0, 0, 0]
}
},
"position": {
"0.05": {
"vector": [0, 0, 0]
},
"0.15": {
"vector": [-0.08203, 0.05391, -0.2125]
},
"0.175": {
"vector": [-0.08203, 0.05391, -0.2125]
},
"0.275": {
"vector": [-0.08, -0.16062, 0.19609]
},
"0.35": {
"vector": [-0.04, 0.03453, -0.25781]
},
"0.4083": {
"vector": [0, 0, 0]
}
}
},
"Righthand": {
"rotation": {
"0.05": {
"vector": [0, 0, 0]
},
"0.15": {
"vector": [9.25661, -2.60314, -8.03598]
},
"0.175": {
"vector": [9.25661, -2.60314, -8.03598]
},
"0.275": {
"vector": [6.62181, -9.01404, 5.45909]
},
"0.3167": {
"vector": [6.62181, -9.01404, 5.45909]
},
"0.4083": {
"vector": [0, 0, 0]
}
},
"position": {
"0.05": {
"vector": [0, 0, 0]
},
"0.15": {
"vector": [0, 0, -0.26562]
},
"0.175": {
"vector": [0, 0, -0.26562]
},
"0.275": {
"vector": [0, 0.32422, 0.03]
},
"0.3167": {
"vector": [0, 0.32422, 0.03]
},
"0.4083": {
"vector": [0, 0, 0]
}
}
},
"camera": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.0833": {
"vector": [0.2, 0, -0.11]
},
"0.1833": {
"vector": [-0.2, 0, -0.4]
},
"0.225": {
"vector": [-0.5, 0, 1.1]
},
"0.2917": {
"vector": [0.1, 0, -0.3]
},
"0.4083": {
"vector": [0, 0, 0]
}
}
}
}
},
"animation.trachelium.run": {
"loop": true,
"animation_length": 0.8,
@ -168,7 +348,7 @@
},
"animation.trachelium.reload": {
"loop": "hold_on_last_frame",
"animation_length": 3,
"animation_length": 3.5,
"override_previous_animation": true,
"bones": {
"0": {
@ -177,54 +357,90 @@
"vector": [0, 0, 0]
},
"0.1": {
"vector": [2.64495, 4.4993, 8.64601]
"vector": [-0.98, -15.81, 2.73]
},
"0.3667": {
"vector": [-33.70972, -24.17219, 20.41347],
"easing": "easeInElastic"
"0.2": {
"vector": [-22.95716, -31.61838, 5.46875]
},
"0.45": {
"vector": [7.74809, -24.29902, 7.14616],
"easing": "easeInElastic"
"0.3333": {
"vector": [-23.83236, -30.14076, 4.58448]
},
"0.4333": {
"vector": [-4.85, -32.43, 9.53]
},
"0.4833": {
"vector": [-15.88, -31.72, 13.35]
},
"0.5333": {
"vector": [-8.83084, -24.67077, 11.42483]
"vector": [-20.43328, -31.52, 14.43]
},
"0.6833": {
"vector": [2.56949, -21.38854, 18.06267]
"0.6": {
"vector": [-18.74, -31.76, 15.86]
},
"1.0833": {
"vector": [-1.24319, -21.1341, 13.91293],
"easing": "easeInElastic"
"0.65": {
"vector": [-16.2, -31.76, 18.01]
},
"1.6667": {
"vector": [6.3044, -19.42656, 12.78882],
"easing": "easeInOutSine"
"0.8167": {
"vector": [-14.65558, -30.39396, 20.50989]
},
"1.95": {
"vector": [-7.55554, -11.47376, 25.02359]
"1.0": {
"vector": [-13.65609, -30.39, 20.62]
},
"2.1": {
"vector": [13.29131, -11.23491, 11.21523]
"1.1833": {
"vector": [-12.467, -30.53343, 20.73379]
},
"2.2167": {
"vector": [17.66129, 6.45403, 65.11217]
"1.2833": {
"vector": [-12.13, -30.61, 20.8]
},
"2.3167": {
"vector": [-2.20462, 3.23978, 75.37563]
"1.3667": {
"vector": [-13.07, -30.68, 20.85]
},
"2.45": {
"vector": [-28.50953, 0.15452, 59.49255]
"1.4833": {
"vector": [-13.48484, -30.76812, 20.92]
},
"2.5667": {
"vector": [-20.68198, -0.81121, 18.24901],
"easing": "easeInElastic"
"1.7167": {
"vector": [-18.71692, -28.36003, 28.75979]
},
"2.7333": {
"vector": [-1.9968, -4.60753, 3.70559],
"easing": "easeOutSine"
"1.8167": {
"vector": [-19.72248, -27.70157, 30.8993]
},
"2.85": {
"1.9167": {
"vector": [-14.89591, -25.98728, 30.1127]
},
"1.9833": {
"vector": [-16.29591, -25.98728, 30.1127]
},
"2.0667": {
"vector": [13.71, -23.39, 26.75]
},
"2.1167": {
"vector": [10.10755, -21.83078, 28.09564]
},
"2.25": {
"vector": [11.69216, -11.8723, 27.23836]
},
"2.3667": {
"vector": [8.62, -11.12, 25.35]
},
"2.4333": {
"vector": [5.92, -11.12, 25.35]
},
"2.55": {
"vector": [-31.81361, -2.01701, -5.64172]
},
"2.7167": {
"vector": [9.83524, -4.89714, 3.97143]
},
"2.8167": {
"vector": [-4.18643, 1.45786, 1.63393]
},
"2.9": {
"vector": [0.32, -0.58, -0.26]
},
"3.0": {
"vector": [0.06, 0.38, -0.26]
},
"3.0833": {
"vector": [0, 0, 0]
}
},
@ -232,183 +448,196 @@
"0.0": {
"vector": [0, 0, 0]
},
"0.1": {
"vector": [0.39, -0.22, 0.27]
"0.0833": {
"vector": [0.29, 0.1, 0.32]
},
"0.1667": {
"vector": [1.3, 0.2, 2]
"0.2": {
"vector": [0.7, 0, 2.65]
},
"0.2333": {
"vector": [1.3, 0, 2],
"easing": "easeInElastic"
"0.2833": {
"vector": [0.7, 0.1, 2.65]
},
"0.3167": {
"vector": [1.26, 0.2, 3.94]
"0.35": {
"vector": [0.79, 0, 2.64]
},
"0.4": {
"vector": [1.22, -0.41, 3.88]
"0.3833": {
"vector": [0.9, -1.3, 2.05]
},
"0.5": {
"vector": [0.77338, -0.59211, 4.59221]
"0.45": {
"vector": [0.82, 0.42, 2.27]
},
"0.5333": {
"vector": [0.72, 0.1, 2.55]
},
"0.6333": {
"vector": [1.11439, -1.80641, 4.08348]
"vector": [0.9, -0.3, 2.65]
},
"1.1333": {
"vector": [0.93, -1.64, 4.74],
"easing": "easeInElastic"
"0.8167": {
"vector": [0.9, 0.11, 2.63]
},
"1.7333": {
"vector": [0.69, -2.21, 4.29],
"easing": "easeInElastic"
"1.1": {
"vector": [0.7, 0.05, 2.8]
},
"1.95": {
"vector": [0.54, -3.44, 3.34],
"easing": "easeInElastic"
"1.1833": {
"vector": [0.71192, -0.02643, 2.74879]
},
"1.3333": {
"vector": [0.77, 0.03, 2.78]
},
"1.6333": {
"vector": [0.9, -0.07, 2.54]
},
"1.7667": {
"vector": [0.9, -0.11, 2.53]
},
"1.8667": {
"vector": [0.9, -0.11, 2.53]
},
"1.9167": {
"vector": [0.92, -0.1, 2.51]
},
"1.9833": {
"vector": [0.92, -0.1, 2.51]
},
"2.0667": {
"vector": [0.41, -0.84, 2.38]
},
"2.1": {
"vector": [-0.18, -3.16, 2.89]
"vector": [0.48, -0.79, 2.33]
},
"2.2167": {
"vector": [-2.91, -3.68, 2.49]
"2.25": {
"vector": [-0.09, -0.94, 0.8]
},
"2.3": {
"vector": [2.95, -2.99, 0.99],
"easing": "easeInOutSine"
"2.3833": {
"vector": [-0.04, -1.15, 0.38]
},
"2.45": {
"vector": [-0.65, -2.44, 0.35],
"easing": "easeInOutSine"
},
"2.5333": {
"vector": [-0.17388, -0.45765, 4.31917],
"easing": "easeInOutSine"
"2.5": {
"vector": [0.12, 2.84, 2.57]
},
"2.6667": {
"vector": [-0.1, 0, 3.83],
"easing": "easeInOutSine"
"vector": [-0.01, -0.31, 0.45]
},
"2.7667": {
"vector": [0, 0, -0.6]
"2.7833": {
"vector": [0.04, 0.28, 0.65]
},
"2.85": {
"2.8667": {
"vector": [0.02, -0.13, -0.15]
},
"2.95": {
"vector": [0.01, 0.02, 0.11]
},
"3.0833": {
"vector": [0, 0, 0]
}
}
},
"Lefthand": {
"rotation": {
"0.0": {
"0.0167": {
"vector": [0, 0, 0]
},
"0.0833": {
"vector": [5.24182, 26.25749, -41.13684]
"0.1": {
"vector": [15.57, 22.74, -22.32]
},
"0.2": {
"vector": [28.02939, 40.92624, -40.18345]
"0.1667": {
"vector": [15.57, 22.74, -22.32]
},
"0.2333": {
"0.25": {
"vector": [28.02939, 40.92624, -40.18345]
},
"0.3333": {
"vector": [28.02939, 40.92624, -40.18345]
},
"0.4833": {
"vector": [5.713, -40.7297, -4.70082],
"easing": "easeInElastic"
"0.5": {
"vector": [70.40511, 15.20984, -32.48485]
},
"0.6333": {
"vector": [-73.9758, 0.7509, 15.72011]
"0.7667": {
"vector": [75.78, 19.66, -28.8]
},
"0.95": {
"vector": [-5.13953, 1.24896, -18.89712]
"1.4333": {
"vector": [120.93211, 77.24245, 7.44615]
},
"1.45": {
"vector": [-5.13953, 1.24896, -18.89712]
"1.85": {
"vector": [120.93211, 77.24245, 7.44615]
},
"1.5167": {
"vector": [2.1677, 33.7523, -72.39051]
"2.0833": {
"vector": [149.6433, 82.32769, 37.61176]
},
"1.8833": {
"vector": [8.55603, 31.72118, -75.59208],
"easing": "easeInOutSine"
"2.2": {
"vector": [162.38, 88.17, 51.91]
},
"1.9167": {
"vector": [6.85568, 25.40898, -80.79497],
"easing": "easeInOutSine"
"2.25": {
"vector": [142.75176, 64.4757, 88.43566]
},
"2.0": {
"vector": [8.55597, 31.72118, -75.59209],
"easing": "easeInSine"
},
"2.0167": {
"vector": [8.55597, 31.72118, -75.59209],
"easing": "easeInSine"
},
"2.3667": {
"vector": [10.8529, 13.8217, -25.46728]
},
"2.5": {
"vector": [-12.2568, 6.1776, -20.01117],
"easing": "easeInOutSine"
"2.6833": {
"vector": [20.19, -8.37, -5.53]
},
"2.7167": {
"vector": [16.10283, -10.80334, -8.6593]
},
"2.8": {
"vector": [0, 0, 0]
}
},
"position": {
"0.0": {
"0.0167": {
"vector": [0, 0, 0]
},
"0.1167": {
"vector": [5.8, 1.9, -5.7]
"0.1": {
"vector": [1.98, 1.49, -5.17]
},
"0.2333": {
"0.1667": {
"vector": [1.98, 1.49, -5.17]
},
"0.25": {
"vector": [3.57, 2.69, -9.3]
},
"0.3333": {
"vector": [3.57, 2.69, -9.3]
},
"0.5": {
"vector": [4.8, -1.6, -13.2],
"easing": "easeInElastic"
"vector": [5.63703, 2.25038, -18.27742]
},
"0.6333": {
"vector": [3.51, -6.73, -5.65]
"0.7667": {
"vector": [12.77, -7.04, -26.4]
},
"0.95": {
"vector": [15.05, -3.24, -7.28]
"0.9": {
"vector": [62.72026, -72.10097, -83.2894]
},
"1.45": {
"vector": [15.05, -3.24, -7.28]
"1.2167": {
"vector": [25.05031, -16.00864, -74.60655]
},
"1.5167": {
"vector": [10.25196, -0.0237, 9.09593]
"1.4333": {
"vector": [6.26, 3.34, -12.07]
},
"1.8833": {
"vector": [3.92576, 11.04238, -5.00967],
"easing": "easeInOutSine"
"1.85": {
"vector": [6.26, 3.34, -12.07]
},
"1.9167": {
"vector": [3.56467, 11.49281, -5.45322],
"easing": "easeInOutSine"
"2.0833": {
"vector": [6.25794, 3.33615, -12.07004]
},
"2.0": {
"vector": [4.04099, 8.06781, -5.89136],
"easing": "easeInSine"
"2.2": {
"vector": [16.12882, 0.1449, -13.99625]
},
"2.0167": {
"vector": [4.04099, 8.06781, -5.89136],
"easing": "easeInSine"
"2.25": {
"vector": [24.77211, -41.56863, -28.71227]
},
"2.3667": {
"vector": [4.41916, 2.17208, -2.82265]
"2.4333": {
"vector": [42.42664, -58.54661, -66.23571]
},
"2.5": {
"vector": [4.94, 3.74, -0.28],
"easing": "easeInOutSine"
"2.4833": {
"vector": [54.67241, -99.40907, -1.59464]
},
"2.5667": {
"vector": [23.92042, 44.9283, 220.4751]
},
"2.6833": {
"vector": [14.37025, -4.55913, -0.16989]
},
"2.7167": {
"vector": [10.87316, -3.67918, -2.11035]
},
"2.8": {
"vector": [0, 0, 0]
}
}
@ -425,15 +654,15 @@
"vector": [77.5, 0, 0],
"easing": "easeInElastic"
},
"2.1333": {
"2.1833": {
"vector": [77.5, 0, 0]
},
"2.3833": {
"2.4333": {
"vector": [77.5, 0, 0]
},
"2.5": {
"2.5167": {
"vector": [0, 0, 0],
"easing": "easeInElastic"
"easing": "linear"
},
"2.9833": {
"vector": [0, 0, 0]
@ -445,19 +674,28 @@
"0.0": {
"vector": [0, 0, 0]
},
"1.3833": {
"1.2": {
"vector": [0, 0, 0]
},
"1.45": {
"1.2167": {
"vector": [0, 0, 0]
},
"1.5167": {
"1.2833": {
"vector": [0, 0, 0]
},
"1.35": {
"vector": [-20.18076, 7.51466, -2.75196]
},
"1.8833": {
"vector": [-13, 0, 0],
"1.45": {
"vector": [-16.5, 8.23, -2.32]
},
"1.7333": {
"vector": [3, 12, 0],
"easing": "easeInOutSine"
},
"1.8": {
"vector": [2.10055, 1.49723, -0.25877]
},
"1.9167": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
@ -471,22 +709,37 @@
"0.0": {
"vector": [0, 0, 0]
},
"1.3833": {
"1.2": {
"vector": [0, 0, 0]
},
"1.4167": {
"vector": [0, 0, -37]
"1.2167": {
"vector": [-1, 0, 0]
},
"1.25": {
"vector": [-1, 0, -37]
},
"1.2833": {
"vector": [31.2, -34.3, -41.8]
},
"1.35": {
"vector": [36.94311, -20.71144, -26.21317]
},
"1.45": {
"vector": [3.2, -17.3, 5.2]
"vector": [26.96569, -15.32565, -17.47271]
},
"1.5167": {
"vector": [8.48251, -15.17326, -4.63507]
"1.6333": {
"vector": [7.9, -4.58, 0.72]
},
"1.8833": {
"vector": [0, -0.48719, 2.78752],
"1.7333": {
"vector": [0.8, 0, 2.1],
"easing": "easeInOutSine"
},
"1.8": {
"vector": [0.26, 0, 1.89]
},
"1.8667": {
"vector": [0.11, 0, 1.69]
},
"1.9167": {
"vector": [0, 0, 1.6],
"easing": "easeInOutSine"
@ -1222,44 +1475,22 @@
},
"gun": {
"rotation": {
"0.3667": {
"2.0333": {
"vector": [0, 0, 0]
},
"0.45": {
"vector": [11, 0, 0]
"2.3": {
"vector": [10.1, 0, 0]
},
"0.5333": {
"vector": [0, 0, 0]
"2.4333": {
"vector": [21.1, 0, 0]
},
"2.1667": {
"vector": [0, 0, 0]
"2.6333": {
"vector": [-39.3, 0, 0]
},
"2.3167": {
"vector": [58.09, 0, 0],
"easing": "easeInElastic"
"2.7167": {
"vector": [4.4, 0, 0]
},
"2.45": {
"vector": [-15, 0, 0]
},
"2.5167": {
"vector": [-35.5, 0, 0]
},
"2.6167": {
"vector": [0, 0, 0]
}
},
"position": {
"2.1667": {
"vector": [0, 0, 0]
},
"2.3167": {
"vector": [0.3, -1.00324, -0.57444],
"easing": "easeInElastic"
},
"2.45": {
"vector": [0, 1.11401, 1.0242]
},
"2.5167": {
"2.8167": {
"vector": [0, 0, 0]
}
}

File diff suppressed because it is too large Load diff

View file

@ -419,5 +419,7 @@
"des.superbwarfare.target.pos": "Target Position",
"des.superbwarfare.target.warn": "迫击炮无法瞄准该位置",
"des.superbwarfare.tips.edit": "Press %1$s key to edit this weapon",
"commands.ammo.no_permission": "Permission denied"
"commands.ammo.no_permission": "Permission denied",
"des.superbwarfare.revolver.da": "DA",
"des.superbwarfare.revolver.sa": "SA"
}

View file

@ -419,5 +419,7 @@
"des.superbwarfare.target.pos": "目标坐标:",
"des.superbwarfare.target.warn": "迫击炮无法瞄准该位置",
"des.superbwarfare.tips.edit": "按下 %1$s 键进行改装",
"commands.ammo.no_permission": "权限不足"
"commands.ammo.no_permission": "权限不足",
"des.superbwarfare.revolver.da": "双动",
"des.superbwarfare.revolver.sa": "单动"
}

View file

@ -1,107 +1,23 @@
{
"credit": "Made with Blockbench",
"parent": "builtin/entity",
"gui_light": "front",
"texture_size": [
64,
64
],
"display": {
"thirdperson_righthand": {
"translation": [
0,
-0.25,
0
],
"scale": [
0.8,
0.8,
0.8
]
},
"thirdperson_lefthand": {
"translation": [
0,
-0.25,
0
],
"scale": [
0.8,
0.8,
0.8
]
},
"firstperson_righthand": {
"rotation": [
0,
0,
5
],
"translation": [
-3.75,
-2.25,
-9.5
],
"scale": [
2,
2,
2
-7.7,
4.2,
0.75
]
},
"firstperson_lefthand": {
"translation": [
-5.75,
-60,
2
]
},
"ground": {
"translation": [
"scale": [
0,
1,
0
],
"scale": [
0.8,
0.8,
0.8
]
},
"gui": {
"rotation": [
30,
-145,
0
],
"translation": [
-2.25,
0.25,
0
],
"scale": [
1.3,
1.3,
1.3
]
},
"head": {
"translation": [
0,
10.25,
-1.25
]
},
"fixed": {
"rotation": [
90,
-45,
90
],
"translation": [
-2.25,
-1.25,
0
],
"scale": [
1.1,
1.1,
1.1
]
}
}

View file

@ -63,6 +63,14 @@
}
]
},
"trachelium_bolt": {
"sounds": [
{
"name": "superbwarfare:trachelium/trachelium_shift",
"stream": false
}
]
},
"hunting_rifle_fire_1p": {
"sounds": [
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB