diff --git a/src/main/java/net/mcreator/superbwarfare/client/layer/JavelinLayer.java b/src/main/java/net/mcreator/superbwarfare/client/layer/JavelinLayer.java new file mode 100644 index 000000000..9b3b19de5 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/client/layer/JavelinLayer.java @@ -0,0 +1,27 @@ +package net.mcreator.superbwarfare.client.layer; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.item.gun.JavelinItem; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class JavelinLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/javelin_e.png"); + + public JavelinLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, JavelinItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.eyes(LAYER); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/item/JavelinItemModel.java b/src/main/java/net/mcreator/superbwarfare/client/model/item/JavelinItemModel.java new file mode 100644 index 000000000..825ad2e49 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/client/model/item/JavelinItemModel.java @@ -0,0 +1,149 @@ +package net.mcreator.superbwarfare.client.model.item; + +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.init.ModTags; +import net.mcreator.superbwarfare.item.gun.JavelinItem; +import net.mcreator.superbwarfare.network.ModVariables; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import software.bernie.geckolib.core.animatable.model.CoreGeoBone; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.model.GeoModel; + +public class JavelinItemModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(JavelinItem animatable) { + return new ResourceLocation(ModUtils.MODID, "animations/javelin.animation.json"); + } + + @Override + public ResourceLocation getModelResource(JavelinItem animatable) { + return new ResourceLocation(ModUtils.MODID, "geo/javelin.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(JavelinItem animatable) { + return new ResourceLocation(ModUtils.MODID, "textures/item/javelin.png"); + } + + @Override + public void setCustomAnimations(JavelinItem animatable, long instanceId, AnimationState animationState) { + CoreGeoBone gun = getAnimationProcessor().getBone("bone"); + CoreGeoBone shen = getAnimationProcessor().getBone("shen"); + CoreGeoBone javelin = getAnimationProcessor().getBone("javelin"); + CoreGeoBone screen = getAnimationProcessor().getBone("screen"); + CoreGeoBone seek = getAnimationProcessor().getBone("seek"); + CoreGeoBone top = getAnimationProcessor().getBone("top"); + CoreGeoBone dir = getAnimationProcessor().getBone("dir"); + CoreGeoBone missile_green = getAnimationProcessor().getBone("missile_green"); + CoreGeoBone missile_red = getAnimationProcessor().getBone("missile_red"); + + Player player = Minecraft.getInstance().player; + if (player == null) return; + ItemStack stack = player.getMainHandItem(); + if (!stack.is(ModTags.Items.GUN)) return; + + double p = player.getPersistentData().getDouble("zoom_pos"); + double zp = player.getPersistentData().getDouble("zoom_pos_z"); + + top.setHidden(!stack.getOrCreateTag().getBoolean("TopMode")); + dir.setHidden(stack.getOrCreateTag().getBoolean("TopMode")); + missile_green.setHidden(!(stack.getOrCreateTag().getInt("ammo") > 0)); + missile_red.setHidden(stack.getOrCreateTag().getInt("ammo") > 0); + seek.setHidden(!(stack.getOrCreateTag().getInt("SeekTime") > 1 && stack.getOrCreateTag().getInt("SeekTime") < 40 )); + + gun.setPosX(1.62f * (float) p); + gun.setPosY(6.3f * (float) p - (float) (0.2f * zp)); + gun.setPosZ(22.95f * (float) p + (float) (0.3f * zp)); + gun.setScaleZ(1f - (0.74f * (float) p)); + gun.setRotZ(-4.75f * Mth.DEG_TO_RAD * (float) p + (float) (0.02f * zp)); + + javelin.setHidden(gun.getPosX() > 1.55); + screen.setHidden(gun.getPosX() <= 1.55); + + stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.4)); + + double fp = player.getPersistentData().getDouble("fire_pos"); + double fr = player.getPersistentData().getDouble("fire_rot"); + + if ((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zooming) { + shen.setPosY(0.07f * (float) (fp + 2 * fr)); + shen.setPosZ(3.6f * (float) (fp + 0.54f * fr)); + shen.setRotX(0.02f * (float) (fp + fr)); + shen.setRotZ(0f); + } else { + shen.setPosY(0.28f * (float) (fp + 2 * fr)); + shen.setPosZ(3.8f * (float) (fp + 0.54f * fr)); + shen.setRotX(0.17f * (float) (0.18f * fp + fr)); + shen.setRotZ(-0.04f * (float) (fp + 1.3 * fr)); + } + shen.setPosX((float)(0.75f * fr * (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).recoilHorizon * fp)); + + CoreGeoBone root = getAnimationProcessor().getBone("root"); + + float PosX = (float) player.getPersistentData().getDouble("gun_move_posX"); + float PosY = (float) player.getPersistentData().getDouble("gun_move_posY"); + + double y = player.getPersistentData().getDouble("y"); + double x = player.getPersistentData().getDouble("x"); + + root.setPosX(PosX); + root.setPosY((float) y + PosY); + root.setRotX((float) x); + + float RotZ = (float) player.getPersistentData().getDouble("gun_move_rotZ"); + + root.setRotY(0.2f * PosX); + + root.setRotZ(0.2f * PosX + RotZ); + + CoreGeoBone move = getAnimationProcessor().getBone("move"); + + double m = player.getPersistentData().getDouble("move"); + + double vy = player.getPersistentData().getDouble("vy"); + + move.setPosX(9.3f * (float) m); + + move.setPosY(2f * (float) vy); + + double xRot = player.getPersistentData().getDouble("xRot"); + + double yRot = player.getPersistentData().getDouble("yRot"); + + double zRot = player.getPersistentData().getDouble("zRot"); + + move.setRotX(0.75f * Mth.DEG_TO_RAD * (float) xRot - 0.15f * (float) vy); + + move.setRotY(0.75f * Mth.DEG_TO_RAD * (float) yRot); + + move.setRotZ(2.7f * (float) m + Mth.DEG_TO_RAD * (float) zRot); + + CoreGeoBone camera = getAnimationProcessor().getBone("camera"); + CoreGeoBone main = getAnimationProcessor().getBone("0"); + var data = player.getPersistentData(); + float numR = (float) (1 - 0.98 * data.getDouble("zoom_time")); + float numP = (float) (1 - 0.97 * data.getDouble("zoom_time")); + + if (stack.getOrCreateTag().getInt("gun_reloading_time") > 0) { + main.setRotX(numR * main.getRotX()); + main.setRotY(numR * main.getRotY()); + main.setRotZ(numR * main.getRotZ()); + main.setPosX(numP * main.getPosX()); + main.setPosY(numP * main.getPosY()); + main.setPosZ(numP * main.getPosZ()); + camera.setRotX(numR * camera.getRotX()); + camera.setRotY(numR * camera.getRotY()); + camera.setRotZ(numR * camera.getRotZ()); + } + + player.getPersistentData().putDouble("camera_rot_x", Mth.RAD_TO_DEG * camera.getRotX()); + + player.getPersistentData().putDouble("camera_rot_y", Mth.RAD_TO_DEG * camera.getRotY()); + + player.getPersistentData().putDouble("camera_rot_z", Mth.RAD_TO_DEG * camera.getRotZ()); + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java b/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java new file mode 100644 index 000000000..d9979ed0c --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/JavelinMissileRenderer.java @@ -0,0 +1,54 @@ +package net.mcreator.superbwarfare.client.renderer.entity; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +import net.mcreator.superbwarfare.entity.JavelinMissileEntity; +import net.mcreator.superbwarfare.entity.model.JavelinMissileModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class JavelinMissileRenderer extends GeoEntityRenderer { + public JavelinMissileRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new JavelinMissileModel()); + this.shadowRadius = 0.1f; + } + + @Override + public RenderType getRenderType(JavelinMissileEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, JavelinMissileEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public void render(JavelinMissileEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { + poseStack.pushPose(); + if (entityIn.tickCount > 5) { + poseStack.mulPose(Axis.YP.rotationDegrees(90 - Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()))); + poseStack.mulPose(Axis.ZP.rotationDegrees(Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()) - 90)); + } else { + poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); + poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); + } + super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); + } + + @Override + protected float getDeathMaxRotation(JavelinMissileEntity entityLivingBaseIn) { + return 0.0F; + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/client/renderer/item/JavelinItemRenderer.java b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/JavelinItemRenderer.java new file mode 100644 index 000000000..4dbac6cad --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/client/renderer/item/JavelinItemRenderer.java @@ -0,0 +1,26 @@ +package net.mcreator.superbwarfare.client.renderer.item; + +import net.mcreator.superbwarfare.client.layer.JavelinLayer; +import net.mcreator.superbwarfare.client.model.item.JavelinItemModel; +import net.mcreator.superbwarfare.item.gun.JavelinItem; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.renderer.GeoItemRenderer; + +public class JavelinItemRenderer extends GeoItemRenderer { + public JavelinItemRenderer() { + super(new JavelinItemModel()); + this.addRenderLayer(new JavelinLayer(this)); + } + + @Override + public RenderType getRenderType(JavelinItem animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public ResourceLocation getTextureLocation(JavelinItem instance) { + return super.getTextureLocation(instance); + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java b/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java index ccf048a63..f6a7ae8c7 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/AmmoBarOverlay.java @@ -23,6 +23,8 @@ public class AmmoBarOverlay { private static final ResourceLocation SEMI = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/semi.png"); private static final ResourceLocation BURST = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/burst.png"); private static final ResourceLocation AUTO = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/auto.png"); + private static final ResourceLocation TOP = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/top.png"); + private static final ResourceLocation DIR = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/fire_mode/dir.png"); @SubscribeEvent(priority = EventPriority.NORMAL) public static void eventHandler(RenderGuiEvent.Pre event) { @@ -66,6 +68,10 @@ public class AmmoBarOverlay { // 渲染开火模式 ResourceLocation fireMode = getFireMode(stack); + if (stack.getItem() == ModItems.JAVELIN.get()) { + fireMode = stack.getOrCreateTag().getBoolean("TopMode")? TOP : DIR; + } + event.getGuiGraphics().blit(fireMode, w - 95, h - 21, @@ -166,7 +172,7 @@ public class AmmoBarOverlay { return ""; } - if (stack.getItem() == ModItems.M_79.get() || stack.getItem() == ModItems.RPG.get() || stack.getItem() == ModItems.TASER.get()) { + if (stack.getItem() == ModItems.M_79.get() || stack.getItem() == ModItems.RPG.get() || stack.getItem() == ModItems.TASER.get() || stack.getItem() == ModItems.JAVELIN.get() ) { return "" + stack.getOrCreateTag().getInt("max_ammo"); } @@ -198,6 +204,10 @@ public class AmmoBarOverlay { return "Yassin105 TBG"; } + if (stack.getItem() == ModItems.JAVELIN.get()) { + return "Javelin Missile"; + } + if (stack.getItem() == ModItems.TASER.get()) { return "Electrode Rod"; } diff --git a/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java new file mode 100644 index 000000000..7713b5d05 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java @@ -0,0 +1,294 @@ +package net.mcreator.superbwarfare.entity; + +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.init.ModDamageTypes; +import net.mcreator.superbwarfare.init.ModEntities; +import net.mcreator.superbwarfare.init.ModItems; +import net.mcreator.superbwarfare.init.ModSounds; +import net.mcreator.superbwarfare.network.message.ClientIndicatorMessage; +import net.mcreator.superbwarfare.tools.CustomExplosion; +import net.mcreator.superbwarfare.tools.ParticleTool; +import net.minecraft.commands.arguments.EntityAnchorArgument; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.ThrowableItemProjectile; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BellBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; + +public class JavelinMissileEntity extends ThrowableItemProjectile implements GeoEntity, AnimatedEntity { + public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.STRING); + public static final EntityDataAccessor TARGET_UUID = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.STRING); + public static final EntityDataAccessor TOP = SynchedEntityData.defineId(JavelinMissileEntity.class, EntityDataSerializers.BOOLEAN); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + + public String animationprocedure = "empty"; + + private float damage = 300f; + + public JavelinMissileEntity(EntityType type, Level world) { + super(type, world); + } + + public JavelinMissileEntity(LivingEntity entity, Level level, float damage) { + super(ModEntities.JAVELIN_MISSILE.get(), entity, level); + this.damage = damage; + } + + public JavelinMissileEntity(PlayMessages.SpawnEntity spawnEntity, Level level) { + this(ModEntities.JAVELIN_MISSILE.get(), level); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected Item getDefaultItem() { + return ModItems.JAVELIN_MISSILE.get(); + } + + public void setTargetUuid(String uuid) { + this.entityData.set(TARGET_UUID, uuid); + } + + public void setAttackMode(boolean mode) { + this.entityData.set(TOP, mode); + } + + @Override + protected void defineSynchedData() { + this.entityData.define(TARGET_UUID, "none"); + this.entityData.define(TOP, false); + } + + @Override + public boolean shouldRenderAtSqrDistance(double pDistance) { + return true; + } + + @Override + protected void onHitEntity(EntityHitResult result) { + Entity entity = result.getEntity(); + if (this.getOwner() instanceof LivingEntity living) { + if (!living.level().isClientSide() && living instanceof ServerPlayer player) { + living.level().playSound(null, living.blockPosition(), ModSounds.INDICATION.get(), SoundSource.VOICE, 1, 1); + + ModUtils.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new ClientIndicatorMessage(0, 5)); + } + } + + if (entity instanceof LivingEntity) { + entity.invulnerableTime = 0; + } + + entity.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage); + + if (this.tickCount > 1) { + if (this.level() instanceof ServerLevel) { + causeEntityHitExplode(entity); + } + } + + this.discard(); + } + + @Override + public boolean isNoGravity() { + return true; + } + + @Override + public void onHitBlock(BlockHitResult blockHitResult) { + super.onHitBlock(blockHitResult); + BlockPos resultPos = blockHitResult.getBlockPos(); + BlockState state = this.level().getBlockState(resultPos); + + if (state.getBlock() instanceof BellBlock bell) { + bell.attemptToRing(this.level(), resultPos, blockHitResult.getDirection()); + } + + if (this.tickCount > 1) { + if (this.level() instanceof ServerLevel) { + causeExplode(); + } + } + + this.discard(); + } + + @Override + public void tick() { + super.tick(); + Entity entity = this.level().getEntitiesOfClass(LivingEntity.class, this.getBoundingBox().inflate(512)) + .stream().filter(e -> e.getStringUUID().equals(entityData.get(TARGET_UUID))).findFirst().orElse(null); + + + if (this.tickCount == 6) { + if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) { + ParticleTool.sendParticle(serverLevel, ParticleTypes.CLOUD, this.xo, this.yo, this.zo, 15, 0.8, 0.8, 0.8, 0.01, true); + ParticleTool.sendParticle(serverLevel, ParticleTypes.CAMPFIRE_COSY_SMOKE, this.xo, this.yo, this.zo, 10, 0.8, 0.8, 0.8, 0.01, true); + } + } + + if (this.tickCount > 5) { + if (entity != null) { + if (entityData.get(TOP)) { + if (this.position().distanceTo(entity.position()) > 80) { + this.look(EntityAnchorArgument.Anchor.EYES, new Vec3(entity.getX(),entity.getY() + 50,entity.getZ())); + } else { + this.look(EntityAnchorArgument.Anchor.EYES, new Vec3(entity.getX(),entity.getEyeY() + 1,entity.getZ())); + } + } else { + this.look(EntityAnchorArgument.Anchor.EYES, new Vec3(entity.getX(),entity.getEyeY() + 1,entity.getZ())); + } + if (this.position().distanceTo(entity.position()) < 4) { + triggerExplode(entity); + this.discard(); + } + } + } + + if (this.tickCount > 6) { + this.setDeltaMovement(new Vec3( + 0.7f * this.getDeltaMovement().x + 1.3f * this.getLookAngle().x, + 0.7f * this.getDeltaMovement().y + 1.3f * this.getLookAngle().y, + 0.7f * this.getDeltaMovement().z + 1.3f * this.getLookAngle().z + )); + if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) { + ParticleTool.sendParticle(serverLevel, ParticleTypes.SMOKE, this.xo, this.yo, this.zo, 1, 0, 0, 0, 0, true); + } + } + + if (this.tickCount > 200 || this.isInWater()) { + if (this.level() instanceof ServerLevel) { + causeExplode(); + } + this.discard(); + } + } + + private void look(EntityAnchorArgument.Anchor pAnchor, Vec3 pTarget) { + Vec3 vec3 = pAnchor.apply(this); + double d0 = (pTarget.x - vec3.x) * 0.2; + double d1 = (pTarget.y - vec3.y) * 0.2; + double d2 = (pTarget.z - vec3.z) * 0.2; + double d3 = Math.sqrt(d0 * d0 + d2 * d2); + this.setXRot(Mth.wrapDegrees((float)(-(Mth.atan2(d1, d3) * 57.2957763671875)))); + this.setYRot(Mth.wrapDegrees((float)(Mth.atan2(d2, d0) * 57.2957763671875) - 90.0F)); + this.setYHeadRot(this.getYRot()); + this.xRotO = this.getXRot(); + this.yRotO = this.getYRot(); + } + + private void causeExplode() { + CustomExplosion explosion = new CustomExplosion(this.level(), this, + ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, + this.getX(), this.getY(), this.getZ(), 5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + explosion.explode(); + net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); + explosion.finalizeExplosion(false); + + ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); + } + + private void triggerExplode(Entity target) { + CustomExplosion explosion = new CustomExplosion(this.level(), this, + ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, + target.getX(), target.getY(), target.getZ(), 5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + explosion.explode(); + net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); + explosion.finalizeExplosion(false); + + ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); + } + + private void causeEntityHitExplode(Entity entity) { + CustomExplosion explosion = new CustomExplosion(this.level(), this, + ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, + entity.getX(), entity.getY(), entity.getZ(), 5f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + explosion.explode(); + net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); + explosion.finalizeExplosion(false); + ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); + this.discard(); + } + + private PlayState movementPredicate(AnimationState event) { + if (this.animationprocedure.equals("empty")) { + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.jvm.idle")); + } + return PlayState.STOP; + } + + private PlayState procedurePredicate(AnimationState event) { + if (!animationprocedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { + event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationprocedure)); + if (event.getController().getAnimationState() == AnimationController.State.STOPPED) { + this.animationprocedure = "empty"; + event.getController().forceAnimationReset(); + } + } else if (animationprocedure.equals("empty")) { + return PlayState.STOP; + } + return PlayState.CONTINUE; + } + + @Override + protected float getGravity() { + return 0F ; + } + + public String getSyncedAnimation() { + return this.entityData.get(ANIMATION); + } + + public void setAnimation(String animation) { + this.entityData.set(ANIMATION, animation); + } + + @Override + public void setAnimationProcedure(String procedure) { + this.animationprocedure = procedure; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate)); + data.add(new AnimationController<>(this, "procedure", 0, this::procedurePredicate)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/entity/RpgRocketEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/RpgRocketEntity.java index 314c9441d..cce149ebf 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/RpgRocketEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/RpgRocketEntity.java @@ -30,7 +30,6 @@ import net.minecraft.world.level.block.BellBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; import net.minecraftforge.network.PlayMessages; @@ -76,6 +75,11 @@ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntit return ModItems.ROCKET.get(); } + @Override + public boolean shouldRenderAtSqrDistance(double pDistance) { + return true; + } + @Override protected void onHitEntity(EntityHitResult result) { float damageMultiplier = 1 + 0.2f * this.monsterMultiplier; @@ -142,7 +146,7 @@ public class RpgRocketEntity extends ThrowableItemProjectile implements GeoEntit } } if (this.tickCount > 2) { - this.setDeltaMovement(new Vec3((1.03 * this.getDeltaMovement().x()), (1.03 * this.getDeltaMovement().y() - 0.02), (1.03 * this.getDeltaMovement().z()))); + this.setDeltaMovement(this.getDeltaMovement().multiply(1.03, 1.03, 1.03)); if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) { ParticleTool.sendParticle(serverLevel, ParticleTypes.SMOKE, this.xo, this.yo, this.zo, 1, 0, 0, 0, 0, true); diff --git a/src/main/java/net/mcreator/superbwarfare/entity/model/JavelinMissileModel.java b/src/main/java/net/mcreator/superbwarfare/entity/model/JavelinMissileModel.java new file mode 100644 index 000000000..a9d05c523 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/entity/model/JavelinMissileModel.java @@ -0,0 +1,24 @@ +package net.mcreator.superbwarfare.entity.model; + +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.entity.JavelinMissileEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class JavelinMissileModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(JavelinMissileEntity entity) { + return new ResourceLocation(ModUtils.MODID, "animations/javelin_missile.animation.json"); + } + + @Override + public ResourceLocation getModelResource(JavelinMissileEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/javelin_missile.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(JavelinMissileEntity entity) { + return new ResourceLocation(ModUtils.MODID, "textures/entity/javelin_missile.png"); + } + +} diff --git a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java index 6bb352184..835dc1173 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/GunEventHandler.java @@ -533,6 +533,9 @@ public class GunEventHandler { } else if (stack.getItem() == ModItems.RPG.get()) { stack.getOrCreateTag().putInt("ammo", 1); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots()); + } else if (stack.getItem() == ModItems.JAVELIN.get()) { + stack.getOrCreateTag().putInt("ammo", 1); + player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots()); } stack.getOrCreateTag().putBoolean("is_normal_reloading", false); diff --git a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java index 0e5caafa3..6746763a0 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java @@ -6,7 +6,6 @@ import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.network.ModVariables; import net.mcreator.superbwarfare.network.message.SimulationDistanceMessage; -import net.mcreator.superbwarfare.tools.SeekTool; import net.mcreator.superbwarfare.tools.SoundTool; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -18,8 +17,6 @@ import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -109,11 +106,11 @@ public class PlayerEventHandler { // 测试用 private static void handleWeaponSeek(Player player) { - if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zooming) { - Entity seekingEntity = SeekTool.seekEntity(player, player.level(), 256, 30); - if (seekingEntity instanceof LivingEntity _entity && !_entity.level().isClientSide()) - _entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 2, 0)); - } +// if (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zooming) { +// Entity seekingEntity = SeekTool.seekEntity(player, player.level(), 256, 30); +// if (seekingEntity instanceof LivingEntity _entity && !_entity.level().isClientSide()) +// _entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 2, 0)); +// } } private static void handleWeaponSway(Player player) { diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModEntities.java b/src/main/java/net/mcreator/superbwarfare/init/ModEntities.java index 6a0cc5983..38c1f9c6b 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModEntities.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModEntities.java @@ -53,6 +53,8 @@ public class ModEntities { EntityType.Builder.of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).setCustomClientFactory(HandGrenadeEntity::new).sized(0.3f, 0.3f)); public static final RegistryObject> RGO_GRENADE = register("projectile_rgo_grenade", EntityType.Builder.of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).setCustomClientFactory(RgoGrenadeEntity::new).sized(0.3f, 0.3f)); + public static final RegistryObject> JAVELIN_MISSILE = register("projectile_javelin_missile", + EntityType.Builder.of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).setCustomClientFactory(JavelinMissileEntity::new).sized(0.5f, 0.5f)); private static RegistryObject> register(String name, EntityType.Builder entityTypeBuilder) { diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModEntityRenderers.java b/src/main/java/net/mcreator/superbwarfare/init/ModEntityRenderers.java index 702938b9d..e51f87a1c 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModEntityRenderers.java @@ -26,5 +26,6 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.HAND_GRENADE_ENTITY.get(), HandGrenadeEntityRenderer::new); event.registerEntityRenderer(ModEntities.RGO_GRENADE.get(), RgoGrenadeRenderer::new); event.registerEntityRenderer(ModEntities.MLE_1934.get(), Mle1934Renderer::new); + event.registerEntityRenderer(ModEntities.JAVELIN_MISSILE.get(), JavelinMissileRenderer::new); } } diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java index fbe34b0fd..71a02df6d 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java @@ -56,6 +56,7 @@ public class ModItems { public static final RegistryObject MINIGUN = GUNS.register("minigun", Minigun::new); public static final RegistryObject M_79 = GUNS.register("m_79", M79Item::new); public static final RegistryObject RPG = GUNS.register("rpg", RpgItem::new); + public static final RegistryObject JAVELIN = GUNS.register("javelin", JavelinItem::new); public static final RegistryObject BOCEK = GUNS.register("bocek", BocekItem::new); /** @@ -74,6 +75,7 @@ public class ModItems { public static final RegistryObject CREATIVE_AMMO_BOX = AMMO.register("creative_ammo_box", CreativeAmmoBox::new); public static final RegistryObject TASER_ELECTRODE = AMMO.register("taser_electrode", () -> new Item(new Item.Properties())); public static final RegistryObject GRENADE_40MM = AMMO.register("grenade_40mm", () -> new Item(new Item.Properties())); + public static final RegistryObject JAVELIN_MISSILE = AMMO.register("javelin_missile", () -> new Item(new Item.Properties())); public static final RegistryObject MORTAR_SHELLS = AMMO.register("mortar_shells", () -> new Item(new Item.Properties())); public static final RegistryObject ROCKET = AMMO.register("rocket", Rocket::new); public static final RegistryObject HE_5_INCHES = AMMO.register("he_5_inches", He5Inches::new); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java b/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java index 154e7b10b..ba51771f0 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModSounds.java @@ -261,6 +261,14 @@ public class ModSounds { public static final RegistryObject MOSIN_NAGANT_LOOP = REGISTRY.register("mosin_nagant_loop", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "mosin_nagant_loop"))); public static final RegistryObject MOSIN_NAGANT_END = REGISTRY.register("mosin_nagant_end", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "mosin_nagant_end"))); + public static final RegistryObject JAVELIN_FIRE_1P = REGISTRY.register("javelin_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_fire_1p"))); + public static final RegistryObject JAVELIN_FIRE_3P = REGISTRY.register("javelin_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_fire_3p"))); + public static final RegistryObject JAVELIN_FAR = REGISTRY.register("javelin_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_far"))); + public static final RegistryObject JAVELIN_RELOAD_EMPTY = REGISTRY.register("javelin_reload_empty", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_reload_empty"))); + + public static final RegistryObject JAVELIN_LOCK = REGISTRY.register("javelin_lock", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_lock"))); + public static final RegistryObject JAVELIN_LOCKON = REGISTRY.register("javelin_lockon", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "javelin_lockon"))); + public static final RegistryObject MK_42_FIRE_1P = REGISTRY.register("mk_42_fire_1p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "mk_42_fire_1p"))); public static final RegistryObject MK_42_FIRE_3P = REGISTRY.register("mk_42_fire_3p", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "mk_42_fire_3p"))); public static final RegistryObject MK_42_FAR = REGISTRY.register("mk_42_far", () -> SoundEvent.createVariableRangeEvent(new ResourceLocation(ModUtils.MODID, "mk_42_far"))); diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModTabs.java b/src/main/java/net/mcreator/superbwarfare/init/ModTabs.java index 06ea8e86c..17dc08b2f 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModTabs.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModTabs.java @@ -53,6 +53,7 @@ public class ModTabs { output.accept(BocekItem.getGunInstance()); output.accept(M79Item.getGunInstance()); output.accept(RpgItem.getGunInstance()); + output.accept(JavelinItem.getGunInstance()); } ) .build()); diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/JavelinItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/JavelinItem.java new file mode 100644 index 000000000..6b6869a0f --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/JavelinItem.java @@ -0,0 +1,234 @@ +package net.mcreator.superbwarfare.item.gun; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.client.renderer.item.JavelinItemRenderer; +import net.mcreator.superbwarfare.init.ModItems; +import net.mcreator.superbwarfare.init.ModSounds; +import net.mcreator.superbwarfare.init.ModTags; +import net.mcreator.superbwarfare.item.AnimatedItem; +import net.mcreator.superbwarfare.tools.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.function.Consumer; + +public class JavelinItem extends GunItem implements GeoItem, AnimatedItem { + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + public String animationProcedure = "empty"; + public static ItemDisplayContext transformType; + + public JavelinItem() { + super(new Properties().stacksTo(1).rarity(RarityTool.LEGENDARY)); + } + + @Override + public void initializeClient(Consumer consumer) { + super.initializeClient(consumer); + consumer.accept(new IClientItemExtensions() { + private final BlockEntityWithoutLevelRenderer renderer = new JavelinItemRenderer(); + + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() { + return renderer; + } + + @Override + public HumanoidModel.ArmPose getArmPose(LivingEntity entityLiving, InteractionHand hand, ItemStack stack) { + return PoseTool.pose(entityLiving, hand, stack); + } + }); + } + + public void getTransformType(ItemDisplayContext type) { + transformType = type; + } + + private PlayState idlePredicate(AnimationState 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 (this.animationProcedure.equals("empty")) { + var tag = stack.getOrCreateTag(); + if (tag.getInt("draw_time") < 16) { + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.javelin.draw")); + } + + if (tag.getInt("fire_animation") > 0) { + return event.setAndContinue(RawAnimation.begin().thenPlay("animation.javelin.fire")); + } + + if (stack.getOrCreateTag().getBoolean("is_empty_reloading")) { + return event.setAndContinue(RawAnimation.begin().thenPlay("animation.javelin.reload")); + } + + if (player.isSprinting() && player.onGround() && player.getPersistentData().getDouble("noRun") == 0) { + if (player.hasEffect(MobEffects.MOVEMENT_SPEED)) { + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.javelin.run_fast")); + } else { + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.javelin.run")); + } + } + + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.javelin.idle")); + } + return PlayState.STOP; + } + + private PlayState procedurePredicate(AnimationState event) { + if (transformType != null && transformType.firstPerson()) { + if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { + event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); + if (event.getController().getAnimationState() == AnimationController.State.STOPPED) { + this.animationProcedure = "empty"; + event.getController().forceAnimationReset(); + } + } else if (this.animationProcedure.equals("empty")) { + return PlayState.STOP; + } + } + return PlayState.CONTINUE; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + var procedureController = new AnimationController<>(this, "procedureController", 0, this::procedurePredicate); + data.add(procedureController); + var idleController = new AnimationController<>(this, "idleController", 4, this::idlePredicate); + data.add(idleController); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + + @Override + public Multimap getAttributeModifiers(EquipmentSlot slot, ItemStack stack) { + Multimap map = super.getAttributeModifiers(slot, stack); + UUID uuid = new UUID(slot.toString().hashCode(), 0); + if (slot == EquipmentSlot.MAINHAND) { + map = HashMultimap.create(map); + map.put(Attributes.MOVEMENT_SPEED, + new AttributeModifier(uuid, ModUtils.ATTRIBUTE_MODIFIER, -0.14f, AttributeModifier.Operation.MULTIPLY_BASE)); + } + return map; + } + + @Override + public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { + TooltipTool.addGunTips(list, stack); + } + + public static int getAmmoCount(Player player) { + int sum = 0; + for (int i = 0; i < player.getInventory().getContainerSize(); ++i) { + ItemStack itemstack = player.getInventory().getItem(i); + if (check(itemstack)) { + sum += itemstack.getCount(); + } + } + return sum; + } + + @Override + public Set getReloadSound() { + return Set.of(ModSounds.JAVELIN_RELOAD_EMPTY.get(), + ModSounds.JAVELIN_LOCK.get(), + ModSounds.JAVELIN_LOCKON.get()); + } + + @Override + public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int slot, boolean selected) { + super.inventoryTick(itemStack, world, entity, slot, selected); + if (entity instanceof Player player) { + var tag = itemStack.getOrCreateTag(); + tag.putInt("max_ammo", getAmmoCount(player)); + + if (tag.getBoolean("Seeking")) { + Entity targetEntity = player.level().getEntitiesOfClass(LivingEntity.class, player.getBoundingBox().inflate(256)) + .stream().filter(e -> e.getStringUUID().equals(tag.getString("TargetEntity"))).findFirst().orElse(null); + Entity seekingEntity = SeekTool.seekEntity(player, player.level(), 256, 9); + if (seekingEntity != null && seekingEntity == targetEntity) { + tag.putInt("SeekTime", tag.getInt("SeekTime") + 1); + } else { + tag.putInt("SeekTime", 0); + } + + if (tag.getInt("SeekTime") == 1 && player instanceof ServerPlayer serverPlayer) { + SoundTool.playLocalSound(serverPlayer, ModSounds.JAVELIN_LOCK.get(), 2, 1); + } + + if (tag.getInt("SeekTime") > 40 && seekingEntity instanceof LivingEntity _entity && !_entity.level().isClientSide()) { + _entity.addEffect(new MobEffectInstance(MobEffects.GLOWING, 40, 0)); + if (player instanceof ServerPlayer serverPlayer) { + SoundTool.playLocalSound(serverPlayer, ModSounds.JAVELIN_LOCKON.get(), 2, 1); + } + } +// if (seekingEntity != null) { +// player.displayClientMessage(Component.literal(" " + tag.getInt("SeekTime")), true); +// } + } + } + } + + protected static boolean check(ItemStack stack) { + return stack.getItem() == ModItems.JAVELIN_MISSILE.get(); + } + + public static ItemStack getGunInstance() { + ItemStack stack = new ItemStack(ModItems.JAVELIN.get()); + GunsTool.initCreativeGun(stack, ModItems.JAVELIN.getId().getPath()); + return stack; + } + + @Override + public void setAnimationProcedure(String procedure) { + this.animationProcedure = procedure; + } + + @Override + public ResourceLocation getGunIcon() { + return new ResourceLocation(ModUtils.MODID, "textures/gun_icon/javelin_icon.png"); + } + + @Override + public String getGunDisplayName() { + return "FGM-148"; + } +} \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java index 4170b93bc..aeeae3919 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java @@ -1,5 +1,6 @@ package net.mcreator.superbwarfare.network.message; +import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.entity.*; import net.mcreator.superbwarfare.event.GunEventHandler; import net.mcreator.superbwarfare.init.*; @@ -9,14 +10,19 @@ import net.mcreator.superbwarfare.perk.Perk; import net.mcreator.superbwarfare.perk.PerkHelper; import net.mcreator.superbwarfare.tools.ItemNBTTool; import net.mcreator.superbwarfare.tools.ParticleTool; +import net.mcreator.superbwarfare.tools.SeekTool; import net.mcreator.superbwarfare.tools.SoundTool; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.game.ClientboundStopSoundPacket; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.item.ItemStack; @@ -24,6 +30,7 @@ import net.minecraft.world.item.Items; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraftforge.network.NetworkEvent; +import org.joml.Vector3d; import java.util.function.Supplier; @@ -72,6 +79,19 @@ public class FireMessage { if (player.getMainHandItem().getItem() == ModItems.BOCEK.get()) { handleBowShoot(player); } + + if (player.getMainHandItem().getItem() == ModItems.JAVELIN.get()) { + var handItem = player.getMainHandItem(); + var tag = handItem.getOrCreateTag(); + handleJavelinFire(player); + tag.putBoolean("Seeking",false); + tag.putInt("SeekTime",0); + tag.putString("TargetEntity","none"); + if (player instanceof ServerPlayer serverPlayer) { + var clientboundstopsoundpacket = new ClientboundStopSoundPacket(new ResourceLocation(ModUtils.MODID, "javelin_lock"), SoundSource.PLAYERS); + serverPlayer.connection.send(clientboundstopsoundpacket); + } + } } } @@ -96,6 +116,16 @@ public class FireMessage { handleRpgFire(player); } + if (handItem.getItem() == ModItems.JAVELIN.get() && player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zooming && tag.getInt("ammo") > 0) { + Entity seekingEntity = SeekTool.seekEntity(player, player.level(), 256, 9); + if (seekingEntity != null) { + tag.putString("TargetEntity",seekingEntity.getStringUUID()); + tag.putBoolean("Seeking",true); + tag.putInt("SeekTime",0); + } + + } + if (tag.getInt("fire_mode") == 1) { player.getPersistentData().putBoolean("firing", false); tag.putInt("burst_fire", (int) tag.getDouble("burst_size")); @@ -431,4 +461,53 @@ public class FireMessage { tag.putInt("ammo", tag.getInt("ammo") - 1); } } + + private static void handleJavelinFire(Player player) { + if (player.isSpectator()) return; + + Level level = player.level(); + ItemStack mainHandItem = player.getMainHandItem(); + CompoundTag tag = mainHandItem.getOrCreateTag(); + + if (tag.getInt("SeekTime") < 40) return; + + float yRot = player.getYRot(); + if (yRot < 0) { + yRot += 360; + } + yRot = yRot + 90 % 360; + + var firePos = new Vector3d(0, -0.2, 0.15); + firePos.rotateZ(-player.getXRot() * Mth.DEG_TO_RAD); + firePos.rotateY(-yRot * Mth.DEG_TO_RAD); + + if (!level.isClientSide()) { + JavelinMissileEntity missileEntity = new JavelinMissileEntity(player, level, (float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple")); + missileEntity.setPos(player.getX() + firePos.x, player.getEyeY() + firePos.y, player.getZ() + firePos.z); + missileEntity.shoot(player.getLookAngle().x, player.getLookAngle().y + 0.3, player.getLookAngle().z, 3f, 1); + missileEntity.setTargetUuid(tag.getString("TargetEntity")); + missileEntity.setAttackMode(tag.getBoolean("TopMode")); + level.addFreshEntity(missileEntity); + } + + if (player.level() instanceof ServerLevel serverLevel) { + ParticleTool.sendParticle(serverLevel, ParticleTypes.CLOUD, player.getX() + 1.8 * player.getLookAngle().x, + player.getY() + player.getBbHeight() - 0.1 + 1.8 * player.getLookAngle().y, + player.getZ() + 1.8 * player.getLookAngle().z, + 30, 0.4, 0.4, 0.4, 0.005, true); + } + + player.getCooldowns().addCooldown(mainHandItem.getItem(), 10); + + if (player instanceof ServerPlayer serverPlayer) { + SoundTool.playLocalSound(serverPlayer, ModSounds.JAVELIN_FIRE_1P.get(), 2, 1); + serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.JAVELIN_FIRE_3P.get(), SoundSource.PLAYERS, 4, 1); + serverPlayer.level().playSound(null, serverPlayer.getOnPos(), ModSounds.JAVELIN_FAR.get(), SoundSource.PLAYERS, 12, 1); + } + + tag.putBoolean("shoot", true); + + tag.putInt("fire_animation", 2); + tag.putInt("ammo", tag.getInt("ammo") - 1); + } } diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java index c59339023..bbee43f13 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireModeMessage.java @@ -114,6 +114,10 @@ public class FireModeMessage { tag.putBoolean("start_sentinel_charge", true); } } + + if (mainHandItem.getItem() == ModItems.JAVELIN.get()) { + tag.putBoolean("TopMode", !tag.getBoolean("TopMode")); + } } } } diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/ZoomMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/ZoomMessage.java index 6117ca053..5bb1ef4c9 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/ZoomMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/ZoomMessage.java @@ -1,11 +1,16 @@ package net.mcreator.superbwarfare.network.message; +import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.entity.ICannonEntity; +import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.network.ModVariables; import net.mcreator.superbwarfare.tools.SoundTool; import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.protocol.game.ClientboundStopSoundPacket; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; import net.minecraftforge.network.NetworkEvent; @@ -60,6 +65,16 @@ public class ZoomMessage { if (player.isPassenger() && player.getVehicle() instanceof ICannonEntity) { SoundTool.playLocalSound(player, ModSounds.CANNON_ZOOM_OUT.get(), 2, 1); } + + if (player.getMainHandItem().getItem() == ModItems.JAVELIN.get()) { + var handItem = player.getMainHandItem(); + var tag = handItem.getOrCreateTag(); + tag.putBoolean("Seeking",false); + tag.putInt("SeekTime",0); + tag.putString("TargetEntity","none"); + var clientboundstopsoundpacket = new ClientboundStopSoundPacket(new ResourceLocation(ModUtils.MODID, "javelin_lock"), SoundSource.PLAYERS); + player.connection.send(clientboundstopsoundpacket); + } } } }); diff --git a/src/main/resources/assets/superbwarfare/animations/javelin.animation.json b/src/main/resources/assets/superbwarfare/animations/javelin.animation.json new file mode 100644 index 000000000..b978cf3fa --- /dev/null +++ b/src/main/resources/assets/superbwarfare/animations/javelin.animation.json @@ -0,0 +1,597 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation.javelin.idle": { + "loop": true + }, + "animation.javelin.draw": { + "animation_length": 2, + "bones": { + "0": { + "rotation": { + "0.0": { + "vector": [27.21312, -47.42646, -2.0218] + }, + "0.2917": { + "vector": [12.5, -15, 0] + }, + "0.7083": { + "vector": [3.48268, 0.40464, 8.20687] + }, + "1.2083": { + "vector": [0, 0, -2] + }, + "1.4167": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [3, -17.3, 0] + }, + "0.7083": { + "vector": [0, 0, -1.65] + }, + "0.9167": { + "vector": [0, 0, 0.93] + }, + "1.4167": { + "vector": [0, 0, 0] + } + } + }, + "camera": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.7083": { + "vector": [0, 0, 0] + }, + "1.0833": { + "vector": [0.25, -0.5, 0.5], + "easing": "easeInSine" + }, + "1.4583": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + } + } + } + } + }, + "animation.javelin.reload": { + "loop": "hold_on_last_frame", + "animation_length": 4, + "bones": { + "0": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [12.79362, -12.19908, 12.25285], + "easing": "easeInElastic" + }, + "0.75": { + "vector": [9.75, -9.23, 11.75] + }, + "0.95": { + "vector": [11.79522, -11.04857, 7.28498] + }, + "1.1": { + "vector": [12.31362, -10.46218, 4.49843] + }, + "1.2": { + "vector": [11.4055, -11.45078, 9.28251] + }, + "1.3": { + "vector": [12.35592, -10.41977, 4.29668], + "easing": "easeInElastic" + }, + "1.45": { + "vector": [11.6067, -11.25048, 8.28056] + }, + "1.65": { + "vector": [11.98892, -10.84152, 6.28585] + }, + "2.05": { + "vector": [5.79574, -6.02586, 7.24999] + }, + "2.25": { + "vector": [7.92196, -6.92206, 8.3785] + }, + "2.45": { + "vector": [4.04818, -7.81825, 9.50702] + }, + "2.85": { + "vector": [2.88997, -3.00619, 6.1271] + }, + "2.95": { + "vector": [2.3539, -8.5762, 8.5272] + }, + "3.05": { + "vector": [2.03364, -1.90533, 5.41921] + }, + "3.35": { + "vector": [-3.8135, -0.9118, -6.85724] + }, + "3.5": { + "vector": [0, 0, -2] + }, + "3.7": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.6": { + "vector": [2, -3, 0], + "easing": "easeInElastic" + }, + "0.8": { + "vector": [1.12822, -2.67429, -0.19599] + }, + "0.95": { + "vector": [1.7, -3, 0] + }, + "1.1": { + "vector": [2.14, -3.38, 0] + }, + "1.2": { + "vector": [1.6, -3.3, 0] + }, + "1.3": { + "vector": [1.12462, -3.83058, 0.15] + }, + "1.45": { + "vector": [0.99786, -3.41627, 0.03205] + }, + "1.75": { + "vector": [1.13479, -3.63167, 0.1024] + }, + "2.25": { + "vector": [1.02177, -3.65324, 0.10105] + }, + "2.85": { + "vector": [0.99199, -3.01733, 0.00368] + }, + "2.95": { + "vector": [0.85832, -4.31036, 0.07675] + }, + "3.05": { + "vector": [0, -0.98, 0.5] + }, + "3.2": { + "vector": [-0.47388, 0.04235, 0.71917] + }, + "3.4": { + "vector": [0, 0, 0.93] + }, + "3.55": { + "vector": [0, 0, -0.3] + }, + "3.7": { + "vector": [0, 0, 0] + } + } + }, + "tong": { + "rotation": { + "1.1": { + "vector": [0, 0, 0] + }, + "1.2": { + "vector": [0, 0, 8] + }, + "1.3": { + "vector": [0, 0, -9] + }, + "1.4": { + "vector": [-18, 0, -19.44444] + }, + "1.65": { + "vector": [26.36182, -9.17441, -137.87933] + }, + "2.35": { + "vector": [26.36182, -9.17441, -137.87933] + }, + "2.45": { + "vector": [21, 0, -19.44444] + }, + "2.65": { + "vector": [-7.18076, 7.51466, -11.75196] + }, + "2.85": { + "vector": [0, 0, 8] + }, + "3.0": { + "vector": [0, 0, 0] + } + }, + "position": { + "1.2": { + "vector": [0, 0, 0] + }, + "1.3": { + "vector": [0.10557, -0.66654, 2.92311] + }, + "1.4": { + "vector": [-6.31004, -1.27247, 2.50163] + }, + "1.5": { + "vector": [-11.56218, -9.5433, 1.07822] + }, + "1.65": { + "vector": [-13.50237, -24.77616, -3.14931] + }, + "2.35": { + "vector": [-13.50237, -24.77616, -3.14931] + }, + "2.5": { + "vector": [-6.31004, -1.27247, 2.50163] + }, + "2.65": { + "vector": [-3.58866, -0.76398, 3.64641] + }, + "2.85": { + "vector": [0, 0, 0] + } + } + }, + "camera": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.15": { + "vector": [1, 0, -3] + }, + "0.35": { + "vector": [0.8, 0, -1.5] + }, + "0.5": { + "vector": [0.5, 0, -1.5] + }, + "0.9": { + "vector": [-1, 0, -2.8] + }, + "1.25": { + "vector": [0.43, -1.5, -1.5] + }, + "1.35": { + "vector": [-0.8, 2.5, 1.5] + }, + "1.65": { + "vector": [-0.8, 0, -0.75] + }, + "1.85": { + "vector": [1, -0.59, -0.59] + }, + "2.0": { + "vector": [0.44, -0.26, 1.5] + }, + "2.15": { + "vector": [0.18, -0.11, -0.5] + }, + "2.35": { + "vector": [0.05, -0.03, 0.2] + }, + "2.55": { + "vector": [0, 0, 0], + "easing": "easeOutSine" + }, + "2.85": { + "vector": [0.43, -1.5, -1.5] + }, + "2.95": { + "vector": [-0.8, 2.5, 1.5] + }, + "3.1": { + "vector": [-0.8, 0, -0.75] + }, + "3.25": { + "vector": [-0.36, 0, 0.67] + }, + "3.35": { + "vector": [-0.32, 0.5, -0.45] + }, + "3.45": { + "vector": [-0.05, -0.33, 0.3] + }, + "3.55": { + "vector": [0.5, -2, -2] + }, + "3.7": { + "vector": [0, 0, 0] + } + } + }, + "Righthand": { + "rotation": { + "0.65": { + "vector": [0, 0, 0] + }, + "0.8": { + "vector": [51.7535, -6.84439, 4.60635] + }, + "0.9": { + "vector": [76.42483, -15.97024, 10.74814] + }, + "1.1": { + "vector": [76.42483, -15.97024, 10.74814] + }, + "1.2": { + "vector": [76.42284, -16.14404, 12.74058] + }, + "1.3": { + "vector": [82.28453, -14.2459, 2.92096] + }, + "1.4": { + "vector": [80.65985, -10.00387, -20.76159] + }, + "1.5": { + "vector": [78.80452, -7.82779, -35.71867] + }, + "1.75": { + "vector": [2.80452, -7.82779, -35.71867] + }, + "2.45": { + "vector": [49.65, -13.12, -4.88] + }, + "2.6": { + "vector": [79.75124, -23.16054, 0.43122] + }, + "2.85": { + "vector": [76.42284, -16.14404, 12.74058] + }, + "3.05": { + "vector": [76.42483, -15.97024, 10.74814] + }, + "3.15": { + "vector": [76.42483, -15.97024, 10.74814] + }, + "3.25": { + "vector": [51.7535, -6.84439, 4.60635] + }, + "3.35": { + "vector": [0, 0, 0] + } + }, + "position": { + "0.65": { + "vector": [0, 0, 0] + }, + "0.8": { + "vector": [-2.47, -2.5, 3.46] + }, + "0.9": { + "vector": [-1.8, 2.1, -2.2] + }, + "1.1": { + "vector": [-1.8, 2.1, -2.2] + }, + "1.2": { + "vector": [-2.1, 2.8, -2.2] + }, + "1.3": { + "vector": [-0.4, -0.3, -2.2] + }, + "1.4": { + "vector": [-1, -3.3, -2.2] + }, + "1.5": { + "vector": [-1.9, -10.3, -2.2] + }, + "2.45": { + "vector": [-8.74, -5.38, 2.4] + }, + "2.6": { + "vector": [-4.05, 0.39, 0.68] + }, + "2.85": { + "vector": [-2.1, 2.8, -2.2] + }, + "3.05": { + "vector": [-1.8, 2.1, -2.2] + }, + "3.15": { + "vector": [-1.8, 2.1, -2.2] + }, + "3.25": { + "vector": [-2.47, -2.5, 3.46] + }, + "3.35": { + "vector": [0, 0, 0] + } + } + } + } + }, + "animation.javelin.run": { + "loop": true, + "animation_length": 0.8, + "bones": { + "0": { + "rotation": { + "0.0": { + "vector": [14.01931, 1.43241, 2.77989] + }, + "0.2": { + "vector": [9.37348, 2.99239, 8.65204], + "easing": "easeInSine" + }, + "0.4": { + "vector": [14.01931, 1.43241, 2.77989], + "easing": "easeOutSine" + }, + "0.6": { + "vector": [14.03728, 0.24759, -2.78126], + "easing": "easeInSine" + }, + "0.8": { + "vector": [14.01931, 1.43241, 2.77989], + "easing": "easeOutSine" + } + }, + "position": { + "0.0": { + "vector": [0, -2, 0] + }, + "0.2": { + "vector": [-1, -1, 0], + "easing": "easeInSine" + }, + "0.4": { + "vector": [-2, -2, 0], + "easing": "easeOutSine" + }, + "0.6": { + "vector": [-1, -1, 0], + "easing": "easeInSine" + }, + "0.8": { + "vector": [0, -2, 0], + "easing": "easeOutSine" + } + } + }, + "Rockets": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "camera": { + "rotation": { + "0.0": { + "vector": [-0.3, -0.3, 0.3] + }, + "0.2": { + "vector": [0.3, 0, -0.3] + }, + "0.4": { + "vector": [-0.3, 0.3, 0.3] + }, + "0.6": { + "vector": [0.3, 0, -0.3] + }, + "0.8": { + "vector": [-0.3, -0.3, 0.3] + } + } + } + } + }, + "animation.javelin.fire": { + "animation_length": 0.25 + }, + "animation.javelin.run_fast": { + "loop": true, + "animation_length": 0.7, + "bones": { + "0": { + "rotation": { + "0.0": { + "vector": [-13.3263, 7.54702, 1.59969], + "easing": "easeOutSine" + }, + "0.175": { + "vector": [-27.62174, 12.50143, 4.04527], + "easing": "easeInSine" + }, + "0.35": { + "vector": [-13.035, 17.54299, 1.66321], + "easing": "easeOutSine" + }, + "0.525": { + "vector": [-23.67296, 3.37897, -3.44474], + "easing": "easeInSine" + }, + "0.7": { + "vector": [-13.3263, 7.54702, 1.59969], + "easing": "easeOutSine" + } + }, + "position": { + "0.0": { + "vector": [-1, 2, 1] + }, + "0.175": { + "vector": [-2, 3, 1], + "easing": "easeInSine" + }, + "0.35": { + "vector": [-3, 2, 1], + "easing": "easeOutSine" + }, + "0.525": { + "vector": [-2, 3, 1], + "easing": "easeInSine" + }, + "0.7": { + "vector": [-1, 2, 1], + "easing": "easeOutSine" + } + } + }, + "Rockets": { + "rotation": { + "vector": [0, 0, 0] + }, + "position": { + "vector": [0, 0, 0] + } + }, + "roll": { + "rotation": { + "vector": [0, 0, 10] + }, + "position": { + "vector": [-2, 0, -1] + } + }, + "Righthand": { + "rotation": { + "vector": [-6.1457, -9.1471, -6.29764] + }, + "position": { + "vector": [1.52734, 0.09375, 1.92969] + } + }, + "Lefthand": { + "rotation": { + "vector": [-1.41476, -16.33468, -1.66483] + }, + "position": { + "vector": [6, -13, 49] + } + }, + "camera": { + "rotation": { + "0.0": { + "vector": [-0.3, -0.3, 0.3] + }, + "0.175": { + "vector": [0.3, 0, -0.3] + }, + "0.35": { + "vector": [-0.3, 0.3, 0.3] + }, + "0.525": { + "vector": [0.3, 0, -0.3] + }, + "0.7": { + "vector": [-0.3, -0.3, 0.3] + } + } + } + } + } + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json b/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json new file mode 100644 index 000000000..fac2fdb4d --- /dev/null +++ b/src/main/resources/assets/superbwarfare/animations/javelin_missile.animation.json @@ -0,0 +1,89 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation.jvm.idle": { + "loop": "hold_on_last_frame", + "animation_length": 10, + "bones": { + "wing1": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing2": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing3": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing4": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing5": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing6": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing7": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing8": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "body": { + "rotation": { + "0.0": [0, 0, 0], + "10.0": [0, 21600, 0] + } + }, + "wing9": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing10": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing11": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + }, + "wing12": { + "rotation": { + "0.2667": [0, 0, 0], + "0.3167": [0, 105, 0] + } + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/javelin.geo.json b/src/main/resources/assets/superbwarfare/geo/javelin.geo.json new file mode 100644 index 000000000..fd9c7d273 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/javelin.geo.json @@ -0,0 +1,2240 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 8, + "visible_bounds_height": 4, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "camera", + "pivot": [4.87141, 13.66276, 12.67702] + }, + { + "name": "root", + "pivot": [0, -1, -2] + }, + { + "name": "move", + "parent": "root", + "pivot": [0, 0, 0] + }, + { + "name": "bone", + "parent": "move", + "pivot": [8, 10, -8] + }, + { + "name": "shen", + "parent": "bone", + "pivot": [0, 0, 0] + }, + { + "name": "0", + "parent": "shen", + "pivot": [0, 0, 0] + }, + { + "name": "roll", + "parent": "0", + "pivot": [0, 0, 0] + }, + { + "name": "screen", + "parent": "roll", + "pivot": [0.26172, 0.5, -66], + "cubes": [ + { + "origin": [-6.58203, 1, -64.99609], + "size": [17.7, 13, 0], + "uv": { + "south": {"uv": [9.40381, 82.52881], "uv_size": [62.125, 45.375]} + } + }, + { + "origin": [-31.73828, 11.5, -65], + "size": [68, 20, 0], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [-31.73828, -16.5, -65], + "size": [68, 20, 0], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [-31.73828, 3.5, -65], + "size": [28, 8, 0], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [8.26172, 3.5, -65], + "size": [28, 8, 0], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [6.3214, 6.97919, -65], + "size": [0.24922, 0.5, 0], + "pivot": [2.26193, 11.41327, -65], + "rotation": [0, 0, -45], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [6.3214, 15.34736, -65], + "size": [0.24922, 0.5, 0], + "pivot": [2.26193, 11.41327, -65], + "rotation": [0, 0, -135], + "uv": { + "south": {"uv": [0, 84], "uv_size": [2, 2]} + } + }, + { + "origin": [6.3214, -0.85361, -65], + "size": [0.24922, 0.5, 0], + "pivot": [2.26193, 3.58048, -65], + "rotation": [0, 0, 135], + "uv": { + "south": {"uv": [0, 86], "uv_size": [2, -2]} + } + }, + { + "origin": [6.3214, 7.51456, -65], + "size": [0.24922, 0.5, 0], + "pivot": [2.26193, 3.58048, -65], + "rotation": [0, 0, 45], + "uv": { + "south": {"uv": [0, 86], "uv_size": [2, -2]} + } + } + ] + }, + { + "name": "seek", + "parent": "screen", + "pivot": [-2.50703, 12.83359, -64.99609], + "cubes": [ + { + "origin": [-3.83203, 11.50859, -64.99609], + "size": [2.65, 2.65, 0], + "uv": { + "south": {"uv": [83.90381, 89.15381], "uv_size": [9.4, 9.4]} + } + } + ] + }, + { + "name": "top", + "parent": "screen", + "pivot": [-5.31875, 10.71953, -64.99609], + "cubes": [ + { + "origin": [-6.64375, 9.39453, -64.99609], + "size": [2.65, 2.65, 0], + "uv": { + "south": {"uv": [74.27881, 89.27881], "uv_size": [9.4, 9.4]} + } + } + ] + }, + { + "name": "dir", + "parent": "screen", + "pivot": [-5.28359, 7.53203, -64.99609], + "cubes": [ + { + "origin": [-6.60859, 6.20703, -64.99609], + "size": [2.65, 2.65, 0], + "uv": { + "south": {"uv": [74.02881, 100.40381], "uv_size": [9.4, 9.4]} + } + } + ] + }, + { + "name": "missile_green", + "parent": "screen", + "pivot": [0.63047, 2.19297, -64.99609], + "cubes": [ + { + "origin": [-0.69453, 0.86797, -64.99609], + "size": [2.65, 2.65, 0], + "uv": { + "south": {"uv": [84.15381, 100.52881], "uv_size": [9.4, 9.4]} + } + } + ] + }, + { + "name": "missile_red", + "parent": "screen", + "pivot": [-2.56875, 2.2125, -64.99609], + "cubes": [ + { + "origin": [-3.89375, 0.8875, -64.99609], + "size": [2.65, 2.65, 0], + "uv": { + "south": {"uv": [74.74512, 111.48096], "uv_size": [9.4, 9.4]} + } + } + ] + }, + { + "name": "bone20", + "parent": "screen", + "pivot": [2.26172, 7.5, -65], + "cubes": [ + { + "origin": [2.24672, 1.5, -65], + "size": [0.03, 12, 0], + "pivot": [2.26172, 7.5, -65], + "rotation": [0, 0, 90], + "uv": { + "south": {"uv": [2.5, 84], "uv_size": [1, 1]} + } + }, + { + "origin": [2.24672, 3.5, -65], + "size": [0.03, 8, 0], + "uv": { + "south": {"uv": [2.5, 84], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "javelin", + "parent": "roll", + "pivot": [0, 0, 0] + }, + { + "name": "tong", + "parent": "javelin", + "pivot": [-4.5, 9.16871, -2.48078], + "rotation": [-13, 0, 0] + }, + { + "name": "bone11", + "parent": "tong", + "pivot": [-4.4743, 9.00614, 5.76922], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.71095, 6.02057, -9.99162], + "size": [2.4733, 5.97115, 35.52168], + "pivot": [-4.4743, 9.00614, 9.93718], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [11, 53], "uv_size": [2.5, 6]}, + "south": {"uv": [53, 21], "uv_size": [2.5, 6]}, + "up": {"uv": [0, 0], "uv_size": [2.5, 35.5]}, + "down": {"uv": [3, 35.5], "uv_size": [2.5, -35.5]} + } + }, + { + "origin": [-5.71095, 6.02057, -9.99162], + "size": [2.4733, 5.97115, 35.52168], + "pivot": [-4.4743, 9.00614, 9.93718], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [53, 27], "uv_size": [2.5, 6]}, + "south": {"uv": [37, 53], "uv_size": [2.5, 6]}, + "up": {"uv": [6, 0], "uv_size": [2.5, 35.5]}, + "down": {"uv": [9, 35.5], "uv_size": [2.5, -35.5]} + } + }, + { + "origin": [-5.71095, 6.02057, -9.99162], + "size": [2.4733, 5.97115, 35.52168], + "pivot": [-4.4743, 9.00614, 9.93718], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [40, 53], "uv_size": [2.5, 6]}, + "south": {"uv": [43, 53], "uv_size": [2.5, 6]}, + "up": {"uv": [12, 0], "uv_size": [2.5, 35.5]}, + "down": {"uv": [15, 35.5], "uv_size": [2.5, -35.5]} + } + }, + { + "origin": [-5.71095, 6.02057, -9.99162], + "size": [2.4733, 5.97115, 35.52168], + "pivot": [-4.4743, 9.00614, 9.93718], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [46, 53], "uv_size": [2.5, 6]}, + "south": {"uv": [14, 54], "uv_size": [2.5, 6]}, + "up": {"uv": [18, 0], "uv_size": [2.5, 35.5]}, + "down": {"uv": [21, 35.5], "uv_size": [2.5, -35.5]} + } + } + ] + }, + { + "name": "bone19", + "parent": "tong", + "pivot": [-4.4743, 9.00614, 25.53006], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-6.51477, 4.07994, 25.53006], + "size": [4.08094, 9.8524, 3], + "pivot": [-4.4743, 9.00614, -0.19819], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [34, 0], "uv_size": [4, 10]}, + "east": {"uv": [37, 43], "uv_size": [3, 10]}, + "south": {"uv": [34, 10], "uv_size": [4, 10]}, + "west": {"uv": [40, 43], "uv_size": [3, 10]}, + "up": {"uv": [62, 37], "uv_size": [4, 3]}, + "down": {"uv": [52, 65], "uv_size": [4, -3]} + } + }, + { + "origin": [-6.51477, 4.07994, 25.53006], + "size": [4.08094, 9.8524, 3], + "pivot": [-4.4743, 9.00614, -0.19819], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [34, 20], "uv_size": [4, 10]}, + "east": {"uv": [43, 43], "uv_size": [3, 10]}, + "south": {"uv": [34, 30], "uv_size": [4, 10]}, + "west": {"uv": [44, 18], "uv_size": [3, 10]}, + "up": {"uv": [56, 62], "uv_size": [4, 3]}, + "down": {"uv": [63, 15], "uv_size": [4, -3]} + } + }, + { + "origin": [-6.51477, 4.07994, 25.53006], + "size": [4.08094, 9.8524, 3], + "pivot": [-4.4743, 9.00614, -0.19819], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [0, 36], "uv_size": [4, 10]}, + "east": {"uv": [22, 44], "uv_size": [3, 10]}, + "south": {"uv": [4, 36], "uv_size": [4, 10]}, + "west": {"uv": [25, 44], "uv_size": [3, 10]}, + "up": {"uv": [63, 15], "uv_size": [4, 3]}, + "down": {"uv": [47, 67], "uv_size": [4, -3]} + } + }, + { + "origin": [-6.51477, 4.07994, 25.53006], + "size": [4.08094, 9.8524, 3], + "pivot": [-4.4743, 9.00614, -0.19819], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [8, 36], "uv_size": [4, 10]}, + "east": {"uv": [28, 44], "uv_size": [3, 10]}, + "south": {"uv": [12, 36], "uv_size": [4, 10]}, + "west": {"uv": [44, 28], "uv_size": [3, 10]}, + "up": {"uv": [64, 59], "uv_size": [4, 3]}, + "down": {"uv": [64, 65], "uv_size": [4, -3]} + } + } + ] + }, + { + "name": "bone13", + "parent": "tong", + "pivot": [-4.4743, 9.00614, -9.99162], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.74805, 5.931, -9.99162], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 10.53505], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [54, 14], "uv_size": [2.5, 6]}, + "east": {"uv": [1, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [17, 54], "uv_size": [2.5, 6]}, + "west": {"uv": [3, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [73, 74], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 3.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, -9.99162], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 10.53505], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [20, 54], "uv_size": [2.5, 6]}, + "east": {"uv": [67, 6], "uv_size": [1.5, 6]}, + "south": {"uv": [23, 54], "uv_size": [2.5, 6]}, + "west": {"uv": [67, 12], "uv_size": [1.5, 6]}, + "up": {"uv": [75, 6], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 9.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, -9.99162], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 10.53505], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [26, 54], "uv_size": [2.5, 6]}, + "east": {"uv": [67, 18], "uv_size": [1.5, 6]}, + "south": {"uv": [29, 54], "uv_size": [2.5, 6]}, + "west": {"uv": [21, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [75, 11], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 14.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, -9.99162], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 10.53505], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [54, 42], "uv_size": [2.5, 6]}, + "east": {"uv": [23, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [54, 48], "uv_size": [2.5, 6]}, + "west": {"uv": [67, 24], "uv_size": [1.5, 6]}, + "up": {"uv": [21, 75], "uv_size": [2.5, 1.5]}, + "down": {"uv": [24, 76.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.631, -9.99162], + "size": [2.5475, 0.65028, 1.25], + "pivot": [-4.4743, 9.00614, -9.36662], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [79, 68], "uv_size": [2.5, 0.5]}, + "east": {"uv": [80, 59], "uv_size": [1.5, 0.5]}, + "south": {"uv": [79, 69], "uv_size": [2.5, 0.5]}, + "west": {"uv": [80, 62], "uv_size": [1.5, 0.5]}, + "up": {"uv": [15, 76], "uv_size": [2.5, 1.5]}, + "down": {"uv": [76, 19.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-6.49805, 5.731, -5.74162], + "size": [2.7975, 1.30028, 7], + "pivot": [-4.4743, 9.00614, -9.36662], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [74, 16], "uv_size": [3, 1.5]}, + "east": {"uv": [65, 35], "uv_size": [7, 1.5]}, + "south": {"uv": [74, 25], "uv_size": [3, 1.5]}, + "west": {"uv": [40, 65], "uv_size": [7, 1.5]}, + "up": {"uv": [47, 24], "uv_size": [3, 7]}, + "down": {"uv": [47, 38], "uv_size": [3, -7]} + } + }, + { + "origin": [-6.74805, 4.631, -5.74162], + "size": [3.2975, 1.1, 7], + "pivot": [-4.4743, 9.00614, -9.36662], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [50, 42], "uv_size": [3.5, 1]}, + "east": {"uv": [68, 41], "uv_size": [7, 1]}, + "south": {"uv": [75, 15], "uv_size": [3.5, 1]}, + "west": {"uv": [69, 29], "uv_size": [7, 1]}, + "up": {"uv": [46, 5], "uv_size": [3.5, 7]}, + "down": {"uv": [10, 53], "uv_size": [3.5, -7]} + } + }, + { + "origin": [-8.856, 8.52788, -6.49162], + "size": [0.7975, 0.85, 0.75], + "pivot": [-8.45725, 8.95288, -6.11662], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [15, 80], "uv_size": [1, 1]}, + "east": {"uv": [16, 80], "uv_size": [1, 1]}, + "south": {"uv": [80, 16], "uv_size": [1, 1]}, + "west": {"uv": [80, 17], "uv_size": [1, 1]}, + "up": {"uv": [80, 18], "uv_size": [1, 1]}, + "down": {"uv": [80, 20], "uv_size": [1, -1]} + } + }, + { + "origin": [-8.72602, 8.58172, -7.33126], + "size": [0.7975, 0.85, 1.25], + "pivot": [-8.32727, 9.00672, -6.45626], + "rotation": [-45, 0, 67.5], + "uv": { + "north": {"uv": [80, 21], "uv_size": [1, 1]}, + "east": {"uv": [79, 4], "uv_size": [1.5, 1]}, + "south": {"uv": [80, 22], "uv_size": [1, 1]}, + "west": {"uv": [79, 5], "uv_size": [1.5, 1]}, + "up": {"uv": [9, 79], "uv_size": [1, 1.5]}, + "down": {"uv": [10, 80.5], "uv_size": [1, -1.5]} + } + }, + { + "origin": [-8.08559, 8.84699, -7.8255], + "size": [0.7975, 0.85, 1.25], + "pivot": [-7.68684, 9.27199, -6.9505], + "rotation": [-90, 0, 67.5], + "uv": { + "north": {"uv": [80, 23], "uv_size": [1, 1]}, + "east": {"uv": [13, 79], "uv_size": [1.5, 1]}, + "south": {"uv": [80, 24], "uv_size": [1, 1]}, + "west": {"uv": [15, 79], "uv_size": [1.5, 1]}, + "up": {"uv": [79, 18], "uv_size": [1, 1.5]}, + "down": {"uv": [19, 80.5], "uv_size": [1, -1.5]} + } + }, + { + "origin": [-7.14298, 12.38392, -9.59162], + "size": [0.4, 0.75, 0.4], + "pivot": [-5.96798, 12.60892, -9.39162], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [81, 77], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 78], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 79], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 80], "uv_size": [0.5, 1]}, + "up": {"uv": [63, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 63.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-6.33198, 10.52454, -9.59162], + "size": [0.4, 2.35, 0.4], + "pivot": [-5.15698, 12.34954, -9.39162], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [50, 79], "uv_size": [0.5, 2.5]}, + "east": {"uv": [56, 79], "uv_size": [0.5, 2.5]}, + "south": {"uv": [60, 79], "uv_size": [0.5, 2.5]}, + "west": {"uv": [61, 79], "uv_size": [0.5, 2.5]}, + "up": {"uv": [65, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 65.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-5.19298, 12.38392, -9.59162], + "size": [0.4, 0.75, 0.4], + "pivot": [-5.96798, 12.60892, -9.39162], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [81, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [0, 82], "uv_size": [0.5, 1]}, + "south": {"uv": [82, 0], "uv_size": [0.5, 1]}, + "west": {"uv": [1, 82], "uv_size": [0.5, 1]}, + "up": {"uv": [64, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-6.33198, 10.52454, 22.36151], + "size": [0.4, 2.35, 0.4], + "pivot": [-5.15698, 12.34954, 22.56151], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [67, 79], "uv_size": [0.5, 2.5]}, + "east": {"uv": [68, 79], "uv_size": [0.5, 2.5]}, + "south": {"uv": [74, 79], "uv_size": [0.5, 2.5]}, + "west": {"uv": [75, 79], "uv_size": [0.5, 2.5]}, + "up": {"uv": [68, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 68.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-5.19298, 12.38392, 22.36151], + "size": [0.4, 0.75, 0.4], + "pivot": [-5.96798, 12.60892, 22.56151], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [82, 3], "uv_size": [0.5, 1]}, + "east": {"uv": [4, 82], "uv_size": [0.5, 1]}, + "south": {"uv": [82, 4], "uv_size": [0.5, 1]}, + "west": {"uv": [5, 82], "uv_size": [0.5, 1]}, + "up": {"uv": [67, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 67.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-7.14298, 12.38392, 22.36151], + "size": [0.4, 0.75, 0.4], + "pivot": [-5.96798, 12.60892, 22.56151], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [82, 1], "uv_size": [0.5, 1]}, + "east": {"uv": [2, 82], "uv_size": [0.5, 1]}, + "south": {"uv": [82, 2], "uv_size": [0.5, 1]}, + "west": {"uv": [3, 82], "uv_size": [0.5, 1]}, + "up": {"uv": [66, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 66.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-5.74805, 5.631, 21.96151], + "size": [2.5475, 0.65028, 1.25], + "pivot": [-4.4743, 9.00614, 22.58651], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [79, 70], "uv_size": [2.5, 0.5]}, + "east": {"uv": [80, 71], "uv_size": [1.5, 0.5]}, + "south": {"uv": [71, 79], "uv_size": [2.5, 0.5]}, + "west": {"uv": [72, 80], "uv_size": [1.5, 0.5]}, + "up": {"uv": [76, 27], "uv_size": [2.5, 1.5]}, + "down": {"uv": [31, 77.5], "uv_size": [2.5, -1.5]} + } + } + ] + }, + { + "name": "bone14", + "parent": "tong", + "pivot": [-4.4743, 9.00614, -0.74162], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.74805, 5.931, -0.24162], + "size": [2.5475, 6.15028, 0.65], + "pivot": [-4.4743, 9.00614, 19.78505], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [54, 54], "uv_size": [2.5, 6]}, + "east": {"uv": [20, 76], "uv_size": [0.5, 6]}, + "south": {"uv": [55, 0], "uv_size": [2.5, 6]}, + "west": {"uv": [76, 47], "uv_size": [0.5, 6]}, + "up": {"uv": [79, 57], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 58.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.74805, 5.931, -0.24162], + "size": [2.5475, 6.15028, 0.65], + "pivot": [-4.4743, 9.00614, 19.78505], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [56, 6], "uv_size": [2.5, 6]}, + "east": {"uv": [58, 76], "uv_size": [0.5, 6]}, + "south": {"uv": [56, 20], "uv_size": [2.5, 6]}, + "west": {"uv": [59, 76], "uv_size": [0.5, 6]}, + "up": {"uv": [79, 60], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 61.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.74805, 5.931, -0.24162], + "size": [2.5475, 6.15028, 0.65], + "pivot": [-4.4743, 9.00614, 19.78505], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [56, 26], "uv_size": [2.5, 6]}, + "east": {"uv": [62, 76], "uv_size": [0.5, 6]}, + "south": {"uv": [56, 32], "uv_size": [2.5, 6]}, + "west": {"uv": [63, 76], "uv_size": [0.5, 6]}, + "up": {"uv": [79, 64], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 65.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.74805, 5.931, -0.24162], + "size": [2.5475, 6.15028, 0.65], + "pivot": [-4.4743, 9.00614, 19.78505], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [57, 12], "uv_size": [2.5, 6]}, + "east": {"uv": [64, 76], "uv_size": [0.5, 6]}, + "south": {"uv": [57, 42], "uv_size": [2.5, 6]}, + "west": {"uv": [65, 76], "uv_size": [0.5, 6]}, + "up": {"uv": [79, 66], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 67.5], "uv_size": [2.5, -0.5]} + } + } + ] + }, + { + "name": "bone15", + "parent": "tong", + "pivot": [-4.4743, 9.00614, 7.00838], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.74805, 5.931, 7.90838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 27.53505], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [57, 48], "uv_size": [2.5, 6]}, + "east": {"uv": [20, 70], "uv_size": [1, 6]}, + "south": {"uv": [57, 54], "uv_size": [2.5, 6]}, + "west": {"uv": [9, 71], "uv_size": [1, 6]}, + "up": {"uv": [76, 53], "uv_size": [2.5, 1]}, + "down": {"uv": [76, 65], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 7.90838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 27.53505], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [58, 0], "uv_size": [2.5, 6]}, + "east": {"uv": [10, 71], "uv_size": [1, 6]}, + "south": {"uv": [32, 58], "uv_size": [2.5, 6]}, + "west": {"uv": [13, 71], "uv_size": [1, 6]}, + "up": {"uv": [0, 77], "uv_size": [2.5, 1]}, + "down": {"uv": [3, 78], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 7.90838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 27.53505], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [49, 58], "uv_size": [2.5, 6]}, + "east": {"uv": [14, 71], "uv_size": [1, 6]}, + "south": {"uv": [0, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [71, 15], "uv_size": [1, 6]}, + "up": {"uv": [77, 16], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 18], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 7.90838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 27.53505], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [3, 59], "uv_size": [2.5, 6]}, + "east": {"uv": [48, 71], "uv_size": [1, 6]}, + "south": {"uv": [6, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [49, 71], "uv_size": [1, 6]}, + "up": {"uv": [21, 77], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 22], "uv_size": [2.5, -1]} + } + } + ] + }, + { + "name": "bone16", + "parent": "tong", + "pivot": [-4.4743, 9.00614, 13.75838], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.74805, 5.931, 14.00838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 34.28505], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [59, 6], "uv_size": [2.5, 6]}, + "east": {"uv": [50, 71], "uv_size": [1, 6]}, + "south": {"uv": [11, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [51, 71], "uv_size": [1, 6]}, + "up": {"uv": [77, 22], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 24], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 14.00838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 34.28505], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [59, 18], "uv_size": [2.5, 6]}, + "east": {"uv": [52, 71], "uv_size": [1, 6]}, + "south": {"uv": [59, 24], "uv_size": [2.5, 6]}, + "west": {"uv": [53, 71], "uv_size": [1, 6]}, + "up": {"uv": [24, 77], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 25], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 14.00838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 34.28505], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [59, 30], "uv_size": [2.5, 6]}, + "east": {"uv": [54, 71], "uv_size": [1, 6]}, + "south": {"uv": [35, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [55, 71], "uv_size": [1, 6]}, + "up": {"uv": [77, 25], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 27], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-5.36537, 9.75712, 6.75838], + "size": [2.5475, 1.40028, 9.25], + "pivot": [-4.09162, 8.08226, 11.38338], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [76, 32], "uv_size": [2.5, 1.5]}, + "east": {"uv": [60, 42], "uv_size": [9.5, 1.5]}, + "south": {"uv": [76, 34], "uv_size": [2.5, 1.5]}, + "west": {"uv": [60, 44], "uv_size": [9.5, 1.5]}, + "up": {"uv": [31, 44], "uv_size": [2.5, 9.5]}, + "down": {"uv": [46, 52.5], "uv_size": [2.5, -9.5]} + } + }, + { + "origin": [-5.06016, 10.49393, 6.75838], + "size": [0.6475, 1.40028, 9.25], + "pivot": [-3.78641, 8.81908, 11.38338], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [80, 74], "uv_size": [0.5, 1.5]}, + "east": {"uv": [60, 46], "uv_size": [9.5, 1.5]}, + "south": {"uv": [78, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [60, 48], "uv_size": [9.5, 1.5]}, + "up": {"uv": [29, 73], "uv_size": [0.5, 9.5]}, + "down": {"uv": [30, 82.5], "uv_size": [0.5, -9.5]} + } + }, + { + "origin": [-2.85544, 10.33019, 6.75838], + "size": [0.6475, 1.40028, 9.25], + "pivot": [-4.1817, 8.65533, 11.38338], + "rotation": [0, 0, 157.5], + "uv": { + "north": {"uv": [79, 80], "uv_size": [0.5, 1.5]}, + "east": {"uv": [60, 50], "uv_size": [9.5, 1.5]}, + "south": {"uv": [80, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [60, 52], "uv_size": [9.5, 1.5]}, + "up": {"uv": [42, 73], "uv_size": [0.5, 9.5]}, + "down": {"uv": [43, 82.5], "uv_size": [0.5, -9.5]} + } + }, + { + "origin": [-3.61537, 10.25712, 6.75838], + "size": [0.7975, 0.90028, 9.25], + "pivot": [-4.09162, 8.08226, 11.38338], + "rotation": [0, 0, 112.5], + "uv": { + "north": {"uv": [80, 30], "uv_size": [1, 1]}, + "east": {"uv": [66, 5], "uv_size": [9.5, 1]}, + "south": {"uv": [80, 31], "uv_size": [1, 1]}, + "west": {"uv": [21, 66], "uv_size": [9.5, 1]}, + "up": {"uv": [8, 65], "uv_size": [1, 9.5]}, + "down": {"uv": [31, 75.5], "uv_size": [1, -9.5]} + } + }, + { + "origin": [-1.99855, 9.58742, 6.75838], + "size": [0.7975, 0.90028, 9.25], + "pivot": [-2.4748, 7.41257, 11.38338], + "rotation": [0, 0, -157.5], + "uv": { + "north": {"uv": [80, 32], "uv_size": [1, 1]}, + "east": {"uv": [66, 37], "uv_size": [9.5, 1]}, + "south": {"uv": [80, 33], "uv_size": [1, 1]}, + "west": {"uv": [66, 38], "uv_size": [9.5, 1]}, + "up": {"uv": [66, 65], "uv_size": [1, 9.5]}, + "down": {"uv": [0, 76.5], "uv_size": [1, -9.5]} + } + }, + { + "origin": [-4.99805, 5.081, 14.00838], + "size": [1.0475, 1.35, 1], + "pivot": [-4.4743, 9.00614, 14.50838], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [21, 79], "uv_size": [1, 1.5]}, + "east": {"uv": [22, 79], "uv_size": [1, 1.5]}, + "south": {"uv": [23, 79], "uv_size": [1, 1.5]}, + "west": {"uv": [24, 79], "uv_size": [1, 1.5]}, + "up": {"uv": [80, 25], "uv_size": [1, 1]}, + "down": {"uv": [80, 27], "uv_size": [1, -1]} + } + }, + { + "origin": [-5.04805, 5.031, 14.25838], + "size": [4.3475, 0.65, 0.5], + "pivot": [-4.4743, 9.00614, 14.50838], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [78, 11], "uv_size": [4.5, 0.5]}, + "east": {"uv": [69, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [78, 12], "uv_size": [4.5, 0.5]}, + "west": {"uv": [82, 69], "uv_size": [0.5, 0.5]}, + "up": {"uv": [78, 13], "uv_size": [4.5, 0.5]}, + "down": {"uv": [78, 14.5], "uv_size": [4.5, -0.5]} + } + }, + { + "origin": [-5.04805, 5.031, 8.15838], + "size": [4.3475, 0.65, 0.5], + "pivot": [-4.4743, 9.00614, 14.50838], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [21, 78], "uv_size": [4.5, 0.5]}, + "east": {"uv": [70, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [78, 41], "uv_size": [4.5, 0.5]}, + "west": {"uv": [82, 70], "uv_size": [0.5, 0.5]}, + "up": {"uv": [78, 42], "uv_size": [4.5, 0.5]}, + "down": {"uv": [78, 46.5], "uv_size": [4.5, -0.5]} + } + }, + { + "origin": [-5.8426, 6.94921, 2.38213], + "size": [6.5975, 0.65, 0.5], + "pivot": [-5.26885, 10.92435, 8.73213], + "rotation": [0, -90, 67.5], + "uv": { + "north": {"uv": [75, 43], "uv_size": [6.5, 0.5]}, + "east": {"uv": [71, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [76, 10], "uv_size": [6.5, 0.5]}, + "west": {"uv": [82, 71], "uv_size": [0.5, 0.5]}, + "up": {"uv": [76, 20], "uv_size": [6.5, 0.5]}, + "down": {"uv": [76, 29.5], "uv_size": [6.5, -0.5]} + } + }, + { + "origin": [-4.99805, 5.081, 7.90838], + "size": [1.0475, 1.35, 1], + "pivot": [-4.4743, 9.00614, 14.50838], + "rotation": [0, 0, 67.5], + "uv": { + "north": {"uv": [25, 79], "uv_size": [1, 1.5]}, + "east": {"uv": [79, 27], "uv_size": [1, 1.5]}, + "south": {"uv": [79, 32], "uv_size": [1, 1.5]}, + "west": {"uv": [34, 79], "uv_size": [1, 1.5]}, + "up": {"uv": [80, 27], "uv_size": [1, 1]}, + "down": {"uv": [80, 29], "uv_size": [1, -1]} + } + }, + { + "origin": [-5.74805, 5.931, 14.00838], + "size": [2.5475, 6.15028, 1], + "pivot": [-4.4743, 9.00614, 34.28505], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [59, 36], "uv_size": [2.5, 6]}, + "east": {"uv": [56, 71], "uv_size": [1, 6]}, + "south": {"uv": [38, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [57, 71], "uv_size": [1, 6]}, + "up": {"uv": [77, 30], "uv_size": [2.5, 1]}, + "down": {"uv": [77, 32], "uv_size": [2.5, -1]} + } + } + ] + }, + { + "name": "bone17", + "parent": "tong", + "pivot": [-4.4743, 9.00614, 21.95838], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.74805, 5.931, 21.95838], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 42.48505], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [41, 59], "uv_size": [2.5, 6]}, + "east": {"uv": [25, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [44, 59], "uv_size": [2.5, 6]}, + "west": {"uv": [27, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [39, 75], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 42.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, 21.95838], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 42.48505], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [60, 12], "uv_size": [2.5, 6]}, + "east": {"uv": [29, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [14, 60], "uv_size": [2.5, 6]}, + "west": {"uv": [34, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [75, 59], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 62.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, 21.95838], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 42.48505], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [17, 60], "uv_size": [2.5, 6]}, + "east": {"uv": [36, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [20, 60], "uv_size": [2.5, 6]}, + "west": {"uv": [38, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [75, 65], "uv_size": [2.5, 1.5]}, + "down": {"uv": [75, 68.5], "uv_size": [2.5, -1.5]} + } + }, + { + "origin": [-5.74805, 5.931, 21.95838], + "size": [2.5475, 6.15028, 1.25], + "pivot": [-4.4743, 9.00614, 42.48505], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [23, 60], "uv_size": [2.5, 6]}, + "east": {"uv": [40, 67], "uv_size": [1.5, 6]}, + "south": {"uv": [26, 60], "uv_size": [2.5, 6]}, + "west": {"uv": [42, 67], "uv_size": [1.5, 6]}, + "up": {"uv": [76, 0], "uv_size": [2.5, 1.5]}, + "down": {"uv": [76, 5.5], "uv_size": [2.5, -1.5]} + } + } + ] + }, + { + "name": "bone12", + "parent": "tong", + "pivot": [-4.4743, 9.00614, -9.99162], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-5.7713, 5.87487, -10.49162], + "size": [2.594, 6.26254, 0.5], + "pivot": [-4.4743, 9.00614, 10.90971], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [50, 24], "uv_size": [2.5, 6.5]}, + "east": {"uv": [70, 74], "uv_size": [0.5, 6.5]}, + "south": {"uv": [50, 31], "uv_size": [2.5, 6.5]}, + "west": {"uv": [8, 75], "uv_size": [0.5, 6.5]}, + "up": {"uv": [44, 79], "uv_size": [2.5, 0.5]}, + "down": {"uv": [47, 79.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.7713, 5.87487, -10.49162], + "size": [2.594, 6.26254, 0.5], + "pivot": [-4.4743, 9.00614, 10.90971], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [51, 14], "uv_size": [2.5, 6.5]}, + "east": {"uv": [27, 75], "uv_size": [0.5, 6.5]}, + "south": {"uv": [34, 51], "uv_size": [2.5, 6.5]}, + "west": {"uv": [28, 75], "uv_size": [0.5, 6.5]}, + "up": {"uv": [79, 48], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 49.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.7713, 5.87487, -10.49162], + "size": [2.594, 6.26254, 0.5], + "pivot": [-4.4743, 9.00614, 10.90971], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [49, 51], "uv_size": [2.5, 6.5]}, + "east": {"uv": [66, 75], "uv_size": [0.5, 6.5]}, + "south": {"uv": [0, 52], "uv_size": [2.5, 6.5]}, + "west": {"uv": [11, 76], "uv_size": [0.5, 6.5]}, + "up": {"uv": [79, 50], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 51.5], "uv_size": [2.5, -0.5]} + } + }, + { + "origin": [-5.7713, 5.87487, -10.49162], + "size": [2.594, 6.26254, 0.5], + "pivot": [-4.4743, 9.00614, 10.90971], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [3, 52], "uv_size": [2.5, 6.5]}, + "east": {"uv": [12, 76], "uv_size": [0.5, 6.5]}, + "south": {"uv": [6, 52], "uv_size": [2.5, 6.5]}, + "west": {"uv": [18, 76], "uv_size": [0.5, 6.5]}, + "up": {"uv": [53, 79], "uv_size": [2.5, 0.5]}, + "down": {"uv": [79, 53.5], "uv_size": [2.5, -0.5]} + } + } + ] + }, + { + "name": "bone18", + "parent": "tong", + "pivot": [-4.4743, 9.00614, -9.67162], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-6.60138, 3.87086, -13.49162], + "size": [4.25415, 10.27057, 3], + "pivot": [-4.4743, 9.00614, 24.60656], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [24, 0], "uv_size": [4.5, 10.5]}, + "east": {"uv": [38, 21], "uv_size": [3, 10.5]}, + "south": {"uv": [24, 11], "uv_size": [4.5, 10.5]}, + "west": {"uv": [38, 32], "uv_size": [3, 10.5]}, + "up": {"uv": [61, 3], "uv_size": [4.5, 3]}, + "down": {"uv": [62, 9], "uv_size": [4.5, -3]} + } + }, + { + "origin": [-6.60138, 3.87086, -13.49162], + "size": [4.25415, 10.27057, 3], + "pivot": [-4.4743, 9.00614, 24.60656], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [24, 22], "uv_size": [4.5, 10.5]}, + "east": {"uv": [34, 40], "uv_size": [3, 10.5]}, + "south": {"uv": [29, 0], "uv_size": [4.5, 10.5]}, + "west": {"uv": [41, 21], "uv_size": [3, 10.5]}, + "up": {"uv": [62, 9], "uv_size": [4.5, 3]}, + "down": {"uv": [62, 21], "uv_size": [4.5, -3]} + } + }, + { + "origin": [-6.60138, 3.87086, -13.49162], + "size": [4.25415, 10.27057, 3], + "pivot": [-4.4743, 9.00614, 24.60656], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [29, 11], "uv_size": [4.5, 10.5]}, + "east": {"uv": [41, 32], "uv_size": [3, 10.5]}, + "south": {"uv": [29, 22], "uv_size": [4.5, 10.5]}, + "west": {"uv": [43, 7], "uv_size": [3, 10.5]}, + "up": {"uv": [62, 21], "uv_size": [4.5, 3]}, + "down": {"uv": [62, 27], "uv_size": [4.5, -3]} + } + }, + { + "origin": [-6.60138, 3.87086, -13.49162], + "size": [4.25415, 10.27057, 3], + "pivot": [-4.4743, 9.00614, 24.60656], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [24, 33], "uv_size": [4.5, 10.5]}, + "east": {"uv": [16, 43], "uv_size": [3, 10.5]}, + "south": {"uv": [29, 33], "uv_size": [4.5, 10.5]}, + "west": {"uv": [19, 43], "uv_size": [3, 10.5]}, + "up": {"uv": [62, 27], "uv_size": [4.5, 3]}, + "down": {"uv": [62, 33], "uv_size": [4.5, -3]} + } + } + ] + }, + { + "name": "clu", + "parent": "javelin", + "pivot": [0, 0, 0] + }, + { + "name": "bone3", + "parent": "clu", + "pivot": [1.8, 5.2, 41.2], + "cubes": [ + { + "origin": [1.96238, 6.92541, 1.12845], + "size": [0.49607, 1.19764, 0.5], + "pivot": [2.21042, 7.52423, 1.12845], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [0, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 0], "uv_size": [0.5, 1]}, + "south": {"uv": [1, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 1], "uv_size": [0.5, 1]}, + "up": {"uv": [82, 5], "uv_size": [0.5, 0.5]}, + "down": {"uv": [6, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.96238, 6.92541, 1.12845], + "size": [0.49607, 1.19764, 0.5], + "pivot": [2.21042, 7.52423, 1.12845], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [81, 2], "uv_size": [0.5, 1]}, + "east": {"uv": [3, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 3], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 4], "uv_size": [0.5, 1]}, + "up": {"uv": [82, 6], "uv_size": [0.5, 0.5]}, + "down": {"uv": [7, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.96238, 6.92541, 1.12845], + "size": [0.49607, 1.19764, 0.5], + "pivot": [2.21042, 7.52423, 1.12845], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [81, 5], "uv_size": [0.5, 1]}, + "east": {"uv": [6, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [7, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [9, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [82, 7], "uv_size": [0.5, 0.5]}, + "down": {"uv": [8, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.96238, 6.92541, 1.12845], + "size": [0.49607, 1.19764, 0.5], + "pivot": [2.21042, 7.52423, 1.12845], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [10, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [13, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [14, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [15, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [82, 8], "uv_size": [0.5, 0.5]}, + "down": {"uv": [9, 82.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone7", + "parent": "clu", + "pivot": [2.78946, 7.75118, -4.37155], + "cubes": [ + { + "origin": [2.54143, 7.15236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [2.78946, 7.75118, -4.72155], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [25, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 25], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 26], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 27], "uv_size": [0.5, 1]}, + "up": {"uv": [55, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 55.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [2.54143, 7.15236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [2.78946, 7.75118, -4.72155], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [81, 28], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 30], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 31], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 32], "uv_size": [0.5, 1]}, + "up": {"uv": [56, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 56.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [2.54143, 7.15236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [2.78946, 7.75118, -4.72155], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [81, 33], "uv_size": [0.5, 1]}, + "east": {"uv": [34, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [35, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [36, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [57, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 57.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [2.54143, 7.15236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [2.78946, 7.75118, -4.72155], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [37, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [38, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 39], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 40], "uv_size": [0.5, 1]}, + "up": {"uv": [58, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 58.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone10", + "parent": "clu", + "pivot": [2.90225, 4.66, -4.8102], + "rotation": [-90, 0, 0], + "cubes": [ + { + "origin": [2.61701, 3.97136, -6.4002], + "size": [0.57048, 1.37729, 3.43], + "pivot": [2.90225, 4.66, -6.8802], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [39, 80], "uv_size": [0.5, 1.5]}, + "east": {"uv": [71, 3], "uv_size": [3.5, 1.5]}, + "south": {"uv": [40, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [72, 0], "uv_size": [3.5, 1.5]}, + "up": {"uv": [41, 77], "uv_size": [0.5, 3.5]}, + "down": {"uv": [57, 80.5], "uv_size": [0.5, -3.5]} + } + }, + { + "origin": [2.61701, 3.97136, -6.4002], + "size": [0.57048, 1.37729, 3.43], + "pivot": [2.90225, 4.66, -6.8802], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [44, 80], "uv_size": [0.5, 1.5]}, + "east": {"uv": [72, 19], "uv_size": [3.5, 1.5]}, + "south": {"uv": [45, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [21, 73], "uv_size": [3.5, 1.5]}, + "up": {"uv": [17, 78], "uv_size": [0.5, 3.5]}, + "down": {"uv": [26, 81.5], "uv_size": [0.5, -3.5]} + } + }, + { + "origin": [2.61701, 3.97136, -6.4002], + "size": [0.57048, 1.37729, 3.43], + "pivot": [2.90225, 4.66, -6.8802], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [46, 80], "uv_size": [0.5, 1.5]}, + "east": {"uv": [73, 21], "uv_size": [3.5, 1.5]}, + "south": {"uv": [47, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [73, 23], "uv_size": [3.5, 1.5]}, + "up": {"uv": [31, 78], "uv_size": [0.5, 3.5]}, + "down": {"uv": [32, 81.5], "uv_size": [0.5, -3.5]} + } + }, + { + "origin": [2.61701, 3.97136, -6.4002], + "size": [0.57048, 1.37729, 3.43], + "pivot": [2.90225, 4.66, -6.8802], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [48, 80], "uv_size": [0.5, 1.5]}, + "east": {"uv": [25, 73], "uv_size": [3.5, 1.5]}, + "south": {"uv": [49, 80], "uv_size": [0.5, 1.5]}, + "west": {"uv": [73, 30], "uv_size": [3.5, 1.5]}, + "up": {"uv": [33, 78], "uv_size": [0.5, 3.5]}, + "down": {"uv": [51, 81.5], "uv_size": [0.5, -3.5]} + } + } + ] + }, + { + "name": "bone9", + "parent": "clu", + "pivot": [-3.85, 0, 33], + "cubes": [ + { + "origin": [-2.35857, 2.70236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [-2.11054, 3.30118, -4.72155], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [41, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [52, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [53, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [54, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [59, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 59.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-2.35857, 2.70236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [-2.11054, 3.30118, -4.72155], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [55, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [57, 81], "uv_size": [0.5, 1]}, + "south": {"uv": [81, 63], "uv_size": [0.5, 1]}, + "west": {"uv": [70, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [60, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 60.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-2.35857, 2.70236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [-2.11054, 3.30118, -4.72155], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [72, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 72], "uv_size": [0.5, 1]}, + "south": {"uv": [73, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [81, 73], "uv_size": [0.5, 1]}, + "up": {"uv": [61, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 61.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-2.35857, 2.70236, -4.52155], + "size": [0.49607, 1.19764, 0.3], + "pivot": [-2.11054, 3.30118, -4.72155], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [81, 74], "uv_size": [0.5, 1]}, + "east": {"uv": [81, 75], "uv_size": [0.5, 1]}, + "south": {"uv": [76, 81], "uv_size": [0.5, 1]}, + "west": {"uv": [77, 81], "uv_size": [0.5, 1]}, + "up": {"uv": [62, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 62.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone8", + "parent": "clu", + "pivot": [0.25287, 4.60628, -4.22155], + "rotation": [0, 0, 22.5], + "cubes": [ + { + "origin": [-0.45869, 2.88839, -5.72155], + "size": [1.42313, 3.43579, 1.5], + "pivot": [0.25287, 4.60628, -5.65595], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [71, 21], "uv_size": [1.5, 3.5]}, + "east": {"uv": [71, 54], "uv_size": [1.5, 3.5]}, + "south": {"uv": [71, 69], "uv_size": [1.5, 3.5]}, + "west": {"uv": [15, 72], "uv_size": [1.5, 3.5]}, + "up": {"uv": [76, 77], "uv_size": [1.5, 1.5]}, + "down": {"uv": [0, 79.5], "uv_size": [1.5, -1.5]} + } + }, + { + "origin": [-0.45869, 2.88839, -5.72155], + "size": [1.42313, 3.43579, 1.5], + "pivot": [0.25287, 4.60628, -5.65595], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [72, 15], "uv_size": [1.5, 3.5]}, + "east": {"uv": [17, 72], "uv_size": [1.5, 3.5]}, + "south": {"uv": [32, 72], "uv_size": [1.5, 3.5]}, + "west": {"uv": [72, 33], "uv_size": [1.5, 3.5]}, + "up": {"uv": [2, 78], "uv_size": [1.5, 1.5]}, + "down": {"uv": [78, 3.5], "uv_size": [1.5, -1.5]} + } + }, + { + "origin": [-0.45869, 2.88839, -5.72155], + "size": [1.42313, 3.43579, 1.5], + "pivot": [0.25287, 4.60628, -5.65595], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [72, 60], "uv_size": [1.5, 3.5]}, + "east": {"uv": [62, 72], "uv_size": [1.5, 3.5]}, + "south": {"uv": [64, 72], "uv_size": [1.5, 3.5]}, + "west": {"uv": [72, 65], "uv_size": [1.5, 3.5]}, + "up": {"uv": [4, 78], "uv_size": [1.5, 1.5]}, + "down": {"uv": [6, 79.5], "uv_size": [1.5, -1.5]} + } + }, + { + "origin": [-0.45869, 2.88839, -5.72155], + "size": [1.42313, 3.43579, 1.5], + "pivot": [0.25287, 4.60628, -5.65595], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [1, 73], "uv_size": [1.5, 3.5]}, + "east": {"uv": [3, 73], "uv_size": [1.5, 3.5]}, + "south": {"uv": [5, 73], "uv_size": [1.5, 3.5]}, + "west": {"uv": [73, 6], "uv_size": [1.5, 3.5]}, + "up": {"uv": [78, 6], "uv_size": [1.5, 1.5]}, + "down": {"uv": [78, 9.5], "uv_size": [1.5, -1.5]} + } + } + ] + }, + { + "name": "bone4", + "parent": "clu", + "pivot": [1.59479, 4.03789, 60.98578], + "cubes": [ + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [82, 9], "uv_size": [0.5, 0.5]}, + "east": {"uv": [10, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [13, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [14, 82], "uv_size": [0.5, 0.5]}, + "up": {"uv": [15, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 15.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [16, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [82, 16], "uv_size": [0.5, 0.5]}, + "south": {"uv": [17, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 17], "uv_size": [0.5, 0.5]}, + "up": {"uv": [82, 18], "uv_size": [0.5, 0.5]}, + "down": {"uv": [19, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [82, 19], "uv_size": [0.5, 0.5]}, + "east": {"uv": [20, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [21, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 21], "uv_size": [0.5, 0.5]}, + "up": {"uv": [22, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 22.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [23, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [82, 23], "uv_size": [0.5, 0.5]}, + "south": {"uv": [24, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 24], "uv_size": [0.5, 0.5]}, + "up": {"uv": [25, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 25.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "uv": { + "north": {"uv": [26, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [82, 26], "uv_size": [0.5, 0.5]}, + "south": {"uv": [27, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 27], "uv_size": [0.5, 0.5]}, + "up": {"uv": [28, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 28.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [82, 30], "uv_size": [0.5, 0.5]}, + "east": {"uv": [31, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [82, 31], "uv_size": [0.5, 0.5]}, + "west": {"uv": [32, 82], "uv_size": [0.5, 0.5]}, + "up": {"uv": [82, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [33, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [82, 33], "uv_size": [0.5, 0.5]}, + "east": {"uv": [34, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [82, 34], "uv_size": [0.5, 0.5]}, + "west": {"uv": [35, 82], "uv_size": [0.5, 0.5]}, + "up": {"uv": [82, 35], "uv_size": [0.5, 0.5]}, + "down": {"uv": [36, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [1.83837, 6.626, 1.62845], + "size": [0.74411, 0.44646, 0.2], + "pivot": [2.21042, 7.52423, 0.87845], + "rotation": [0, 0, -135], + "uv": { + "north": {"uv": [82, 36], "uv_size": [0.5, 0.5]}, + "east": {"uv": [37, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [82, 37], "uv_size": [0.5, 0.5]}, + "west": {"uv": [38, 82], "uv_size": [0.5, 0.5]}, + "up": {"uv": [82, 38], "uv_size": [0.5, 0.5]}, + "down": {"uv": [39, 82.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone2", + "parent": "clu", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [-2.31595, 0, -2], + "size": [5, 2.1, 4], + "pivot": [0, 3.48001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [51, 65], "uv_size": [5, 2]}, + "east": {"uv": [50, 67], "uv_size": [4, 2]}, + "south": {"uv": [56, 65], "uv_size": [5, 2]}, + "west": {"uv": [54, 67], "uv_size": [4, 2]}, + "up": {"uv": [49, 43], "uv_size": [5, 4]}, + "down": {"uv": [49, 51], "uv_size": [5, -4]} + } + }, + { + "origin": [-2.56595, 2.1, -2.5], + "size": [5.25, 7, 4.75], + "pivot": [0, 3.48001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [16, 36], "uv_size": [5.5, 7]}, + "east": {"uv": [38, 7], "uv_size": [5, 7]}, + "south": {"uv": [38, 0], "uv_size": [5.5, 7]}, + "west": {"uv": [38, 14], "uv_size": [5, 7]}, + "up": {"uv": [44, 0], "uv_size": [5.5, 5]}, + "down": {"uv": [44, 43], "uv_size": [5.5, -5]} + } + }, + { + "origin": [-2.71595, 7.85, 0.5], + "size": [1.9, 2, 7.25], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [74, 27], "uv_size": [2, 2]}, + "east": {"uv": [50, 38], "uv_size": [7.5, 2]}, + "south": {"uv": [74, 33], "uv_size": [2, 2]}, + "west": {"uv": [50, 40], "uv_size": [7.5, 2]}, + "up": {"uv": [22, 36], "uv_size": [2, 7.5]}, + "down": {"uv": [14, 53.5], "uv_size": [2, -7.5]} + } + }, + { + "origin": [-1.46595, 7.1, 0.5], + "size": [1.65, 0.75, 7.25], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [71, 78], "uv_size": [1.5, 1]}, + "east": {"uv": [67, 2], "uv_size": [7.5, 1]}, + "south": {"uv": [78, 77], "uv_size": [1.5, 1]}, + "west": {"uv": [67, 32], "uv_size": [7.5, 1]}, + "up": {"uv": [9, 63], "uv_size": [1.5, 7.5]}, + "down": {"uv": [32, 71.5], "uv_size": [1.5, -7.5]} + } + }, + { + "origin": [4.7125, 7.78595, -2.80117], + "size": [4.15, 1.7, 5.5], + "pivot": [5.6625, 8.48595, -0.92617], + "rotation": [90, 55, 90], + "uv": { + "north": {"uv": [70, 49], "uv_size": [4, 1.5]}, + "east": {"uv": [67, 30], "uv_size": [5.5, 1.5]}, + "south": {"uv": [70, 51], "uv_size": [4, 1.5]}, + "west": {"uv": [44, 67], "uv_size": [5.5, 1.5]}, + "up": {"uv": [46, 12], "uv_size": [4, 5.5]}, + "down": {"uv": [47, 23.5], "uv_size": [4, -5.5]} + } + }, + { + "origin": [4.7125, 6.63293, -3.10338], + "size": [2.35, 0.7, 5.5], + "pivot": [5.6625, 7.33293, -1.22838], + "rotation": [90, 65, 90], + "uv": { + "north": {"uv": [38, 79], "uv_size": [2.5, 0.5]}, + "east": {"uv": [76, 36], "uv_size": [5.5, 0.5]}, + "south": {"uv": [79, 38], "uv_size": [2.5, 0.5]}, + "west": {"uv": [76, 37], "uv_size": [5.5, 0.5]}, + "up": {"uv": [29, 60], "uv_size": [2.5, 5.5]}, + "down": {"uv": [61, 64.5], "uv_size": [2.5, -5.5]} + } + }, + { + "origin": [4.7125, 5.51966, -4.99604], + "size": [4.65, 2, 5.5], + "pivot": [5.6625, 6.51966, -3.12104], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [66, 56], "uv_size": [4.5, 2]}, + "east": {"uv": [65, 33], "uv_size": [5.5, 2]}, + "south": {"uv": [67, 0], "uv_size": [4.5, 2]}, + "west": {"uv": [34, 65], "uv_size": [5.5, 2]}, + "up": {"uv": [0, 46], "uv_size": [4.5, 5.5]}, + "down": {"uv": [5, 51.5], "uv_size": [4.5, -5.5]} + } + }, + { + "origin": [8.0125, 7.06966, -16.54604], + "size": [1.85, 0.45, 4.85], + "pivot": [5.6625, 6.51966, -3.12104], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [6, 80], "uv_size": [2, 0.5]}, + "east": {"uv": [76, 39], "uv_size": [5, 0.5]}, + "south": {"uv": [80, 6], "uv_size": [2, 0.5]}, + "west": {"uv": [76, 40], "uv_size": [5, 0.5]}, + "up": {"uv": [11, 65], "uv_size": [2, 5]}, + "down": {"uv": [13, 71], "uv_size": [2, -5]} + } + }, + { + "origin": [7.0125, 3.31966, -16.79604], + "size": [1, 4.2, 5.1], + "pivot": [5.6625, 6.51966, -3.12104], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [47, 74], "uv_size": [1, 4]}, + "east": {"uv": [50, 0], "uv_size": [5, 4]}, + "south": {"uv": [74, 59], "uv_size": [1, 4]}, + "west": {"uv": [50, 4], "uv_size": [5, 4]}, + "up": {"uv": [19, 72], "uv_size": [1, 5]}, + "down": {"uv": [7, 78], "uv_size": [1, -5]} + } + }, + { + "origin": [-5.9625, 2.94191, -2.32596], + "size": [1, 4, 3.1], + "pivot": [-5.4625, 5.04191, -2.07596], + "rotation": [90, 10, 90], + "uv": { + "north": {"uv": [68, 74], "uv_size": [1, 4]}, + "east": {"uv": [53, 33], "uv_size": [3, 4]}, + "south": {"uv": [69, 74], "uv_size": [1, 4]}, + "west": {"uv": [62, 33], "uv_size": [3, 4]}, + "up": {"uv": [37, 40], "uv_size": [1, 3]}, + "down": {"uv": [43, 21], "uv_size": [1, -3]} + } + }, + { + "origin": [-7.0625, 2.56966, -4.47104], + "size": [1, 4.2, 1.6], + "pivot": [-5.5625, 4.66966, -2.02104], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [60, 74], "uv_size": [1, 4]}, + "east": {"uv": [70, 60], "uv_size": [1.5, 4]}, + "south": {"uv": [61, 74], "uv_size": [1, 4]}, + "west": {"uv": [71, 6], "uv_size": [1.5, 4]}, + "up": {"uv": [78, 78], "uv_size": [1, 1.5]}, + "down": {"uv": [79, 1.5], "uv_size": [1, -1.5]} + } + }, + { + "origin": [-6.22302, 1.74626, -4.47104], + "size": [1, 4.2, 2.7], + "pivot": [-4.72302, 3.84626, -2.02104], + "rotation": [90, 0, 112.5], + "uv": { + "north": {"uv": [74, 65], "uv_size": [1, 4]}, + "east": {"uv": [15, 66], "uv_size": [2.5, 4]}, + "south": {"uv": [67, 74], "uv_size": [1, 4]}, + "west": {"uv": [18, 66], "uv_size": [2.5, 4]}, + "up": {"uv": [76, 74], "uv_size": [1, 2.5]}, + "down": {"uv": [75, 78.5], "uv_size": [1, -2.5]} + } + }, + { + "origin": [-9.0125, 2.91966, -1.32104], + "size": [1.85, 0.25, 2.25], + "pivot": [-8.1875, 3.34466, -1.59604], + "rotation": [-180, 0, 90], + "uv": { + "north": {"uv": [80, 7], "uv_size": [2, 0.5]}, + "east": {"uv": [80, 8], "uv_size": [2, 0.5]}, + "south": {"uv": [80, 9], "uv_size": [2, 0.5]}, + "west": {"uv": [13, 80], "uv_size": [2, 0.5]}, + "up": {"uv": [74, 51], "uv_size": [2, 2]}, + "down": {"uv": [58, 76], "uv_size": [2, -2]} + } + }, + { + "origin": [2.09297, 9.09922, 1.12376], + "size": [1, 1, 6], + "pivot": [3.6625, 9.41953, 1.49876], + "rotation": [-90, 0, -90], + "uv": { + "north": {"uv": [80, 0], "uv_size": [1, 1]}, + "east": {"uv": [70, 47], "uv_size": [6, 1]}, + "south": {"uv": [1, 80], "uv_size": [1, 1]}, + "west": {"uv": [70, 48], "uv_size": [6, 1]}, + "up": {"uv": [11, 70], "uv_size": [1, 6]}, + "down": {"uv": [12, 76], "uv_size": [1, -6]} + } + }, + { + "origin": [2.09297, 9.09922, -2.67624], + "size": [1, 1, 1.7], + "pivot": [3.6625, 9.41953, 1.49876], + "rotation": [-90, 0, -90], + "uv": { + "north": {"uv": [3, 80], "uv_size": [1, 1]}, + "east": {"uv": [78, 62], "uv_size": [1.5, 1]}, + "south": {"uv": [80, 3], "uv_size": [1, 1]}, + "west": {"uv": [67, 78], "uv_size": [1.5, 1]}, + "up": {"uv": [78, 67], "uv_size": [1, 1.5]}, + "down": {"uv": [69, 79.5], "uv_size": [1, -1.5]} + } + }, + { + "origin": [5.37329, 8.85, -5.41445], + "size": [1.41421, 0.70711, 9.8], + "pivot": [6.2875, 9.35, 1.38555], + "rotation": [-90, 45, -90], + "uv": { + "north": {"uv": [52, 80], "uv_size": [1.5, 0.5]}, + "east": {"uv": [73, 44], "uv_size": [10, 0.5]}, + "south": {"uv": [54, 80], "uv_size": [1.5, 0.5]}, + "west": {"uv": [73, 45], "uv_size": [10, 0.5]}, + "up": {"uv": [52, 51], "uv_size": [1.5, 10]}, + "down": {"uv": [9, 63], "uv_size": [1.5, -10]} + } + }, + { + "origin": [-2.71595, 7.85, -2.05], + "size": [1.15, 2, 2.55], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [71, 33], "uv_size": [1, 2]}, + "east": {"uv": [39, 73], "uv_size": [2.5, 2]}, + "south": {"uv": [19, 77], "uv_size": [1, 2]}, + "west": {"uv": [73, 39], "uv_size": [2.5, 2]}, + "up": {"uv": [73, 76], "uv_size": [1, 2.5]}, + "down": {"uv": [74, 78.5], "uv_size": [1, -2.5]} + } + }, + { + "origin": [-1.56595, 9.1, -2.05], + "size": [2.5, 0.25, 2.55], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [79, 15], "uv_size": [2.5, 0.5]}, + "east": {"uv": [79, 34], "uv_size": [2.5, 0.5]}, + "south": {"uv": [35, 79], "uv_size": [2.5, 0.5]}, + "west": {"uv": [79, 35], "uv_size": [2.5, 0.5]}, + "up": {"uv": [5, 70], "uv_size": [2.5, 2.5]}, + "down": {"uv": [70, 46.5], "uv_size": [2.5, -2.5]} + } + }, + { + "origin": [-5.96595, 8.1, -2.5], + "size": [6.9, 1.75, 0.45], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [54, 60], "uv_size": [7, 2]}, + "east": {"uv": [80, 1], "uv_size": [0.5, 2]}, + "south": {"uv": [60, 54], "uv_size": [7, 2]}, + "west": {"uv": [2, 80], "uv_size": [0.5, 2]}, + "up": {"uv": [74, 63], "uv_size": [7, 0.5]}, + "down": {"uv": [74, 73.5], "uv_size": [7, -0.5]} + } + }, + { + "origin": [0.93405, 9.1, -2.5], + "size": [2.05, 0.75, 5], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [35, 58], "uv_size": [2, 1]}, + "east": {"uv": [73, 46], "uv_size": [5, 1]}, + "south": {"uv": [52, 61], "uv_size": [2, 1]}, + "west": {"uv": [73, 54], "uv_size": [5, 1]}, + "up": {"uv": [47, 59], "uv_size": [2, 5]}, + "down": {"uv": [6, 70], "uv_size": [2, -5]} + } + }, + { + "origin": [-0.81595, 7.1, 2.25], + "size": [3.8, 2, 0.25], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [67, 54], "uv_size": [4, 2]}, + "east": {"uv": [4, 80], "uv_size": [0.5, 2]}, + "south": {"uv": [58, 67], "uv_size": [4, 2]}, + "west": {"uv": [5, 80], "uv_size": [0.5, 2]}, + "up": {"uv": [78, 55], "uv_size": [4, 0.5]}, + "down": {"uv": [78, 56.5], "uv_size": [4, -0.5]} + } + }, + { + "origin": [-0.81595, 9.1, 0.5], + "size": [1.75, 0.75, 2], + "pivot": [0, 2.98001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [66, 39], "uv_size": [2, 1]}, + "east": {"uv": [66, 58], "uv_size": [2, 1]}, + "south": {"uv": [74, 18], "uv_size": [2, 1]}, + "west": {"uv": [15, 78], "uv_size": [2, 1]}, + "up": {"uv": [74, 35], "uv_size": [2, 2]}, + "down": {"uv": [74, 51], "uv_size": [2, -2]} + } + }, + { + "origin": [-3.0875, 7.17236, 1.88987], + "size": [4.5, 1.35, 0.25], + "pivot": [-0.8375, 8.04736, 2.01487], + "rotation": [90, 67.5, 90], + "uv": { + "north": {"uv": [15, 70], "uv_size": [4.5, 1.5]}, + "east": {"uv": [69, 80], "uv_size": [0.5, 1.5]}, + "south": {"uv": [70, 42], "uv_size": [4.5, 1.5]}, + "west": {"uv": [71, 80], "uv_size": [0.5, 1.5]}, + "up": {"uv": [77, 52], "uv_size": [4.5, 0.5]}, + "down": {"uv": [77, 76.5], "uv_size": [4.5, -0.5]} + } + }, + { + "origin": [-2.66595, 6.65, -0.2], + "size": [0.1, 1.75, 1.75], + "pivot": [0, 3.48001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [79, 71], "uv_size": [0.5, 2]}, + "east": {"uv": [44, 5], "uv_size": [2, 2]}, + "south": {"uv": [79, 74], "uv_size": [0.5, 2]}, + "west": {"uv": [57, 18], "uv_size": [2, 2]}, + "up": {"uv": [76, 79], "uv_size": [0.5, 2]}, + "down": {"uv": [77, 81], "uv_size": [0.5, -2]} + } + }, + { + "origin": [-2.31595, 2.1, -4.75], + "size": [5.25, 3, 2], + "pivot": [0.25, 3.48001, -1.5375], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [50, 8], "uv_size": [5.5, 3]}, + "east": {"uv": [51, 21], "uv_size": [2, 3]}, + "south": {"uv": [50, 11], "uv_size": [5.5, 3]}, + "west": {"uv": [32, 54], "uv_size": [2, 3]}, + "up": {"uv": [62, 40], "uv_size": [5.5, 2]}, + "down": {"uv": [0, 67], "uv_size": [5.5, -2]} + } + }, + { + "origin": [-2.31595, 5.38921, -3.50961], + "size": [5.25, 1.1, 2.4], + "pivot": [0.25, 3.48001, -1.5375], + "rotation": [0, 90, -30], + "uv": { + "north": {"uv": [70, 53], "uv_size": [5.5, 1]}, + "east": {"uv": [53, 37], "uv_size": [2.5, 1]}, + "south": {"uv": [70, 64], "uv_size": [5.5, 1]}, + "west": {"uv": [76, 38], "uv_size": [2.5, 1]}, + "up": {"uv": [60, 56], "uv_size": [5.5, 2.5]}, + "down": {"uv": [61, 2.5], "uv_size": [5.5, -2.5]} + } + }, + { + "origin": [-1.68981, 5.9416, -3.30961], + "size": [4.95, 1, 2], + "pivot": [0.25, 3.48001, -1.5375], + "rotation": [-90, 80, -120], + "uv": { + "north": {"uv": [71, 10], "uv_size": [5, 1]}, + "east": {"uv": [54, 20], "uv_size": [2, 1]}, + "south": {"uv": [34, 73], "uv_size": [5, 1]}, + "west": {"uv": [32, 57], "uv_size": [2, 1]}, + "up": {"uv": [61, 65], "uv_size": [5, 2]}, + "down": {"uv": [66, 5], "uv_size": [5, -2]} + } + }, + { + "origin": [3.85343, 3.56503, -2.2], + "size": [1.7, 1.4, 4.4], + "pivot": [0, 3.48001, -1.5375], + "rotation": [90, 22.5, 90], + "uv": { + "north": {"uv": [9, 77], "uv_size": [1.5, 1.5]}, + "east": {"uv": [48, 69], "uv_size": [4.5, 1.5]}, + "south": {"uv": [13, 77], "uv_size": [1.5, 1.5]}, + "west": {"uv": [53, 69], "uv_size": [4.5, 1.5]}, + "up": {"uv": [58, 69], "uv_size": [1.5, 4.5]}, + "down": {"uv": [60, 73.5], "uv_size": [1.5, -4.5]} + } + }, + { + "origin": [2.28001, 0.46407, -2.2], + "size": [1.7, 0.8, 4.4], + "pivot": [0, 3.48001, -1.5375], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [78, 59], "uv_size": [1.5, 1]}, + "east": {"uv": [73, 55], "uv_size": [4.5, 1]}, + "south": {"uv": [60, 78], "uv_size": [1.5, 1]}, + "west": {"uv": [73, 56], "uv_size": [4.5, 1]}, + "up": {"uv": [67, 69], "uv_size": [1.5, 4.5]}, + "down": {"uv": [69, 73.5], "uv_size": [1.5, -4.5]} + } + }, + { + "origin": [0.04742, -0.50187, -2.2], + "size": [0.9, 0.8, 4.4], + "pivot": [0, 3.48001, -1.5375], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [9, 52], "uv_size": [1, 1]}, + "east": {"uv": [73, 57], "uv_size": [4.5, 1]}, + "south": {"uv": [60, 59], "uv_size": [1, 1]}, + "west": {"uv": [73, 58], "uv_size": [4.5, 1]}, + "up": {"uv": [73, 69], "uv_size": [1, 4.5]}, + "down": {"uv": [71, 77.5], "uv_size": [1, -4.5]} + } + }, + { + "origin": [2.91986, 1.26407, -2.2], + "size": [1.06016, 0.63594, 4.4], + "pivot": [0, 3.48001, -1.5375], + "rotation": [90, 0, 90], + "uv": { + "north": {"uv": [80, 72], "uv_size": [1, 0.5]}, + "east": {"uv": [77, 47], "uv_size": [4.5, 0.5]}, + "south": {"uv": [80, 77], "uv_size": [1, 0.5]}, + "west": {"uv": [48, 77], "uv_size": [4.5, 0.5]}, + "up": {"uv": [72, 73], "uv_size": [1, 4.5]}, + "down": {"uv": [74, 15.5], "uv_size": [1, -4.5]} + } + }, + { + "origin": [3.09799, 2.85653, -1.25], + "size": [1.2, 1.25, 2.5], + "pivot": [0, 3.48001, -1.5375], + "rotation": [90, 45, 90], + "uv": { + "north": {"uv": [52, 78], "uv_size": [1, 1.5]}, + "east": {"uv": [74, 69], "uv_size": [2.5, 1.5]}, + "south": {"uv": [78, 57], "uv_size": [1, 1.5]}, + "west": {"uv": [74, 71], "uv_size": [2.5, 1.5]}, + "up": {"uv": [60, 62], "uv_size": [1, 2.5]}, + "down": {"uv": [5, 69.5], "uv_size": [1, -2.5]} + } + } + ] + }, + { + "name": "bone5", + "parent": "bone2", + "pivot": [7.87837, 3.25147, -1.92619], + "cubes": [ + { + "origin": [0.43405, 2.35, 2], + "size": [1.45, 1.75, 5], + "pivot": [0, 3.48001, -1.7875], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [39, 77], "uv_size": [1.5, 1.5]}, + "east": {"uv": [67, 65], "uv_size": [5, 1.5]}, + "south": {"uv": [77, 48], "uv_size": [1.5, 1.5]}, + "west": {"uv": [67, 67], "uv_size": [5, 1.5]}, + "up": {"uv": [62, 67], "uv_size": [1.5, 5]}, + "down": {"uv": [64, 72], "uv_size": [1.5, -5]} + } + }, + { + "origin": [5.28212, 2.35, -6.11132], + "size": [1.3, 1.75, 5.2], + "pivot": [6.53212, 3.225, -2.91132], + "rotation": [0, 105, 0], + "uv": { + "north": {"uv": [77, 50], "uv_size": [1.5, 1.5]}, + "east": {"uv": [68, 39], "uv_size": [5, 1.5]}, + "south": {"uv": [53, 77], "uv_size": [1.5, 1.5]}, + "west": {"uv": [68, 58], "uv_size": [5, 1.5]}, + "up": {"uv": [68, 60], "uv_size": [1.5, 5]}, + "down": {"uv": [69, 11], "uv_size": [1.5, -5]} + } + }, + { + "origin": [0.93405, -1.9, 4], + "size": [1, 4.25, 1], + "pivot": [0, 3.48001, -1.7875], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [34, 74], "uv_size": [1, 4.5]}, + "east": {"uv": [35, 74], "uv_size": [1, 4.5]}, + "south": {"uv": [36, 74], "uv_size": [1, 4.5]}, + "west": {"uv": [37, 74], "uv_size": [1, 4.5]}, + "up": {"uv": [34, 64], "uv_size": [1, 1]}, + "down": {"uv": [51, 65], "uv_size": [1, -1]} + } + }, + { + "origin": [1.03405, -1.4, 3], + "size": [0.8, 0.1, 1], + "pivot": [0, 3.48001, -1.7875], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [16, 81], "uv_size": [1, 0.5]}, + "east": {"uv": [81, 16], "uv_size": [1, 0.5]}, + "south": {"uv": [81, 17], "uv_size": [1, 0.5]}, + "west": {"uv": [81, 18], "uv_size": [1, 0.5]}, + "up": {"uv": [13, 65], "uv_size": [1, 1]}, + "down": {"uv": [73, 60], "uv_size": [1, -1]} + } + }, + { + "origin": [4.0693, -1.06109, -4.72155], + "size": [0.8, 0.1, 2], + "pivot": [4.4693, -1.01109, -3.22155], + "rotation": [0, 90, 45], + "uv": { + "north": {"uv": [19, 81], "uv_size": [1, 0.5]}, + "east": {"uv": [79, 78], "uv_size": [2, 0.5]}, + "south": {"uv": [81, 19], "uv_size": [1, 0.5]}, + "west": {"uv": [79, 79], "uv_size": [2, 0.5]}, + "up": {"uv": [55, 6], "uv_size": [1, 2]}, + "down": {"uv": [56, 14], "uv_size": [1, -2]} + } + }, + { + "origin": [7.82837, 2.87647, -2.30119], + "size": [0.1, 0.75, 0.75], + "pivot": [7.87837, 3.25147, -1.92619], + "rotation": [-135, 75, 180], + "uv": { + "north": {"uv": [82, 39], "uv_size": [0.5, 0.5]}, + "east": {"uv": [40, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [82, 40], "uv_size": [0.5, 0.5]}, + "west": {"uv": [41, 82], "uv_size": [0.5, 0.5]}, + "up": {"uv": [82, 43], "uv_size": [0.5, 0.5]}, + "down": {"uv": [44, 82.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [7.62837, 3.87647, -3.50119], + "size": [0.3, 0.95, 0.85], + "pivot": [7.87837, 3.25147, -1.92619], + "rotation": [-135, 75, 180], + "uv": { + "north": {"uv": [21, 81], "uv_size": [0.5, 1]}, + "east": {"uv": [75, 4], "uv_size": [1, 1]}, + "south": {"uv": [81, 21], "uv_size": [0.5, 1]}, + "west": {"uv": [75, 32], "uv_size": [1, 1]}, + "up": {"uv": [22, 81], "uv_size": [0.5, 1]}, + "down": {"uv": [81, 23], "uv_size": [0.5, -1]} + } + }, + { + "origin": [7.82837, 5.17647, -4.60119], + "size": [0.1, 0.75, 0.75], + "pivot": [7.87837, 3.25147, -1.92619], + "rotation": [-135, 75, 180], + "uv": { + "north": {"uv": [45, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [46, 82], "uv_size": [0.5, 0.5]}, + "south": {"uv": [47, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 47], "uv_size": [0.5, 0.5]}, + "up": {"uv": [48, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 48.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "bone6", + "parent": "bone2", + "pivot": [8.71041, 3.25147, -1.92619], + "cubes": [ + { + "origin": [-1.05202, 2.35, 2], + "size": [1.45, 1.75, 5], + "pivot": [0.83203, 3.48001, -1.7875], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [55, 77], "uv_size": [1.5, 1.5]}, + "east": {"uv": [69, 11], "uv_size": [5, 1.5]}, + "south": {"uv": [77, 69], "uv_size": [1.5, 1.5]}, + "west": {"uv": [69, 13], "uv_size": [5, 1.5]}, + "up": {"uv": [69, 15], "uv_size": [1.5, 5]}, + "down": {"uv": [69, 25], "uv_size": [1.5, -5]} + } + }, + { + "origin": [-5.75009, 2.35, -6.11132], + "size": [1.3, 1.75, 5.2], + "pivot": [-5.70009, 3.225, -2.91132], + "rotation": [0, -105, 0], + "uv": { + "north": {"uv": [77, 71], "uv_size": [1.5, 1.5]}, + "east": {"uv": [69, 25], "uv_size": [5, 1.5]}, + "south": {"uv": [77, 74], "uv_size": [1.5, 1.5]}, + "west": {"uv": [69, 27], "uv_size": [5, 1.5]}, + "up": {"uv": [44, 69], "uv_size": [1.5, 5]}, + "down": {"uv": [46, 74], "uv_size": [1.5, -5]} + } + }, + { + "origin": [-1.10202, -1.9, 4], + "size": [1, 4.25, 1], + "pivot": [0.83203, 3.48001, -1.7875], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [38, 74], "uv_size": [1, 4.5]}, + "east": {"uv": [44, 74], "uv_size": [1, 4.5]}, + "south": {"uv": [45, 74], "uv_size": [1, 4.5]}, + "west": {"uv": [46, 74], "uv_size": [1, 4.5]}, + "up": {"uv": [6, 77], "uv_size": [1, 1]}, + "down": {"uv": [0, 81], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.00202, -1.4, 2.75], + "size": [0.8, 0.1, 1.25], + "pivot": [0.83203, 3.48001, -1.7875], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [23, 81], "uv_size": [1, 0.5]}, + "east": {"uv": [35, 80], "uv_size": [1.5, 0.5]}, + "south": {"uv": [81, 23], "uv_size": [1, 0.5]}, + "west": {"uv": [37, 80], "uv_size": [1.5, 0.5]}, + "up": {"uv": [78, 60], "uv_size": [1, 1.5]}, + "down": {"uv": [78, 66.5], "uv_size": [1, -1.5]} + } + }, + { + "origin": [-3.66266, -1.21246, -6.72155], + "size": [0.8, 0.1, 4], + "pivot": [-3.26266, -1.16246, -3.22155], + "rotation": [0, -90, -22.5], + "uv": { + "north": {"uv": [24, 81], "uv_size": [1, 0.5]}, + "east": {"uv": [47, 78], "uv_size": [4, 0.5]}, + "south": {"uv": [81, 24], "uv_size": [1, 0.5]}, + "west": {"uv": [78, 54], "uv_size": [4, 0.5]}, + "up": {"uv": [50, 14], "uv_size": [1, 4]}, + "down": {"uv": [58, 42], "uv_size": [1, -4]} + } + }, + { + "origin": [-7.09634, 4.12647, -3.55119], + "size": [0.1, 0.75, 0.75], + "pivot": [-7.04634, 3.25147, -1.92619], + "rotation": [-135, -75, -180], + "uv": { + "north": {"uv": [49, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [82, 49], "uv_size": [0.5, 0.5]}, + "south": {"uv": [50, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 50], "uv_size": [0.5, 0.5]}, + "up": {"uv": [51, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 51.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-7.09634, 5.17647, -4.60119], + "size": [0.1, 0.75, 0.75], + "pivot": [-7.04634, 3.25147, -1.92619], + "rotation": [-135, -75, -180], + "uv": { + "north": {"uv": [52, 82], "uv_size": [0.5, 0.5]}, + "east": {"uv": [82, 52], "uv_size": [0.5, 0.5]}, + "south": {"uv": [53, 82], "uv_size": [0.5, 0.5]}, + "west": {"uv": [82, 53], "uv_size": [0.5, 0.5]}, + "up": {"uv": [54, 82], "uv_size": [0.5, 0.5]}, + "down": {"uv": [82, 54.5], "uv_size": [0.5, -0.5]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json b/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json new file mode 100644 index 000000000..b21edb620 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/javelin_missile.geo.json @@ -0,0 +1,453 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.rpg", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 91, + "visible_bounds_height": 10, + "visible_bounds_offset": [0, 1, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 0, -0.11791] + }, + { + "name": "body", + "parent": "bone", + "pivot": [0, -51.91, 0], + "rotation": [90, 0, 0] + }, + { + "name": "wing", + "parent": "body", + "pivot": [-0.08407, -52.04737, 35.50871] + }, + { + "name": "wing1", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [9, 37], "uv_size": [1, 2]}, + "east": {"uv": [24, 0], "uv_size": [8, 2]}, + "south": {"uv": [37, 9], "uv_size": [1, 2]}, + "west": {"uv": [24, 2], "uv_size": [8, 2]}, + "up": {"uv": [32, 16], "uv_size": [1, 8]}, + "down": {"uv": [24, 40], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing2", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, -45], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [10, 37], "uv_size": [1, 2]}, + "east": {"uv": [24, 4], "uv_size": [8, 2]}, + "south": {"uv": [11, 37], "uv_size": [1, 2]}, + "west": {"uv": [24, 6], "uv_size": [8, 2]}, + "up": {"uv": [32, 24], "uv_size": [1, 8]}, + "down": {"uv": [25, 40], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing3", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, -90], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 11], "uv_size": [1, 2]}, + "east": {"uv": [24, 8], "uv_size": [8, 2]}, + "south": {"uv": [12, 37], "uv_size": [1, 2]}, + "west": {"uv": [24, 10], "uv_size": [8, 2]}, + "up": {"uv": [26, 32], "uv_size": [1, 8]}, + "down": {"uv": [27, 40], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing4", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, -135], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [13, 37], "uv_size": [1, 2]}, + "east": {"uv": [24, 12], "uv_size": [8, 2]}, + "south": {"uv": [37, 13], "uv_size": [1, 2]}, + "west": {"uv": [24, 14], "uv_size": [8, 2]}, + "up": {"uv": [28, 32], "uv_size": [1, 8]}, + "down": {"uv": [29, 40], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing5", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, -180], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [14, 37], "uv_size": [1, 2]}, + "east": {"uv": [24, 16], "uv_size": [8, 2]}, + "south": {"uv": [37, 15], "uv_size": [1, 2]}, + "west": {"uv": [24, 18], "uv_size": [8, 2]}, + "up": {"uv": [30, 32], "uv_size": [1, 8]}, + "down": {"uv": [31, 40], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing6", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, 135], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 17], "uv_size": [1, 2]}, + "east": {"uv": [24, 20], "uv_size": [8, 2]}, + "south": {"uv": [37, 19], "uv_size": [1, 2]}, + "west": {"uv": [24, 22], "uv_size": [8, 2]}, + "up": {"uv": [32, 32], "uv_size": [1, 8]}, + "down": {"uv": [0, 41], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing7", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, 90], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 21], "uv_size": [1, 2]}, + "east": {"uv": [24, 24], "uv_size": [8, 2]}, + "south": {"uv": [37, 23], "uv_size": [1, 2]}, + "west": {"uv": [24, 26], "uv_size": [8, 2]}, + "up": {"uv": [1, 33], "uv_size": [1, 8]}, + "down": {"uv": [2, 41], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing8", + "parent": "wing", + "pivot": [0, -52.02791, 39.28283], + "rotation": [0, 0, 45], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 31.96951], + "size": [0.8375, 2.23735, 7.82981], + "pivot": [-0.8943, -52.02791, 29.24692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 25], "uv_size": [1, 2]}, + "east": {"uv": [24, 28], "uv_size": [8, 2]}, + "south": {"uv": [37, 27], "uv_size": [1, 2]}, + "west": {"uv": [24, 30], "uv_size": [8, 2]}, + "up": {"uv": [3, 33], "uv_size": [1, 8]}, + "down": {"uv": [4, 41], "uv_size": [1, -8]} + } + } + ] + }, + { + "name": "wing9", + "parent": "wing", + "pivot": [0, -52.02791, 50.03283], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 45.71951], + "size": [0.8375, 2.23735, 4.82981], + "pivot": [-0.8943, -52.02791, 39.99692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 29], "uv_size": [1, 2]}, + "east": {"uv": [32, 0], "uv_size": [5, 2]}, + "south": {"uv": [37, 31], "uv_size": [1, 2]}, + "west": {"uv": [32, 2], "uv_size": [5, 2]}, + "up": {"uv": [15, 33], "uv_size": [1, 5]}, + "down": {"uv": [33, 33], "uv_size": [1, -5]} + } + } + ] + }, + { + "name": "wing10", + "parent": "wing", + "pivot": [0, -52.02791, 50.03283], + "rotation": [0, 0, -180], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 45.71951], + "size": [0.8375, 2.23735, 4.82981], + "pivot": [-0.8943, -52.02791, 39.99692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 33], "uv_size": [1, 2]}, + "east": {"uv": [32, 4], "uv_size": [5, 2]}, + "south": {"uv": [35, 37], "uv_size": [1, 2]}, + "west": {"uv": [32, 6], "uv_size": [5, 2]}, + "up": {"uv": [33, 33], "uv_size": [1, 5]}, + "down": {"uv": [34, 33], "uv_size": [1, -5]} + } + } + ] + }, + { + "name": "wing11", + "parent": "wing", + "pivot": [0, -52.02791, 50.03283], + "rotation": [0, 0, -90], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 45.71951], + "size": [0.8375, 2.23735, 4.82981], + "pivot": [-0.8943, -52.02791, 39.99692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 35], "uv_size": [1, 2]}, + "east": {"uv": [32, 8], "uv_size": [5, 2]}, + "south": {"uv": [36, 37], "uv_size": [1, 2]}, + "west": {"uv": [32, 10], "uv_size": [5, 2]}, + "up": {"uv": [34, 33], "uv_size": [1, 5]}, + "down": {"uv": [35, 21], "uv_size": [1, -5]} + } + } + ] + }, + { + "name": "wing12", + "parent": "wing", + "pivot": [0, -52.02791, 50.03283], + "rotation": [0, 0, 90], + "cubes": [ + { + "origin": [-1.31305, -53.29159, 45.71951], + "size": [0.8375, 2.23735, 4.82981], + "pivot": [-0.8943, -52.02791, 39.99692], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [37, 37], "uv_size": [1, 2]}, + "east": {"uv": [32, 12], "uv_size": [5, 2]}, + "south": {"uv": [38, 0], "uv_size": [1, 2]}, + "west": {"uv": [32, 14], "uv_size": [5, 2]}, + "up": {"uv": [35, 21], "uv_size": [1, 5]}, + "down": {"uv": [35, 31], "uv_size": [1, -5]} + } + } + ] + }, + { + "name": "bone5", + "parent": "body", + "pivot": [-0.08407, -52.04737, 29.55871], + "cubes": [ + { + "origin": [-0.77375, -53.89714, 18.75451], + "size": [1.5475, 3.7372, 33.06981], + "pivot": [0, -52.02791, 8.85492], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [5, 33], "uv_size": [2, 4]}, + "south": {"uv": [7, 33], "uv_size": [2, 4]}, + "up": {"uv": [0, 0], "uv_size": [2, 33]}, + "down": {"uv": [2, 33], "uv_size": [2, -33]} + } + }, + { + "origin": [-0.77436, -53.8965, 18.75451], + "size": [1.5475, 3.7372, 33.06981], + "pivot": [-0.00061, -52.02791, 26.41442], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [9, 33], "uv_size": [2, 4]}, + "south": {"uv": [11, 33], "uv_size": [2, 4]}, + "up": {"uv": [4, 0], "uv_size": [2, 33]}, + "down": {"uv": [6, 33], "uv_size": [2, -33]} + } + }, + { + "origin": [-0.77436, -53.8965, 18.75451], + "size": [1.5475, 3.7372, 33.06981], + "uv": { + "north": {"uv": [13, 33], "uv_size": [2, 4]}, + "south": {"uv": [33, 16], "uv_size": [2, 4]}, + "up": {"uv": [8, 0], "uv_size": [2, 33]}, + "down": {"uv": [10, 33], "uv_size": [2, -33]} + } + }, + { + "origin": [-0.77436, -53.8965, 18.75451], + "size": [1.5475, 3.7372, 33.06981], + "pivot": [-0.00061, -52.02791, 26.41442], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [33, 20], "uv_size": [2, 4]}, + "south": {"uv": [33, 24], "uv_size": [2, 4]}, + "up": {"uv": [12, 0], "uv_size": [2, 33]}, + "down": {"uv": [14, 33], "uv_size": [2, -33]} + } + } + ] + }, + { + "name": "bone2", + "parent": "body", + "pivot": [-0.00061, -52.02791, 18.75451], + "cubes": [ + { + "origin": [-0.69644, -53.71021, 16.00451], + "size": [1.39275, 3.36348, 2.75], + "pivot": [-0.00006, -52.02791, 9.84488], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [35, 31], "uv_size": [1, 3]}, + "south": {"uv": [35, 34], "uv_size": [1, 3]}, + "up": {"uv": [36, 16], "uv_size": [1, 3]}, + "down": {"uv": [36, 22], "uv_size": [1, -3]} + } + }, + { + "origin": [-0.69698, -53.70964, 16.00451], + "size": [1.39275, 3.36348, 2.75], + "pivot": [-0.00061, -52.02791, 25.64843], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [36, 22], "uv_size": [1, 3]}, + "south": {"uv": [36, 25], "uv_size": [1, 3]}, + "up": {"uv": [36, 28], "uv_size": [1, 3]}, + "down": {"uv": [36, 34], "uv_size": [1, -3]} + } + }, + { + "origin": [-0.69698, -53.70964, 16.00451], + "size": [1.39275, 3.36348, 2.75], + "uv": { + "north": {"uv": [36, 34], "uv_size": [1, 3]}, + "south": {"uv": [37, 0], "uv_size": [1, 3]}, + "up": {"uv": [37, 3], "uv_size": [1, 3]}, + "down": {"uv": [5, 40], "uv_size": [1, -3]} + } + }, + { + "origin": [-0.69698, -53.70964, 16.00451], + "size": [1.39275, 3.36348, 2.75], + "pivot": [-0.00061, -52.02791, 25.64843], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [6, 37], "uv_size": [1, 3]}, + "south": {"uv": [37, 6], "uv_size": [1, 3]}, + "up": {"uv": [7, 37], "uv_size": [1, 3]}, + "down": {"uv": [8, 40], "uv_size": [1, -3]} + } + } + ] + }, + { + "name": "bone3", + "parent": "body", + "pivot": [-0.00061, -52.02791, 16.00451], + "cubes": [ + { + "origin": [-0.48769, -53.20552, 15.50451], + "size": [0.97492, 2.35444, 36.6], + "pivot": [-0.00023, -52.02791, 11.69277], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [38, 2], "uv_size": [1, 2]}, + "south": {"uv": [38, 4], "uv_size": [1, 2]}, + "up": {"uv": [16, 0], "uv_size": [1, 38]}, + "down": {"uv": [17, 38], "uv_size": [1, -38]} + } + }, + { + "origin": [-0.48807, -53.20512, 15.50451], + "size": [0.97492, 2.35444, 36.6], + "pivot": [-0.00061, -52.02791, 22.75525], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [38, 6], "uv_size": [1, 2]}, + "south": {"uv": [38, 8], "uv_size": [1, 2]}, + "up": {"uv": [18, 0], "uv_size": [1, 38]}, + "down": {"uv": [19, 38], "uv_size": [1, -38]} + } + }, + { + "origin": [-0.48807, -53.20512, 15.50451], + "size": [0.97492, 2.35444, 36.6], + "uv": { + "north": {"uv": [38, 10], "uv_size": [1, 2]}, + "south": {"uv": [38, 12], "uv_size": [1, 2]}, + "up": {"uv": [20, 0], "uv_size": [1, 38]}, + "down": {"uv": [21, 38], "uv_size": [1, -38]} + } + }, + { + "origin": [-0.48807, -53.20512, 15.50451], + "size": [0.97492, 2.35444, 36.6], + "pivot": [-0.00061, -52.02791, 22.75525], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [38, 14], "uv_size": [1, 2]}, + "south": {"uv": [15, 38], "uv_size": [1, 2]}, + "up": {"uv": [22, 0], "uv_size": [1, 38]}, + "down": {"uv": [23, 38], "uv_size": [1, -38]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 9fe5422eb..2d7c2925c 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -44,12 +44,13 @@ "item.superbwarfare.qbz_95": "QBZ-95-1", "item.superbwarfare.k_98": "KAR-98K", "item.superbwarfare.mosin_nagant": "Mosin Nagant", + "item.superbwarfare.javelin": "FGM-148 Javelin", "des.superbwarfare.tips.damage": "Damage: ", "des.superbwarfare.tips.level": "Level: ", "des.superbwarfare.tips.bypass": "Armor Piercing: ", "des.superbwarfare.tips.distance": "Drone Distance: ", - "des.superbwarfare.tips.upgradepoint": "Ppgrade Point: ", + "des.superbwarfare.tips.upgradepoint": "Upgrade Point: ", "item.superbwarfare.vector_blueprint": "VECTOR Blueprint", "item.superbwarfare.m_60_blueprint": "M60 Blueprint", @@ -127,6 +128,7 @@ "item.superbwarfare.ammo_supplier.creative": "All Ammo +2147483647", "item.superbwarfare.he_5_inches": "HE Shell", "item.superbwarfare.ap_5_inches": "AP Shell", + "item.superbwarfare.javelin_missile": "Javelin Missile", "item.superbwarfare.ancient_cpu": "Ancient CPU", "item.superbwarfare.target_deployer": "Target", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 8fd47db55..2010a45d1 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -44,6 +44,7 @@ "item.superbwarfare.qbz_95": "95-1式自动步枪", "item.superbwarfare.k_98": "KAR-98K", "item.superbwarfare.mosin_nagant": "莫辛纳甘", + "item.superbwarfare.javelin": "FGM-148标枪导弹", "des.superbwarfare.tips.upgradepoint": "升级点数: ", "des.superbwarfare.tips.damage": "伤害: ", @@ -127,6 +128,7 @@ "item.superbwarfare.ammo_supplier.creative": "所有弹药 +2147483647", "item.superbwarfare.he_5_inches": "高爆弹", "item.superbwarfare.ap_5_inches": "穿甲弹", + "item.superbwarfare.javelin_missile": "标枪导弹", "item.superbwarfare.ancient_cpu": "古代处理器", "item.superbwarfare.target_deployer": "标靶", diff --git a/src/main/resources/assets/superbwarfare/models/displaysettings/javelin.item.json b/src/main/resources/assets/superbwarfare/models/displaysettings/javelin.item.json new file mode 100644 index 000000000..76556e937 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/displaysettings/javelin.item.json @@ -0,0 +1,61 @@ +{ + "credit": "Made with Blockbench", + "parent": "builtin/entity", + "texture_size": [ + 128, + 128 + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "translation": [ + -5.5, + -2.25, + 3.75 + ] + }, + "thirdperson_lefthand": { + "scale": [ + 0, + 0, + 0 + ] + }, + "firstperson_righthand": { + "rotation": [ + 0, + 0, + 4.75 + ], + "translation": [ + -3.75, + -4.75, + 0.75 + ] + }, + "firstperson_lefthand": { + "scale": [ + 0, + 0, + 0 + ] + }, + "gui": { + "rotation": [ + 165.69, + -39.63, + 178.66 + ], + "translation": [ + 3.5, + -2.5, + 0 + ], + "scale": [ + 0.45, + 0.45, + 0.45 + ] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/models/item/javelin.json b/src/main/resources/assets/superbwarfare/models/item/javelin.json new file mode 100644 index 000000000..ba1706136 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/javelin.json @@ -0,0 +1,27 @@ +{ + "loader": "forge:separate_transforms", + "gui_light": "front", + "base": { + "parent": "superbwarfare:item/javelin_base" + }, + "perspectives": { + "gui": { + "parent": "superbwarfare:item/javelin_icon" + }, + "thirdperson_righthand": { + "parent": "superbwarfare:item/javelin_3d" + }, + "thirdperson_lefthand": { + "parent": "superbwarfare:item/javelin_3d" + }, + "ground": { + "parent": "superbwarfare:item/javelin_3d" + }, + "fixed": { + "parent": "superbwarfare:item/javelin_3d" + }, + "head": { + "parent": "superbwarfare:item/javelin_3d" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/models/item/javelin_3d.json b/src/main/resources/assets/superbwarfare/models/item/javelin_3d.json new file mode 100644 index 000000000..b8ec581f6 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/javelin_3d.json @@ -0,0 +1,131 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "superbwarfare:item/javelin_3d", + "particle": "superbwarfare:item/javelin_3d" + }, + "elements": [ + { + "from": [4, -1, 4], + "to": [12, 7, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 6]}, + "faces": { + "north": {"uv": [2.5, 2.5, 4.5, 4.5], "texture": "#0"}, + "east": {"uv": [6.25, 4.25, 7.25, 6.25], "texture": "#0"}, + "south": {"uv": [2.5, 4.5, 4.5, 6.5], "texture": "#0"}, + "west": {"uv": [6.25, 6.25, 7.25, 8.25], "texture": "#0"}, + "up": {"uv": [4.5, 7.5, 2.5, 6.5], "texture": "#0"}, + "down": {"uv": [8.75, 0, 6.75, 1], "texture": "#0"} + } + }, + { + "from": [1, 0, 4], + "to": [4, 7, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 6]}, + "faces": { + "north": {"uv": [7.25, 5.5, 8, 7.25], "texture": "#0"}, + "east": {"uv": [5.75, 7.75, 6.25, 9.5], "texture": "#0"}, + "south": {"uv": [7.25, 7.25, 8, 9], "texture": "#0"}, + "west": {"uv": [8, 5.5, 8.5, 7.25], "texture": "#0"}, + "up": {"uv": [9.5, 1.5, 8.75, 1], "texture": "#0"}, + "down": {"uv": [9.5, 1.5, 8.75, 2], "texture": "#0"} + } + }, + { + "from": [1, 2, 6], + "to": [4, 7, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 6]}, + "faces": { + "north": {"uv": [5, 7.75, 5.75, 9], "texture": "#0"}, + "east": {"uv": [3, 8.5, 3.5, 9.75], "texture": "#0"}, + "south": {"uv": [8, 1, 8.75, 2.25], "texture": "#0"}, + "west": {"uv": [8.5, 5.75, 9, 7], "texture": "#0"}, + "up": {"uv": [4.25, 9.25, 3.5, 8.75], "texture": "#0"}, + "down": {"uv": [5, 8.75, 4.25, 9.25], "texture": "#0"} + } + }, + { + "from": [6, -3, 5], + "to": [11, -1, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 6]}, + "faces": { + "north": {"uv": [8.5, 7, 9.75, 7.5], "texture": "#0"}, + "east": {"uv": [5, 9, 5.75, 9.5], "texture": "#0"}, + "south": {"uv": [8.5, 7.5, 9.75, 8], "texture": "#0"}, + "west": {"uv": [9, 5.75, 9.75, 6.25], "texture": "#0"}, + "up": {"uv": [9.25, 3, 8, 2.25], "texture": "#0"}, + "down": {"uv": [9.25, 3, 8, 3.75], "texture": "#0"} + } + }, + { + "from": [12, 0, 4], + "to": [17, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 6]}, + "faces": { + "north": {"uv": [8.5, 8, 9.75, 8.5], "texture": "#0"}, + "east": {"uv": [8.75, 0, 9.75, 0.5], "texture": "#0"}, + "south": {"uv": [8.5, 8.5, 9.75, 9], "texture": "#0"}, + "west": {"uv": [8.75, 0.5, 9.75, 1], "texture": "#0"}, + "up": {"uv": [3.75, 8.5, 2.5, 7.5], "texture": "#0"}, + "down": {"uv": [5, 7.75, 3.75, 8.75], "texture": "#0"} + } + }, + { + "from": [12, 2.5, -3], + "to": [16.5, 7, 24], + "rotation": {"angle": 22.5, "axis": "x", "origin": [7, 2, 6]}, + "faces": { + "north": {"uv": [6.75, 1, 8, 2.25], "texture": "#0"}, + "east": {"uv": [0, 0, 6.75, 1.25], "texture": "#0"}, + "south": {"uv": [7.25, 4.25, 8.5, 5.5], "texture": "#0"}, + "west": {"uv": [0, 1.25, 6.75, 2.5], "texture": "#0"}, + "up": {"uv": [1.25, 9.25, 0, 2.5], "texture": "#0"}, + "down": {"uv": [2.5, 2.5, 1.25, 9.25], "texture": "#0"} + } + }, + { + "from": [11, 1.5, -5], + "to": [17.5, 8, -3], + "rotation": {"angle": 22.5, "axis": "x", "origin": [7, 2, 6]}, + "faces": { + "north": {"uv": [4.5, 2.5, 6.25, 4.25], "texture": "#0"}, + "east": {"uv": [8, 7.25, 8.5, 9], "texture": "#0"}, + "south": {"uv": [4.5, 4.25, 6.25, 6], "texture": "#0"}, + "west": {"uv": [6.25, 8.25, 6.75, 10], "texture": "#0"}, + "up": {"uv": [9.75, 4.25, 8, 3.75], "texture": "#0"}, + "down": {"uv": [10.25, 4.25, 8.5, 4.75], "texture": "#0"} + } + }, + { + "from": [11, 1.5, 24], + "to": [17.5, 8, 26], + "rotation": {"angle": 22.5, "axis": "x", "origin": [7, 2, 6]}, + "faces": { + "north": {"uv": [4.5, 6, 6.25, 7.75], "texture": "#0"}, + "east": {"uv": [6.75, 8.25, 7.25, 10], "texture": "#0"}, + "south": {"uv": [6.25, 2.5, 8, 4.25], "texture": "#0"}, + "west": {"uv": [2.5, 8.5, 3, 10.25], "texture": "#0"}, + "up": {"uv": [10.25, 5.25, 8.5, 4.75], "texture": "#0"}, + "down": {"uv": [10.25, 5.25, 8.5, 5.75], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [-6, 8, 2.25], + "scale": [1.1, 1.1, 1.1] + }, + "ground": { + "translation": [0, 7.75, 0], + "scale": [0.7, 0.7, 0.7] + }, + "head": { + "translation": [4.25, 0, 0] + }, + "fixed": { + "rotation": [0, -90, 0], + "translation": [3.5, 5, -6.75] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/models/item/javelin_base.json b/src/main/resources/assets/superbwarfare/models/item/javelin_base.json new file mode 100644 index 000000000..200026824 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/javelin_base.json @@ -0,0 +1,6 @@ +{ + "parent": "superbwarfare:displaysettings/javelin.item", + "textures": { + "layer0": "superbwarfare:item/javelin" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/models/item/javelin_icon.json b/src/main/resources/assets/superbwarfare/models/item/javelin_icon.json new file mode 100644 index 000000000..e59d06676 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/javelin_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "superbwarfare:item/javelin_icon" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/models/item/javelin_missile.json b/src/main/resources/assets/superbwarfare/models/item/javelin_missile.json new file mode 100644 index 000000000..73a06740e --- /dev/null +++ b/src/main/resources/assets/superbwarfare/models/item/javelin_missile.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "superbwarfare:item/javelin_missile" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/sounds.json b/src/main/resources/assets/superbwarfare/sounds.json index 098290f84..a90655a87 100644 --- a/src/main/resources/assets/superbwarfare/sounds.json +++ b/src/main/resources/assets/superbwarfare/sounds.json @@ -1508,6 +1508,55 @@ ] }, + "javelin_fire_1p": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_fire_1p", + "stream": false + } + ] + }, + "javelin_fire_3p": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_fire_3p", + "stream": false + } + ] + }, + "javelin_far": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_far", + "stream": false + } + ] + }, + "javelin_reload_empty": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_reload", + "stream": false + } + ] + }, + "javelin_lock": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_lock", + "stream": false + } + ] + }, + "javelin_lockon": { + "sounds": [ + { + "name": "superbwarfare:javelin/javelin_lockon", + "stream": false + } + ] + }, + "lightsaber": { "sounds": [ { diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_far.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_far.ogg new file mode 100644 index 000000000..86a6c86cd Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_far.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_1p.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_1p.ogg new file mode 100644 index 000000000..9a350a23a Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_1p.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_3p.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_3p.ogg new file mode 100644 index 000000000..66f78fa4d Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_fire_3p.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lock.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lock.ogg new file mode 100644 index 000000000..1464af03a Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lock.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lockon.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lockon.ogg new file mode 100644 index 000000000..b3520cc81 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_lockon.ogg differ diff --git a/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_reload.ogg b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_reload.ogg new file mode 100644 index 000000000..9f36ea9c9 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/sounds/javelin/javelin_reload.ogg differ diff --git a/src/main/resources/assets/superbwarfare/textures/entity/javelin_missile.png b/src/main/resources/assets/superbwarfare/textures/entity/javelin_missile.png new file mode 100644 index 000000000..d7b885b87 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/javelin_missile.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/dir.png b/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/dir.png new file mode 100644 index 000000000..321ffa18f Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/dir.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/top.png b/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/top.png new file mode 100644 index 000000000..790021e21 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/gun_icon/fire_mode/top.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/gun_icon/javelin_icon.png b/src/main/resources/assets/superbwarfare/textures/gun_icon/javelin_icon.png new file mode 100644 index 000000000..5abff3a85 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/gun_icon/javelin_icon.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/javelin.png b/src/main/resources/assets/superbwarfare/textures/item/javelin.png new file mode 100644 index 000000000..22afe4a7c Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/javelin.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/javelin_3d.png b/src/main/resources/assets/superbwarfare/textures/item/javelin_3d.png new file mode 100644 index 000000000..2e43885eb Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/javelin_3d.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/javelin_e.png b/src/main/resources/assets/superbwarfare/textures/item/javelin_e.png new file mode 100644 index 000000000..6ba363a81 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/javelin_e.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/javelin_icon.png b/src/main/resources/assets/superbwarfare/textures/item/javelin_icon.png new file mode 100644 index 000000000..90911cbb5 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/javelin_icon.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/javelin_missile.png b/src/main/resources/assets/superbwarfare/textures/item/javelin_missile.png new file mode 100644 index 000000000..4c2307583 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/javelin_missile.png differ diff --git a/src/main/resources/data/superbwarfare/guns/javelin.json b/src/main/resources/data/superbwarfare/guns/javelin.json new file mode 100644 index 000000000..d50ece398 --- /dev/null +++ b/src/main/resources/data/superbwarfare/guns/javelin.json @@ -0,0 +1,13 @@ +{ + "zoom_speed": 0.72, + "zoom": 4, + "min_zoom": 4, + "max_zoom": 9, + "spread": 5, + "zoomSpread": 5, + "mag": 1, + "weight": 2, + "empty_reload_time": 78, + "damage": 300, + "BypassesArmor": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/tags/items/gun.json b/src/main/resources/data/superbwarfare/tags/items/gun.json index a8cf5f544..aa486886c 100644 --- a/src/main/resources/data/superbwarfare/tags/items/gun.json +++ b/src/main/resources/data/superbwarfare/tags/items/gun.json @@ -30,6 +30,7 @@ "superbwarfare:m_1911", "superbwarfare:qbz_95", "superbwarfare:k_98", - "superbwarfare:mosin_nagant" + "superbwarfare:mosin_nagant", + "superbwarfare:javelin" ] } \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/tags/items/legendary_gun.json b/src/main/resources/data/superbwarfare/tags/items/legendary_gun.json index 11b142747..c0f8762e1 100644 --- a/src/main/resources/data/superbwarfare/tags/items/legendary_gun.json +++ b/src/main/resources/data/superbwarfare/tags/items/legendary_gun.json @@ -6,6 +6,7 @@ "superbwarfare:sentinel", "superbwarfare:bocek", "superbwarfare:ntw_20", - "superbwarfare:minigun" + "superbwarfare:minigun", + "superbwarfare:javelin" ] } \ No newline at end of file